a
    h^                     @   s 	  U 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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+dd e#,ddd D Z-e-d  dkZ.ee/ee/e/e/ee+e+e+ee0e0e0ee1e1e1eeeeiZ2e+e23 Z4ee e5d< e.r<d dlm6Z6 d dlm7Z7 d dlm8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@ d dlAmBZB d dlAmCZC d dlDmEZE d dlDmFZFmGZG d dlDmHZH zd dlImJZJ W n  eKy   d d lImLZJ Y n0 eFZMeFZNeGZOe<ZPeZQG d!d" d"ZRG d#d$ d$eSZTeG d%d& d&ZUee@eVed'd(d)ZWee eeeVef  d*d+d,ZXee dd-d.d/ZYdee(d1 eed2d3d4ZZeed-d5d6Z[d7d8eUeBeeeeUe(d9 f eCf e\eeVef d:d;d<Z]eeU ed=d>d?Z^d7d8eeU eBee\eeeeUe(d9 f eCf eeVeeVef f f d@dAdBZ_eUe\dCdDdEZ`eUe\dCdFdGZaeUe\dCdHdIZbeUe\dCdJdKZceUe\dCdLdMZde@ee@dNdOdPZeeUeee dQdRdSZfeeVdTf eeVef dUdVdWZgeeU eVee dXdYdZZhee eeU d-d[d\Zind d]ljmkZk d d^lmlZH d d_lmRZR d dlm8Z8 d d`lmmQZQ d dalnmTZT d dblompZp d dcl?mqZqmrZrmsZsmtZtmuZumvZvmwZw d dl?m@Z@ d ddl?mUZU exZMee5de< d dfl?mNZN d dgl?mOZO d dhlymzZzm{Z{m|Z|m}Z} d dilymWZW d djl~mPZP d dlm>Z> eZ:eeVef ZCeZEereteqevesewhZere/ete0eve+ese/ewe/iZeG dkdl dlZBG dmdn dneSZ6ddddoedTef eeVdf eeedpdqdrZJeeee ee f  eeee ee f eVf eeVef dsdtduZeUe\dCdvdwZeUe\dCdxdyZee eeeVef  d*dzd,ZXee dd-d{d/ZYdee(d1 eed2d|d4ZZeed-d}d6Z[d7d8eUeBeeeeUe(d9 f eCf e\eeVef d:d~d<Z]eeU ed=dd?Z^d7d8eeU eBee\eeeeUe(d9 f eCf eeVeeVef f f d@ddBZ_eUe\dCddEZ`eUe\dCddGZaeUe\dCddIZbeUe\dCddKZceUe\dCddMZde@ee@dNddPZeeUeee dQddSZfeeVdTf eeVef dUddWZgeeU eVee dXddZZhee eeU d-dd\Ziee eeeVef dTf eeeVef  dddZeee df e\dddZeee df e\dddZee\dddZeee df e\dddZeee df e\dddZee\dddZeee df e\dddZee\dddZee\dddZee\dddZee\dddZe	ee eeU d-ddZdS )    )dequecopy)	dataclassis_dataclass)Enum)	lru_cache)AnyCallableDequeDict	FrozenSetListMappingSequenceSetTupleTypeUnioncast)RequestErrorModel)IncExModelNameMap	UnionType)	BaseModelcreate_model)VERSION)
