o
    J[WiL                     @   s  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mZ d dl	m
Z
 d dlmZ d dlmZmZmZmZ d dlmZ d d	lmZ d d
lmZmZmZ d dl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( d dl)m*Z* d dl+m,Z, d dl+m-Z- d dl.m/Z/ d dl.m0Z0m1Z1 d dl.m2Z2 d dl3m4Z4m5Z5m6Z6 zd dl7m8Z8 W n e9y   d dl7m:Z8 Y nw e0Z;e0Z<e1Z=e&Z>eZ?i ddddddddd dd!dd"dd#dd$dd%dd&dd'dd(dd)dd*dd+dd,dd-dddd.Z@d/e*d0eAeBef fd1d2ZCG d3d4 d4ZDG d5d6 d6eEZFeG d7d8 d8ZGd9eGd0eHfd:d;ZId-d<d9eGd=ed>eAeJeGe4d? f e-f d@eHd0eAeBef f
dAdBZKd-d<dCeeG d=ed@eHd0eJeAeJeGe4d? f e-f eAeBeAeBef f f fdDdEZLdFeAeBef dGeAeBeBf d0eAeBef fdHdIZMd=edJeAeBef d>eAeJeGe4d? f e-f d0eJeAeJeGe4d? f e-f eAeBef f fdKdLZNd9eGd0eHfdMdNZOd9eGd0eHfdOdPZPd9eGd0eHfdQdRZQd9eGd0eHfdSdTZRd9eGd0eHfdUdVZSd/e*dWed0e*fdXdYZTd9eGdZed0ee fd[d\ZUd]eJeBdf d0eAeBef fd^d_ZVdCeeG d`eBd0eWe fdadbZXdceWe d0eYeG fdddeZZedceWe d0eYeG fdfdgZ[eeWdh eWe
 f Z\e]e\ Z^dieBd0eBfdjdkZ_dle^d0eAe\eBf fdmdnZ`dCeYeG d0efdodpZa	d~dceWdh dqee^df d0e^fdrdsZbdWedqe^d0e^fdtduZcd9eGdqe^d0e^fdvdwZddCeeG dqe^d0e^fdxdyZedzee d{eJeeBeff df d0eYeAeBef  fd|d}ZgdS )    N)Sequence)copydeepcopy)	dataclassis_dataclass)Enum)	lru_cache)	AnnotatedAnyUnioncast)shared)REF_TEMPLATE)IncExModelNameMap	UnionType)	BaseModel
