a
    g	g^Z                     @   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	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e.e.e.eeeeiZ/e,e/0 Z1e*rd dlm2Z2 d dlm3Z3 d dlm4Z4 d dl5m6Z6 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l@mBZBmCZC d dl@mDZD zd dlEmFZF W n  eGy   d dlEmHZF Y n0 eBZIeBZJeCZKe8ZLe	ZMG dd dZNG dd deOZPeG dd  d ZQe	e<eRe	d!d"d#ZSee	 eeeRe	f  d$d%d&ZTee d'd(d)d*ZUdee%d, e	e	d-d.d/ZVee	d(d0d1ZWd2d3eQe>eeeeQe%d4 f e?f eXeeRe	f d5d6d7ZYeeQ ed8d9d:ZZd2d3eeQ e>eeXeeeeQe%d4 f e?f eeReeRe	f f f d;d<d=Z[eQeXd>d?d@Z\eQeXd>dAdBZ]eQeXd>dCdDZ^eQeXd>dEdFZ_eQeXd>dGdHZ`e<e	e<dIdJdKZaeQe	ee	 dLdMdNZbeeRdOf eeRe	f dPdQdRZceeQ eRee dSdTdUZdnd dVlemfZf d dWlmgZD d dXlmNZN d dlm4Z4 d dYlhmMZM d dZlimPZP d d[ljmkZk d d\l;mlZlmmZmmnZnmoZompZpmqZqmrZr d dl;m<Z< d d]l;mQZQ d d^l;mIZI d d_l;mJZJ d d`l;mKZK d dalsmtZtmuZumvZvmwZw d dblsmSZS d dclxmLZL d dlym:Z: e	Z6eeRe	f Z?e	ZAemeoeleqenerhZzeme+eoe-eqe,ene+ere+iZ{eG ddde deZ>G dfdg dgeOZ2d'd'd'dhe
dOe	f eeRd'f e	e	e	didjdkZFeeee ee f  eeee ee f eRf eeRe	f dldmdnZ|eQeXd>dodpZ}eQeXd>dqdrZ~ee	 eeeRe	f  d$dsd&ZTee d'd(dtd*ZUdee%d, e	e	d-dud/ZVee	d(dvd1ZWd2d3eQe>eeeeQe%d4 f e?f eXeeRe	f d5dwd7ZYeeQ ed8dxd:ZZd2d3eeQ e>eeXeeeeQe%d4 f e?f eeReeRe	f f f d;dyd=Z[eQeXd>dzd@Z\eQeXd>d{dBZ]eQeXd>d|dDZ^eQeXd>d}dFZ_eQeXd>d~dHZ`e<e	e<dIddKZaeQe	ee	 dLddNZbeeRdOf eeRe	f dPddRZceeQ eRee dSddUZdee	 eeeRef dOf eeeRe	f  dddZeee	 d'f eXdddZeee	 d'f eXdddZe	eXdddZeee	 d'f eXdddZeee	 d'f eXdddZe	eXdddZeee	 d'f eXdddZe	eXdddZe	eXdddZe	eXdddZe	eXdddZd'S )    )dequecopy)	dataclassis_dataclass)Enum)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                   @   s   e Zd ZdS )
BaseConfigN__name__
__module____qualname__ r4   r4   R/var/www/html/llm_bihealth/app/venv/lib/python3.9/site-packages/fastapi/_compat.pyr/   O   s   r/   c                   @   s   e Zd ZdS )ErrorWrapperNr0   r4   r4   r4   r5   r6   R   s   r6   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r:   serializationmode)returnc                 C   s   | j j}|d ur|S | jS N)r8   aliasr9   )selfar4   r4   r5   r@   [   s    zModelField.aliasc                 C   s
   | j  S r?   )r8   is_requiredrA   r4   r4   r5   required`   s    zModelField.requiredc                 C   s   |   S r?   )get_defaultrD   r4   r4   r5   defaultd   s    zModelField.defaultc                 C   s   | j jS r?   r8   
annotationrD   r4   r4   r5   type_h   s    zModelField.type_Nc                 C   s   t t| jj| jf | _d S r?   )r!   r   r8   rI   _type_adapterrD   r4   r4   r5   __post_init__l   s    zModelField.__post_init__c                 C   s   | j  rtS | j jddS )NT)Zcall_default_factory)r8   rC   	UndefinedrF   rD   r4   r4   r5   rF   q   s    
zModelField.get_defaultr4   loc.)valuevaluesrO   r>   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)rK   Zvalidate_pythonr"   _regenerate_error_with_locrS   )rA   rP   rQ   rO   excr4   r4   r5   validatev   s    zModelField.validatejsonTFr=   includeexcludeby_aliasexclude_unsetexclude_defaultsexclude_nonerX   python)	rP   r=   rZ   r[   r\   r]   r^   r_   r>   c          	   
   C   s   | j j||||||||dS )NrY   )rK   Zdump_python)	rA   rP   r=   rZ   r[   r\   r]   r^   r_   r4   r4   r5   	serialize   s    zModelField.serializec                 C   s   t | S r?   )idrD   r4   r4   r5   __hash__   s    zModelField.__hash__)r1   r2   r3   r&   __annotations__strr=   r   propertyr@   boolrE   r   rG   rJ   rL   rF   r   r   r   intr   rW   r   rb   rd   r4   r4   r4   r5   r7   U   sR   