UploadFile)	AnnotatedLiteralget_args
get_originc                 c   s   | ]}t |V  qd S N)int).0x r&   K/var/www/html/assistant/venv/lib/python3.9/site-packages/fastapi/_compat.py	<genexpr>       r(   .N   Url)PydanticSchemaGenerationError)TypeAdapter)ValidationError)GetJsonSchemaHandler)eval_type_lenient)lenient_issubclass)	FieldInfo)GenerateJsonSchema)JsonSchemaValue)
CoreSchema)PydanticUndefinedPydanticUndefinedType)r,   )"with_info_plain_validator_function) general_plain_validator_functionc                   @   s   e Zd ZdS )
BaseConfigN__name__
__module____qualname__r&   r&   r&   r'   r;   R   s   r;   c                   @   s   e Zd ZdS )ErrorWrapperNr<   r&   r&   r&   r'   r@   U   s   r@   c                   @   s6  e Zd ZU eed< eed< dZed ed< eedddZ	ee
dd	d
ZeedddZeedddZddddZedddZi fddeeeef eeeef df eeeeeeef  df f dddZddddddddeed eedf eedf e
e
e
e
ed	d d!Zedd"d#ZdS )$
ModelField
field_infoname
validationrD   serializationmode)returnc                 C   s   | j j}|d ur|S | jS r"   )rB   aliasrC   )selfar&   r&   r'   rI   ^   s    zModelField.aliasc                 C   s
   | j  S r"   )rB   is_requiredrJ   r&   r&   r'   requiredc   s    zModelField.requiredc                 C   s   |   S r"   )get_defaultrM   r&   r&   r'   defaultg   s    zModelField.defaultc                 C   s   | j jS r"   rB   
annotationrM   r&   r&   r'   type_k   s    zModelField.type_Nc                 C   s   t t| jj| jf | _d S r"   )r.   r   rB   rR   _type_adapterrM   r&   r&   r'   __post_init__o   s    zModelField.__post_init__c                 C   s   | j  rtS | j jddS )NT)Zcall_default_factory)rB   rL   	UndefinedrO   rM   r&   r&   r'   rO   t   s    
zModelField.get_defaultr&   loc.)valuevaluesrX   rH   c             
   C   sX   z| j j|ddd fW S  tyR } z$d t|jdd|dfW  Y d }~S d }~0 0 d S )NT)Zfrom_attributesFZinclude_url)errors
loc_prefix)rT   Zvalidate_pythonr/   _regenerate_error_with_locr\   )rJ   rY   rZ   rX   excr&   r&   r'   validatey   s    zModelField.validatejsonTFrG   includeexcludeby_aliasexclude_unsetexclude_defaultsexclude_nonera   python)	rY   rG   rc   rd   re   rf   rg   rh   rH   c          	   
   C   s   | j j||||||||dS )Nrb   )rT   Zdump_python)	rJ   rY   rG   rc   rd   re   rf   rg   rh   r&   r&   r'   	serialize   s    zModelField.serializec                 C   s   t | S r"   )idrM   r&   r&   r'   __hash__   s    zModelField.__hash__)r=   r>   r?   r3   __annotations__strrG   r   propertyrI   boolrN   r	   rP   rS   rU   rO   r   r   r   r#   r   r`   r   rk   rm   r&   r&   r&   r'   rA   X   sR   



rA   )rR   rB   
field_namerH   c                 C   s   | S r"   r&   )rR   rB   rr   r&   r&   r'   get_annotation_from_field_info   s    rs   )r\   rH   c                 C   s   | S r"   r&   )r\   r&   r&   r'   _normalize_errors   s    rt   )modelrH   c                 C   s   |    d S r"   )Zmodel_rebuildru   r&   r&   r'   _model_rebuild   s    rw   ra   ri   )ru   rG   kwargsrH   c                 K   s   | j f d|i|S )NrG   )Z
model_dumpru   rG   rx   r&   r&   r'   _model_dump   s    rz   c                 C   s   | j S r"   )Zmodel_configrv   r&   r&   r'   _get_model_config   s    r{   T)separate_input_output_schemasrE   )fieldschema_generatormodel_name_mapfield_mappingr|   rH   c                 C   sH   |rd nd}|| |p| j f }d|vrD| jjp>| j dd|d< |S )NrD   z$ref_ title)rG   rB   r   rI   replace)r}   r~   r   r   r|   override_modeZjson_schemar&   r&   r'   get_schema_from_model_field   s    
r   )fieldsrH   c                 C   s   i S r"   r&   )r   r&   r&   r'   get_compat_model_name_map   s    r   )r   r~   r   r|   rH   c           	         s   |rd nd  fdd| D }|j |d\}}ttttttf f | D ],}d|v rLtt|d dd }||d< qL||fS )NrD   c                    s    g | ]}| p|j |jjfqS r&   )rG   rT   Zcore_schema)r$   r}   r   r&   r'   
<listcomp>   s   z#get_definitions.<locals>.<listcomp>)inputsdescriptionr   )Zgenerate_definitionsr   r   ro   r	   rZ   split)	r   r~   r   r|   r   r   definitionsZitem_defZitem_descriptionr&   r   r'   get_definitions   s    