ConfigDictFieldTypeAdaptercreate_model)PydanticSchemaGenerationError)PydanticUndefinedAnnotation)ValidationError)GetJsonSchemaHandler)eval_type_lenient)lenient_issubclass)	FieldInfo)GenerateJsonSchema)JsonSchemaValue)
CoreSchema)PydanticUndefinedPydanticUndefinedType)Url)Literalget_args
get_origin)"with_info_plain_validator_function) general_plain_validator_functiondefault.default_factoryaliasalias_priorityvalidation_aliasserialization_aliastitlefield_title_generatordescriptionexamplesexclude
exclude_ifdiscriminator
deprecatedjson_schema_extrafrozenvalidate_defaultT)reprinitinit_varkw_only
field_inforeturnc                 C   s:   i }t D ]}t| |t}|tur|||< q| j| j|dS )N)
annotationmetadata
attributes)_Attrsgetattr	Undefinedr@   rA   )r>   rB   attrvalue rH   V/var/www/html/asistente-voz-ia/venv/lib/python3.10/site-packages/fastapi/_compat/v2.pyasdictM   s   rJ   c                   @      e Zd ZdS )
BaseConfigN__name__
__module____qualname__rH   rH   rH   rI   rL   Z       rL   c                   @   rK   )ErrorWrapperNrM   rH   rH   rH   rI   rR   ^   rQ   rR   c                   @   s  e Zd ZU eed< eed< dZed ed< dZe	e
df ed< edefd	d
Zede	edf fddZede	edf fddZedefddZedefddZedefddZd0ddZdefddZi fdddedeeef dee	eef df deee	eeeef  df f fdd Zd!ddd"d#d#d#d$deded% d&e	edf d'e	edf d(ed)ed*ed+edefd,d-Zdefd.d/ZdS )1
ModelFieldr>   name
validationrU   serializationmodeNconfigr?   c                 C   s   | j j}|d ur
|S | jS N)r>   r+   rT   )selfarH   rH   rI   r+   i   s   zModelField.aliasc                 C   s   | j j}t|tr|r|S d S rZ   )r>   r-   
isinstancestr)r[   varH   rH   rI   r-   n   s   zModelField.validation_aliasc                 C   s   | j j}|pd S rZ   )r>   r.   )r[   sarH   rH   rI   r.   u   s   zModelField.serialization_aliasc                 C   s
   | j  S rZ   )r>   is_requiredr[   rH   rH   rI   requiredz   s   
zModelField.requiredc                 C   s   |   S rZ   )get_defaultrb   rH   rH   rI   r)   ~      zModelField.defaultc                 C   s   | j jS rZ   )r>   r@   rb   rH   rH   rI   type_   re   zModelField.type_c                 C   s   t  = tjdkrddlm} t jd|d t| j}|d g|d t	d
i |d R }t
t| | jd	| _W d    d S 1 sDw   Y  d S )N)      r   ) UnsupportedFieldAttributeWarningignore)categoryr@   rA   rB   )rY   rH   )warningscatch_warningsr   PYDANTIC_VERSION_MINOR_TUPLEpydantic.warningsri   simplefilterrJ   r>   r   r   r	   rY   _type_adapter)r[   ri   
field_dictannotated_argsrH   rH   rI   __post_init__   s$   



"zModelField.__post_init__c                 C   s   | j  rtS | j jddS )NT)call_default_factory)r>   ra   rE   rd   rb   rH   rH   rI   rd      s   
zModelField.get_defaultrH   )locrG   valuesrv   .c             
   C   sT   z| j j|ddd fW S  ty) } zd t|jdd|dfW  Y d }~S d }~ww )NT)from_attributesFinclude_url)errors
loc_prefix)rq   validate_pythonr   _regenerate_error_with_locr{   )r[   rG   rw   rv   excrH   rH   rI   validate   s   zModelField.validatejsonTFrX   includer3   by_aliasexclude_unsetexclude_defaultsexclude_none)r   pythonr   r3   r   r   r   r   c          	   
   C   s   | j j||||||||dS )Nr   )rq   dump_python)	r[   rG   rX   r   r3   r   r   r   r   rH   rH   rI   	serialize   s   zModelField.serializec                 C      t | S rZ   )idrb   rH   rH   rI   __hash__   s   zModelField.__hash__)r?   N)rN   rO   rP   r   __annotations__r^   rX   r$   rY   r   r   propertyr+   r-   r.   boolrc   r
   r)   rf   rt   rd   dicttupleintlistr   r   r   r   rH   rH   rH   rI   rS   b   st   
 




	

rS   fieldc                 C   s$   | j jdi dg }t|dkS )Nschemacomputed_fieldsr   )rq   core_schemagetlen)r   r   rH   rH   rI   _has_computed_fields   s   r   separate_input_output_schemasmodel_name_mapfield_mappingrV   r   c                 C   sp   |st | rd nd}| jdkr| jp| jn| jp| j}|| |p!| jf }d|vr6| jjp3| dd|d< |S )NrU   $ref_ r/   )r   rX   r-   r+   r.   r>   r/   replace)r   r   r   r   override_modefield_aliasjson_schemarH   rH   rI   get_schema_from_model_field   s"   


r   fieldsc                    s  t td}dd | D }dd | D }t|t d}t|t d}dd |D }dd |D }	||	 }
dd	 | D   fd
d	|
D }fddt| t| D }|j|d\}}tttttt	f f |
 D ]}d|v rtt|d dd }||d< qit|||d\}}||fS )N)ref_templatec                 S      g | ]	}|j d kr|qS rU   rX   .0r   rH   rH   rI   
