
    i|D                        d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZmZmZmZmZmZmZ d dlmZmZ d d	lmZ d d
lmZmZmZ d dlmZmZm Z m!Z!m"Z" d dlm#Z# d dlm$Z$ d dlm%Z% d dl&m'Z( d dl)m*Z* d dl+m,Z, d dl-m.Z/ d dl-m0Z0 d dl1m2Z2 d dl1m3Z3 d dl1m4Z4 d dl5m6Z6 e3Z7e3Z8	 	 dYdede9e:ef   dz  de9e:ef   dz  defdZ; G d de/      Z.i dd d!dd"dd#dd$dd%dd&dd'dd(dd)dd*dd+dd,dd-dd.dd/dd0dd1dddd2Z<d3e,de9e:ef   fd4Z=e G d5 d6             Z>d7e>de?fd8Z@d1d9d7e>d:ed;e9eAe>ed<   f   e0f   d=e?de9e:ef   f
d>ZBd1d9d?ee>   d:ed=e?deAe9eAe>ed<   f   e0f   e9e:e9e:ef   f   f   fd@ZCd7e>de?fdAZDd3e,dBede,fdCZEd7e>dedee   fdDZFdEeAeGe:z  d f   de9e:ef   fdFZHd?ee>   dGe:deIe   fdHZJdIeIe   deKe>   fdJZLedIeIe   deKe>   fdK       ZMeIdL   eIe	   z  ZNeOeN   ZPdMe:de:fdNZQdOePde9eNe:f   fdPZR	 dZdIeIdL   dQePdz  dePfdRZSdBedQePdePfdSZTd7e>dQePdePfdTZUd?ee>   dQePdePfdUZVdVee   dWeAe:eGz  d f   deKe9e:ef      fdXZWy)[    N)Sequence)copy)	dataclassis_dataclass)Enum)	lru_cache)	AnnotatedAnyLiteralUnioncastget_args
get_origin)lenient_issubclassshared)REF_TEMPLATE)IncExModelNameMap	UnionType)	BaseModel
ConfigDictFieldTypeAdaptercreate_model)PydanticSchemaGenerationError)PydanticUndefinedAnnotation)ValidationError)_typing_extra)GetJsonSchemaHandler)	FieldInfo)GenerateJsonSchema)JsonSchemaValue)
CoreSchema)PydanticUndefined)Url)"with_info_plain_validator_functionvalueglobalnslocalnsreturnc                 p    t        t        dd       }| || ||      d   S t        j                  | ||      S )Ntry_eval_typer   )getattr_pydantic_typing_extraeval_type_lenient)r'   r(   r)   r,   s       D/root/launch/venv/lib/python3.12/site-packages/fastapi/_compat/v2.pyevaluate_forwardrefr1   +   sG     2OTJM UHg6q99!33x     c                       e Zd ZdedefdZy)r!   schemar*   c                     ddd}| j                   dk(  r| j                  j                  n| j                  j                  }|dk(  rd|d<   | j	                  ||| j
                  j                         |S )Nstringzapplication/octet-stream)typecontentMediaTypeserializationbase64contentEncoding)mode_configser_json_bytesval_json_bytesupdate_with_validationsValidationsMappingbytes)selfr4   json_schema
bytes_modes       r0   bytes_schemazGenerateJsonSchema.bytes_schema<   su    '=WX yyO+ LL'',, 	
 !-5K)*$$[&$:Q:Q:W:WXr2   N)__name__
