o
    J[Wi                     @   s  d dl Z d dlZd dlZd dlmZmZ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mZmZmZmZmZmZ d dl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"m#Z#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
l0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z>m?Z? d dl@mAZA d dlBmCZC d d	lDm/ZE d dlFmGZG d dlHmIZImJZJmKZKmLZLmMZM d dlNmOZOmPZP d dlQmRZR d dlSmTZT d dlUmVZVmWZWmXZX dZYdZZd|ddZ[dej\de]de4fd d!Z^d"ddd#d$e4d%e_d&ee`e<  d'ee`e]  de4f
d(d)Zad*e`e de`e fd+d,Zbd$e4de`e fd-d.Zcd/ed0ef dejdfd1d2Zed/ed0ef dejdfd3d4Zfd5ed6ege]ef defd7d8Zhd/ed0ef defd9d:Zidddd;dd<de]d/ed0ef d=ee] d>ee`e]  d'ee`e]  d?e_d@eeVdA df de4fdBdCZjdDe]dEed$e4dee_ fdFdGZkeG dHdI dIZldDe]d5edJedKe_delf
dLdMZmdNed$e4ddfdOdPZnd$e4dQedRege]ef defdSdTZoeG dUdV dVZpddddddWdXeePeTf d$e4dYeeege]ef eIf  dZeeE d[eeR d\ee d]eege<ef  d^ed_e_depfd`daZqdNedJedbege]ef dcere]d0f deree`e f f
dddeZs	d}dNedbee]ef dfee]df defdgdhZtd*ee dieee]ef eLeJf derege]ef e`e f fdjdkZudlede_fdmdnZvd*e`e de_fdodpZwdqe`e dreIdege]ef fdsdtZxdqe`e dreeege]ef eIf  d_e_derege]ef e`ege]ef  f fdudvZydwe4d=e]d_e_dee fdxdyZzdNede]fdzd{Z{dS )~    N)	CoroutineMappingSequence)AsyncExitStackcontextmanager)copydeepcopy)	dataclass)	AnnotatedAnyCallable
ForwardRefOptionalUnioncast)params)
ModelFieldRequiredParam	Undefined_regenerate_error_with_loccopy_field_infocreate_body_modelevaluate_forwardreffield_annotation_is_scalarget_cached_model_fieldsget_missing_field_erroris_bytes_fieldis_bytes_sequence_fieldis_scalar_fieldis_scalar_sequence_fieldis_sequence_field.is_uploadfile_or_nonable_uploadfile_annotation!is_uploadfile_sequence_annotationlenient_issubclasssequence_typesserialize_sequence_valuevalue_is_sequence)BackgroundTasks)asynccontextmanagercontextmanager_in_threadpool)	Dependant)DependencyScopeError)logger)SecurityScopes)DependencyCacheKey)create_model_fieldget_path_param_names)	BaseModel)	FieldInfo)run_in_threadpool)FormDataHeadersImmutableMultiDictQueryParams
UploadFile)HTTPConnectionRequest)Response)	WebSocket)Literalget_args
get_originzForm data requires "python-multipart" to be installed. 
You can install "python-multipart" with: 

pip install python-multipart
zForm data requires "python-multipart" to be installed. It seems you installed "multipart" instead. 
You can remove "multipart" with: 

pip uninstall multipart

And then install "python-multipart" with: 

pip install python-multipart
returnc                  C   s   zddl m}  | dksJ W d S  ttfyV   z,ddlm}  | s#J zddlm} |s.J W n ty@   tt	 t
t	d w W Y d S  tyU   tt t
td w w )Nr   )__version__z0.0.12)parse_options_header)python_multipartrA   ImportErrorAssertionError	multipartmultipart.multipartrB   r,   error!multipart_incorrect_install_errorRuntimeErrormultipart_not_installed_error)rA   rB    rL   ^/var/www/html/asistente-voz-ia/venv/lib/python3.10/site-packages/fastapi/dependencies/utils.pyensure_multipart_is_installedU   s(   



rN   dependspathc                 C   sH   t | js	J dg }t| tjr| jr|| j t|| j| j|dS )Nz;A parameter-less dependency must have a callable dependency)rP   callscopeown_oauth_scopes)	callable
dependency
isinstancer   Securityscopesextendget_dependantrR   )rO   rP   rS   rL   rL   rM   get_parameterless_sub_dependantp   s   r[   Fskip_repeatsvisitedparent_oauth_scopes	dependantr]   r^   r_   c                C   sh  |d u rg }| | j |pg | jpg  }tdi d| j d| j d| j d| j d| j	 d| j
d| jd| jd	| jd
| jd| jd| jd| jd| jd|d| jd| jd| j}| jD ]C}|rx|j|v rxqnt||||jd}|j | |j|j |j|j |j|j |j|j |j	|j	 |j|j qn|S )Npath_paramsquery_paramsheader_paramscookie_paramsbody_paramsnamerQ   request_param_namewebsocket_param_namehttp_connection_param_nameresponse_param_namebackground_tasks_param_namesecurity_scopes_param_namerS   r_   	use_cacherP   rR   r\   rL   )append	cache_keyoauth_scopesr*   ra   r   rb   rc   rd   re   rf   rQ   rg   rh   ri   rj   rk   rl   rS   rm   rP   rR   dependenciesget_flat_dependantrY   )r`   r]   r^   r_   use_parent_oauth_scopesflat_dependantsub_dependantflat_subrL   rL   rM   rr      sx   




	

