o
    uN)jD                     @   s  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		dldede9e:ef dB de9e:ef dB defddZ;G d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d0dd1dd2dddd3Z<d4e,de9e:ef fd5d6Z=eG d7d8 d8Z>d9e>de?fd:d;Z@d2d<d9e>d=ed>e9eAe>ed? f e0f d@e?de9e:ef f
dAdBZBd2d<dCee> d=ed@e?deAe9eAe>ed? f e0f e9e:e9e:ef f f fdDdEZCd9e>de?fdFdGZDd4e,dHede,fdIdJZEd9e>dedee fdKdLZFdMeAeGe:B d!f de9e:ef fdNdOZHdCee> dPe:deIe fdQdRZJdSeIe deKe> fdTdUZLedSeIe deKe> fdVdWZMeIdX eIe	 B ZNeOeN ZPdYe:de:fdZd[ZQd\ePde9eNe:f fd]d^ZR	dmdSeIdX d_ePdB dePfd`daZSdHed_ePdePfdbdcZTd9e>d_ePdePfdddeZUdCee> d_ePdePfdfdgZVdhee dieAe:eGB d!f deKe9e:ef  fdjdkZWdS )n    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                 C   s2   t tdd }|d ur|| ||d S t| ||S )Ntry_eval_typer   )getattr_pydantic_typing_extraeval_type_lenient)r&   r'   r(   r*    r.   s/var/www/html/finance.cargoinsureonline.com/_shared/backend-venv/lib/python3.10/site-packages/fastapi/_compat/v2.pyevaluate_forwardref+   s   r0   c                   @   s   e Zd ZdedefddZdS )r    schemar)   c                 C   sJ   ddd}| j dkr| jjn| jj}|dkrd|d< | ||| 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)selfr1   json_schema
bytes_moder.   r.   r/   bytes_schema<   s   

zGenerateJsonSchema.bytes_schemaN)__name__
__module____qualname__r"   r!   rB   r.   r.   r.   r/   r    9   s    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                 C   s:   i }t D ]}t| |t}|tur|||< q| j| j|dS )N)
annotationmetadata
attributes)_Attrsr+   	Undefinedr\   r]   )r[   r^   attrr&   r.   r.   r/   asdictd   s   rb   c                   @   s  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dddddd*de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 )0
ModelFieldr[   name
validationre   r5   r8   Nconfigr)   c                 C   s   | j j}|d ur
|S | jS N)r[   rH   rd   )r?   ar.   r.   r/   rH   x   s   zModelField.aliasc                 C   s   | j j}t|tr|r|S d S rh   )r[   rJ   
isinstancestr)r?   var.   r.   r/   rJ   }   s   zModelField.validation_aliasc                 C   s   | j j}|pd S rh   )r[   rK   )r?   sar.   r.   r/   rK      s   zModelField.serialization_aliasc                 C   s   |   S rh   )get_defaultr?   r.   r.   r/   rF         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^   )rg   r.   )warningscatch_warningsr   PYDANTIC_VERSION_MINOR_TUPLEpydantic.warningsrs   simplefilterrb   r[   r   r   r   rg   _type_adapter)r?   rs   
field_dictannotated_argsr.   r.   r/   __post_init__   s$   



"zModelField.__post_init__c                 C   s   | j  rtS | j jddS )NT)call_default_factory)r[   is_requiredr`   rn   ro   r.   r.   r/   rn      s   
zModelField.get_defaultr.   )locr&   valuesr   .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)r{   validate_pythonr   _regenerate_error_with_locr   )r?   r&   r   r   excr.   r.   r/   validate   s   zModelField.validatejsonTFr8   includerP   by_aliasexclude_unsetexclude_defaultsexclude_none)r   pythonr   rP   r   r   r   r   c          	   
   C   s   | j j||||||||dS )Nr   )r{   dump_python)	r?   r&   r8   r   rP   r   r   r   r   r.   r.   r/   	serialize   s   zModelField.serializer   rP   r   r   r   r   c             	   C   s   | j j|||||||dS )Nr   )r{   	dump_json)r?   r&   r   rP   r   r   r   r   r.   r.   r/   serialize_json   s   zModelField.serialize_jsonc                 C      t | S rh   )idro   r.   r.   r/   __hash__   s   zModelField.__hash__)r)   N)rC   rD   rE   r   __annotations__rk   r8   r
   rg   r   propertyrH   rJ   rK   r	   rF   r~   rn   dicttupleintlistr   r   boolr   r>   r   r   r.   r.   r.   r/   rc   q   s   
 


	

	

