o
    bi                     @   sx  U d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlm	Z	 d dl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 ed
Zeje je jfZeedf ed< edd e ddd D Z!ee"e"e"eee#e#e$e$eeiZ%ee%& Z'ee(e df ed< dede(e ee(e df B dB dee(e  fddZ)de(e dB de*fddZ+de(e dB de*fddZ,dede*fddZ-de(e dB de*fdd Z.de(e dB de*fd!d"Z/dede*fd#d$Z0de(e dB de*fd%d&Z1dede*fd'd(Z2dede*fd)d*Z3dede*fd+d,Z4dede*fd-d.Z5d/ede*fd0d1Z6dede*fd2d3Z7dede*fd4d5Z8dS )6    N)deque)MappingSequence)is_dataclass)	AnnotatedAny	TypeGuardTypeVarUnionget_args
get_origin)	UnionType)	BaseModel)VERSION)
UploadFile_T.WithArgsTypesc                 c       | ]}t |V  qd S N)int).0x r   X/sda-disk/www/egybert/egybert_env/lib/python3.10/site-packages/fastapi/_compat/shared.py	<genexpr>       r   .   sequence_types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_issubclass/   s   
r'   
annotationc                 C   s   t | ttfr	dS t | tS r"   )r'   strbytesr   r(   r   r   r   _annotation_is_sequence:   s   
r,   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_sequencer,   r(   originargr   r   r   r.   @   s   
r.   valuec                 C   s   t | tot | ttf S r   )r#   r   r)   r*   )r2   r   r   r   value_is_sequenceL   s   r3   c                 C   s    t | tttfpt| pt| S r   )r'   r   r   r   r,   r   r+   r   r   r   _annotation_is_complexP   s
   r4   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   r1   r   r   r   r   [   r   z.field_annotation_is_complex.<locals>.<genexpr>r   __pydantic_core_schema____get_pydantic_core_schema__)	r   r
   r   anyr   r   r5   r4   hasattr)r(   r0   r   r   r   r5   X   s   r5   c                 C   s   | t u pt|  S r   )Ellipsisr5   r+   r   r   r   field_annotation_is_scalarh   s   r;   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   )r;   r   sub_annotationr   r   r   r   x   
    
z6field_annotation_is_scalar_sequence.<locals>.<genexpr>)r   r
   r   r   #field_annotation_is_scalar_sequencer;   r.   all)r(   r0   at_least_one_scalar_sequencer1   r   r   r   r?   m   s   r?   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 r-   )r'   r*   r   r
   r   r   r/   r   r   r   $is_bytes_or_nonable_bytes_annotation~      

rC   c                 C   rB   r-   )r'   r   r   r
   r   r   r/   r   r   r   .is_uploadfile_or_nonable_uploadfile_annotation   rD   rE   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   )rC   r<   r   r   r   r      r>   z/is_bytes_sequence_annotation.<locals>.<genexpr>)r   r
   r   r   is_bytes_sequence_annotationr.   r@   r(   r0   at_least_oner1   r   r   r   rG         rG   c                 C   rF   )NFTc                 s   r   r   )rE   r<   r   r   r   r      r>   z4is_uploadfile_sequence_annotation.<locals>.<genexpr>)r   r
   r   r   !is_uploadfile_sequence_annotationr.   r@   rH   r   r   r   rK      rJ   rK   objc                 C   f   z"t   t dt ddlm} W d    n1 sw   Y  W n
 ty,   Y dS w t| |jS Nignorer   )v1F)	warningscatch_warningssimplefilterUserWarningpydanticrP   ImportErrorr#   r   )rL   rP   r   r   r   is_pydantic_v1_model_instance      
rW   c                 C   rM   rN   )	rQ   rR   rS   rT   rU   rP   rV   r'   r   )r   rP   r   r   r   is_pydantic_v1_model_class   rX   rY   c                 C   sh   t | rdS t| }|tu s|tu r t| D ]	}t |r dS qt| r2t| D ]	}t|r1 dS q(dS r-   )rY   r   r
   r   r   r.   annotation_is_pydantic_v1)r(   r0   r1   r=   r   r   r   rZ      s   rZ   )9typestypingrQ   collectionsr   collections.abcr   r   dataclassesr   r   r   r   r	   r
   r   r   fastapi.typesr   rU   r   pydantic.versionr   PYDANTIC_VERSIONstarlette.datastructuresr   r   _GenericAliasGenericAliasr   tuple__annotations__splitPYDANTIC_VERSION_MINOR_TUPLElistset	frozensetsequence_annotation_to_typekeysr   r$   r'   boolr,   r.   r3   r4   r5   r;   r?   rC   rE   rG   rK   rW   rY   rZ   r   r   r   r   <module>   s\   
 $
  	