"
r   )r}   rH   c                 C   s(   ddl m} t| jjo&t| j|j S )Nr   params)fastapir   field_annotation_is_scalarrB   rR   
isinstanceBody)r}   r   r&   r&   r'   is_scalar_field   s    r   c                 C   s   t | jjS r"   )field_annotation_is_sequencerB   rR   r}   r&   r&   r'   is_sequence_field   s    r   c                 C   s   t | jjS r"   )#field_annotation_is_scalar_sequencerB   rR   r   r&   r&   r'   is_scalar_sequence_field   s    r   c                 C   s
   t | jS r"   )$is_bytes_or_nonable_bytes_annotationrS   r   r&   r&   r'   is_bytes_field   s    r   c                 C   s
   t | jS r"   )is_bytes_sequence_annotationrS   r   r&   r&   r'   is_bytes_sequence_field  s    r   )rB   rR   rH   c                 C   s.   t | }||}t| }|j|_|j|_|S r"   )typeZfrom_annotationr   metadatarR   )rB   rR   clsZmerged_field_infoZnew_field_infor&   r&   r'   copy_field_info  s    
r   )r}   rY   rH   c                 C   s.   t | jjp| jj}t|ts"J t| |S r"   )r!   rB   rR   
issubclasssequence_typessequence_annotation_to_type)r}   rY   Zorigin_typer&   r&   r'   serialize_sequence_value  s    r   .)rX   rH   c                 C   s.   t dd| i dgjddd }d |d< |S )NzField requiredmissing)r   rX   inputFr[   r   r   )r/   Zfrom_exception_datar\   )rX   errorr&   r&   r'   get_missing_field_error  s    r   )r   
model_namerH   c                 C   s"   dd | D }t |fi |}|S )Nc                 S   s   i | ]}|j |jj|jfqS r&   )rC   rB   rR   r$   fr&   r&   r'   
<dictcomp>  r)   z%create_body_model.<locals>.<dictcomp>)r   )r   r   Zfield_params	BodyModelr&   r&   r'   create_body_model  s    r   c                 C   s   dd | j  D S )Nc                 S   s   g | ]\}}t ||d qS ))rB   rC   rA   )r$   rC   rB   r&   r&   r'   r   "  s   z$get_model_fields.<locals>.<listcomp>)Zmodel_fieldsitemsrv   r&   r&   r'   get_model_fields!  s    r   )
REF_PREFIX)AnyUrl)r;   )	Validator)r@   )MissingError)SHAPE_FROZENSET
SHAPE_LISTSHAPE_SEQUENCE	SHAPE_SETSHAPE_SINGLETONSHAPE_TUPLESHAPE_TUPLE_ELLIPSISr   RequiredParam)rV   )UndefinedType)field_schemaget_flat_models_from_fieldsget_model_name_mapmodel_process_schema)rs   )evaluate_forwardrefc                   @   s   e Zd ZU eed< dS )r4   Zref_templateN)r=   r>   r?   ro   rn   r&   r&   r&   r'   r4   p  s   
r4   c                   @   s   e Zd ZdS )r-   Nr<   r&   r&   r&   r'   r-   t  s   r-   )refr   rF   )functionr   r   rF   rH   c                C   s   i S r"   r&   )r   r   r   rF   r&   r&   r'   r9   w  s    r9   )flat_modelsr   rH   c                 C   s^   i }| D ]P}t ||td\}}}|| || }d|v rP|d dd |d< |||< q|S )Nr   Z
ref_prefixr   r   r   )r   r   updater   )r   r   r   ru   Zm_schemaZm_definitionsZm_nested_modelsr   r&   r&   r'   get_model_definitions  s    

