o
    ɝ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   R/var/www/html/ocr-read/venv/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   __pydantic_core_schema____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   rC   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   )rC   r   sub_annotationr   r   r    r!      
    
z6field_annotation_is_scalar_sequence.<locals>.<genexpr>)r   r   r   r   #field_annotation_is_scalar_sequencerC   r6   all)r/   r8   at_least_one_scalar_sequencer9   r   r   r    rG      s   rG   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      

rK   c                 C   rJ   r5   )r.   r   r   r   r   r   r7   r   r   r    .is_uploadfile_or_nonable_uploadfile_annotation   rL   rM   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   )rK   rD   r   r   r    r!      rF   z/is_bytes_sequence_annotation.<locals>.<genexpr>)r   r   r   r   is_bytes_sequence_annotationr6   rH   r/   r8   at_least_oner9   r   r   r    rO         rO   c                 C   rN   )NFTc                 s   r   r   )rM   rD   r   r   r    r!      rF   z4is_uploadfile_sequence_annotation.<locals>.<genexpr>)r   r   r   r   !is_uploadfile_sequence_annotationr6   rH   rP   r   r   r    rS      rR   rS   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   rE   r   r   r    rT      s   rT   )=systypestypingcollectionsr   dataclassesr   r   r   r   r   r   r	   r
   r   r   r   fastapi._compatr   fastapi.typesr   pydanticr   pydantic.versionr   PYDANTIC_VERSIONstarlette.datastructuresr   typing_extensionsr   r   r   version_infor   __annotations___GenericAliasGenericAliastuplesplitPYDANTIC_VERSION_MINOR_TUPLEPYDANTIC_V2listset	frozensetsequence_annotation_to_typekeysr2   boolr.   r4   r6   r;   r<   r=   rC   rG   rK   rM   rO   rS   rT   r   r   r   r    <module>   sn   
 0

 