r7   )rI   r8   
field_namer>   c                 C   s   | S r?   r4   )rI   r8   rj   r4   r4   r5   get_annotation_from_field_info   s    rk   )rS   r>   c                 C   s   | S r?   r4   )rS   r4   r4   r5   _normalize_errors   s    rl   N)modelr>   c                 C   s   |    d S r?   )Zmodel_rebuildrm   r4   r4   r5   _model_rebuild   s    ro   rX   r`   )rm   r=   kwargsr>   c                 K   s   | j f d|i|S )Nr=   )Z
model_dumprm   r=   rp   r4   r4   r5   _model_dump   s    rr   c                 C   s   | j S r?   )Zmodel_configrn   r4   r4   r5   _get_model_config   s    rs   T)separate_input_output_schemasr;   )fieldschema_generatormodel_name_mapfield_mappingrt   r>   c                 C   sH   |rd nd}|| |p| j f }d|vrD| jjp>| j dd|d< |S )Nr:   z$ref_ title)r=   r8   r{   r@   replace)ru   rv   rw   rx   rt   override_modeZjson_schemar4   r4   r5   get_schema_from_model_field   s    
r~   )fieldsr>   c                 C   s   i S r?   r4   )r   r4   r4   r5   get_compat_model_name_map   s    r   )r   rv   rw   rt   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 r4   )r=   rK   Zcore_schema).0ru   r}   r4   r5   
<listcomp>   s   z#get_definitions.<locals>.<listcomp>)inputs)Zgenerate_definitions)r   rv   rw   rt   r   rx   definitionsr4   r   r5   get_definitions   s    


r   )ru   r>   c                 C   s(   ddl m} t| jjo&t| j|j S )Nr   params)fastapir   field_annotation_is_scalarr8   rI   
isinstanceBody)ru   r   r4   r4   r5   is_scalar_field   s    r   c                 C   s   t | jjS r?   )field_annotation_is_sequencer8   rI   ru   r4   r4   r5   is_sequence_field   s    r   c                 C   s   t | jjS r?   )#field_annotation_is_scalar_sequencer8   rI   r   r4   r4   r5   is_scalar_sequence_field   s    r   c                 C   s
   t | jS r?   )$is_bytes_or_nonable_bytes_annotationrJ   r   r4   r4   r5   is_bytes_field   s    r   c                 C   s
   t | jS r?   )is_bytes_sequence_annotationrJ   r   r4   r4   r5   is_bytes_sequence_field   s    r   )r8   rI   r>   c                 C   s.   t | }||}t| }|j|_|j|_|S r?   )typeZfrom_annotationr   metadatarI   )r8   rI   clsZmerged_field_infoZnew_field_infor4   r4   r5   copy_field_info   s    
r   )ru   rP   r>   c                 C   s.   t | jjp| jj}t|ts"J t| |S r?   )r   r8   rI   
issubclasssequence_typessequence_annotation_to_type)ru   rP   Zorigin_typer4   r4   r5   serialize_sequence_value  s    r   .)rO   r>   c                 C   s.   t dd| i dgjddd }d |d< |S )NzField requiredmissing)r   rO   inputFrR   r   r   )r"   Zfrom_exception_datarS   )rO   errorr4   r4   r5   get_missing_field_error  s    r   )r   
model_namer>   c                 C   s"   dd | D }t |fi |}|S )Nc                 S   s   i | ]}|j |jj|jfqS r4   )r9   r8   rI   r   fr4   r4   r5   
<dictcomp>      z%create_body_model.<locals>.<dictcomp>)r   )r   r   Zfield_params	BodyModelr4   r4   r5   create_body_model  s    r   )
REF_PREFIX)AnyUrl)r/   )	Validator)r6   )MissingError)SHAPE_FROZENSET
SHAPE_LISTSHAPE_SEQUENCE	SHAPE_SETSHAPE_SINGLETONSHAPE_TUPLESHAPE_TUPLE_ELLIPSIS)r7   )Required)rM   )UndefinedType)field_schemaget_flat_models_from_fieldsget_model_name_mapmodel_process_schema)rk   )evaluate_forwardrefc                   @   s   e Zd ZU eed< dS )r'   Zref_templateN)r1   r2   r3   rf   re   r4   r4   r4   r5   r'   b  s   
r'   c                   @   s   e Zd ZdS )r    Nr0   r4   r4   r4   r5   r    f  s   r    )refr   r<   )functionr   r   r<   r>   c                C   s   i S r?   r4   )r   r   r   r<   r4   r4   r5   r-   i  s    r-   )flat_modelsrw   r>   c                 C   s^   i }| D ]P}t ||td\}}}|| || }d|v rP|d dd |d< |||< q|S )Nrw   Z
ref_prefixdescriptionr   )r   r   updatesplit)r   rw   r   rm   Zm_schemaZm_definitionsZm_nested_modelsr   r4   r4   r5   get_model_definitionsr  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   r4   r4   r5   	<genexpr>  s   z&is_pv1_scalar_field.<locals>.<genexpr>T)r   r   r8   shaper   r%   rJ   r   dictr   r   r   r   
sub_fieldsall)ru   r   r8   r4   r4   r5   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_shapesr%   rJ   r   r   r   _annotation_is_sequence)ru   Z	sub_fieldr4   r4   r5   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)rS   rm   )	r   r6   r"   r   rS   extendlistrl   append)rS   Z
use_errorsr   Z
new_errorsr4   r4   r5   rl     s    


c                 C   s   |    d S r?   )Zupdate_forward_refsrn   r4   r4   r5   ro     s    c                 K   s   | j f i |S r?   )r   rq   r4   r4   r5   rr     s    c                 C   s   | j S r?   )Z
__config__rn   r4   r4   r5   rs     s    c                 C   s   t | |tdd S )Nr   r   )r   r   )ru   rv   rw   rx   rt   r4   r4   r5   r~     s
    c                 C   s   t | t d}t|S )NZknown_models)r   setr   )r   modelsr4   r4   r5   r     s    c                 C   s   t | t d}i t||dfS )Nr   )r   rw   )r   r   r   )r   rv   rw   rt   r   r4   r4   r5   r     s    c                 C   s   t | S r?   r   r   r4   r4   r5   r     s    c                 C   s   | j tv pt| jS r?   )r   r   r   rJ   r   r4   r4   r5   r     s    c                 C   s   t | S r?   )r   r   r4   r4   r5   r     s    c                 C   s   t | jtS r?   )r%   rJ   bytesr   r4   r4   r5   r     s    c                 C   s   | j tv ot| jtS r?   )r   r   r%   rJ   r   r   r4   r4   r5   r     s    c                 C   s   t | S r?   r   rH   r4   r4   r5   r     s    c                 C   s   t | j |S r?   )sequence_shape_to_typer   )ru   rP   r4   r4   r5   r     s    c                 C   s&   t t | d}t|gt}| d S )NrN   r   )r6   r   r"   r   rS   )rO   Zmissing_field_errorZ	new_errorr4   r4   r5   r     s    c                 C   s"   t |}| D ]}||j|j< q|S r?   )r   Z
__fields__r9   )r   r   r   r   r4   r4   r5   r     s    )rS   rT   r>   c                    s    fddt | D }|S )Nc              	      s(   g | ] }i |d  | d d iqS )rO   r4   )get)r   errrT   r4   r5   r     s   z._regenerate_error_with_loc.<locals>.<listcomp>)rl   )rS   rT   Zupdated_loc_errorsr4   r   r5   rU     s    
rU   )rI   r>   c                 C   s   t | ttfrdS t | tS )NF)r%   rf   r   r   rI   r4   r4   r5   r     s    r   c                 C   s   t | pt t| S r?   )r   r   r   r4   r4   r5   r     s    
r   )rP   r>   c                 C   s   t | tot | ttf S r?   )r   r   rf   r   )rP   r4   r4   r5   value_is_sequence  s    r   c                 C   s    t | tttfpt| pt| S r?   )r%   r   r   r   r   r   r   r4   r4   r5   _annotation_is_complex   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   argr4   r4   r5   r   +  r   z.field_annotation_is_complex.<locals>.<genexpr>Z__pydantic_core_schema__Z__get_pydantic_core_schema__)r   r   r   anyr   r   hasattr)rI   originr4   r4   r5   r   (  s    r   c                 C   s   | t u pt|  S r?   )Ellipsisr   r   r4   r4   r5   r   5  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_annotationr4   r4   r5   r   E  s   z6field_annotation_is_scalar_sequence.<locals>.<genexpr>)r   r   r   r   r   r   r   r   )rI   r   Zat_least_one_scalar_sequencer   r4   r4   r5   r   :  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 NTF)r%   r   r   r   r   r   rI   r   r   r4   r4   r5   r   K  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   )r%   r   r   r   r   r   r   r4   r4   r5   .is_uploadfile_or_nonable_uploadfile_annotationV  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   r4   r4   r5   r   j  s   z/is_bytes_sequence_annotation.<locals>.<genexpr>)r   r   r   r   r   r   r   rI   r   Zat_least_oner   r4   r4   r5   r   a  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   r4   r4   r5   r   y  s   z4is_uploadfile_sequence_annotation.<locals>.<genexpr>)r   r   r   r   !is_uploadfile_sequence_annotationr   r   r   r4   r4   r5   r   p  s    r   )rX   )rX   )collectionsr   r   Zdataclassesr   r   enumr   typingr   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	P_VERSIONZstarlette.datastructuresr   Ztyping_extensionsr   r   r   r   ZPYDANTIC_VERSION
startswithZPYDANTIC_V2r   tupler   	frozensetr   keysr   r    r!   r"   Z,pydantic._internal._schema_generation_sharedr#   Z pydantic._internal._typing_extrar$   Zpydantic._internal._utilsr%   Zpydantic.fieldsr&   Zpydantic.json_schemar'   r(   Zpydantic_corer)   r*   r+   r,   Zpydantic_core.core_schemar-   ImportErrorr.   r   rM   r   r   r   r/   	Exceptionr6   r7   rf   rk   rl   ro   rr   rs   rh   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   Zpydantic.schemar   r   r   r   Zpydantic.typingZpydantic.utilsr   r   r   r   r   ri   rU   r   r   r   r   r   r   r   r   r   r   r   r4   r4   r4   r5   <module>   s  8
P  

 $		


  

	 