rr   fieldsc                 C   s:   | s| S | d }t | dkrt|jtrt|j}|S | S )Nr      )lenr#   type_r1   r   )rw   first_fieldfields_to_extractrL   rL   rM   _get_flat_fields_from_params   s   
r}   c                 C   sD   t | dd}t|j}t|j}t|j}t|j}|| | | S )NT)r]   )rr   r}   ra   rb   rc   rd   )r`   rt   ra   rb   rc   rd   rL   rL   rM   get_flat_params   s   



r~   rQ   .c                 C   sL   t jdkrz
tj| dd}W |S  ty   t| }Y |S w t| }|S )N)   
   T)eval_str)sysversion_infoinspect	signature	NameError)rQ   r   rL   rL   rM   _get_signature   s   

r   c                    sD   t | }t| }t|di   fdd|j D }t|}|S )N__globals__c              	      s,   g | ]}t j|j|j|jt|j d qS ))rf   kinddefault
annotation)r   	Parameterrf   r   r   get_typed_annotationr   ).0paramglobalnsrL   rM   
<listcomp>   s    
z'get_typed_signature.<locals>.<listcomp>)r   r   unwrapgetattr
parametersvalues	Signature)rQ   r   	unwrappedtyped_paramstyped_signaturerL   r   rM   get_typed_signature   s   


	r   r   r   c                 C   s2   t | trt| } t| ||} | td u rd S | S N)rV   strr   r   type)r   r   rL   rL   rM   r      s   
r   c                 C   s>   t | }t| }|j}|tjju rd S t|di }t||S )Nr   )r   r   r   return_annotationr   emptyr   r   )rQ   r   r   r   r   rL   rL   rM   get_typed_return_annotation   s   

r   T)rf   rS   r_   rm   rR   rf   rS   rm   rR   )functionrequestc              
   C   s  t ||| ||||d}|pg |pg  }t| }	t|}
|
j}| D ]\}}||	v }t||j|j|d}|jd ur|jj	s?J |j
sE|jr_|jdkr_|jjdkr_|jsUJ td|jj dg }t|jtjrr|jjrrt|jj}t| |jj	||||jj|jjd}|j| q"t||j|dr|jd u sJ d	|q"|jd usJ t|jjtjr|j|j q"t |j|d
 q"|S )N)rQ   rf   rP   rm   rR   rS   r_   )
param_namer   valueis_path_paramr   r   zThe dependency "zS" has a scope of "request", it cannot depend on dependencies with scope "function".)rP   rQ   rf   rS   r_   rm   rR   r   type_annotationr`   z0Cannot specify multiple FastAPI annotations for )fieldr`   )!r*   r0   r   r   itemsanalyze_paramr   r   rO   rU   is_gen_callableis_async_gen_callablecomputed_scoperR   rQ   r+   __name__rV   r   rW   rX   listrZ   rm   rq   rn   !add_non_field_param_to_dependencyr   r   
field_infoBodyre   add_param_to_fields)rP   rQ   rf   rS   r_   rm   rR   r`   current_scopespath_param_namesendpoint_signaturesignature_paramsr   r   r   param_detailssub_own_oauth_scopesru   rL   rL   rM   rZ      s|   
	


	rZ   r   r   c                 C   s|   t |tr
| |_dS t |tr| |_dS t |tr| |_dS t |tr(| |_dS t |t	r2| |_
dS t |tr<| |_dS d S )NT)r#   r:   rg   r<   rh   r9   ri   r;   rj   StarletteBackgroundTasksrk   r-   rl   r   rL   rL   rM   r   F  s&   





