o
    J[Wi                     @   s  U d dl Z 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 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 e jdk rce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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Z+dee)e df de*fddZ,dee)e df de*fddZ-dede*fddZ.dee)e df de*fd d!Z/dee)e df de*fd"d#Z0de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de*fd*d+Z4dede*fd,d-Z5dede*fd.d/Z6d0ede*fd1d2Z7dede*fd3d4Z8dede*fd5d6Z9dS )7    N)deque)MappingSequence)is_dataclass)	AnnotatedAnyUnion)	UnionType)	BaseModel)VERSION)
UploadFile)get_args
get_origin)   
   .WithArgsTypesc                 c       | ]}t |V  qd S N)int).0x r   Z/var/www/html/asistente-voz-ia/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_issubclass1   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_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.   B   s   
r.   valuec                 C   s   t | tot | ttf S r   )r"   r*   r(   r)   )r2   r   r   r   value_is_sequenceN   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_complexR   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   Z   s   r5   c                 C   s   | t u pt|  S r   )Ellipsisr5   r+   r   r   r   field_annotation_is_scalarj   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   z   
    
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?   o   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   L   t   t dt ddlm} W d    n1 sw   Y  t| |jS Nignorer   )v1)warningscatch_warningssimplefilterUserWarningpydanticrP   r"   r
   )rL   rP   r   r   r   is_pydantic_v1_model_instance   
   
rV   c                 C   rM   rN   )rQ   rR   rS   rT   rU   rP   r&   r
   )r   rP   r   r   r   is_pydantic_v1_model_class   rW   rX   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-   )rX   r   r   r	   r   r.   annotation_is_pydantic_v1)r'   r0   r1   r=   r   r   r   rY      s   rY   ):systypestypingrQ   collectionsr   collections.abcr   r   dataclassesr   r   r   r   fastapi.typesr	   rU   r
   pydantic.versionr   PYDANTIC_VERSIONstarlette.datastructuresr   typing_extensionsr   r   version_info_GenericAliasGenericAliasr   tuple__annotations__splitPYDANTIC_VERSION_MINOR_TUPLEPYDANTIC_V2listset	frozensetsequence_annotation_to_typekeysr*   r#   boolr&   r,   r.   r3   r4   r5   r;   r?   rC   rE   rG   rK   rV   rX   rY   r   r   r   r   <module>   sf   
 
 	
