o
    LDiΝ                     @   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-m.Z.m/Z/m0Z0m1Z1 d d	l2m3Z3 d d
l4m5Z5 d dl6m7Z7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZDmEZE d dlFmGZG d dlHmIZI d d
lJm5ZK d dlLmMZM d dlNmOZOmPZPmQZQmRZRmSZS d dlTmUZUmVZV d dlWmXZX d dlYmZZZ d dl[m\Z\m]Z]m^Z^ ddl_m`Z` dZadZbddd Zcd!ejdd"eede:fd#d$Zfd%ddd&d'e:d(egd)eeheB  d*eehee  de:f
d+d,Zid-ehe dehe fd.d/Zjd'e:dehe fd0d1Zkd2ed3ef dejlfd4d5Zmd2ed3ef dejlfd6d7Znd8ed9eoeeef defd:d;Zpd2ed3ef defd<d=Zqdddd>dd?d"eed2ed3ef d@eee dAeehee  d*eehee  dBegdCee\dD df de:fdEdFZrdGeedHed'e:deeg fdIdJZseG dKdL dLZtdGeed8edMedNegdetf
dOdPZudQed'e:ddfdRdSZvd'e:dTedUeoeeef defdVdWZweG dXdY dYZxddddddZd[eeVeZf d'e:d\eeeoeeef eOf  d]eeK d^eeX d_ee d`eeoeBef  daedbegdexfdcddZydQedMedeeoeeef dfezeed3f dezeehe f f
dgdhZ{	ddQedeeeeef dieeedf defdjdkZ|d-ee dleeeeef eRePf dezeoeeef ehe f fdmdnZ}doedegfdpdqZ~d-ehe degfdrdsZdtehe dueOdeoeeef fdvdwZdtehe dueeeoeeef eOf  dbegdezeoeeef eheoeeef  f fdxdyZdze:d@eedbegdee fd{d|ZdQedeefd}d~ZdS )    N)	CoroutineMappingSequence)AsyncExitStackcontextmanager)copydeepcopy)	dataclass)	AnnotatedAnyCallable
ForwardRefOptionalUnioncast)params)PYDANTIC_V2
ModelFieldRequiredParam	Undefined_is_error_wrapper_is_model_classcopy_field_infocreate_body_modelevaluate_forwardreffield_annotation_is_scalarget_annotation_from_field_info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may_v1sequence_typesserialize_sequence_valuevalue_is_sequence)annotation_is_pydantic_v1)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_origin   )temp_pydantic_v1_paramszForm 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_multipartrH   ImportErrorAssertionError	multipartmultipart.multipartrI   r1   error!multipart_incorrect_install_errorRuntimeErrormultipart_not_installed_error)rH   rI    rS   f/var/www/www-root/data/www/77.83.87.30/venv/lib/python3.10/site-packages/fastapi/dependencies/utils.pyensure_multipart_is_installed\   s(   



rU   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)rW   callscopeown_oauth_scopes)	callable
dependency
isinstancer   Securityscopesextendget_dependantrY   )rV   rW   rZ   rS   rS   rT   get_parameterless_sub_dependantw   s   rb   Fskip_repeatsvisitedparent_oauth_scopes	dependantrd   re   rf   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namerX   request_param_namewebsocket_param_namehttp_connection_param_nameresponse_param_namebackground_tasks_param_namesecurity_scopes_param_namerZ   rf   	use_cacherW   rY   rc   rS   )append	cache_keyoauth_scopesr/   rh   r   ri   rj   rk   rl   rm   rX   rn   ro   rp   rq   rr   rs   rZ   rt   rW   rY   dependenciesget_flat_dependantr`   )rg   rd   re   rf   use_parent_oauth_scopesflat_dependantsub_dependantflat_subrS   rS   rT   ry      sx   




	

ry   fieldsc                 C   s8   | s| S | d }t | dkrt|jrt|j}|S | S )Nr      )lenr   type_r   )r~   first_fieldfields_to_extractrS   rS   rT   _get_flat_fields_from_params   s   
r   c                 C   sD   t | dd}t|j}t|j}t|j}t|j}|| | | S )NT)rd   )ry   r   rh   ri   rj   rk   )rg   r{   rh   ri   rj   rk   rS   rS   rT   get_flat_params   s   



r   rX   .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)rX   r   rS   rS   rT   _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 ))rm   kinddefault
annotation)r   	Parameterrm   r   r   get_typed_annotationr   ).0paramglobalnsrS   rT   
<listcomp>   s    
z'get_typed_signature.<locals>.<listcomp>)r   r   unwrapgetattr
parametersvalues	Signature)rX   r   	unwrappedtyped_paramstyped_signaturerS   r   rT   get_typed_signature   s   


	r   r   r   c                 C   s2   t | trt| } t| ||} | td u rd S | S N)r]   strr   r   type)r   r   rS   rS   rT   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   )rX   r   r   r   r   rS   rS   rT   get_typed_return_annotation   s   

r   T)rm   rZ   rf   rt   rY   rm   rZ   rt   rY   )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tjfr|j |j q"t!|j|d
 q"|S )N)rX   rm   rW   rt   rY   rZ   rf   )
param_namer   valueis_path_paramr   r   zThe dependency "zS" has a scope of "request", it cannot depend on dependencies with scope "function".)rW   rX   rm   rZ   rf   rt   rY   r   type_annotationrg   z0Cannot specify multiple FastAPI annotations for )fieldrg   )"r/   r5   r   r   itemsanalyze_paramr   r   rV   r\   is_gen_callableis_async_gen_callablecomputed_scoperY   rX   r0   __name__r]   r   r^   r_   listra   rt   rx   ru   !add_non_field_param_to_dependencyr   r   
field_infoBodyrF   rl   add_param_to_fields)rW   rX   rm   rZ   rf   rt   rY   rg   current_scopespath_param_namesendpoint_signaturesignature_paramsr   r   r   param_detailssub_own_oauth_scopesr|   rS   rS   rT   ra     s   
	


	ra   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?   rn   rA   ro   r>   rp   r@   rq   StarletteBackgroundTasksrr   r2   rs   r   rS   rS   rT   r   O  s&   





r   c                   @   s0   e Zd ZU eed< eej ed< ee ed< dS )ParamDetailsr   rV   r   N)	r   
__module____qualname__r   __annotations__r   r   Dependsr   rS   rS   rS   rT   r   g  s   
 r   r   r   c              	   C   s  d }d }t }t }|tjjur|}|}t|tu rt|}|d }dd |dd  D }	dd |	D }
|
r9|
d }nd }t|tt	jfrzt
||d}|jtt	jhv sf|jtt	jhv sfJ d|jj d	| d
|tjjurv|rrJ d||_nt|_nt|tjr|}t|tjr|d u sJ d| |d u sJ d| |}nt|tt	jfr|d u sJ d| |}trt|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|nS|d u rI|d u rI|tjjur	|nt}|rtj|d}n4t |st!|r'tj"||d}n"t#|dsBt$|r:t%j&||d}ntj&||d}ntj'||d}d }|d ur|rjt|tjt%jfsiJ d|jj d| nt|tj(t%j(frt)|dd d u rtj*j+|_,t-||| }t|tj.t%j.frt/  |j0st)|dd r| dd}n|j0p| }||_0t1| ||j||jtt	jtfv |d}|rt2|dsJ dn%t|tj't%j'frt2|st3|st4|j5rt)|dddksJ t6|||dS )Nr   c                 S   s$   g | ]}t |ttjtjfr|qS rS   )r]   r7   r'   r   r   r   argrS   rS   rT   r     s    z!analyze_param.<locals>.<listcomp>r   c              	   S   s.   g | ]}t |tjtjtjtjtjfr|qS rS   )r]   r   ParamrF   r   r   r   rS   rS   rT   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 )r\   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_-)rm   r   r   aliasrequiredr   )r   z1Path params must be of one of the supported typesshape)r   rV   r   )7r   r   r   r   rD   r
   rC   r]   r7   r'   r   r   r   r   	__class__r   r   r   r   r   r\   r   dataclassesreplacer&   r?   rA   r>   r@   r   r2   Pathr$   r%   Filer   r+   rF   r   Queryr   r   
ParamTypesqueryr   r   FormrU   r   r4   r!   r"   r   r   r   )r   r   r   r   r   rV   r   use_annotationannotated_argsfastapi_annotationsfastapi_specific_annotationsfastapi_annotationdefault_valuer   use_annotation_from_field_infor   rS   rS   rT   r   n  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   rW   rh   ru   r   ri   headerrj   cookierm   rk   )r   rg   r   field_info_inrS   rS   rT   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 )NrS   )rX   r   r-   r   r.   r   enter_async_context)rg   r   r   cmrS   rS   rT   _solve_generator9  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@   r3   rS   rS   rS   rT   r   D  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)rW   rX   rm   rf   rY   )	r   rg   r   r   r   r   r   r   r   r   )rg   r   r   )body_fieldsreceived_bodyr   )r_   )r   r   r   r   r   rS   )2rY   getr]   r   r@   headersstatus_coderx   r   r   r   rX   r   r   rW   ra   rm   rw   solve_dependenciesr   r   r`   rt   rv   r   r   r   r   is_coroutine_callabler8   request_params_to_argsrh   ri   rj   rk   cookiesupdaterl   request_body_to_argsrp   rn   r?   ro   rA   rr   r,   rq   rs   r2   r   )r   rg   r   r   r   r   r   r   r   request_astackfunction_astackr   r   r|   rX   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_errorsrS   rS   rT   r   M  s   

