r   c                   @   s0   e Zd ZU eed< eej ed< ee ed< dS )ParamDetailsr   rO   r   N)	r   
__module____qualname__r   __annotations__r   r   Dependsr   rL   rL   rL   rM   r   ^  s   
 r   r   r   c                 C   s  d }d }t }t }|tjjur|}|}t|tu ryt|}|d }dd |dd  D }	dd |	D }
|
r9|
d }nd }t|trqt	||d}|j
tks]|j
tks]J d|jj d	| d
|tjjurm|riJ d||_
nt|_
nt|tjry|}t|tjr|d u sJ d| |d u sJ d| |}nt|tr|d u sJ d| |}t|tr||_|d ur|jd u rt|}tj||d}t|ttttttfr|d u sJ d||d u sJ d|nE|d u r-|d u r-|tjjur|nt}|rtj|d}n't|st|rtj ||d}nt!|ds&tj"||d}ntj#||d}d }|d ur|rKt|tjsJJ d|jj d| nt|tj$r`t%|dd d u r`tj&j'|_(|}t|tj)rlt*  |j+s~t%|dd r~| dd}n|j+p| }||_+t,| ||j
||j
ttfv |d}|rt-|dsJ dn#t|tj#rt-|st.|st|j/t0rt%|dddksJ t1|||dS )Nr   c                 S   s    g | ]}t |ttjfr|qS rL   )rV   r2   r   r   r   argrL   rL   rM   r   w  s    z!analyze_param.<locals>.<listcomp>rx   c                 S   s&   g | ]}t |tjtjtjfr|qS rL   )rV   r   Paramr   r   r   rL   rL   rM   r   |  s    )r   r   `z1` default value cannot be set in `Annotated` for z). Set the default value with `=` instead.z*Path parameters cannot have default valueszGCannot specify `Depends` in `Annotated` and default value together for zaCannot specify a FastAPI annotation in `Annotated` and `Depends` as a default value together for zQCannot specify FastAPI annotations in `Annotated` and default value together for )rU   z"Cannot specify `Depends` for type z+Cannot specify FastAPI annotation for type )r   )r   r   zCannot use `z` for path param in_convert_underscores_-)rf   rz   r   aliasrequiredr   )r   z1Path params must be of one of the supported typesshape)r   rO   r   )2r   r   r   r   r?   r
   r>   rV   r2   r   r   r   r   	__class__r   r   r   r   rU   r   dataclassesreplacer#   r:   r<   r9   r;   r   r-   Pathr!   r"   Filer   r   Queryr   r   
ParamTypesqueryr   FormrN   r   r/   r   r   rz   r1   r   )r   r   r   r   r   rO   r   use_annotationannotated_argsfastapi_annotationsfastapi_specific_annotationsfastapi_annotationdefault_valuer   use_annotation_from_field_infor   rL   rL   rM   r   e  s   











r   r   c                 C   s   | j }t|dd }|tjjkr|j|  d S |tjjkr%|j|  d S |tjj	kr3|j
|  d S |tjjksAJ d| j |j|  d S )Nr   z>non-body parameters must be in path, query, header or cookie: )r   r   r   r   rP   ra   rn   r   rb   headerrc   cookierf   rd   )r   r`   r   field_info_inrL   rL   rM   r     s   
r   stack
sub_valuesc                    sV   | j sJ | jrt| j di |}n| jr#tt| j di |}||I d H S )NrL   )rQ   r   r(   r   r)   r   enter_async_context)r`   r   r   cmrL   rL   rM   _solve_generator  s   
r   c                   @   sN   e Zd ZU eeef ed< ee ed< ee	 ed< e
ed< eeef ed< dS )SolvedDependencyr   errorsbackground_tasksresponsedependency_cacheN)r   r   r   dictr   r   r   r   r   r   r;   r.   rL   rL   rL   rM   r   *  s   
 r   )bodyr   r   dependency_overrides_providerr   r   r   r   r   r   r   async_exit_stackembed_body_fieldsc        	            s0  | j d}	t|	tsJ d| j d}
