o
    (i;                     @   sB  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,m.Z. d dl/m0Z0 d dl/m1Z1 d dl/m2Z2 d dl3m4Z4 e1Z5e1Z6e)Z7i 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+Z8d,e+d-e9e:ef fd.d/Z;eG d0d1 d1Z<d2e<d-e=fd3d4Z>d*d5d2e<d6ed7e9e?e<ed8 f e.f d9e=d-e9e:ef f
d:d;Z@d*d5d<ee< d6ed9e=d-e?e9e?e<ed8 f e.f e9e:e9e:ef f f fd=d>ZAd2e<d-e=fd?d@ZBd,e+dAed-e+fdBdCZCd2e<dDed-ee fdEdFZDdGe?eEe:B df d-e9e:ef fdHdIZFd<ee< dJe:d-eGe fdKdLZHdMeGe d-eIe< fdNdOZJedMeGe d-eIe< fdPdQZKeGdR eGe	 B ZLeMeL ZNdSe:d-e:fdTdUZOdVeNd-e9eLe:f fdWdXZP	dfdMeGdR dYeNdB d-eNfdZd[ZQdAedYeNd-eNfd\d]ZRd2e<dYeNd-eNfd^d_ZSd<ee< dYeNd-eNfd`daZTdbee dce?e:eEB df d-eIe9e:ef  fdddeZUdS )g    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)GetJsonSchemaHandler)eval_type_lenient)	FieldInfo)GenerateJsonSchema)JsonSchemaValue)
CoreSchema)PydanticUndefined)Url)"with_info_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=   r>   )r;   r?   attrvalue rE   O/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/fastapi/_compat/v2.pyasdictF   s   rG   c                   @   sL  e Zd ZU eed< eed< dZed ed< dZe	dB ed< e
defd	d
Ze
dedB fddZe
dedB 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B df deeeeeef  f fddZdddddddd deded! d"edB d#edB d$ed%ed&ed'edefd(d)Zdefd*d+ZdS )-
ModelFieldr;   name
validationrJ   serializationmodeNconfigr<   c                 C   s   | j j}|d ur
|S | jS N)r;   r(   rI   )selfarE   rE   rF   r(   Z   s   zModelField.aliasc                 C   s   | j j}t|tr|r|S d S rO   )r;   r*   
isinstancestr)rP   varE   rE   rF   r*   _   s   zModelField.validation_aliasc                 C   s   | j j}|pd S rO   )r;   r+   )rP   sarE   rE   rF   r+   f   s   zModelField.serialization_aliasc                 C   s   |   S rO   )get_defaultrP   rE   rE   rF   r&   k      zModelField.defaultc                 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=   r>   r?   )rN   rE   )warningscatch_warningsr   PYDANTIC_VERSION_MINOR_TUPLEpydantic.warningsr[   simplefilterrG   r;   r   r   r   rN   _type_adapter)rP   r[   
field_dictannotated_argsrE   rE   rF   __post_init__o   s$   



"zModelField.__post_init__c                 C   s   | j  rtS | j jddS )NT)call_default_factory)r;   is_requiredrB   rV   rW   rE   rE   rF   rV      s   
zModelField.get_defaultrE   )locrD   valuesri   .c             
   C   sT   z| j j|ddg 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)rc   validate_pythonr   _regenerate_error_with_locrn   )rP   rD   rj   ri   excrE   rE   rF   validate   s   zModelField.validatejsonTFrM   includer0   by_aliasexclude_unsetexclude_defaultsexclude_none)rt   pythonrv   r0   rw   rx   ry   rz   c          	   
   C   s   | j j||||||||dS )Nru   )rc   dump_python)	rP   rD   rM   rv   r0   rw   rx   ry   rz   rE   rE   rF   	serialize   s   zModelField.serializec                 C      t | S rO   )idrW   rE   rE   rF   __hash__   s   zModelField.__hash__)r<   N)__name__
__module____qualname__r   __annotations__rS   rM   r
   rN   r   propertyr(   r*   r+   r	   r&   rf   rV   dicttupleintlistrs   r   boolr}   r   rE   rE   rE   rF   rH   S   sl   
 


	

rH   fieldc                 C   s$   | j jdi dg }t|dkS )Nschemacomputed_fieldsr   )rc   core_schemagetlen)r   r   rE   rE   rF   _has_computed_fields   s   r   separate_input_output_schemasmodel_name_mapfield_mappingrK   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 )NrJ   z$ref_ r,   )r   rM   r*   r(   r+   r;   r,   replace)r   r   r   r   override_modefield_aliasjson_schemarE   rE   rF   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< qi|tttttt	f f |fS )N)ref_templatec                 S      g | ]	}|j d kr|qS rJ   rM   .0r   rE   rE   rF   
<listcomp>       z#get_definitions.<locals>.<listcomp>c                 S   r   )rL   r   r   rE   rE   rF   r      r   known_modelsc                 S   "   g | ]}t t|d |jddqS )r=   rJ   r;   rI   rM   rH   r   r   r   modelrE   rE   rF   r          c                 S   r   )r   rL   r   r   r   rE   rE   rF   r      r   c                 S   s   h | ]}|j jqS rE   r;   r=   r   frE   rE   rF   	<setcomp>  s    z"get_definitions.<locals>.<setcomp>c                    s   h | ]
}|j j vr|qS rE   r   r   )input_typesrE   rF   r   	  s    c                    s,   g | ]}| st |r|jnd |jjfqS r   )r   rM   rc   r   r   r   rE   rF   r     s    
)inputsr.   r   )r    r   get_flat_models_from_fieldssetr   generate_definitionsr   r   rS   r	   rj   split)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   definitionsitem_defitem_descriptionrE   )r   r   rF   get_definitions   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=   rR   Body)r   r   rE   rE   rF   is_scalar_field%  s   r   r=   c                 C   s.   t | }||}t| }|j|_|j|_|S rO   )typefrom_annotationr   r>   r=   )r;   r=   clsmerged_field_infonew_field_inforE   rE   rF   copy_field_info-  s   
r   rD   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 rO   )r   r;   r=   r   r   r   r   
issubclassr   sequence_typessequence_annotation_to_type)r   rD   origin_type
union_args	union_argrE   rE   rF   serialize_sequence_value6  s   r   ri   c                 C   s.   t dd| i dgjddd }d |d< |S )NzField requiredmissing)r   ri   inputFrl   r   r   )r   from_exception_datarn   )ri   errorrE   rE   rF   get_missing_field_errorC  s   r   
model_namec                 C   s"   dd | D }t |fi |}|S )Nc                 S   s   i | ]}|j |jj|jfqS rE   )rI   r;   r=   r   rE   rE   rF   
<dictcomp>N  s    z%create_body_model.<locals>.<dictcomp>)r   )r   r   field_params	BodyModelrE   rE   rF   create_body_modelK  s   r   r   c                 C   sX   g }| j  D ]"\}}|j}t|ttfst|rd }n| j}|t	|||d q|S )N)r;   rI   rN   )
model_fieldsitemsr=   r   r   r   r   model_configappendrH   )r   r   rI   r;   type_r   rE   rE   rF   get_model_fieldsS  s   r   c                 C   r~   rO   )r   )r   rE   rE   rF   get_cached_model_fieldse  rX   r   r   rI   c                 C   s   t dd| S )Nz[^a-zA-Z0-9.\-_]r   )resub)rI   rE   rE   rF   normalize_nameq  s   r   unique_modelsc                 C   s2   i }| D ]}t |j}|||< qdd | D S )Nc                 S   s   i | ]\}}||qS rE   rE   )r   kvrE   rE   rF   r   z  s    z&get_model_name_map.<locals>.<dictcomp>)r   r   r   )r   name_model_mapr   r   rE   rE   rF   get_model_name_mapu  s
   

r   r   c                 C   s"   |pt  }t| }t||d |S Nr   )r   r   r   )r   r   r   rE   rE   rF   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   addr   get_flat_models_from_annotation)r=   r   originargrE   rE   rF   r     s   

r   c                 C   s`   | j j}t|tr||v r|S || t||d |S t|tr(|| |S t||d |S r   )r;   r=   r   r   r   r   r   r   )r   r   
field_typerE   rE   rF   get_flat_models_from_field  s   



r   c                 C   s   | D ]}t ||d q|S r   )r   )r   r   r   rE   rE   rF   r     s   r   rn   ro   c                    s    fdd| D }|S )Nc              	      s(   g | ]}i |d  | d d iqS )ri   rE   )r   )r   errro   rE   rF   r     s    z._regenerate_error_with_loc.<locals>.<listcomp>rE   )rn   ro   updated_loc_errorsrE   r   rF   rq     s   
rq   rO   )Vr   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._internal._schema_generation_sharedr    pydantic._internal._typing_extrar   pydantic.fieldsr   pydantic.json_schemar    r!   pydantic_corer"   r#   r$   pydantic_core.core_schemar%   RequiredParamrB   evaluate_forwardrefr@   r   rS   rG   rH   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   TypeModelOrEnumr   TypeModelSetr   r   r   r   r   r   rq   rE   rE   rE   rF   <module>   s2   $
	
k

#
@	&
	
	