r   r   locc                 C   sz   |d u r| j rd t|dgfS t| jg fS | j|||d\}}t|r)d |gfS t|tr9tj	|dd}d |fS |g fS )N)r  rS   )r   
loc_prefix)
r   r   r   r   validater   r]   r   r'   _regenerate_error_with_loc)r   r   r   r  v_errors_
new_errorsrS   rS   rT    _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	t
j	fr4t|tr4|dks>t| rHt|dkrH| jrCd S t| jS |S )N r   )get_validation_aliasr#   r]   r;   r:   getlistr   r   r   r   rF   r   r   r   r   r   )r   r   r   r   rS   rS   rT   _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tjfsJ d
|jjf}t||||d\}}|j|i|fS | D ]6}
t|
|}|
j}t|tjtjfsJ d
|jjt
|
f}t|
|||d\}}|r|| q|||
j< q||fS )Nr   FTr   r   r   r   )r   r   z"Params must be subclasses of Paramr   r   r   r  )r   r&   r   r6   r   r   r   setr]   r:   r  rm   r   r!  addkeyshasattrr   r   r   r   r   rF   r   r   r  r`   )r~   r"  r   r   r   r   single_not_embedded_fielddefault_convert_underscoresparams_to_processprocessed_keysr   r   r   r   keyr   r  r  r  rS   rS   rT   r     s~   









