o
    LDi1M                     @   s  d dl Z d dlZd dlmZ d dl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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*m+Z+ d dl*m,Z, d dl-m.Z. d dl-m/Z/m0Z0 d dl-m1Z1 d dl2m3Z3m4Z4m5Z5 zd dl6m7Z7 W n e8y   d dl6m9Z7 Y nw e/Z:e/Z;e0Z<e%Z=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d+dd,dddd-Z?d.e)d/e@eAef fd0d1ZBG d2d3 d3ZCG d4d5 d5eDZEeG d6d7 d7ZFd8ed.e)d9eAd/efd:d;ZGd<eHe d/dfd=d>ZI	?dd<ed@e3dA dBed/efdCdDZJd<ed/efdEdFZKdGeFd/eLfdHdIZMd,dJdGeFdKedLe@eNeFe3dM f e,f dNeLd/e@eAef f
dOdPZOd,dJdQeeF dKedNeLd/eNe@eNeFe3dM f e,f e@eAe@eAef f f fdRdSZPdTe@eAef dUe@eAeAf d/e@eAef fdVdWZQdKedXe@eAef dLe@eNeFe3dM f e,f d/eNe@eNeFe3dM f e,f e@eAef f fdYdZZRdGeFd/eLfd[d\ZSdGeFd/eLfd]d^ZTdGeFd/eLfd_d`ZUdGeFd/eLfdadbZVdGeFd/eLfdcddZWd.e)d8ed/e)fdedfZXdGeFdged/ee fdhdiZYdjeNeAdf d/e@eAef fdkdlZZdQeeF dmeAd/eHe fdndoZ[d<eHe d/e\eF fdpdqZ]eeHdr eHe
 f Z^e_e^ Z`dseAd/eAfdtduZadve`d/e@e^eAf fdwdxZb	dd<eHdr dyee`df d/e`fdzd{Zcd8edye`d/e`fd|d}ZddGeFdye`d/e`fd~dZedQeeF dye`d/e`fddZfd<e^d/eAfddZgdS )    N)Sequence)copydeepcopy)	dataclassis_dataclass)Enum)	AnnotatedAnyUnioncast)may_v1shared)REF_TEMPLATE)IncExModelNameMap	UnionType)	BaseModel
ConfigDictFieldTypeAdaptercreate_model)PydanticSchemaGenerationError)PydanticUndefinedAnnotation)ValidationError)GetJsonSchemaHandler)eval_type_lenient)lenient_issubclass)	FieldInfo)GenerateJsonSchema)JsonSchemaValue)
CoreSchema)PydanticUndefinedPydanticUndefinedType)Url)Literalget_args
get_origin)"with_info_plain_validator_function) general_plain_validator_function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_inforeturnc                 C   s:   i }t D ]}t| |t}|tur|||< q| j| j|dS )N)
annotationmetadata
attributes)_Attrsgetattr	Undefinedr@   rA   )r>   rB   attrvalue rH   ^/var/www/www-root/data/www/77.83.87.30/venv/lib/python3.10/site-packages/fastapi/_compat/v2.pyasdictL   s   rJ   c                   @      e Zd ZdS )
BaseConfigN__name__
__module____qualname__rH   rH   rH   rI   rL   Y       rL   c                   @   rK   )ErrorWrapperNrM   rH   rH   rH   rI   rR   ]   rQ   rR   c                   @   s  e Zd ZU eed< eed< dZed ed< dZe	e
df ed< edefd	d
Zede	edf fddZede	edf 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d0d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 )1
ModelFieldr>   name
validationrU   serializationmodeNconfigr?   c                 C   s   | j j}|d ur
|S | jS N)r>   r+   rT   )selfarH   rH   rI   r+   h   s   zModelField.aliasc                 C   s   | j j}t|tr|r|S d S rZ   )r>   r-   
isinstancestr)r[   varH   rH   rI   r-   m   s   zModelField.validation_aliasc                 C   s   | j j}|pd S rZ   )r>   r.   )r[   sarH   rH   rI   r.   t   s   zModelField.serialization_aliasc                 C   s
   | j  S rZ   )r>   is_requiredr[   rH   rH   rI   requiredy   s   
zModelField.requiredc                 C   s   |   S rZ   )get_defaultrb   rH   rH   rI   r)   }      zModelField.defaultc                 C   s   | j jS rZ   )r>   r@   rb   rH   rH   rI   type_   re   zModelField.type_c                 C   s   t  = tjdkrddlm} t jd|d t| j}|d g|d t	d
i |d R }t
t| | jd	| _W d    d S 1 sDw   Y  d S )N)      r   ) UnsupportedFieldAttributeWarningignore)categoryr@   rA   rB   )rY   rH   )warningscatch_warningsr   PYDANTIC_VERSION_MINOR_TUPLEpydantic.warningsri   simplefilterrJ   r>   r   r   r   rY   _type_adapter)r[   ri   
field_dictannotated_argsrH   rH   rI   __post_init__   s$   



"zModelField.__post_init__c                 C   s   | j  rtS | j jddS )NT)call_default_factory)r>   ra   rE   rd   rb   rH   rH   rI   rd      s   
zModelField.get_defaultrH   )locrG   valuesrv   .c             
   C   sV   z| j j|ddd fW S  ty* } zd tj|jdd|dfW  Y d }~S d }~ww )NT)from_attributesFinclude_url)errors
loc_prefix)rq   validate_pythonr   r   _regenerate_error_with_locr{   )r[   rG   rw   rv   excrH   rH   rI   validate   s   zModelField.validatejsonTFrX   includer3   by_aliasexclude_unsetexclude_defaultsexclude_noner   pythonr   r3   r   r   r   r   c          	   
   C   s   | j j||||||||dS )Nr   )rq   dump_python)	r[   rG   rX   r   r3   r   r   r   r   rH   rH   rI   	serialize   s   zModelField.serializec                 C   s   t | S rZ   )idrb   rH   rH   rI   __hash__   s   zModelField.__hash__)r?   N)rN   rO   rP   r   __annotations__r^   rX   r$   rY   r
   r   propertyr+   r-   r.   boolrc   r	   r)   rf   rt   rd   dicttupleintlistr   r   r   r   rH   rH   rH   rI   rS   a   st   
 




	

rS   r@   
field_namec                 C   s   | S rZ   rH   )r@   r>   r   rH   rH   rI   get_annotation_from_field_info   s   r   modelc                 C   s   |    d S rZ   )model_rebuildr   rH   rH   rI   _model_rebuild      r   r   rX   r   kwargsc                 K   s   | j dd|i|S )NrX   rH   )
model_dump)r   rX   r   rH   rH   rI   _model_dump   s   r   c                 C   s   | j S rZ   )model_configr   rH   rH   rI   _get_model_config   s   r   fieldc                 C   s$   | j jdi dg }t|dkS )Nschemacomputed_fieldsr   )rq   core_schemagetlen)r   r   rH   rH   rI   _has_computed_fields   s   r   separate_input_output_schemasmodel_name_mapfield_mappingrV   r   c                 C   sp   |st | rd nd}| jdkr| jp| jn| jp| j}|| |p!| jf }d|vr6| jjp3| dd|d< |S )NrU   $ref_ r/   )r   rX   r-   r+   r.   r>   r/   replace)r   r   r   r   override_modefield_aliasjson_schemarH   rH   rI   get_schema_from_model_field   s"   


r   fieldsc                    s  t td}dd | D }dd | D }t|t d}t|t d}dd |D }dd |D }	||	 }
dd	 | D   fd
d	|
D }fddt| t| D }|j|d\}}tttttt	f f |
 D ]}d|v rtt|d dd }||d< qit|||d\}}||fS )N)ref_templatec                 S      g | ]	}|j d kr|qS rU   rX   .0r   rH   rH   rI   
<listcomp>      z#get_definitions.<locals>.<listcomp>c                 S   r   )rW   r   r   rH   rH   rI   r     r   known_modelsc                 S   "   g | ]}t t|d |jddqS )r@   rU   r>   rT   rX   rS   r   rN   r   r   rH   rH   rI   r   !      c                 S   r   )r   rW   r   r   r   rH   rH   rI   r   )  r   c                 S   s   h | ]}|j qS rH   rf   r   frH   rH   rI   	<setcomp>2  s    z"get_definitions.<locals>.<setcomp>c                    s   h | ]	}|j  vr|qS rH   r   r   )input_typesrH   rI   r   3  s    c                    s,   g | ]}| st |r|jnd |jjfqS r   )r   rX   rq   r   r   r   rH   rI   r   6  s    
)inputsr1   r   )r   definitionsr   )r   r   get_flat_models_from_fieldssetr   generate_definitionsr   r   r^   r	   rw   split%_remap_definitions_and_field_mappings)r   r   r   schema_generatorvalidation_fieldsserialization_fieldsflat_validation_modelsflat_serialization_modelsflat_validation_model_fieldsflat_serialization_model_fieldsflat_model_fieldsunique_flat_model_fieldsr   r   r   item_defitem_descriptionnew_mappingnew_definitionsrH   )r   r   rI   get_definitions  sF   
	


"
r   r   old_name_to_new_name_mapc           
      C   s   t | }| D ]_\}}|dkr3| d }t|tr2| d dd }||v r2|| }tj|d|d< qt|trAt||d||< qt|t	rgg }|D ]}t|tr]t||d}	|
|	 qJ|
| qJ|||< q|S )Nr   /r   r   r   )r   itemsr]   r^   r   r   formatr   _replace_refsr   append)
r   r   
new_schemakeyrG   ref_namenew_name	new_valueitemnew_itemrH   rH   rI   r   O  s8   



r   r   c                 C   s   i }|  D ]0\}}|d j}|| vsd|vrq| | }|d dd }|| d| dhv r2q|||< qi }	|  D ]\}}t||d}
|
|	|< q=i }|  D ]\}}||v r_|| }n|}t||d}|||< qR|	|fS )Nr   r   r   r   z-Inputz-Outputr   )r   rf   r   r   )r   r   r   r   	field_keyr   r   r   old_namenew_field_mappingr   r   r   rG   new_keyr   rH   rH   rI   r   s  s:   




r   c                 C   s*   ddl m} t| jjot| j|j S )Nr   )params)fastapir   r   field_annotation_is_scalarr>   r@   r]   Body)r   r   rH   rH   rI   is_scalar_field  s   r   c                 C      t | jjS rZ   )r   field_annotation_is_sequencer>   r@   r   rH   rH   rI   is_sequence_field     r   c                 C   r   rZ   )r   #field_annotation_is_scalar_sequencer>   r@   r   rH   rH   rI   is_scalar_sequence_field  r   r   c                 C      t | jS rZ   )r   $is_bytes_or_nonable_bytes_annotationrf   r   rH   rH   rI   is_bytes_field  r   r  c                 C   r   rZ   )r   is_bytes_sequence_annotationrf   r   rH   rH   rI   is_bytes_sequence_field  r   r  c                 C   s.   t | }||}t| }|j|_|j|_|S rZ   )typefrom_annotationr   rA   r@   )r>   r@   clsmerged_field_infonew_field_inforH   rH   rI   copy_field_info  s   
r	  rG   c                 C   sr   t | jjp	| jj}|tu s|tu r*t| jj}|D ]}|td u r#qt |p(|} t|tj	s2J tj
| |S rZ   )r&   r>   r@   r
   r   r%   r  
issubclassr   sequence_typessequence_annotation_to_type)r   rG   origin_type
union_args	union_argrH   rH   rI   serialize_sequence_value  s   r  rv   c                 C   s.   t dd| i dgjddd }d |d< |S )NzField requiredmissing)r  rv   inputFry   r   r  )r   from_exception_datar{   )rv   errorrH   rH   rI   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 rH   )rT   r>   r@   r   rH   rH   rI   
<dictcomp>  s    z%create_body_model.<locals>.<dictcomp>)r   )r   r  field_params	BodyModelrH   rH   rI   create_body_model  s   r  c                 C   sX   g }| j  D ]"\}}|j}t|ttfst|rd }n| j}|t	|||d q|S )N)r>   rT   rY   )
model_fieldsr   r@   r   r   r   r   r   r   rS   )r   r  rT   r>   rf   r   rH   rH   rI   get_model_fields  s   r  r   rT   c                 C   s   t dd| S )Nz[^a-zA-Z0-9.\-_]r   )resub)rT   rH   rH   rI   normalize_name  r   r  unique_modelsc                 C   s   i }t  }| D ]3}t|j}||v rt|}|||< q||v r6|| ||}||t|< ||t|< q|||< qdd | D S )Nc                 S   s   i | ]\}}||qS rH   rH   )r   kvrH   rH   rI   r    s    z&get_model_name_map.<locals>.<dictcomp>)r   r  rN   get_long_model_nameaddpopr   )r   name_model_mapconflicting_namesr   r  conflicting_modelrH   rH   rI   get_model_name_map  s   




r)  r   c                 C   s"   |pt  }t| }t||d |S Nr   )r   r  r   )r   r   r   rH   rH   rI   get_flat_models_from_model  s   
r+  c                 C   sf   t | }|d ur1t| D ]$}t|ttfr*||vr*|| t|tr)t||d qt||d q|S r*  )r&   r%   r   r   r   r$  r+  get_flat_models_from_annotation)r@   r   originargrH   rH   rI   r,    s   

r,  c                 C   s^   | j }t|tr||v r|S || t||d |S t|tr'|| |S t||d |S r*  )rf   r   r   r$  r+  r   r,  )r   r   
field_typerH   rH   rI   get_flat_models_from_field&  s   



r0  c                 C   s   | D ]}t ||d q|S r*  )r0  )r   r   r   rH   rH   rI   r   6  s   r   c                 C   s   | j  d| j ddS )N__.)rO   rP   r   r   rH   rH   rI   r#  >  s   r#  )r   rZ   )hr  rl   collections.abcr   r   r   dataclassesr   r   enumr   typingr   r	   r
   r   fastapi._compatr   r   fastapi.openapi.constantsr   fastapi.typesr   r   r   pydanticr   r   r   r   r   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#   typing_extensionsr$   r%   r&   pydantic_core.core_schemar'   ImportErrorr(   RequiredParamrE   UndefinedTypeevaluate_forwardref	ValidatorrC   r   r^   rJ   rL   	ExceptionrR   rS   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r   r  TypeModelOrEnumr   TypeModelSetr  r)  r+  r,  r0  r   r#  rH   rH   rH   rI   <module>   s   	
s



#
@



$


.	"


	


