o
    ɝi*                     @   s  d dl Z d dlmZ d dlmZmZmZmZmZ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 d	d
lmZ erd	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" nBd	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" ede	e dee fddZ$de%de&fddZ'dedefddZ(	dRded ed! d"edefd#d$Z)d%e*de&fd&d'Z+d(ed)edefd*d+Z,d,ee d-e-de	e fd.d/Z.d)ed(ed0e-defd1d2Z/d3ede&fd4d5Z0d3ede&fd6d7Z1d3ede&fd8d9Z2d3ede&fd:d;Z3d3ede&fd<d=Z4d3ededee fd>d?Z5de	e ddfd@dAZ6d,ee defdBdCZ7dDdEd,ee dFedGe&deeeeedH f ej8f ee-ee-ef f f fdIdJZ9dDdEd3edFedKeeeedH f ej8f dGe&dee-ef f
dLdMZ:dede&fdNdOZ;dede&fdPdQZ<dS )S    N)	lru_cache)AnyDictListSequenceTupleType)may_v1)PYDANTIC_V2lenient_issubclass)ModelNameMap)	BaseModel)Literal   )
ModelField)
BaseConfig)	FieldInfo)PydanticSchemaGenerationError)RequiredParam)	Undefined)UndefinedType)Url)	Validator)evaluate_forwardref)get_missing_field_error)"with_info_plain_validator_functionmodelreturnc                 C   s8   t | tjrddlm} || S ddlm} || S Nr   v1r   v2)r   r	   r   fastapi._compatr    get_model_fields r"   r   r    r"    r'   P/var/www/html/ocr-read/venv/lib/python3.10/site-packages/fastapi/_compat/main.pyget_cached_model_fields4   s
   

r)   valuec                 C   0   t | tjrdS trddlm} t | |jS dS NTr   r!   F)
isinstancer	   r   r
   r%   r"   r*   r"   r'   r'   r(   _is_undefined@      r/   c                 C   s@   t | tjrddlm} || S trddlm} || S d S r   )	r-   r	   r   r#   r    _get_model_configr
   r%   r"   r&   r'   r'   r(   r1   J   s   