t|
tsJ di }g }|d u r1t }|jd= d |_|d u r7i }|jD ]}tt	dt
f |j|_|j}|}|rm|jrm|j}t|di ||}|j}t|||j|j|j d}t| ||||||||d		I d H }|j}|jr||j q:|jr|j|v r||j }n6|js|jr|	}|j d
kr|
}t|||jdI d H }n|jr|di |jI d H }nt|fi |jI d H }|jd ur|||j< |j|vr|||j< q:t|j| j\}}t|j | j \}}t|j!| j\}}t|j"| j#\}}|$| |$| |$| |$| ||| | | 7 }|j%r@t&|j%||dI d H \}}|$| || |j'rI| ||j'< |j(rYt| t)rY| ||j(< n|j*rht| t+rh| ||j*< |j,ry|d u rtt- }|||j,< |j.r|||j.< |j/rt0|jd||j/< t1|||||dS )Nfastapi_inner_astackz/fastapi_inner_astack not found in request scopefastapi_function_astackz2fastapi_function_astack not found in request scopezcontent-length.dependency_overrides)rP   rQ   rf   r_   rR   )	r   r`   r   r   r   r   r   r   r   r   )r`   r   r   )body_fieldsreceived_bodyr   )rX   )r   r   r   r   r   rL   )2rR   getrV   r   r;   headersstatus_coderq   r   r   r   rQ   r   r   rP   rZ   rf   rp   solve_dependenciesr   r   rY   rm   ro   r   r   r   r   is_coroutine_callabler3   request_params_to_argsra   rb   rc   rd   cookiesupdatere   request_body_to_argsri   rg   r:   rh   r<   rk   r'   rj   rl   r-   r   )r   r`   r   r   r   r   r   r   r   request_astackfunction_astackr   r   ru   rQ   use_sub_dependantoriginal_calluse_pathsolved_resultsolved
use_astackpath_valuespath_errorsquery_valuesquery_errorsheader_valuesheader_errorscookie_valuescookie_errorsbody_valuesbody_errorsrL   rL   rM   r   3  s   

















r   r   locc                 C   sf   |d u r| j rd t|dgfS t| jg fS | j|||d\}}t|tr/t|dd}d |fS |g fS )N)r  rL   )r   
loc_prefix)r   r   r   r   validaterV   r   r   )r   r   r   r  v_errors_
new_errorsrL   rL   rM    _validate_value_with_model_field  s   
r  r   c                 C   s   |pt | }t| rt|ttfr||}n||d }|d u s;t| jtj	r1t|t
r1|dks;t| rEt|dkrE| jr@d S t| jS |S )N r   )get_validation_aliasr    rV   r6   r5   getlistr   r   r   r   r   ry   r   r   r   )r   r   r   r   rL   rL   rM   _get_multidict_value  s"   
r  received_paramsc                 C   s  i }g }| s
||fS | d }| }d}d}t | dkr.t|jtr.t|j}d}t|jdd}i }t }	|D ];}
d }t|t	rVt|
jd|}|rVt
|
}||
jkrV|dd}t|
||d}|d urg||t
|
< |	|pnt
|
 q5| D ].}||	vrt|d	r||}t|trt |dkr|d ||< qu|||< qu||||< qu|r|j}t|tjsJ d
|jjf}t||||d\}}|j|i|fS | D ]3}
t|
|}|
j}t|tjsJ d
|jjt
|
f}t|
|||d\}}|r|| q|||
j< q||fS )Nr   FTrx   r   r   r   )r   r  z"Params must be subclasses of Paramr   r   r   r  )ry   r#   rz   r1   r   r   r   setrV   r5   r  rf   r   r  addkeyshasattrr  r   r   r   r   r   r   r  rY   )rw   r  r   r   r{   r|   single_not_embedded_fielddefault_convert_underscoresparams_to_processprocessed_keysr   r   r   r   keyr   r  r  r  rL   rL   rM   r     s~   