__module____qualname__r#   r"   rF    r2   r0   r!   r!   9   s    
: 
/ 
r2   r!   default.default_factoryaliasalias_priorityvalidation_aliasserialization_aliastitlefield_title_generatordescriptionexamplesexclude
exclude_ifdiscriminator
deprecatedjson_schema_extrafrozenvalidate_defaultT)reprinitinit_varkw_only
field_infoc                     i }t         D ]!  }t        | |t              }|t        us|||<   # | j                  | j                  |dS )N)
annotationmetadata
attributes)_Attrsr-   	Undefinedrb   rc   )r`   rd   attrr'   s       r0   asdictrh   d   sW    J %
D)4	!$Jt%
 !++''  r2   c                      e Zd ZU eed<   eed<   dZed   ed<   dZe	dz  ed<   e
defd	       Ze
dedz  fd
       Ze
dedz  fd       Ze
defd       Zd%dZdefdZi fdddedeeef   deeez  df   deeeeeef      f   fdZdddddddddeded   dedz  dedz  dededed edefd!Zddddddd"dededz  dedz  dededed edefd#Zdefd$Zy)&
ModelFieldr`   name
validationrl   r9   r<   Nconfigr*   c                 N    | j                   j                  }||S | j                  S N)r`   rM   rk   )rC   as     r0   rM   zModelField.aliasx   s$    OO!!Mq0tyy0r2   c                 X    | j                   j                  }t        |t              r|r|S y rp   )r`   rO   
isinstancestr)rC   vas     r0   rO   zModelField.validation_alias}   s%    __--b#2Ir2   c                 :    | j                   j                  }|xs d S rp   )r`   rP   )rC   sas     r0   rP   zModelField.serialization_alias   s    __00zTr2   c                 "    | j                         S rp   )get_defaultrC   s    r0   rK   zModelField.default   s    !!r2   c                 Z   t        j                         5  t        j                  dk\  rddlm} t        j                  d|       t        | j                        }|d   g|d   t        d
i |d   }t        t        |   | j                  	      | _        d d d        y # 1 sw Y   y xY w)N)      r   ) UnsupportedFieldAttributeWarningignore)categoryrb   rc   rd   )rn   rJ   )warningscatch_warningsr   PYDANTIC_VERSION_MINOR_TUPLEpydantic.warningsr~   simplefilterrh   r`   r   r   r	   rn   _type_adapter)rC   r~   
field_dictannotated_argss       r0   __post_init__zModelField.__post_init__   s    $$& 	
 22g=N%%'G
  0J<(J'
 1
<01N 4?.){{4D+	 	 	s   BB!!B*c                 z    | j                   j                         rt        S | j                   j                  d      S )NT)call_default_factory)r`   is_requiredrf   ry   rz   s    r0   ry   zModelField.get_default   s0    ??&&(***EEr2   rJ   )locr'   valuesr   .c                    	 | j                   j                  |d      g fS # t        $ r)}d t        |j	                  d      |      fcY d }~S d }~ww xY w)NT)from_attributesFinclude_url)errors
loc_prefix)r   validate_pythonr   _regenerate_error_with_locr   )rC   r'   r   r   excs        r0   validatezModelField.validate   sd    	""225$2O   	3zzez4  	s   ! 	AAAAjsonTFr<   includerU   by_aliasexclude_unsetexclude_defaultsexclude_none)r   pythonr   rU   r   r   r   r   c          
      H    | j                   j                  ||||||||      S )Nr   )r   dump_python)	rC   r'   r<   r   rU   r   r   r   r   s	            r0   	serializezModelField.serialize   s:     !!--'-% . 	
 		
r2   r   rU   r   r   r   r   c          	      F    | j                   j                  |||||||      S )Nr   )r   	dump_json)rC   r'   r   rU   r   r   r   r   s           r0   serialize_jsonzModelField.serialize_json   s7      !!++'-% , 
 	
r2   c                     t        |       S rp   )idrz   s    r0   __hash__zModelField.__hash__   s     $xr2   )r*   N)rG   rH   rI   r    __annotations__rt   r<   r   rn   r   propertyrM   rO   rP   r
   rK   r   ry   dicttupleintlistr   r   boolr   rB   r   r   rJ   r2   r0   rj   rj   q   s   
I3?D'/
0? $FJ$1s 1 1 #*   S4Z   " " "6FS F "$
 &( S#X
 39c>" 
sDc3h((	)* +1 $ $#!&"

 &'	

 
 
 
 
 
 
 

: !% $#!&"

 	

 
 
 
 
 
 

4# r2   rj   fieldc                     | j                   j                  j                  di       j                  dg       }t        |      dkD  S )Nr4   computed_fieldsr   )r   core_schemagetlen)r   r   s     r0   _has_computed_fieldsr      sB    ))5599(BGKK2O !##r2   )separate_input_output_schemasmodel_name_mapfield_mappingrm   r   c                 V   |st        |       rd nd}| j                  dk(  r| j                  xs& | j                  n| j                  xs | j                  }|| |xs | j                  f   }d|vr;| j
                  j                  xs  |j                         j                  dd      |d<   |S )Nrl   z$ref_ rQ   )r   r<   rO   rM   rP   r`   rQ   replace)r   r   r   r   override_modefield_aliasrD   s          r0   get_schema_from_model_fieldr      s     *-A%-H 	  ::% 
			.5;;''65;;   (C DEK[   %//55  
9J9J9L9T9T:
G r2   fieldsc                    t        t              }| D cg c]  }|j                  dk(  s| }}| D cg c]  }|j                  dk(  s| }}t        |t	                     }t        |t	                     }|D 	cg c]$  }	t        t        |	      |	j                  d      & }
}	|D 	cg c]$  }	t        t        |	      |	j                  d      & }}	|
|z   }| D ch c]  }|j                  j                   }}|D ch c]  }|j                  j                  |vs| }}t        |       t        |      z   D cg c]4  }||st        |      r|j                  nd|j                  j                  f6 }}|j                  |      \  }}t        t         t"        t         t"        t$        f   f   |      j'                         D ]1  }d|v st        t"        |d         j)                  d	      d
   }||d<   3 |t        t         t"        t         t"        t$        f   f   |      fS c c}w c c}w c c}	w c c}	w c c}w c c}w c c}w )N)ref_templaterl   r9   known_models)rb   )r`   rk   r<   )inputsrS   r   )r!   r   r<   get_flat_models_from_fieldssetrj   r    rG   r`   rb   r   r   r   r   generate_definitionsr   r   rt   r
   r   split)r   r   r   schema_generatorr   validation_fieldsserialization_fieldsflat_validation_modelsflat_serialization_modelsmodelflat_validation_model_fieldsflat_serialization_model_fieldsflat_model_fieldsfinput_typesunique_flat_model_fieldsr   r   definitionsitem_defitem_descriptions                        r0   get_definitionsr     sa    *|D,2Q5ejjL6PQQ/5We9VEWW8 !<35! ,$  	 E2	