<listcomp>      z#get_definitions.<locals>.<listcomp>c                 S   r   )rW   r   r   rH   rH   rI   r     r   known_modelsc                 S   "   g | ]}t t|d |jddqS )r@   rU   r>   rT   rX   rS   r   rN   r   modelrH   rH   rI   r         c                 S   r   )r   rW   r   r   r   rH   rH   rI   r     r   c                 S   s   h | ]}|j qS rH   rf   r   frH   rH   rI   	<setcomp>  s    z"get_definitions.<locals>.<setcomp>c                    s   h | ]	}|j  vr|qS rH   r   r   )input_typesrH   rI   r      s    c                    s,   g | ]}| st |r|jnd |jjfqS r   )r   rX   rq   r   r   r   rH   rI   r   #  s    
)inputsr1   r   )r   definitionsr   )r   r   get_flat_models_from_fieldssetr   generate_definitionsr   r   r^   r
   rw   split%_remap_definitions_and_field_mappings)r   r   r   schema_generatorvalidation_fieldsserialization_fieldsflat_validation_modelsflat_serialization_modelsflat_validation_model_fieldsflat_serialization_model_fieldsflat_model_fieldsunique_flat_model_fieldsr   r   r   item_defitem_descriptionnew_mappingnew_definitionsrH   )r   r   rI   get_definitions   sF   
	


"
r   r   old_name_to_new_name_mapc           
      C   s   t | }| D ]_\}}|dkr3| d }t|tr2| d dd }||v r2|| }tj|d|d< qt|trAt||d||< qt|t	rgg }|D ]}t|tr]t||d}	|
|	 qJ|
| qJ|||< q|S )Nr   /r   r   r   )r   itemsr]   r^   r   r   formatr   _replace_refsr   append)
r   r   
new_schemakeyrG   ref_namenew_name	new_valueitemnew_itemrH   rH   rI   r   <  s8   