r1   jsonmode)r2   pythonkwargsc                 K   sX   t | tjrddlm} |j| fd|i|S tr*ddlm} |j| fd|i|S d S )Nr   r   r3   r   r!   )	r-   r	   r   r#   r    _model_dumpr
   r%   r"   )r   r3   r5   r    r"   r'   r'   r(   r6   U   s   r6   excc                 C   r+   r,   )r-   r	   ErrorWrapperr
   r%   r"   )r7   r"   r'   r'   r(   _is_error_wrapperb   r0   r9   
field_info
annotationc                 C   H   t | tjrddlm} |j| |dS tsJ ddlm} |j| |dS )Nr   r   )r:   r;   r   r!   )	r-   r	   r   r#   r    copy_field_infor
   r%   r"   )r:   r;   r    r"   r'   r'   r(   r=   l      r=   fields
model_namec                 C   sP   | rt | d tjrddlm} |j| |dS tsJ ddlm} |j| |dS )Nr   r   )r?   r@   r   r!   )	r-   r	   r   r#   r    create_body_modelr
   r%   r"   )r?   r@   r    r"   r'   r'   r(   rA   x   s   rA   
field_namec                 C   sL   t |tjrddlm} |j| ||dS tsJ ddlm} |j| ||dS )Nr   r   )r;   r:   rB   r   r!   )	r-   r	   r   r#   r    get_annotation_from_field_infor
   r%   r"   )r;   r:   rB   r    r"   r'   r'   r(   rC      s   rC   fieldc                 C   @   t | tjrddlm} || S tsJ ddlm} || S r   )	r-   r	   r   r#   r    is_bytes_fieldr
   r%   r"   rD   r    r"   r'   r'   r(   rF         

rF   c                 C   rE   r   )	r-   r	   r   r#   r    is_bytes_sequence_fieldr
   r%   r"   rG   r'   r'   r(   rI      rH   rI   c                 C   rE   r   )	r-   r	   r   r#   r    is_scalar_fieldr
   r%   r"   rG   r'   r'   r(   rJ      rH   rJ   c                 C   rE   r   )	r-   r	   r   r#   r    is_scalar_sequence_fieldr
   r%   r"   rG   r'   r'   r(   rK      rH   rK   c                 C   rE   r   )	r-   r	   r   r#   r    is_sequence_fieldr
   r%   r"   rG   r'   r'   r(   rL      rH   rL   c                 C   r<   )Nr   r   )rD   r*   r   r!   )	r-   r	   r   r#   r    serialize_sequence_valuer
   r%   r"   )rD   r*   r    r"   r'   r'   r(   rM      r>   rM   c                 C   sH   t | tjrddlm} ||  d S tr"ddlm} ||  d S d S r   )	r   r	   r   r#   r    _model_rebuildr
   r%   r"   r&   r'   r'   r(   rN      s   rN   c                    s   dd | D }|rddl m} |j|t d}|}nt }trBddlm   fdd| D } j|t d}||} |}|S ddl m} ||}|S )	Nc                 S      g | ]
}t |tjr|qS r'   r-   r	   r   .0rD   r'   r'   r(   
<listcomp>   
    z-get_compat_model_name_map.<locals>.<listcomp>r   r   )known_modelsr   r!   c                       g | ]
}t | jr|qS r'   r-   r   rQ   r!   r'   r(   rS      rT   )	r#   r    get_flat_models_from_fieldssetr
   r%   r"   unionget_model_name_map)r?   v1_model_fieldsr    v1_flat_modelsall_flat_modelsv2_model_fieldsv2_flat_modelsmodel_name_mapr'   r!   r(   get_compat_model_name_map   s0   



rb   T)separate_input_output_schemasra   rc   )
validationserializationc                    s   t jdk rEdd | D }tj|||d\}}ts||fS ddlm   fdd| D } j|||d\}}i ||}	i ||}
|
|	fS ddlm   fdd| D } j|||d\}}||fS )	N)      c                 S   rO   r'   rP   rQ   r'   r'   r(   rS         z#get_definitions.<locals>.<listcomp>)r?   ra   rc   r   r!   c                    rV   r'   rW   rQ   r!   r'   r(   rS   #  rh   c                    rV   r'   rW   rQ   r!   r'   r(   rS   1  rh   )sysversion_infor	   get_definitionsr
   r%   r"   )r?   ra   rc   	v1_fieldsv1_field_mapsv1_definitions	v2_fieldsv2_field_mapsv2_definitionsall_definitionsall_field_mapsr'   r!   r(   rk     s6   



rk   field_mappingc                 C   sP   t | tjrddlm} |j| |||dS tsJ ddlm} |j| |||dS )Nr   r   )rD   ra   rt   rc   r   r!   )	r-   r	   r   r#   r    get_schema_from_model_fieldr
   r%   r"   )rD   ra   rt   rc   r    r"   r'   r'   r(   ru   :  s    
ru   c                 C   r+   r,   )r-   r	   r   r
   r%   r"   r.   r'   r'   r(   _is_model_fieldY  r0   rv   c                 C   r+   r,   )r   r	   r   r
   r%   r"   r.   r'   r'   r(   _is_model_classc  r0   rw   )r2   )=ri   	functoolsr   typingr   r   r   r   r   r   r#   r	   fastapi._compat.sharedr
   r   fastapi.typesr   pydanticr   typing_extensionsr   model_fieldr   r"   r   r   r   r   r   r   r   r   r   r   r   r    r)   objectboolr/   r1   r6   	Exceptionr9   r=   strrA   rC   rF   rI   rJ   rK   rL   rM   rN   rb   JsonSchemaValuerk   ru   rv   rw   r'   r'   r'   r(   <module>   s     	




$
7
	