$  $ /'  	 E2 	
'# ' 57VV4:;q1<<**;K;$ (?(?{(R    &\D)A$BB   25I%5P 

!++	
F  "2!F!Ff!F!UM;c4S>12K@GGI 7H$#C-)@AGGMaP&6H]#7 $tCc3h$78+FFFg RW$' < s9   H(H(H-	H-=)H2,)H7 H<I!I 9Ic                     ddl m} t        j                  | j                  j
                        xr! t        | j                  |j                         S )Nr   )params)fastapir   r   field_annotation_is_scalarr`   rb   rs   Body)r   r   s     r0   is_scalar_fieldr   ]  sC    ,,## 8))6;;7
78r2   rb   c                     t        |       }|j                  |      }t        |       }|j                  |_        |j                  |_        |S rp   )r7   from_annotationr   rc   rb   )r`   rb   clsmerged_field_infonew_field_infos        r0   copy_field_infor   e  sI    
z
C++J7*%N/88N 1 < <Nr2   c                    t        | j                  j                        xs | j                  j                  }|t        u s|t        u rDt        | j                  j                        }|D ]   }|t        d       u rt        |      xs |} n t        |t        j                        sJ t        j                  |   |      S rp   )r   r`   rb   r   r   r   r7   
issubclassr   sequence_typessequence_annotation_to_type)r   r'   origin_type
union_args	union_args        r0   serialize_sequence_valuer   n  s    U--889XU=M=M=X=XKe{i7e..99:
# 	IDJ&$Y/<9K		
 k6#8#8999--k:5AAr2   r   c                 l    t        j                  dd| i dg      j                  d      d   }d |d<   |S )NzField requiredmissing)r7   r   inputFr   r   r   )r   from_exception_datar   )r   errors     r0   get_missing_field_errorr   {  sD    //IcBGHff#E E'NLr2   
model_namec                     | D ci c]/  }|j                   |j                  j                  |j                  f1 }}t        |fi |}|S c c}w rp   )rk   r`   rb   r   )r   r   r   field_params	BodyModels        r0   create_body_modelr     sP     NTTAFFQ\\44allCCTLT!-j!IL!II Us   4A	r   c                     g }| j                   j                         D ]^  \  }}|j                  }t        |t        t
        f      st        |      rd }n| j                  }|j                  t        |||             ` |S )N)r`   rk   rn   )
