o
    liv                     @   s  U d dl Z d dlZd dl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 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mZ e j dk ridZ!eedf e"d< n$e j dk r}ej#ej$fZ!e%edf e"d< nej#ej$ejfZ!e%edf e"d< 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e*e*e*e	e+e+e+eeeeiZ,e%e,- Z.ee e"d< dedeee eee df df de/fddZ0deee df de/fddZ1deee df de/fddZ2dede/fd d!Z3deee df de/fd"d#Z4deee df de/fd$d%Z5dede/fd&d'Z6deee df de/fd(d)Z7dede/fd*d+Z8dede/fd,d-Z9dede/fd.d/Z:dede/fd0d1Z;dede/fd2d3Z<dS )4    N)deque)is_dataclass)
AnyDeque	FrozenSetListMappingSequenceSetTupleTypeUnion)may_v1)	UnionType)	BaseModel)VERSION)
UploadFile)	Annotatedget_args
get_origin)   	    .WithArgsTypes)r   
   c                 c       | ]}t |V  qd S N)int).0xr   r   ]/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/fastapi/_compat/shared.py	<genexpr>*       r!   .   Urlclsclass_or_tuplereturnc                 C   s8   zt | to
t| |W S  ty   t | trY dS  w NF)
isinstancetype
issubclass	TypeErrorr   )r&   r'   r   r   r    lenient_issubclassB   s   
r.   
annotationc                 C   s   t | ttfr	dS t | tS r)   )r.   strbytessequence_typesr/   r   r   r    _annotation_is_sequenceM   s   
r4   c                 C   sL   t | }|tu s|tu rt| D ]	}t|r dS qdS t| p%tt | S NTF)r   r   r   r   field_annotation_is_sequencer4   r/   originargr   r   r    r6   S   s   
r6   valuec                 C   s   t | tot | ttf S r   )r*   r2   r0   r1   )r:   r   r   r    value_is_sequence_   s   r;   c                 C   s$   t | ttjttfpt| pt| S r   )r.   r   r   r   r   r4   r   r3   r   r   r    _annotation_is_complexc   s   r<   c                 C   sj   t | }|tu s|tu rtdd t| D S |tu r#tt| d S t| p4t|p4t|dp4t|dS )Nc                 s   r   r   )field_annotation_is_complex)r   r9   r   r   r    r!   p   r"   z.field_annotation_is_complex.<locals>.<genexpr>r   Z__pydantic_core_schema__Z__get_pydantic_core_schema__)	r   r   r   anyr   r   r=   r<   hasattr)r/   r8   r   r   r    r=   m   s   r=   c                 C   s   | t u pt|  S r   )Ellipsisr=   r3   r   r   r    field_annotation_is_scalar}   s   rA   c                 C   sh   t | }|tu s|tu r%d}t| D ]}t|rd}qt|s" dS q|S t| o3tdd t| D S )NFTc                 s   r   r   )rA   r   sub_annotationr   r   r    r!      
    
z6field_annotation_is_scalar_sequence.<locals>.<genexpr>)r   r   r   r   #field_annotation_is_scalar_sequencerA   r6   all)r/   r8   Zat_least_one_scalar_sequencer9   r   r   r    rE      s   rE   c                 C   H   t | trdS t| }|tu s|tu r"t| D ]
}t |tr! dS qdS r5   )r.   r1   r   r   r   r   r7   r   r   r    $is_bytes_or_nonable_bytes_annotation      

rH   c                 C   rG   r5   )r.   r   r   r   r   r   r7   r   r   r    .is_uploadfile_or_nonable_uploadfile_annotation   rI   rJ   c                 C   Z   t | }|tu s|tu rd}t| D ]	}t|rd}qq|S t| o,tdd t| D S )NFTc                 s   r   r   )rH   rB   r   r   r    r!      rD   z/is_bytes_sequence_annotation.<locals>.<genexpr>)r   r   r   r   is_bytes_sequence_annotationr6   rF   r/   r8   Zat_least_oner9   r   r   r    rL         rL   c                 C   rK   )NFTc                 s   r   r   )rJ   rB   r   r   r    r!      rD   z4is_uploadfile_sequence_annotation.<locals>.<genexpr>)r   r   r   r   !is_uploadfile_sequence_annotationr6   rF   rM   r   r   r    rO      rN   rO   c                 C   sp   t | tjrdS t| }|tu s|tu r$t| D ]}t |tjr# dS qt| r6t| D ]	}t|r5 dS q,dS r5   )	r.   r   r   r   r   r   r   r6   annotation_is_pydantic_v1)r/   r8   r9   rC   r   r   r    rP      s   rP   )=systypestypingcollectionsr   dataclassesr   r   r   r   r   r   r	   r
   r   r   r   Zfastapi._compatr   Zfastapi.typesr   Zpydanticr   Zpydantic.versionr   ZPYDANTIC_VERSIONZstarlette.datastructuresr   Ztyping_extensionsr   r   r   version_infor   __annotations___GenericAliasGenericAliastuplesplitZPYDANTIC_VERSION_MINOR_TUPLEZPYDANTIC_V2listset	frozensetZsequence_annotation_to_typekeysr2   boolr.   r4   r6   r;   r<   r=   rA   rE   rH   rJ   rL   rO   rP   r   r   r   r    <module>   sn   
 0

 

