o
    \hD]                     @   s	  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mZmZmZ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 d d
l m!Z" d dl#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z) e"Z*e*+dZ,ee-ee-e-e-ee.e.e.ee/e/e/ee0e0e0eeeeiZ1e.e12 Z3e,r&d dlm4Z4 d dlm5Z5 d dlm6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@ d dl?mAZA d dlBmCZC d dlBmDZDmEZE d dlBmFZF zd dlGmHZH W n eIy   d dlGmJZH Y nw eDZKeDZLeEZMe:ZNeZOG dd dZPG dd deQZReG d d! d!ZSd"ed#e>d$eTd%efd&d'ZUd(ee d%eeeTef  fd)d*ZVd+ee d%d,fd-d.ZW	/dd+ed0e'd1 d2ed%efd3d4ZXd+ed%efd5d6ZYd7d8d9eSd:e@d;ed<eeeSe'd= f eAf d>eZd%eeTef fd?d@Z[dAeeS d%efdBdCZ\d7d8dAeeS d:e@d;ed>eZd%eeeeSe'd= f eAf eeTeeTef f f f
dDdEZ]d9eSd%eZfdFdGZ^d9eSd%eZfdHdIZ_d9eSd%eZfdJdKZ`d9eSd%eZfdLdMZad9eSd%eZfdNdOZbd#e>d"ed%e>fdPdQZcd9eSdRed%ee fdSdTZddUeeTdVf d%eeTef fdWdXZedAeeS dYeTd%ee fdZd[Zfd+ee d%eeS fd\d]Zgnd d^lhmiZi d d_lmjZF d d`lmPZP d dlm6Z6 d dalkmOZO d dbllmRZR d dclmmnZn d ddl=moZompZpmqZqmrZrmsZsmtZtmuZu d dl=m>Z> d del=mSZS d dfl=mKZK d dgl=mLZL d dhl=mMZM d dilvmwZwmxZxmyZymzZz d djlvmUZU d dkl{mNZN d dl|m<Z< eZ8eeTef ZAeZCepereoeteqeuhZ}epe-ere/ete.eqe-eue-iZ~eG dldm dmZ@G dndo doeQZ4d,d,d,dpdqedVef dreeTd,f dsedted%ef
dudvZHdweeee ee f  d;eeee ee f eTf d%eeTef fdxdyZd9eSd%eZfdzd{Zd9eSd%eZfd|d}Zd(ee d%eeeTef  fd~d*ZVd+ee d%d,fdd.ZW	/dd+ed0e'd1 d2ed%efdd4ZXd+ed%efdd6ZYd7d8d9eSd:e@d;ed<eeeSe'd= f eAf d>eZd%eeTef fdd@Z[dAeeS d%efddCZ\d7d8dAeeS d:e@d;ed>eZd%eeeeSe'd= f eAf eeTeeTef f f f
ddEZ]d9eSd%eZfddGZ^d9eSd%eZfddIZ_d9eSd%eZfddKZ`d9eSd%eZfddMZad9eSd%eZfddOZbd#e>d"ed%e>fddQZcd9eSdRed%ee fddTZddUeeTdVf d%eeTef fddXZedAeeS dYeTd%ee fdd[Zfd+ee d%eeS fdd]Zgd(ee deeeTef dVf d%eeeTef  fddZd"eee d,f d%eZfddZd"eee d,f d%eZfddZdRed%eZfddZd"eee d,f d%eZfddZd"eee d,f d%eZfddZd"ed%eZfddZd"eee d,f d%eZfddZd"ed%eZfddZd"ed%eZfddZd"ed%eZfddZd"ed%eZfddZe	d+ee d%eeS fddZd,S )    )dequecopy)	dataclassis_dataclass)Enum)	lru_cache)AnyCallableDequeDict	FrozenSetListMappingSequenceSetTupleTypeUnion)RequestErrorModel)IncExModelNameMap	UnionType)	BaseModelcreate_model)VERSION)
UploadFile)	AnnotatedLiteralget_args
get_originz2.)PydanticSchemaGenerationError)TypeAdapter)ValidationError)GetJsonSchemaHandler)eval_type_lenient)lenient_issubclass)	FieldInfo)GenerateJsonSchema)JsonSchemaValue)
CoreSchema)PydanticUndefinedPydanticUndefinedType)Url)"with_info_plain_validator_function) general_plain_validator_functionc                   @      e Zd ZdS )
BaseConfigN__name__
__module____qualname__ r6   r6   R/home/air/segue/gemini/backup/venv/lib/python3.10/site-packages/fastapi/_compat.pyr1   P       r1   c                   @   r0   )ErrorWrapperNr2   r6   r6   r6   r7   r9   S   r8   r9   c                   @   sH  e Zd ZU eed< eed< dZed ed< edefddZ	ede
fd	d
ZedefddZedefddZd+ddZdefddZi fdddedeeef deeeef df deeeeeeef  df f fddZdddddddddeded  d!eedf d"eedf d#e
d$e
d%e
d&e
defd'd(Zdefd)d*ZdS ),
ModelField
field_infoname
validationr=   serializationmodereturnc                 C   s   | j j}|d ur
|S | jS N)r;   aliasr<   )selfar6   r6   r7   rC   \   s   zModelField.aliasc                 C   s
   | j  S rB   )r;   is_requiredrD   r6   r6   r7   requireda   s   
zModelField.requiredc                 C   s   |   S rB   )get_defaultrG   r6   r6   r7   defaulte      zModelField.defaultc                 C   s   | j jS rB   r;   
annotationrG   r6   r6   r7   type_i   rK   zModelField.type_Nc                 C   s   t t| jj| jf | _d S rB   )r"   r   r;   rM   _type_adapterrG   r6   r6   r7   __post_init__m   s   
zModelField.__post_init__c                 C   s   | j  rtS | j jddS )NT)call_default_factory)r;   rF   	UndefinedrI   rG   r6   r6   r7   rI   r   s   
zModelField.get_defaultr6   locvaluevaluesrT   .c             
   C   sT   z| j j|ddd fW S  ty) } zd t|jdd|dfW  Y d }~S d }~ww )NT)from_attributesFinclude_url)errors
loc_prefix)rO   validate_pythonr#   _regenerate_error_with_locrZ   )rD   rU   rV   rT   excr6   r6   r7   validatew   s   zModelField.validatejsonTFr@   includeexcludeby_aliasexclude_unsetexclude_defaultsexclude_noner`   pythonrb   rc   rd   re   rf   rg   c          	   
   C   s   | j j||||||||dS )Nra   )rO   dump_python)	rD   rU   r@   rb   rc   rd   re   rf   rg   r6   r6   r7   	serialize   s   zModelField.serializec                 C      t | S rB   )idrG   r6   r6   r7   __hash__   s   zModelField.__hash__)rA   N)r3   r4   r5   r'   __annotations__strr@   r   propertyrC   boolrH   r	   rJ   rN   rP   rI   r   r   r   intr   r_   r   rk   rn   r6   r6   r6   r7   r:   V   sj   
 




	