r   
field_typec                 C   sL   ddl m} t| }|tur||urdS t| }|D ]	}t|s# dS qdS )zJCheck if field type is a Union where all members are BaseModel subclasses.r   )	UnionTypeFT)fastapi.typesr.  rD   r   rC   r   )r-  r.  origin
union_argsr   rS   rS   rT   is_union_of_base_modelsV  s   r2  c                 C   sp   | sdS dd | D }t |dkrdS | d }t|jdd r dS t|jtjtjfr6t|js6t	|js6dS dS )NFc                 S   s   h | ]}|j qS rS   )rm   r   r   rS   rS   rT   	<setcomp>n  s    z,_should_embed_body_fields.<locals>.<setcomp>r   Tr   embed)
r   r   r   r]   r   r   rF   r   r   r2  )r~   body_param_names_setr   rS   rS   rT   _should_embed_body_fieldsi  s    r7  r   r   c              
      sx  i }| D ]}t ||}|j}t|tjtjfr)t|r)t|tr)| I d H }n^t	|rt|tjtjfrt
|rt|tsAJ g  dtg ttttf f dd f fdd}t 4 I d H }|D ]	}|||j qbW d   I d H  n1 I d H s|w   Y  t| d}|d ur||t|< qdd | D }	| D ]}
|
|	vr||
}t|dkr|d	 ||
< q|||
< q|S )
NfnrG   c                    s   |  I d H }  | d S r   )ru   )r8  resultresultsrS   rT   
process_fn  s   z&_extract_form_body.<locals>.process_fn)r   r   c                 S   s   h | ]}t |qS rS   )r  r3  rS   rS   rT   r4    s    z%_extract_form_body.<locals>.<setcomp>r   r   )r!  r   r]   r   r   rF   r   r=   readr    r*   r(   r   r   r   anyiocreate_task_group
start_soonr)   r  r&  r   r   )r   r   r   r   r   r   r<  tg	sub_valuefield_aliasesr,  param_valuesrS   r:  rT   _extract_form_body  sV   
(
rE  c              	      s*  i }g }| sJ dt | dko| }| d }|}| }|r-t|jr-t|tr-t|j}t|tr:t||I d H }|rOd}	t||||	d\}
}|j|
i|fS | D ]?}dt	|f}	d }|d uryz	|
t	|}W n tyx   |t|	 Y qQw t||||	d\}
}|r|| qQ|
||j< qQ||fS )Nz3request_body_to_args() should be called with fieldsr   r   )r   r#  r   )r   r   r   r]   r9   r   rE  r  rm   r  r   AttributeErrorru   r   r`   )r   r   r   r   r   r(  r   body_to_processr   r  r  r  r   r   rS   rS   rT   r    sP   