r   c                 C   sz   ddl m} | j}| jtkrTt| jtsTt| jtsTt	| jsTt
| jsTt||jrXdS | jrvtdd | jD svdS dS )Nr   r   Fc                 s   s   | ]}t |V  qd S r"   is_pv1_scalar_fieldr   r&   r&   r'   r(     s   z&is_pv1_scalar_field.<locals>.<genexpr>T)r   r   rB   shaper   r2   rS   r   dictr   r   r   r   
sub_fieldsall)r}   r   rB   r&   r&   r'   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rLdS dS )NFT)r   sequence_shapesr2   rS   r   r   r   _annotation_is_sequence)r}   Z	sub_fieldr&   r&   r'   is_pv1_scalar_sequence_field  s    


r   c                 C   s^   g }| D ]P}t |tr4t|gtd }|| qt |trN|t| q|| q|S )N)r\   ru   )	r   r@   r/   r   r\   extendlistrt   append)r\   Z
use_errorsr   Z
new_errorsr&   r&   r'   rt     s    


c                 C   s   |    d S r"   )Zupdate_forward_refsrv   r&   r&   r'   rw     s    c                 K   s   | j f i |S r"   )r   ry   r&   r&   r'   rz     s    c                 C   s   | j S r"   )Z
__config__rv   r&   r&   r'   r{     s    c                 C   s   t | |tdd S )Nr   r   )r   r   )r}   r~   r   r   r|   r&   r&   r'   r     s
    c                 C   s   t | t d}t|S )NZknown_models)r   setr   )r   modelsr&   r&   r'   r     s    c                 C   s   t | t d}i t||dfS )Nr   )r   r   )r   r   r   )r   r~   r   r|   r   r&   r&   r'   r     s    c                 C   s   t | S r"   r   r   r&   r&   r'   r     s    c                 C   s   | j tv pt| jS r"   )r   r   r   rS   r   r&   r&   r'   r     s    c                 C   s   t | S r"   )r   r   r&   r&   r'   r     s    c                 C   s   t | jtS r"   )r2   rS   bytesr   r&   r&   r'   r     s    c                 C   s   | j tv ot| jtS r"   )r   r   r2   rS   r   r   r&   r&   r'   r     s    c                 C   s   t | S r"   r   rQ   r&   r&   r'   r     s    c                 C   s   t | j |S r"   )sequence_shape_to_typer   )r}   rY   r&   r&   r'   r     s    c                 C   s&   t t | d}t|gt}| d S )NrW   r   )r@   r   r/   r   r\   )rX   Zmissing_field_errorZ	new_errorr&   r&   r'   r     s    c                 C   s"   t |}| D ]}||j|j< q|S r"   )r   
__fields__rC   )r   r   r   r   r&   r&   r'   r   
  s    c                 C   s   t | j S r"   )r   r   rZ   rv   r&   r&   r'   r     s    )r\   r]   rH   c                    s    fddt | D }|S )Nc              	      s(   g | ] }i |d  | d d iqS )rX   r&   )get)r$   errr]   r&   r'   r     s   z._regenerate_error_with_loc.<locals>.<listcomp>)rt   )r\   r]   Zupdated_loc_errorsr&   r   r'   r^     s    
