U
    nËjv  ã                   @   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 rÒdZ!eedf e"d< nHe 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< eeee eee df df e/dœdd„Z0eee df e/dœdd„Z1eee df e/dœdd„Z2ee/dœdd„Z3eee df e/dœd d!„Z4eee df e/dœd"d#„Z5ee/dœd$d%„Z6eee df e/dœd&d'„Z7ee/dœd(d)„Z8ee/dœd*d+„Z9ee/dœd,d-„Z:ee/dœd.d/„Z;ee/dœd0d1„Z<dS )2é    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   s   | ]}t |ƒV  qd S ©N)Úint)Ú.0Úxr   r   ú:/tmp/pip-unpacked-wheel-yktl02hi/fastapi/_compat/shared.pyÚ	<genexpr>*   s     r    Ú.é   ÚUrl)ÚclsÚclass_or_tupleÚreturnc                 C   sB   zt | tƒot| |ƒW S  tk
r<   t | tƒr6Y dS ‚ Y nX d S ©NF)Ú
isinstanceÚtypeÚ
issubclassÚ	TypeErrorr   )r$   r%   r   r   r   Úlenient_issubclassB   s    
r,   )Ú
annotationr&   c                 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    r2   c                 C   sL   t | ƒ}|tks|tkr8t| ƒD ]}t|ƒr  dS q dS t| ƒpJtt | ƒƒS ©NTF)r   r   r   r   Úfield_annotation_is_sequencer2   ©r-   ÚoriginÚargr   r   r   r4   S   s    
ÿr4   )Úvaluer&   c                 C   s   t | tƒot | ttfƒ S r   )r(   r0   r.   r/   )r8   r   r   r   Úvalue_is_sequence_   s    r9   c                 C   s$   t | ttjttfƒp"t| ƒp"t| ƒS r   )r,   r   r   r   r   r2   r   r1   r   r   r   Ú_annotation_is_complexc   s     ÿýûr:   c                 C   sj   t | ƒ}|tks|tkr.tdd„ t| ƒD ƒƒS |tkrFtt| ƒd ƒS t| ƒpht|ƒpht|dƒpht|dƒS )Nc                 s   s   | ]}t |ƒV  qd S r   )Úfield_annotation_is_complex)r   r7   r   r   r   r    p   s     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-   r6   r   r   r   r;   m   s    ÿþür;   c                 C   s   | t kpt| ƒ S r   )ÚEllipsisr;   r1   r   r   r   Úfield_annotation_is_scalar}   s    r?   c                 C   sj   t | ƒ}|tks|tkrLd}t| ƒD ]"}t|ƒr8d}q$q$t|ƒs$ dS q$|S t| ƒohtdd„ t| ƒD ƒƒS )NFTc                 s   s   | ]}t |ƒV  qd S r   )r?   ©r   Úsub_annotationr   r   r   r    �   s   ÿz6field_annotation_is_scalar_sequence.<locals>.<genexpr>)r   r   r   r   Ú#field_annotation_is_scalar_sequencer?   r4   Úall)r-   r6   Zat_least_one_scalar_sequencer7   r   r   r   rB   ‚   s    þrB   c                 C   sH   t | tƒrdS t| ƒ}|tks&|tkrDt| ƒD ]}t |tƒr. dS q.dS r3   )r,   r/   r   r   r   r   r5   r   r   r   Ú$is_bytes_or_nonable_bytes_annotation“   s    

rD   c                 C   sH   t | tƒrdS t| ƒ}|tks&|tkrDt| ƒD ]}t |tƒr. dS q.dS r3   )r,   r   r   r   r   r   r5   r   r   r   Ú.is_uploadfile_or_nonable_uploadfile_annotationž   s    

rE   c                 C   sZ   t | ƒ}|tks|tkr<d}t| ƒD ]}t|ƒr$d}q$q$|S t| ƒoXtdd„ t| ƒD ƒƒS )NFTc                 s   s   | ]}t |ƒV  qd S r   )rD   r@   r   r   r   r    ²   s   ÿz/is_bytes_sequence_annotation.<locals>.<genexpr>)r   r   r   r   Úis_bytes_sequence_annotationr4   rC   ©r-   r6   Zat_least_oner7   r   r   r   rF   ©   s    þrF   c                 C   sZ   t | ƒ}|tks|tkr<d}t| ƒD ]}t|ƒr$d}q$q$|S t| ƒoXtdd„ t| ƒD ƒƒS )NFTc                 s   s   | ]}t |ƒV  qd S r   )rE   r@   r   r   r   r    Á   s   ÿz4is_uploadfile_sequence_annotation.<locals>.<genexpr>)r   r   r   r   Ú!is_uploadfile_sequence_annotationr4   rC   rG   r   r   r   rH   ¸   s    þrH   c                 C   sp   t | tjƒrdS t| ƒ}|tks(|tkrHt| ƒD ]}t |tjƒr0 dS q0t| ƒrlt| ƒD ]}t|ƒrX dS qXdS r3   )	r,   r   r   r   r   r   r   r4   Úannotation_is_pydantic_v1)r-   r6   r7   rA   r   r   r   rI   Ç   s    rI   )=ÚsysÚtypesÚtypingÚcollectionsr   Z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__Ú_GenericAliasZGenericAliasÚtupleÚsplitZPYDANTIC_VERSION_MINOR_TUPLEZPYDANTIC_V2ÚlistÚsetÚ	frozensetZsequence_annotation_to_typeÚkeysr0   Úboolr,   r2   r4   r9   r:   r;   r?   rB   rD   rE   rF   rH   rI   r   r   r   r   Ú<module>   s~    0

ý            õ þ
