o
    i                     @   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   M/home/app/Keep/.python/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   Z__pydantic_core_schema__Z__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   r9   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   )r9   r   sub_annotationr   r   r   r   x   
    
z6field_annotation_is_scalar_sequence.<locals>.<genexpr>)r   r
   r   r   #field_annotation_is_scalar_sequencer9   r.   all)r(   r0   Z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~      

r@   c                 C   r?   r-   )r'   r   r   r
   r   r   r/   r   r   r   .is_uploadfile_or_nonable_uploadfile_annotation   rA   rB   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   )r@   r:   r   r   r   r      r<   z/is_bytes_sequence_annotation.<locals>.<genexpr>)r   r
   r   r   is_bytes_sequence_annotationr.   r>   r(   r0   Zat_least_oner1   r   r   r   rD         rD   c                 C   rC   )NFTc                 s   r   r   )rB   r:   r   r   r   r      r<   z4is_uploadfile_sequence_annotation.<locals>.<genexpr>)r   r
   r   r   !is_uploadfile_sequence_annotationr.   r>   rE   r   r   r   rG      rF   rG   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pydanticrL   ImportErrorr#   r   )rH   rL   r   r   r   is_pydantic_v1_model_instance      
rS   c                 C   rI   rJ   )	rM   rN   rO   rP   rQ   rL   rR   r'   r   )r   rL   r   r   r   is_pydantic_v1_model_class   rT   rU   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-   )rU   r   r
   r   r   r.   annotation_is_pydantic_v1)r(   r0   r1   r;   r   r   r   rV      s   rV   )9typestypingrM   collectionsr   collections.abcr   r   dataclassesr   r   r   r   r	   r
   r   r   Zfastapi.typesr   rQ   r   Zpydantic.versionr   ZPYDANTIC_VERSIONZstarlette.datastructuresr   r   _GenericAliasGenericAliasr   tuple__annotations__splitZPYDANTIC_VERSION_MINOR_TUPLElistset	frozensetZsequence_annotation_to_typekeysr   r$   r'   boolr,   r.   r3   r4   r5   r9   r=   r@   rB   rD   rG   rS   rU   rV   r   r   r   r   <module>   s\   
 $
  	