rc   fieldc                 C   s$   | j jdi dg }t|dkS )Nr1   computed_fieldsr   )r{   core_schemagetlen)r   r   r.   r.   r/   _has_computed_fields   s   r   separate_input_output_schemasmodel_name_mapfield_mappingrf   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 )Nre   z$ref_ rL   )r   r8   rJ   rH   rK   r[   rL   replace)r   r   r   r   override_modefield_aliasr@   r.   r.   r/   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 re   r8   .0r   r.   r.   r/   
<listcomp>'      z#get_definitions.<locals>.<listcomp>c                 S   r   )r5   r   r   r.   r.   r/   r   (  r   known_modelsc                 S   "   g | ]}t t|d |jddqS )r\   re   r[   rd   r8   rc   r   rC   r   modelr.   r.   r/   r   /      c                 S   r   )r   r5   r   r   r   r.   r.   r/   r   7  r   c                 S   s   h | ]}|j jqS r.   r[   r\   r   fr.   r.   r/   	<setcomp>@  s    z"get_definitions.<locals>.<setcomp>c                    s   h | ]
}|j j vr|qS r.   r   r   )input_typesr.   r/   r   A  s    c                    s,   g | ]}| st |r|jnd |jjfqS r   )r   r8   r{   r   r   r   r.   r/   r   D  s    
)inputsrN   r   )r    r   get_flat_models_from_fieldssetr   generate_definitionsr   r   rk   r	   r   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_descriptionr.   )r   r   r/   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\   rj   Body)r   r   r.   r.   r/   is_scalar_field]  s   r   r\   c                 C   s.   t | }||}t| }|j|_|j|_|S rh   )r3   from_annotationr   r]   r\   )r[   r\   clsmerged_field_infonew_field_infor.   r.   r/   copy_field_infoe  s   
r   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 rh   )r   r[   r\   r   r   r   r3   
issubclassr   sequence_typessequence_annotation_to_type)r   r&   origin_type
union_args	union_argr.   r.   r/   serialize_sequence_valuen  s   r   r   c                 C   s.   t dd| i dgjddd }d |d< |S )NzField requiredmissing)r3   r   inputFr   r   r   )r   from_exception_datar   )r   errorr.   r.   r/   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 r.   )rd   r[   r\   r   r.   r.   r/   
<dictcomp>  s    z%create_body_model.<locals>.<dictcomp>)r   )r   r   field_params	BodyModelr.   r.   r/   create_body_model  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[   rd   rg   )
model_fieldsitemsr\   r   r   r   r   model_configappendrc   )r   r   rd   r[   type_r   r.   r.   r/   get_model_fields  s   r   c                 C   r   rh   )r   )r   r.   r.   r/   get_cached_model_fields  rp   r   r   rd   c                 C   s   t dd| S )Nz[^a-zA-Z0-9.\-_]r   )resub)rd   r.   r.   r/   normalize_name  s   r  unique_modelsc                 C   s2   i }| D ]}t |j}|||< qdd | D S )Nc                 S   s   i | ]\}}||qS r.   r.   )r   kvr.   r.   r/   r     s    z&get_model_name_map.<locals>.<dictcomp>)r  rC   r   )r  name_model_mapr   r   r.   r.   r/   get_model_name_map  s
   

r  r   c                 C   s"   |pt  }t| }t||d |S Nr   )r   r   r   )r   r   r   r.   r.   r/   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argr.   r.   r/   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_typer.   r.   r/   get_flat_models_from_field  s   



r  c                 C   s   | D ]}t ||d q|S r  )r  )r   r   r   r.   r.   r/   r     s   r   r   r   c                    s    fdd| D }|S )Nc              	      s(   g | ]}i |d  | d d iqS )r   r.   )r   )r   errr   r.   r/   r     s    z._regenerate_error_with_loc.<locals>.<listcomp>r.   )r   r   updated_loc_errorsr.   r  r/   r     s   
r   )NNrh   )Xr   rv   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%   RequiredParamr`   r   rk   r0   r_   rb   rc   r   r   r   r   r   r   r   r   r   r   r3   r   r   r   r   TypeModelOrEnumr   TypeModelSetr  r  r  r
  r  r   r   r.   r.   r.   r/   <module>   sJ   $

	
 

#
@	&
	
	


