o
    l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    Zget_model_fields r"   r   r    r"    r&   [/home/app/PaddleOCR-VL/.venv_paddleocr/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'   r0   J   s   

r0   jsonmode)r1   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   r2   r   r!   )	r,   r	   r   r#   r    _model_dumpr
   r$   r"   )r   r2   r4   r    r"   r&   r&   r'   r5   U   s   r5   excc                 C   r*   r+   )r,   r	   ZErrorWrapperr
   r$   r"   )r6   r"   r&   r&   r'   _is_error_wrapperb   r/   r7   
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   )r8   r9   r   r!   )	r,   r	   r   r#   r    copy_field_infor
   r$   r"   )r8   r9   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'   r?   x   s   r?   
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   )r9   r8   r@   r   r!   )	r,   r	   r   r#   r    get_annotation_from_field_infor
   r$   r"   )r9   r8   r@   r    r"   r&   r&   r'   rA      s   rA   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"   rB   r    r"   r&   r&   r'   rD         

rD   c                 C   rC   r   )	r,   r	   r   r#   r    is_bytes_sequence_fieldr
   r$   r"   rE   r&   r&   r'   rG      rF   rG   c                 C   rC   r   )	r,   r	   r   r#   r    is_scalar_fieldr
   r$   r"   rE   r&   r&   r'   rH      rF   rH   c                 C   rC   r   )	r,   r	   r   r#   r    is_scalar_sequence_fieldr
   r$   r"   rE   r&   r&   r'   rI      rF   rI   c                 C   rC   r   )	r,   r	   r   r#   r    is_sequence_fieldr
   r$   r"   rE   r&   r&   r'   rJ      rF   rJ   c                 C   r:   )Nr   r   )rB   r)   r   r!   )	r,   r	   r   r#   r    serialize_sequence_valuer
   r$   r"   )rB   r)   r    r"   r&   r&   r'   rK      r<   rK   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'   rL      s   rL   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   .0rB   r&   r&   r'   
<listcomp>   
    z-get_compat_model_name_map.<locals>.<listcomp>r   r   )Zknown_modelsr   r!   c                       g | ]
}t | jr|qS r&   r,   r   rO   r!   r&   r'   rQ      rR   )	r#   r    Zget_flat_models_from_fieldssetr
   r$   r"   unionZget_model_name_map)r=   Zv1_model_fieldsr    Zv1_flat_modelsZall_flat_modelsZv2_model_fieldsZv2_flat_modelsmodel_name_mapr&   r!   r'   get_compat_model_name_map   s0   



rX   T)separate_input_output_schemasrW   rY   )Z
validationZ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   rM   r&   rN   rO   r&   r&   r'   rQ         z#get_definitions.<locals>.<listcomp>)r=   rW   rY   r   r!   c                    rS   r&   rT   rO   r!   r&   r'   rQ   #  r\   c                    rS   r&   rT   rO   r!   r&   r'   rQ   1  r\   )sysversion_infor	   get_definitionsr
   r$   r"   )r=   rW   rY   Z	v1_fieldsZv1_field_mapsZv1_definitionsZ	v2_fieldsZv2_field_mapsZv2_definitionsZall_definitionsZall_field_mapsr&   r!   r'   r_     s6   



r_   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   )rB   rW   r`   rY   r   r!   )	r,   r	   r   r#   r    get_schema_from_model_fieldr
   r$   r"   )rB   rW   r`   rY   r    r"   r&   r&   r'   ra   :  s    
ra   c                 C   r*   r+   )r,   r	   r   r
   r$   r"   r-   r&   r&   r'   _is_model_fieldY  r/   rb   c                 C   r*   r+   )r   r	   r   r
   r$   r"   r-   r&   r&   r'   _is_model_classc  r/   rc   )r1   )=r]   	functoolsr   typingr   r   r   r   r   r   r#   r	   Zfastapi._compat.sharedr
   r   Zfastapi.typesr   Zpydanticr   Ztyping_extensionsr   Zmodel_fieldr   r"   r   r   r   r   r   r   r   r   r   r   r   r    r(   objectboolr.   r0   r5   	Exceptionr7   r;   strr?   rA   rD   rG   rH   rI   rJ   rK   rL   rX   ZJsonSchemaValuer_   ra   rb   rc   r&   r&   r&   r'   <module>   s     	




$
7
	