r   r   c                 C   s   i }|  D ]0\}}|d j}|| vsd|vrq| | }|d dd }|| d| dhv r2q|||< qi }	|  D ]\}}t||d}
|
|	|< q=i }|  D ]\}}||v r_|| }n|}t||d}|||< qR|	|fS )Nr   r   r   r   z-Inputz-Outputr   )r   rf   r   r   )r   r   r   r   	field_keyr   r   r   old_namenew_field_mappingr   r   r   rG   new_keyr   rH   rH   rI   r   `  s:   




r   c                 C   s*   ddl m} t| jjot| j|j S )Nr   )params)fastapir   r   field_annotation_is_scalarr>   r@   r]   Body)r   r   rH   rH   rI   is_scalar_field  s   r   c                 C      t | jjS rZ   )r   field_annotation_is_sequencer>   r@   r   rH   rH   rI   is_sequence_field     r   c                 C   r   rZ   )r   #field_annotation_is_scalar_sequencer>   r@   r   rH   rH   rI   is_scalar_sequence_field  r   r   c                 C      t | jS rZ   )r   $is_bytes_or_nonable_bytes_annotationrf   r   rH   rH   rI   is_bytes_field     r   c                 C   r   rZ   )r   is_bytes_sequence_annotationrf   r   rH   rH   rI   is_bytes_sequence_field  r   r   r@   c                 C   s.   t | }||}t| }|j|_|j|_|S rZ   )typefrom_annotationr   rA   r@   )r>   r@   clsmerged_field_infonew_field_inforH   rH   rI   copy_field_info  s   
r   rG   c                 C   sr   t | jjp	| jj}|tu s|tu r*t| jj}|D ]}|td u r#qt |p(|} t|tj	s2J tj
| |S rZ   )r&   r>   r@   r   r   r%   r   
issubclassr   sequence_typessequence_annotation_to_type)r   rG   origin_type
union_args	union_argrH   rH   rI   serialize_sequence_value  s   r  rv   c                 C   s.   t dd| i dgjddd }d |d< |S )NzField requiredmissing)r   rv   inputFry   r   r	  )r   from_exception_datar{   )rv   errorrH   rH   rI   get_missing_field_error  s   r  
model_namec                 C   s"   dd | D }t |fi |}|S )Nc                 S   s   i | ]}|j |jj|jfqS rH   )rT   r>   r@   r   rH   rH   rI   
<dictcomp>  s    z%create_body_model.<locals>.<dictcomp>)r   )r   r  field_params	BodyModelrH   rH   rI   create_body_model  s   r  r   c                 C   sX   g }| j  D ]"\}}|j}t|ttfst|rd }n| j}|t	|||d q|S )N)r>   rT   rY   )
model_fieldsr   r@   r   r   r   r   model_configr   rS   )r   r  rT   r>   rf   r  rH   rH   rI   get_model_fields  s   r  c                 C   r   rZ   )r  r   rH   rH   rI   get_cached_model_fields  re   r  r   rT   c                 C   s   t dd| S )Nz[^a-zA-Z0-9.\-_]r   )resub)rT   rH   rH   rI   normalize_name  r   r  unique_modelsc                 C   s2   i }| D ]}t |j}|||< qdd | D S )Nc                 S   s   i | ]\}}||qS rH   rH   )r   kvrH   rH   rI   r    s    z&get_model_name_map.<locals>.<dictcomp>)r  rN   r   )r  name_model_mapr   r  rH   rH   rI   get_model_name_map  s
   

r  c                 C   s8   t  }dd | D }t|t  d}||}t|}|S )Nc                 S   s   g | ]	}t |tr|qS rH   )r]   rS   r   rH   rH   rI   r     r   z-get_compat_model_name_map.<locals>.<listcomp>r   )r   r   unionr  )r   all_flat_modelsv2_model_fieldsv2_flat_modelsr   rH   rH   rI   get_compat_model_name_map  s   
r"  r   c                 C   s"   |pt  }t| }t||d |S Nr   )r   r  r   )r   r   r   rH   rH   rI   get_flat_models_from_model  s   
r$  c                 C   sf   t | }|d ur1t| D ]$}t|ttfr*||vr*|| t|tr)t||d qt||d q|S r#  )r&   r%   r   r   r   addr$  get_flat_models_from_annotation)r@   r   originargrH   rH   rI   r&  
  s   

r&  c                 C   s^   | j }t|tr||v r|S || t||d |S t|tr'|| |S t||d |S r#  )rf   r   r   r%  r$  r   r&  )r   r   
field_typerH   rH   rI   get_flat_models_from_field  s   



r*  c                 C   s   | D ]}t ||d q|S r#  )r*  )r   r   r   rH   rH   rI   r   )  s   r   r{   r|   c                    s    fdd| D }|S )Nc              	      s(   g | ]}i |d  | d d iqS )rv   rH   )r   )r   errr|   rH   rI   r   4  s    z._regenerate_error_with_loc.<locals>.<listcomp>rH   )r{   r|   updated_loc_errorsrH   r,  rI   r~   1  s   
r~   rZ   )hr  rl   collections.abcr   r   r   dataclassesr   r   enumr   	functoolsr   typingr	   r
   r   r   fastapi._compatr   fastapi.openapi.constantsr   fastapi.typesr   r   r   pydanticr   r   r   r   r   r   r   r   ,pydantic._internal._schema_generation_sharedr    pydantic._internal._typing_extrar   pydantic._internal._utilsr   pydantic.fieldsr   pydantic.json_schemar   r   pydantic_corer    r!   r"   r#   typing_extensionsr$   r%   r&   pydantic_core.core_schemar'   ImportErrorr(   RequiredParamrE   UndefinedTypeevaluate_forwardref	ValidatorrC   r   r^   rJ   rL   	ExceptionrR   rS   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r  r   r  r  TypeModelOrEnumr   TypeModelSetr  r  r"  r$  r&  r*  r   r   r~   rH   rH   rH   rI   <module>   s|   	
s

#
@



$


.	"


	