r  r{   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}nKtdd | j D rJtj}n=tdd | j D rXtj}n/tdd | j D rftj}n!t|rntj}ntj}dd | j D }	t	t
|	dkr|	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_)r~   
model_namec                 s   s    | ]}|j rd V  qdS )TN)r   r   frS   rS   rT   	<genexpr>  s    z!get_body_field.<locals>.<genexpr>r   )r   r   r   c                 s       | ]
}t |jtjV  qd S r   )r]   r   r   r   rJ  rS   rS   rT   rL        c                 s   rM  r   )r]   r   rF   r   rJ  rS   rS   rT   rL    
    
c                 s   rM  r   )r]   r   r   r   rJ  rS   rS   rT   rL    rN  c                 s   rM  r   )r]   r   rF   r   rJ  rS   rS   rT   rL    rO  c                 S   s(   g | ]}t |jtjtjfr|jjqS rS   )r]   r   r   r   rF   
media_typerJ  rS   rS   rT   r     s    z"get_body_field.<locals>.<listcomp>r   rP  )rm   r   r   r   r   rS   )rl   r   anyr   r   rF   r   r+   r   r   r$  r4   )r{   rm   r   first_paramrI  	BodyModelr   BodyFieldInfo_kwargsBodyFieldInfobody_param_media_typesfinal_fieldrS   rS   rT   get_body_field  sV   
rX  c                 C   s   t | dd }|p
| jS )Nvalidation_alias)r   r   )r   varS   rS   rT   r  $  s   
r  )rG   Nr   )r   r   r   collections.abcr   r   r   
contextlibr   r   r   r   r	   typingr
   r   r   r   r   r   r   r>  fastapir   fastapi._compatr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   fastapi._compat.sharedr+   fastapi.backgroundr,   fastapi.concurrencyr-   r.   fastapi.dependencies.modelsr/   fastapi.exceptionsr0   fastapi.loggerr1   fastapi.security.oauth2r2   r/  r3   fastapi.utilsr4   r5   pydanticr6   pydantic.fieldsr7   starlette.backgroundr   starlette.concurrencyr8   starlette.datastructuresr9   r:   r;   r<   r=   starlette.requestsr>   r?   starlette.responsesr@   starlette.websocketsrA   typing_extensionsrB   rC   rD   r  rF   rR   rP   rU   r   r   rb   boolr   ry   r   r   r   r   r   r   r   r   ra   r   r   r   r   r   r   r   tupler  r!  r   r2  r7  rE  r  rX  r  rS   rS   rS   rT   <module>   s   $
l

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