r:   rM   r;   
field_namerA   c                 C      | S rB   r6   )rM   r;   rt   r6   r6   r7   get_annotation_from_field_info   s   rv   rZ   c                 C   ru   rB   r6   )rZ   r6   r6   r7   _normalize_errors      rw   modelNc                 C      |    d S rB   )model_rebuildry   r6   r6   r7   _model_rebuild      r}   r`   r@   rh   kwargsc                 K   s   | j dd|i|S )Nr@   r6   )
model_dumpry   r@   r   r6   r6   r7   _model_dump   s   r   c                 C      | j S rB   )model_configr|   r6   r6   r7   _get_model_config      r   T)separate_input_output_schemasfieldschema_generatormodel_name_mapfield_mappingr>   r   c                 C   sH   |rd nd}|| |p| j f }d|vr"| jjp| j dd|d< |S )Nr=   z$ref_ title)r@   r;   r   rC   replace)r   r   r   r   r   override_modejson_schemar6   r6   r7   get_schema_from_model_field   s   
r   fieldsc                 C      i S rB   r6   )r   r6   r6   r7   get_compat_model_name_map   rx   r   c                    s6   |rd nd  fdd| D }|j |d\}}||fS )Nr=   c                    s    g | ]}| p	|j |jjfqS r6   )r@   rO   core_schema).0r   r   r6   r7   
<listcomp>   s    z#get_definitions.<locals>.<listcomp>)inputs)generate_definitions)r   r   r   r   r   r   definitionsr6   r   r7   get_definitions   s   


r   c                 C   s(   ddl m} t| jjot| j|j S )Nr   params)fastapir   field_annotation_is_scalarr;   rM   
isinstanceBody)r   r   r6   r6   r7   is_scalar_field   s   r   c                 C      t | jjS rB   )field_annotation_is_sequencer;   rM   r   r6   r6   r7   is_sequence_field   r~   r   c                 C   r   rB   )#field_annotation_is_scalar_sequencer;   rM   r   r6   r6   r7   is_scalar_sequence_field   r~   r   c                 C   
   t | jS rB   )$is_bytes_or_nonable_bytes_annotationrN   r   r6   r6   r7   is_bytes_field      
r   c                 C   r   rB   )is_bytes_sequence_annotationrN   r   r6   r6   r7   is_bytes_sequence_field   r   r   c                 C   s.   t | }||}t| }|j|_|j|_|S rB   )typefrom_annotationr   metadatarM   )r;   rM   clsmerged_field_infonew_field_infor6   r6   r7   copy_field_info   s   
r   rU   c                 C   s.   t | jjp	| jj}t|tsJ t| |S rB   )r    r;   rM   
issubclasssequence_typessequence_annotation_to_type)r   rU   origin_typer6   r6   r7   serialize_sequence_value  s   r   rT   .c                 C   s.   t dd| i dgjddd }d |d< |S )NzField requiredmissing)r   rT   inputFrX   r   r   )r#   from_exception_datarZ   )rT   errorr6   r6   r7   get_missing_field_error  s   r   
model_namec                 C   s"   dd | D }t |fi |}|S )Nc                 S   s   i | ]}|j |jj|jfqS r6   )r<   r;   rM   r   fr6   r6   r7   
<dictcomp>  s    z%create_body_model.<locals>.<dictcomp>)r   )r   r   field_params	BodyModelr6   r6   r7   create_body_model  s   r   c                 C   s   dd | j  D S )Nc                 S   s   g | ]
\}}t ||d qS ))r;   r<   r:   )r   r<   r;   r6   r6   r7   r     s    
z$get_model_fields.<locals>.<listcomp>)model_fieldsitemsr|   r6   r6   r7   get_model_fields  s   r   )
REF_PREFIX)AnyUrl)r1   )	Validator)r9   )MissingError)SHAPE_FROZENSET
SHAPE_LISTSHAPE_SEQUENCE	SHAPE_SETSHAPE_SINGLETONSHAPE_TUPLESHAPE_TUPLE_ELLIPSISr   )Required)rR   )UndefinedType)field_schemaget_flat_models_from_fieldsget_model_name_mapmodel_process_schema)rv   )evaluate_forwardrefc                   @   s   e Zd ZU eed< dS )r(   ref_templateN)r3   r4   r5   rp   ro   r6   r6   r6   r7   r(   i  s   
 r(   c                   @   r0   )r!   Nr2   r6   r6   r6   r7   r!   m  r8   r!   )refr   r?   functionr   r   r?   c                C   r   rB   r6   )r   r   r   r?   r6   r6   r7   r.   p  s   r.   flat_modelsc                 C   s^   i }| D ](}t ||td\}}}|| || }d|v r(|d dd |d< |||< q|S )Nr   
ref_prefixdescriptionr   )r   r   updatesplit)r   r   r   ry   m_schemam_definitionsm_nested_modelsr   r6   r6   r7   get_model_definitionsy  s   

r   c                 C   sz   ddl m} | j}| jtkr*t| jts*t| jts*t	| js*t
| js*t||jr,dS | jr;tdd | jD s;dS dS )Nr   r   Fc                 s       | ]}t |V  qd S rB   is_pv1_scalar_fieldr   r6   r6   r7   	<genexpr>  
    
z&is_pv1_scalar_field.<locals>.<genexpr>T)r   r   r;   shaper   r&   rN   r   dictr   r   r   r   
sub_fieldsall)r   r   r;   r6   r6   r7   r     s(   



r   c                 C   sP   | j tv rt| jts| jd ur| jD ]	}t|s dS qdS t| jr&dS dS )NFT)r   sequence_shapesr&   rN   r   r   r   _annotation_is_sequence)r   	sub_fieldr6   r6   r7   is_pv1_scalar_sequence_field  s   


r   c                 C   s^   g }| D ](}t |trt|gtd }|| qt |tr'|t| q|| q|S )N)rZ   ry   )	r   r9   r#   r   rZ   extendlistrw   append)rZ   
use_errorsr   
new_errorsr6   r6   r7   rw     s   

c                 C   rz   rB   )update_forward_refsr|   r6   r6   r7   r}     r~   c                 K   s   | j di |S )Nr6   )r   r   r6   r6   r7   r     s   c                 C   r   rB   )
__config__r|   r6   r6   r7   r     r   c                 C   s   t | |tdd S )Nr   r   )r   r   )r   r   r   r   r   r6   r6   r7   r     s
   c                 C   s   t | t d}t|S )Nknown_models)r   setr   )r   modelsr6   r6   r7   r     s   c                 C   s   t | t d}i t||dfS )Nr  )r   r   )r   r  r   )r   r   r   r   r  r6   r6   r7   r     s   c                 C   rl   rB   r   r   r6   r6   r7   r        c                 C   s   | j tv p	t| jS rB   )r   r   r   rN   r   r6   r6   r7   r     s   c                 C   rl   rB   )r   r   r6   r6   r7   r     r  c                 C   s   t | jtS rB   )r&   rN   bytesr   r6   r6   r7   r     r~   c                 C   s   | j tv o
t| jtS rB   )r   r   r&   rN   r  r   r6   r6   r7   r     s   c                 C   rl   rB   r   rL   r6   r6   r7   r     r  c                 C   s   t | j |S rB   )sequence_shape_to_typer   )r   rU   r6   r6   r7   r        c                 C   s&   t t | d}t|gt}| d S )NrS   r   )r9   r   r#   r   rZ   )rT   missing_field_error	new_errorr6   r6   r7   r     s   c                 C   s"   t |}| D ]}||j|j< q|S rB   )r   
__fields__r<   )r   r   r   r   r6   r6   r7   r     s   c                 C   s   t | j S rB   )r   r  rV   r|   r6   r6   r7   r     r  r[   c                    s    fddt | D }|S )Nc              	      s(   g | ]}i |d  | d d iqS )rT   r6   )get)r   errr[   r6   r7   r     s    z._regenerate_error_with_loc.<locals>.<listcomp>)rw   )rZ   r[   updated_loc_errorsr6   r  r7   r]     s   
r]   c                 C   s   t | ttfr	dS t | tS )NF)r&   rp   r  r   rM   r6   r6   r7   r     s   
r   c                 C   sL   t | }|tu s|tu rt| D ]	}t|r dS qdS t| p%tt | S NTF)r    r   r   r   r   r   rM   originargr6   r6   r7   r      s   
r   c                 C   s   t | tot | ttf S rB   )r   r   rp   r  )rU   r6   r6   r7   value_is_sequence,  s   r  c                 C   s    t | tttfpt| pt| S rB   )r&   r   r   r   r   r   r  r6   r6   r7   _annotation_is_complex0  s
   r  c                 C   sR   t | }|tu s|tu rtdd t| D S t| p(t|p(t|dp(t|dS )Nc                 s   r   rB   )field_annotation_is_complex)r   r  r6   r6   r7   r   ;  s    z.field_annotation_is_complex.<locals>.<genexpr>__pydantic_core_schema____get_pydantic_core_schema__)r    r   r   anyr   r  hasattr)rM   r  r6   r6   r7   r  8  s   r  c                 C   s   | t u pt|  S rB   )Ellipsisr  r  r6   r6   r7   r   E  s   r   c                 C   sh   t | }|tu s|tu r%d}t| D ]}t|rd}qt|s" dS q|S t| o3tdd t| D S )NFTc                 s   r   rB   )r   r   sub_annotationr6   r6   r7   r   U  r   z6field_annotation_is_scalar_sequence.<locals>.<genexpr>)r    r   r   r   r   r   r   r   )rM   r  at_least_one_scalar_sequencer  r6   r6   r7   r   J  s   r   c                 C   H   t | trdS t| }|tu s|tu r"t| D ]
}t |tr! dS qdS r  )r&   r  r    r   r   r   r  r6   r6   r7   r   [     

r   c                 C   r   r  )r&   r   r    r   r   r   r  r6   r6   r7   .is_uploadfile_or_nonable_uploadfile_annotationf  r!  r"  c                 C   Z   t | }|tu s|tu rd}t| D ]	}t|rd}qq|S t| o,tdd t| D S )NFTc                 s   r   rB   )r   r  r6   r6   r7   r   z  r   z/is_bytes_sequence_annotation.<locals>.<genexpr>)r    r   r   r   r   r   r   rM   r  at_least_oner  r6   r6   r7   r   q     r   c                 C   r#  )NFTc                 s   r   rB   )r"  r  r6   r6   r7   r     r   z4is_uploadfile_sequence_annotation.<locals>.<genexpr>)r    r   r   r   !is_uploadfile_sequence_annotationr   r   r$  r6   r6   r7   r'    r&  r'  c                 C   rl   rB   )r   r|   r6   r6   r7   get_cached_model_fields  rK   r(  )r`   )collectionsr   r   dataclassesr   r   enumr   	functoolsr   typingr	   r
   r   r   r   r   r   r   r   r   r   r   fastapi.exceptionsr   fastapi.typesr   r   r   pydanticr   r   pydantic.versionr   	P_VERSIONstarlette.datastructuresr   typing_extensionsr   r   r   r    PYDANTIC_VERSION
startswithPYDANTIC_V2r   tupler  	frozensetr   keysr   r!   r"   r#   ,pydantic._internal._schema_generation_sharedr$    pydantic._internal._typing_extrar%   pydantic._internal._utilsr&   pydantic.fieldsr'   pydantic.json_schemar(   r)   pydantic_corer*   r+   r,   r-   pydantic_core.core_schemar.   ImportErrorr/   r   rR   r   r   r   r1   	Exceptionr9   r:   rp   rv   rw   r}   r   r   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   fastapi.openapi.constantsr   r   pydantic.class_validatorspydantic.error_wrapperspydantic.errorsr   r   r   r   r   r   r   r   pydantic.schemar   r   r   r   pydantic.typingpydantic.utilsr   r  r   r   r   rs   r]   r   r   r  r  r  r   r   r   r"  r   r'  r(  r6   r6   r6   r7   <module>   s   8
O
"

	

"
$		


	

"

	
	
"

 