r   
field_typec                 C   sN   ddl m} t| }|tur||urdS t| }|D ]
}t|ts$ dS qdS )zJCheck if field type is a Union where all members are BaseModel subclasses.r   )	UnionTypeFT)fastapi.typesr&  r?   r   r>   r#   r1   )r%  r&  origin
union_argsr   rL   rL   rM   is_union_of_base_models:  s   
r*  c                 C   sl   | sdS dd | D }t |dkrdS | d }t|jdd r dS t|jtjr4t|jts4t	|js4dS dS )NFc                 S   s   h | ]}|j qS rL   )rf   r   r   rL   rL   rM   	<setcomp>R  s    z,_should_embed_body_fields.<locals>.<setcomp>rx   Tr   embed)
ry   r   r   rV   r   r   r#   rz   r1   r*  )rw   body_param_names_setr{   rL   rL   rM   _should_embed_body_fieldsM  s    
r/  r   r   c              
      sl  i }| D ]}t ||}|j}t|tjr&t|r&t|tr&| I d H }n[t|rt|tjrt	|rt|t
s;J g  dtg ttttf f dd f fdd}t 4 I d H }|D ]	}|||j q\W d   I d H  n1 I d H svw   Y  t| d}|d ur||t|< qdd | D }	| D ]}
|
|	vr||
}t|dkr|d	 ||
< q|||
< q|S )
Nfnr@   c                    s   |  I d H }  | d S r   )rn   )r0  resultresultsrL   rM   
process_fn}  s   z&_extract_form_body.<locals>.process_fn)r   r   c                 S   s   h | ]}t |qS rL   )r  r+  rL   rL   rM   r,    s    z%_extract_form_body.<locals>.<setcomp>rx   r   )r  r   rV   r   r   r   r8   readr   r&   r$   r   r   r   anyiocreate_task_group
start_soonr%   r  r  r  ry   )r   r   r   r   r   r   r4  tg	sub_valuefield_aliasesr$  param_valuesrL   r2  rM   _extract_form_bodye  sV   


(
r=  c              	      s,  i }g }| sJ dt | dko| }| d }|}| }|r.t|jtr.t|tr.t|j}t|tr;t||I d H }|rPd}	t||||	d\}
}|j	|
i|fS | D ]?}dt
|f}	d }|d urzz	|t
|}W n tyy   |t|	 Y qRw t||||	d\}
}|r|| qR|
||j	< qR||fS )Nz3request_body_to_args() should be called with fieldsrx   r   )r   r  r   )ry   r#   rz   r1   rV   r4   r   r=  r  rf   r  r   AttributeErrorrn   r   rY   )r   r   r   r   r   r   r{   body_to_processr|   r  r  r  r   r   rL   rL   rM   r     sP   




r   rt   c              	   C   s   | j sdS | j d }|s|S d| }t| j |d}tdd | j D }|dd}|s.d|d	< td
d | j D r<tj}n'tdd | j D rJtj}ntj}dd | j D }	tt|	dkrc|	d |d< t	d||d|di |d}
|
S )a  
    Get a ModelField representing the request body for a path operation, combining
    all body parameters into a single field if necessary.

    Used to check if it's form data (with `isinstance(body_field, params.Form)`)
    or JSON and to generate the JSON Schema for a request body.

    This is **not** used to validate/parse the request body, that's done with each
    individual body parameter.
    Nr   Body_)rw   
model_namec                 s   s    | ]}|j rd V  qdS )TN)r   r   frL   rL   rM   	<genexpr>  s    z!get_body_field.<locals>.<genexpr>r   )r   r   r   c                 s       | ]
}t |jtjV  qd S r   )rV   r   r   r   rB  rL   rL   rM   rD        c                 s   rE  r   )rV   r   r   r   rB  rL   rL   rM   rD    rF  c                 S   s"   g | ]}t |jtjr|jjqS rL   )rV   r   r   r   
media_typerB  rL   rL   rM   r     s    z"get_body_field.<locals>.<listcomp>rx   rG  )rf   rz   r   r   r   rL   )
re   r   anyr   r   r   r   ry   r  r/   )rt   rf   r   first_paramrA  	BodyModelr   BodyFieldInfo_kwargsBodyFieldInfobody_param_media_typesfinal_fieldrL   rL   rM   get_body_field  sB   
rO  c                 C   s   t | dd }|p
| jS )Nvalidation_alias)r   r   )r   varL   rL   rM   r    s   
r  )r@   Nr   )|r   r   r   collections.abcr   r   r   
contextlibr   r   r   r   r	   typingr
   r   r   r   r   r   r   r6  fastapir   fastapi._compatr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   fastapi.backgroundr'   fastapi.concurrencyr(   r)   fastapi.dependencies.modelsr*   fastapi.exceptionsr+   fastapi.loggerr,   fastapi.security.oauth2r-   r'  r.   fastapi.utilsr/   r0   pydanticr1   pydantic.fieldsr2   starlette.backgroundr   starlette.concurrencyr3   starlette.datastructuresr4   r5   r6   r7   r8   starlette.requestsr9   r:   starlette.responsesr;   starlette.websocketsr<   typing_extensionsr=   r>   r?   rK   rI   rN   r   r   r[   boolr   rr   r}   r~   r   r   r   r   r   r   rZ   r   r   r   r   r   r   r   tupler  r  r   r*  r/  r=  r   rO  r  rL   rL   rL   rM   <module>   s   $
\




6
		


	
K

 +



 






S

/
2
5