r^   )rR   rH   c                 C   s   t | ttfrdS t | tS )NF)r2   ro   r   r   rR   r&   r&   r'   r   !  s    r   c                 C   sL   t | }|tu s|tu r8t| D ]}t|r  dS q dS t| pJtt | S NTF)r!   r   r   r    r   r   rR   originargr&   r&   r'   r   '  s    
r   )rY   rH   c                 C   s   t | tot | ttf S r"   )r   r   ro   r   )rY   r&   r&   r'   value_is_sequence3  s    r   c                 C   s    t | tttfpt| pt| S r"   )r2   r   r   r   r   r   r   r&   r&   r'   _annotation_is_complex7  s
    r   c                 C   sR   t | }|tu s|tu r.tdd t| D S t| pPt|pPt|dpPt|dS )Nc                 s   s   | ]}t |V  qd S r"   )field_annotation_is_complex)r$   r   r&   r&   r'   r(   B  r)   z.field_annotation_is_complex.<locals>.<genexpr>Z__pydantic_core_schema__Z__get_pydantic_core_schema__)r!   r   r   anyr    r   hasattr)rR   r   r&   r&   r'   r   ?  s    r   c                 C   s   | t u pt|  S r"   )Ellipsisr   r   r&   r&   r'   r   L  s    r   c                 C   sj   t | }|tu s|tu rLd}t| D ]"}t|r8d}q$q$t|s$ dS q$|S t| ohtdd t| D S )NFTc                 s   s   | ]}t |V  qd S r"   )r   r$   Zsub_annotationr&   r&   r'   r(   \  s   z6field_annotation_is_scalar_sequence.<locals>.<genexpr>)r!   r   r   r    r   r   r   r   )rR   r   Zat_least_one_scalar_sequencer   r&   r&   r'   r   Q  s    r   c                 C   sH   t | trdS t| }|tu s&|tu rDt| D ]}t |tr. dS q.dS r   )r2   r   r!   r   r   r    r   r&   r&   r'   r   b  s    

r   c                 C   sH   t | trdS t| }|tu s&|tu rDt| D ]}t |tr. dS q.dS r   )r2   r   r!   r   r   r    r   r&   r&   r'   .is_uploadfile_or_nonable_uploadfile_annotationm  s    

r   c                 C   sZ   t | }|tu s|tu r<d}t| D ]}t|r$d}q$q$|S t| oXtdd t| D S )NFTc                 s   s   | ]}t |V  qd S r"   )r   r   r&   r&   r'   r(     s   z/is_bytes_sequence_annotation.<locals>.<genexpr>)r!   r   r   r    r   r   r   rR   r   Zat_least_oner   r&   r&   r'   r   x  s    r   c                 C   sZ   t | }|tu s|tu r<d}t| D ]}t|r$d}q$q$|S t| oXtdd t| D S )NFTc                 s   s   | ]}t |V  qd S r"   )r   r   r&   r&   r'   r(     s   z4is_uploadfile_sequence_annotation.<locals>.<genexpr>)r!   r   r   r    !is_uploadfile_sequence_annotationr   r   r   r&   r&   r'   r     s    r   c                 C   s   t | S r"   )r   rv   r&   r&   r'   get_cached_model_fields  s    r   )ra   )ra   )collectionsr   r   Zdataclassesr   r   enumr   	functoolsr   typingr	   r
   r   r   r   r   r   r   r   r   r   r   r   Zfastapi.exceptionsr   Zfastapi.typesr   r   r   Zpydanticr   r   Zpydantic.versionr   ZPYDANTIC_VERSIONZstarlette.datastructuresr   Ztyping_extensionsr   r   r    r!   tupler   ZPYDANTIC_VERSION_MINOR_TUPLEZPYDANTIC_V2r   r   	frozensetr   keysr   rn   r-   r.   r/   Z,pydantic._internal._schema_generation_sharedr0   Z pydantic._internal._typing_extrar1   Zpydantic._internal._utilsr2   Zpydantic.fieldsr3   Zpydantic.json_schemar4   r5   Zpydantic_corer6   r7   r8   r,   Zpydantic_core.core_schemar9   ImportErrorr:   r   rV   r   r   r   r;   	Exceptionr@   rA   ro   rs   rt   rw   rz   r{   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   Zfastapi.openapi.constantsr   r   Zpydantic.class_validatorsZpydantic.error_wrappersZpydantic.errorsr   r   r   r   r   r   r   r   r   Zpydantic.schemar   r   r   r   Zpydantic.typingZpydantic.utilsr   r   r   r   r   r#   r^   r   r   r   r   r   r   r   r   r   r   r   r   r&   r&   r&   r'   <module>   s  < P  

 $		


  

	 