o
    1 i@                     @   s  d dl Z d dl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 d dlmZmZ d dlmZ d dlmZmZ d d	l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)m*Z* d dl)m+Z+ d dl,m-Z- d dl,m.Z.m/Z/ d dl,m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5 zd dl6m7Z7 W n e8y   d dl6m9Z7 Y nw e.Z:e.Z;e/Z<e$Z=e	Z>G dd dZ?G dd de@ZAeG dd dZBde	d e(d!eCd"e	fd#d$ZDd%ee d"dfd&d'ZE	(dmd%ed)e3d* d+e	d"e	fd,d-ZFd%ed"e	fd.d/ZGd0d1d2eBd3ed4e
eeBe3d5 f e+f d6eHd"e
eCe	f f
d7d8ZId0d1d9eeB d3ed6eHd"ee
eeBe3d5 f e+f e
eCe
eCe	f f f fd:d;ZJd<e
eCe	f d=e
eCeCf d"e
eCe	f fd>d?ZKd3ed@e
eCe	f d4e
eeBe3d5 f e+f d"ee
eeBe3d5 f e+f e
eCe	f f fdAdBZLd2eBd"eHfdCdDZMd2eBd"eHfdEdFZNd2eBd"eHfdGdHZOd2eBd"eHfdIdJZPd2eBd"eHfdKdLZQd e(de	d"e(fdMdNZRd2eBdOe	d"ee	 fdPdQZSdReeCdSf d"e
eCe	f fdTdUZTd9eeB dVeCd"ee fdWdXZUd%ee d"eeB fdYdZZVeed[ ee f ZWeeW ZXd\eCd"eCfd]d^ZYd_eXd"e
eWeCf fd`daZZ	dnd%ed[ dbeeXdf d"eXfdcddZ[de	dbeXd"eXfdedfZ\d2eBdbeXd"eXfdgdhZ]d9eeB dbeXd"eXfdidjZ^d%eWd"eCfdkdlZ_dS )o    N)copydeepcopy)	dataclass)Enum)	AnyDictListSequenceSetTupleTypeUnioncast)may_v1shared)REF_TEMPLATE)IncExModelNameMap)	BaseModelTypeAdaptercreate_model)PydanticSchemaGenerationError)PydanticUndefinedAnnotation)ValidationError)GetJsonSchemaHandler)eval_type_lenient)lenient_issubclass)	FieldInfo)GenerateJsonSchema)JsonSchemaValue)
CoreSchema)PydanticUndefinedPydanticUndefinedType)Url)	AnnotatedLiteralget_args
get_origin)"with_info_plain_validator_function) general_plain_validator_functionc                   @      e Zd ZdS )
BaseConfigN__name__
__module____qualname__ r0   r0   ^/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/fastapi/_compat/v2.pyr+   6       r+   c                   @   r*   )ErrorWrapperNr,   r0   r0   r0   r1   r3   :   r2   r3   c                   @   sH  e Zd ZU eed< eed< dZed ed< edefddZ	ede
fd	d
Zede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ef df deeeeeeef  df f fddZdddddddddeded  d!eedf d"eedf d#e
d$e
d%e
d&e
defd'd(Zdefd)d*ZdS ),
ModelField
field_infoname
validationr7   serializationmodereturnc                 C   s   | j j}|d ur
|S | jS N)r5   aliasr6   )selfar0   r0   r1   r=   D   s   zModelField.aliasc                 C   s
   | j  S r<   )r5   is_requiredr>   r0   r0   r1   requiredI   s   
zModelField.requiredc                 C   s   |   S r<   )get_defaultrA   r0   r0   r1   defaultM      zModelField.defaultc                 C   s   | j jS r<   )r5   
annotationrA   r0   r0   r1   type_Q   rE   zModelField.type_Nc                 C   sj   t  ' tjdkrddlm} t jd|d tt| j	j
| j	f | _W d    d S 1 s.w   Y  d S )N)      r   ) UnsupportedFieldAttributeWarningignore)category)warningscatch_warningsr   ZPYDANTIC_VERSION_MINOR_TUPLEZpydantic.warningsrJ   simplefilterr   r$   r5   rF   _type_adapter)r>   rJ   r0   r0   r1   __post_init__U   s   

"zModelField.__post_init__c                 C   s   | j  rtS | j jddS )NT)Zcall_default_factory)r5   r@   	UndefinedrC   rA   r0   r0   r1   rC   e   s   
zModelField.get_defaultr0   )locvaluevaluesrS   .c             
   C   sV   z| j j|ddd fW S  ty* } zd tj|jdd|dfW  Y d }~S d }~ww )NT)Zfrom_attributesFZinclude_url)errorsZ
loc_prefix)rP   Zvalidate_pythonr   r   Z_regenerate_error_with_locrW   )r>   rT   rU   rS   excr0   r0   r1   validatej   s   zModelField.validatejsonTFr:   includeexcludeby_aliasexclude_unsetexclude_defaultsexclude_nonerZ   pythonr\   r]   r^   r_   r`   ra   c          	   
   C   s   | j j||||||||dS )Nr[   )rP   Zdump_python)	r>   rT   r:   r\   r]   r^   r_   r`   ra   r0   r0   r1   	serialize{   s   zModelField.serializec                 C   s   t | S r<   )idrA   r0   r0   r1   __hash__   s   zModelField.__hash__)r;   N)r-   r.   r/   r   __annotations__strr:   r%   propertyr=   boolrB   r   rD   rG   rQ   rC   r   r   r   intr   rY   r   rd   rf   r0   r0   r0   r1   r4   >   sj   
 




	

r4   rF   r5   
field_namer;   c                 C   s   | S r<   r0   )rF   r5   rl   r0   r0   r1   get_annotation_from_field_info   s   rm   modelc                 C   s   |    d S r<   )Zmodel_rebuildrn   r0   r0   r1   _model_rebuild      rp   rZ   r:   rb   kwargsc                 K   s   | j dd|i|S )Nr:   r0   )Z
model_dump)rn   r:   rr   r0   r0   r1   _model_dump   s   rs   c                 C   s   | j S r<   )Zmodel_configro   r0   r0   r1   _get_model_config   s   rt   T)separate_input_output_schemasfieldmodel_name_mapfield_mappingr8   ru   c                 C   sH   |rd nd}|| |p| j f }d|vr"| jjp| j dd|d< |S )Nr7   $ref_ title)r:   r5   r|   r=   replace)rv   rw   rx   ru   override_modeZjson_schemar0   r0   r1   get_schema_from_model_field   s   

r   fieldsc                    s&  t td}|r	d n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 rtt|d dd }||d< qot|||d\}}||fS )N)Zref_templater7   c                 S      g | ]	}|j d kr|qS )r7   r:   .0rv   r0   r0   r1   
<listcomp>       z#get_definitions.<locals>.<listcomp>c                 S   r   )r9   r   r   r0   r0   r1   r      r   known_modelsc                 S   "   g | ]}t t|d |jddqS )rF   r7   r5   r6   r:   r4   r   r-   r   rn   r0   r0   r1   r          c                 S   r   )r   r9   r   r   r   r0   r0   r1   r      r   c                 S   s   h | ]}|j qS r0   rG   r   fr0   r0   r1   	<setcomp>   s    z"get_definitions.<locals>.<setcomp>c                    s   h | ]	}|j  vr|qS r0   r   r   )input_typesr0   r1   r      s    c                    s    g | ]}| p	|j |jjfqS r0   )r:   rP   Zcore_schemar   )r~   r0   r1   r      s    )inputsdescriptionr   )rw   definitionsrx   )r   r   get_flat_models_from_fieldssetlistZgenerate_definitionsr   r   rh   r   rU   split%_remap_definitions_and_field_mappings)r   rw   ru   Zschema_generatorZvalidation_fieldsZserialization_fieldsZflat_validation_modelsZflat_serialization_modelsZflat_validation_model_fieldsZflat_serialization_model_fieldsZflat_model_fieldsZunique_flat_model_fieldsr   rx   r   Zitem_defZitem_descriptionZnew_mappingnew_definitionsr0   )r   r~   r1   get_definitions   sJ   
	


"
r   schemaold_name_to_new_name_mapc           
      C   s   t | }| D ]_\}}|dkr3| d }t|tr2| d dd }||v r2|| }tj|d|d< qt|trAt||d||< qt|t	rgg }|D ]}t|tr]t||d}	|
|	 qJ|
| qJ|||< q|S )Nry   /ro   r   r   )r   items
isinstancerh   r   r   formatdict_replace_refsr   append)
r   r   
new_schemakeyrT   ref_namenew_name	new_valueitemZnew_itemr0   r0   r1   r     s8   



r   r   c                 C   s   i }|  D ],\}}|d j}|| vrq| | }|d dd }|| d| dhv r.q|||< qi }	|  D ]\}}t||d}
|
|	|< q9i }|  D ]\}}||v r[|| }n|}t||d}|||< qN|	|fS )Nr   ry   r   r   z-Inputz-Outputr   )r   rG   r   r   )rw   r   rx   r   Z	field_keyr   rn   r   Zold_nameZnew_field_mappingr   r   r   rT   Znew_keyr   r0   r0   r1   r   %  s:   




r   c                 C   s*   ddl m} t| jjot| j|j S )Nr   )params)Zfastapir   r   Zfield_annotation_is_scalarr5   rF   r   ZBody)rv   r   r0   r0   r1   is_scalar_fieldS  s   r   c                 C      t | jjS r<   )r   Zfield_annotation_is_sequencer5   rF   rv   r0   r0   r1   is_sequence_field[     r   c                 C   r   r<   )r   Z#field_annotation_is_scalar_sequencer5   rF   r   r0   r0   r1   is_scalar_sequence_field_  r   r   c                 C      t | jS r<   )r   Z$is_bytes_or_nonable_bytes_annotationrG   r   r0   r0   r1   is_bytes_fieldc  rq   r   c                 C   r   r<   )r   Zis_bytes_sequence_annotationrG   r   r0   r0   r1   is_bytes_sequence_fieldg  rq   r   c                 C   s.   t | }||}t| }|j|_|j|_|S r<   )typeZfrom_annotationr   metadatarF   )r5   rF   clsZmerged_field_infoZnew_field_infor0   r0   r1   copy_field_infok  s   
r   rT   c                 C   s2   t | jjp	| jj}t|tjsJ tj| |S r<   )r'   r5   rF   
issubclassr   Zsequence_typesZsequence_annotation_to_type)rv   rT   Zorigin_typer0   r0   r1   serialize_sequence_valuet  s   r   rS   .c                 C   s.   t dd| i dgjddd }d |d< |S )NzField requiredmissing)r   rS   inputFrV   r   r   )r   Zfrom_exception_datarW   )rS   errorr0   r0   r1   get_missing_field_errorz  s   r   
model_namec                 C   s"   dd | D }t |fi |}|S )Nc                 S   s   i | ]}|j |jj|jfqS r0   )r6   r5   rF   r   r0   r0   r1   
<dictcomp>  s    z%create_body_model.<locals>.<dictcomp>)r   )r   r   Zfield_paramsZ	BodyModelr0   r0   r1   create_body_model  s   r   c                 C   s   dd | j  D S )Nc                 S   s   g | ]
\}}t ||d qS ))r5   r6   )r4   )r   r6   r5   r0   r0   r1   r     s    
z$get_model_fields.<locals>.<listcomp>)Zmodel_fieldsr   ro   r0   r0   r1   get_model_fields  s   r   r   r6   c                 C   s   t dd| S )Nz[^a-zA-Z0-9.\-_]rz   )resub)r6   r0   r0   r1   normalize_name  r   r   unique_modelsc                 C   s   i }t  }| D ]3}t|j}||v rt|}|||< q||v r6|| ||}||t|< ||t|< q|||< qdd | D S )Nc                 S   s   i | ]\}}||qS r0   r0   )r   kvr0   r0   r1   r     s    z&get_model_name_map.<locals>.<dictcomp>)r   r   r-   get_long_model_nameaddpopr   )r   Zname_model_mapZconflicting_namesrn   r   Zconflicting_modelr0   r0   r1   get_model_name_map  s   




r   r   c                 C   s"   |pt  }t| }t||d |S Nr   )r   r   r   )rn   r   r   r0   r0   r1   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   r   r   get_flat_models_from_annotation)rF   r   originargr0   r0   r1   r     s   

r   c                 C   s^   | j }t|tr||v r|S || t||d |S t|tr'|| |S t||d |S r   )rG   r   r   r   r   r   r   )rv   r   Z
field_typer0   r0   r1   get_flat_models_from_field  s   



r   c                 C   s   | D ]}t ||d q|S r   )r   )r   r   rv   r0   r0   r1   r     s   r   c                 C   s   | j  d| j ddS )N__.)r.   r/   r}   ro   r0   r0   r1   r     s   r   )rZ   r<   )`r   rM   r   r   dataclassesr   enumr   typingr   r   r   r	   r
   r   r   r   r   Zfastapi._compatr   r   Zfastapi.openapi.constantsr   Zfastapi.typesr   r   Zpydanticr   r   r   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typing_extensionsr$   r%   r&   r'   Zpydantic_core.core_schemar(   ImportErrorr)   ZRequiredParamrR   ZUndefinedTypeZevaluate_forwardrefZ	Validatorr+   	Exceptionr3   r4   rh   rm   rp   rs   rt   rj   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZTypeModelOrEnumZTypeModelSetr   r   r   r   r   r   r   r0   r0   r0   r1   <module>   s<   ,[




<



$


.	"



	