model_fieldsitemsrb   r   r   r   r   model_configappendrj   )r   r   rk   r`   type_r   s         r0   get_model_fieldsr    s    %'L!..446 
j%%ei%67<;NL --L%#	

 r2   c                     t        |       S rp   )r  )r   s    r0   get_cached_model_fieldsr    s    E""r2   r   rk   c                 0    t        j                  dd|       S )Nz[^a-zA-Z0-9.\-_]r   )resub)rk   s    r0   normalize_namer	    s    66%sD11r2   unique_modelsc                     i }| D ]  }t        |j                        }|||<    |j                         D ci c]  \  }}||
 c}}S c c}}w rp   )r	  rG   r   )r
  name_model_mapr   r   kvs         r0   get_model_name_mapr    sU    N +#ENN3
%*z"+ ,1134TQAqD444s   Ar   c                 R    |xs
 t               }t        |       }t        ||       |S Nr   )r   r  r   )r   r   r   s      r0   get_flat_models_from_modelr    s*      (35Le$F\Br2   c                     t        |       }|ht        |       D ]Z  }t        |t        t        f      r5||vs|j                  |       t        |t              s@t        ||       Nt        ||       \ |S r  )r   r   r   r   r   addr  get_flat_models_from_annotation)rb   r   originargs       r0   r  r    su     
#FJ' 	PC!#	4'89l* $$S))#y923\R/,O	P r2   c                     | j                   j                  }t        |t              r&||v r|S |j	                  |       t        ||       |S t        |t              r|j	                  |       |S t        ||       |S r  )r`   rb   r   r   r  r  r   r  )r   r   
field_types      r0   get_flat_models_from_fieldr    s     !!,,J*i0%$":LI
 	 
J	-$  	(
Nr2   c                 .    | D ]  }t        ||        |S r  )r  )r   r   r   s      r0   r   r     s%      E"5|DEr2   r   r   c           
      `    | D cg c]  }i |d||j                  dd      z   i }}|S c c}w )Nr   rJ   )r   )r   r   errupdated_loc_errorss       r0   r   r     sK     DJ%<?737zCGGE2$667% % 	%s   "+)NNrp   )Xr  r   collections.abcr   r   dataclassesr   r   enumr   	functoolsr   typingr	   r
   r   r   r   r   r   fastapi._compatr   r   fastapi.openapi.constantsr   fastapi.typesr   r   r   pydanticr   r   r   r   r   r   r   r   pydantic._internalr   r.   ,pydantic._internal._schema_generation_sharedr   pydantic.fieldsr    pydantic.json_schemar!   _GenerateJsonSchemar"   pydantic_corer#   r$   r%   pydantic_core.core_schemar&   RequiredParamrf   r   rt   r1   re   rh   rj   r   r   r   r   r   r   r   r   r   r   r7   r   r   r  r  TypeModelOrEnumr   TypeModelSetr	  r  r  r  r  r   r   rJ   r2   r0   <module>r2     s   	  $  /     7 2 8 8 L L S O 7 F 3 J C 2 + $ "	
 '+%)38nt# #s(^d" 		, "
s
t
 T
 d	

 
 4
 T
 T
 4
 
 t
 $
 T
 $
 
  d!
" #
$ +
4
y 
T#s(^ 
 B B BJ$
 $t $ +/ ! j'"?@@A?R	 $( 
#s(^F +/	=GZ =G !=G $(	=G
 z7#@AA	BO	STd38n	=G@8: 8$ 89 # ) 
Bz 
B# 
B(3- 
BsSy#~!6 4S> 
#14	)_DO Z0@ $ #4	? #tJ7G # # {#d4j0?#2 2 25l 5tOS<P7Q 5 CG,84,?#/ %1 Z 0<}*/c	3*?	$sCx.r2   