o
    ß­j!v  ã                   @   s²  d dl Z d dlmZmZ d dlmZ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 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. d dl/m0Z0 d dl1m2Z2m3Z3 d d	l4m5Z5m6Z6 d d
l7m8Z8 d dl9m:Z: d dl;m<Z<m=Z= d dl>m?Z? d dl@mAZAmBZB d dlCmDZD d dlEm0ZF d dlGmHZH d dlImJZJmKZKmLZLmMZM d dlNmOZOmPZP d dlQmRZR d dlSmTZT d dlUmVZVmWZWmXZX dZYdZZdeddfdd„Z[ddœde\dej]de\d eee\  de5f
d!d"„Z^dej]de\de5fd#d$„Z_ddd%œdej]d&ed'ef de\d(ee\ d eee\  de5fd)d*„Z`eeed'ef  ee\d'f f Zad+dd,œd-e5d.ebd/eeea  de5fd0d1„Zcd-e5dee fd2d3„Zdd4ed'ef de jefd5d6„Zfd7ed8e
e\ef defd9d:„Zgd4ed'ef defd;d<„Zhddd=d>œde\d4ed'ef d(ee\ d eee\  d?ebde5fd@dA„Zide\dBed-e5deeb fdCdD„Zjde\d7edEedFebdeeeej] ee f f
dGdH„ZkdIedFebdebfdJdK„Zlded-e5ddfdLdM„Zmd4ed'ef debfdNdO„Znd4ed'ef debfdPdQ„Zod4ed'ef debfdRdS„Zpd4ed'ef dTedUe
e\ef defdVdW„ZqddddddXœdYeePeTf d-e5dZeee
e\ef eJf  d[eeF d\eeR d]ee d^ee
eed'ef ee\ f ef  d_edee
e\ef ee eeF eRe
eed'ef ee\ f ef f fd`da„Zrdbee dceee\ef eLeKf dee
e\ef ee f fddde„Zsdbee dfeee
e\ef eJf  dee
e\ef ee
e\ef  f fdgdh„Ztd-e5d(e\dee fdidj„ZudS )ké    N)ÚAsyncExitStackÚcontextmanager)ÚcopyÚdeepcopy)ÚAnyÚCallableÚ	CoroutineÚDictÚ
ForwardRefÚListÚMappingÚOptionalÚSequenceÚTupleÚTypeÚUnionÚcast)Úparams)ÚPYDANTIC_V2ÚErrorWrapperÚ
ModelFieldÚRequiredÚ	UndefinedÚ_regenerate_error_with_locÚcopy_field_infoÚcreate_body_modelÚevaluate_forwardrefÚfield_annotation_is_scalarÚget_annotation_from_field_infoÚ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ÚSecurityRequirement)Úlogger)ÚSecurityBase)ÚOAuth2ÚSecurityScopes)ÚOpenIdConnect)Úcreate_response_fieldÚget_path_param_names)Ú	FieldInfo)Úrun_in_threadpool)ÚFormDataÚHeadersÚQueryParamsÚ
UploadFile)ÚHTTPConnectionÚRequest)ÚResponse)Ú	WebSocket)Ú	AnnotatedÚget_argsÚ
get_originz€Form data requires "python-multipart" to be installed. 
You can install "python-multipart" with: 

pip install python-multipart
zéForm 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
ÚfieldÚreturnc                 C   sŽ   | j }t|tjƒrEz*ddlm} |sJ ‚zddlm} |sJ ‚W W d S  ty3   t	 
t¡ ttƒd ‚w  tyD   t	 
t¡ ttƒd ‚w d S )Nr   )Ú__version__)Úparse_options_header)Ú
field_infoÚ
isinstancer   ÚFormÚ	multipartrF   Úmultipart.multipartrG   ÚImportErrorr0   ÚerrorÚ!multipart_incorrect_install_errorÚRuntimeErrorÚmultipart_not_installed_error)rD   rH   rF   rG   © rR   úW/var/www/html/CropPilot/venv/lib/python3.10/site-packages/fastapi/dependencies/utils.pyÚcheck_file_fieldR   s"   

þ

þòrT   )Úsecurity_scopesÚ
param_nameÚdependsÚpathrU   c                 C   s   |j sJ ‚t||j || |d�S )N)rW   Ú
dependencyrX   ÚnamerU   )rY   Úget_sub_dependant©rV   rW   rX   rU   rR   rR   rS   Úget_param_sub_dependantg   s   
ûr]   c                 C   s"   t | jƒs	J dƒ‚t| | j|d�S )Nz;A parameter-less dependency must have a callable dependency)rW   rY   rX   )ÚcallablerY   r[   )rW   rX   rR   rR   rS   Úget_parameterless_sub_dependantx   s   ÿþr_   )rZ   rU   rY   .rZ   c           	      C   s|   d }|pg }t | tjƒr| j}| |¡ t |tƒr*g }t |ttfƒr$|}t||d�}t	||||| j
d�}|r<|j |¡ |S )N)Úsecurity_schemeÚscopes)rX   ÚcallrZ   rU   Ú	use_cache)rI   r   ÚSecurityra   Úextendr1   r2   r4   r/   Úget_dependantrc   Úsecurity_requirementsÚappend)	rW   rY   rX   rZ   rU   Úsecurity_requirementÚdependency_scopesÚ
use_scopesÚsub_dependantrR   rR   rS   r[      s,   

ÿûr[   F©Úskip_repeatsÚvisitedÚ	dependantrn   ro   c             
   C   sÚ   |d u rg }|  | j¡ t| j ¡ | j ¡ | j ¡ | j ¡ | j ¡ | j	 ¡ | j
| jd�}| jD ];}|r9|j|v r9q/t|||d�}|j |j¡ |j |j¡ |j |j¡ |j |j¡ |j |j¡ |j	 |j	¡ q/|S )N)Úpath_paramsÚquery_paramsÚheader_paramsÚcookie_paramsÚbody_paramsÚsecurity_schemesrc   rX   rm   )rh   Ú	cache_keyr.   rq   r   rr   rs   rt   ru   rg   rc   rX   ÚdependenciesÚget_flat_dependantre   )rp   rn   ro   Úflat_dependantrl   Úflat_subrR   rR   rS   ry   ¢   s4   ø

ÿry   c                 C   s$   t | dd�}|j|j |j |j S )NT)rn   )ry   rq   rr   rs   rt   )rp   rz   rR   rR   rS   Úget_flat_paramsÅ   s   ÿþýÿr|   rb   c                    s<   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 ))rZ   ÚkindÚdefaultÚ
annotation)ÚinspectÚ	ParameterrZ   r~   r   Úget_typed_annotationr€   ©Ú.0Úparam©ÚglobalnsrR   rS   Ú
<listcomp>Ò   s    ú
üÿz'get_typed_signature.<locals>.<listcomp>)r�   Ú	signatureÚgetattrÚ
parametersÚvaluesÚ	Signature)rb   rŠ   Útyped_paramsÚtyped_signaturerR   r‡   rS   Úget_typed_signatureÏ   s   

ù
	r‘   r€   rˆ   c                 C   s"   t | tƒrt| ƒ} t| ||ƒ} | S ©N)rI   Ústrr
   r   )r€   rˆ   rR   rR   rS   rƒ   ß   s   
rƒ   c                 C   s6   t  | ¡}|j}|t jju rd S t| di ƒ}t||ƒS )Nr}   )r�   rŠ   Úreturn_annotationrŽ   Úemptyr‹   rƒ   )rb   rŠ   r€   rˆ   rR   rR   rS   Úget_typed_return_annotationæ   s   

r–   T)rZ   rU   rc   rc   c                 C   sÞ   t | ƒ}t|ƒ}|j}t||| ||d�}| ¡ D ]T\}	}
|	|v }t|	|
j|
j|d�\}}}|d ur@t|	|| |d�}|j	 
|¡ qt|	||d�rS|d u sRJ d|	›�ƒ‚q|d usYJ ‚t||d�rf|j 
|¡ qt||d� q|S )N)rb   rZ   rX   rU   rc   )rV   r€   ÚvalueÚis_path_paramr\   ©rV   Útype_annotationrp   z0Cannot specify multiple FastAPI annotations for ©Úparam_fieldr˜   )rD   rp   )r6   r‘   rŒ   r.   ÚitemsÚanalyze_paramr€   r   r]   rx   rh   Ú!add_non_field_param_to_dependencyÚis_body_paramru   Úadd_param_to_fields)rX   rb   rZ   rU   rc   Úpath_param_namesÚendpoint_signatureÚsignature_paramsrp   rV   r†   r˜   rš   rW   rœ   rl   rR   rR   rS   rf   ñ   sR   ûüüý
ÿrf   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>   Úrequest_param_namer@   Úwebsocket_param_namer=   Úhttp_connection_param_namer?   Úresponse_param_nameÚStarletteBackgroundTasksÚbackground_tasks_param_namer3   Úsecurity_scopes_param_namer™   rR   rR   rS   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u s]|j
tu 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 sŠJ d| ›�ƒ‚|d u s•J d| ›�ƒ‚|}nt|tƒr¯|d u s¨J d| ›�ƒ‚|}tr¯||_|d ur¿|jd u r¿t|ƒ}||_t|ttttttfƒrá|d u sÕJ d|›�ƒ‚|d u sàJ d|›�ƒ‚nD|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‰|�rCt|tjƒ�sBJ d|jj› d| ›�ƒ‚nt|tj#ƒ�rXt$|dd ƒd u �rXtj%j&|_'t(||| ƒ}|j)�spt$|dd ƒ�rp|  *dd¡}n|j)�pu| }||_)t+| ||j
||j
ttfv |d�}|||fS )Nr   c                 S   s    g | ]}t |ttjfƒr|‘qS rR   )rI   r7   r   ÚDepends©r…   ÚargrR   rR   rS   r‰   N  s    ýÿz!analyze_param.<locals>.<listcomp>é   c                 S   s&   g | ]}t |tjtjtjfƒr|‘qS rR   )rI   r   ÚParamÚBodyr¬   r­   rR   rR   rS   r‰   S  s    ýÿéÿÿÿÿ)rH   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 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Ú_ú-)rZ   Útype_r   ÚaliasÚrequiredrH   ),r   r�   rŽ   r•   rC   rA   rB   rI   r7   r   r   r   r   Ú	__class__Ú__name__r   r¬   r   r€   rY   r   r'   r>   r@   r=   r?   r©   r3   ÚPathr%   r&   ÚFiler   r±   ÚQueryr°   r‹   Ú
ParamTypesÚqueryr´   r   r¹   Úreplacer5   )rV   r€   r—   r˜   rH   rW   rš   Úuse_annotationÚannotated_argsÚfastapi_annotationsÚfastapi_specific_annotationsÚfastapi_annotationÚdefault_valuerD   Úuse_annotation_from_field_infor¹   rR   rR   rS   rž   =  sè   
þþþ
ÿÿÿ
ÿÿ
ÿÿ

ÿÿúþ
ÿÿþ
ÿÿ
ÿ
ýú
	rž   rœ   c                 C   sl   |rt | d�sJ dƒ‚dS t | d�rdS t| jtjtjfƒr$t| ƒr$dS t| jtjƒs4J d| j› d�ƒ‚dS )N)rD   z1Path params must be of one of the supported typesFzParam: z) can only be a request body, using Body()T)	r"   rI   rH   r   r¿   ÚHeaderr#   r±   rZ   r›   rR   rR   rS   r    È  s*   ÿþ
ÿþÿþ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: )rH   r‹   r   rÀ   rX   rq   rh   rÁ   rr   Úheaderrs   ÚcookierZ   rt   )rD   rp   rH   Úfield_info_inrR   rR   rS   r¡   Û  s   
ÿr¡   c                 C   s8   t  | ¡r
t  | ¡S t  | ¡rdS t| dd ƒ}t  |¡S )NFÚ__call__)r�   Ú	isroutineÚiscoroutinefunctionÚisclassr‹   ©rb   Údunder_callrR   rR   rS   Úis_coroutine_callableë  s   



rÔ   c                 C   ó$   t  | ¡rdS t| dd ƒ}t  |¡S ©NTrÎ   )r�   Úisasyncgenfunctionr‹   rÒ   rR   rR   rS   Úis_async_gen_callableô  ó   

rØ   c                 C   rÕ   rÖ   )r�   Úisgeneratorfunctionr‹   rÒ   rR   rR   rS   Úis_gen_callableû  rÙ   rÛ   ÚstackÚ
sub_valuesc                 Ã   sL   �t | ƒrtt| ƒdi |¤Žƒ}nt| ƒrt| ƒdi |¤Ž}| |¡I d H S )NrR   )rÛ   r-   r   rØ   r,   Úenter_async_context)rb   rÜ   rÝ   ÚcmrR   rR   rS   Úsolve_generator  s   €rà   )ÚbodyÚbackground_tasksÚresponseÚdependency_overrides_providerÚdependency_cacheÚrequestrá   râ   rã   rä   rå   Úasync_exit_stackc                 Ã   s  �i }g }	|d u rt ƒ }|jd= d |_|pi }|jD ]´}
ttdtf |
jƒ|
_tttdtf tt	 f |
j
ƒ|
_
|
j}|
}|r\|jr\|
j}t|di ƒ ||¡}|
j}t|||
j|
jd�}t| |||||||d�I d H }|\}}}}}| |¡ |r|	 |¡ q|
jr�|
j
|v r�||
j
 }n-t|ƒs•t|ƒr t|||d�I d H }nt|ƒr¯|d	i |¤ŽI d H }nt|fi |¤Ž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#�r4| ||j#< |j$�rDt%| t&ƒ�rD| ||j$< n|j'�rSt%| t(ƒ�rS| ||j'< |j)�rd|d u �r_t*ƒ }|||j)< |j+�rm|||j+< |j,�rzt-|jd�||j,< ||	|||fS )
Nzcontent-length.Údependency_overrides)rX   rb   rZ   rU   )ræ   rp   rá   râ   rã   rä   rå   rç   )rb   rÜ   rÝ   )Úrequired_paramsÚreceived_body)ra   rR   ).r?   ÚheadersÚstatus_coderx   r   r   r   rb   r   r“   rw   rè   r‹   ÚgetrX   rf   rZ   rU   Úsolve_dependenciesÚupdatere   rc   rÛ   rØ   rà   rÔ   r8   Úrequest_params_to_argsrq   rr   rs   rt   Úcookiesru   Úrequest_body_to_argsr§   r¥   rI   r>   r¦   r@   rª   r+   r¨   r«   r3   )ræ   rp   rá   râ   rã   rä   rå   rç   r�   Úerrorsrl   rb   Úuse_sub_dependantÚoriginal_callÚuse_pathÚsolved_resultrÝ   Ú
sub_errorsr¶   Úsub_dependency_cacheÚsolvedÚpath_valuesÚpath_errorsÚquery_valuesÚquery_errorsÚheader_valuesÚheader_errorsÚcookie_valuesÚcookie_errorsÚbody_valuesÚbody_errorsrR   rR   rS   rî     sÜ   €
ÿÿþÿþüøú

ÿ



€ÿÿÿÿ




ÿý






ÿrî   ré   Úreceived_paramsc                 C   s   i }g }| D ]u}t |ƒrt|ttfƒr| |j¡p|j}n| |j¡}|j}t|t	j
ƒs0J dƒ‚|jj|jf}|d u rP|jrG| t|d�¡ nt|jƒ||j< q|j|||d�\}}	t|	tƒre| |	¡ qt|	tƒrvt|	dd�}
| |
¡ q|||j< q||fS )Nz"Params must be subclasses of Param©ÚlocrR   )ró   Ú
loc_prefix)r#   rI   r;   r:   Úgetlistr¹   r   rí   rH   r   r°   r´   r—   rº   rh   r   r   rZ   Úvalidater   Úlistr   re   )ré   r  r�   ró   rD   r—   rH   r  Úv_Úerrors_Ú
new_errorsrR   rR   rS   rð   Œ  s8   
ÿÿþ

rð   rê   c              
   ƒ   sf  �i }g }| �r/| d }|j }t|dd ƒ}t| ƒdko| }|r%|j|i}| D �]}|r/d}nd|jf}d }	|d urct|ƒrJt|tƒrJ| |j¡}	nz| |j¡}	W n t	yb   | 
t|ƒ¡ Y q'w |	d u s�t|tjƒrq|	dks�t|tjƒr•t|ƒr•t|	ƒdkr•|jrŒ| 
t|ƒ¡ nt|jƒ||j< q't|tjƒr¬t|ƒr¬t|	tƒr¬|	 ¡ I d H }	n^t|ƒ�r
t|tjƒ�r
t|	ƒ�r
t|	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 sÿw   Y  t|ˆ d�}	|j |	||d�\}}t|t!ƒ�r | "|¡ q'|�r)| 
|¡ q'|||j< q'||fS )Nr   Úembedr¯   )rá   rá   Ú ÚfnrE   c                 “   s   �| ƒ I d H }ˆ   |¡ d S r’   )rh   )r  Úresult©ÚresultsrR   rS   Ú
process_fnë  s   €z(request_body_to_args.<locals>.process_fn)rD   r—   r  )#rH   r‹   Úlenr¹   r$   rI   r9   r	  rí   ÚAttributeErrorrh   r   r   rJ   rº   r   r   rZ   r¾   r    r<   Úreadr!   r*   r(   r   r   r   ÚanyioÚcreate_task_groupÚ
start_soonr)   r
  r  re   )ré   rê   r�   ró   rD   rH   r  Úfield_alias_omittedr  r—   r  ÚtgÚ	sub_valuer  r  rR   r  rS   rò   ¯  sŒ   €


þ
ÿ
þý
ÿþýÿ
þýÿþÿ(ÿrò   c              	   C   sF  t | ƒ}|js	d S |jd }|j}t|dd ƒ}dd„ |jD ƒ}t|ƒdkr-|s-t|ƒ |S |jD ]	}t|jddƒ q0d| }t|j|d�}	td	d
„ |jD ƒƒ}
|	ddœ}|
sZd |d< tdd
„ |jD ƒƒrht	j
}n'tdd
„ |jD ƒƒrvt	j}nt	j}dd„ |jD ƒ}tt|ƒƒdkr�|d |d< td|	|
d|di |¤Žd�}t|ƒ |S )Nr   r  c                 S   s   h | ]}|j ’qS rR   )rZ   r„   rR   rR   rS   Ú	<setcomp>  s    z!get_body_field.<locals>.<setcomp>r¯   TÚBody_)ÚfieldsÚ
model_namec                 s   s   � | ]}|j rd V  qdS )TN)rº   ©r…   ÚfrR   rR   rS   Ú	<genexpr>  s   € z!get_body_field.<locals>.<genexpr>rá   )r€   r¹   r   c                 s   ó   � | ]
}t |jtjƒV  qd S r’   )rI   rH   r   r¾   r#  rR   rR   rS   r%    ó   € c                 s   r&  r’   )rI   rH   r   rJ   r#  rR   rR   rS   r%    r'  c                 S   s"   g | ]}t |jtjƒr|jj‘qS rR   )rI   rH   r   r±   Ú
media_typer#  rR   rR   rS   r‰   #  s    ýÿz"get_body_field.<locals>.<listcomp>r(  )rZ   r¸   rº   r¹   rH   rR   )ry   ru   rH   r‹   r  rT   Úsetattrr   Úanyr   r¾   rJ   r±   Úsetr5   )rp   rZ   rz   Úfirst_paramrH   r  Úbody_param_names_setr†   r"  Ú	BodyModelrº   ÚBodyFieldInfo_kwargsÚBodyFieldInfoÚbody_param_media_typesÚfinal_fieldrR   rR   rS   Úget_body_field  sR   

ÿþþûr3  )vr�   Ú
contextlibr   r   r   r   Útypingr   r   r   r	   r
   r   r   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*   Úfastapi.backgroundr+   Úfastapi.concurrencyr,   r-   Úfastapi.dependencies.modelsr.   r/   Úfastapi.loggerr0   Úfastapi.security.baser1   Úfastapi.security.oauth2r2   r3   Ú$fastapi.security.open_id_connect_urlr4   Úfastapi.utilsr5   r6   Úpydantic.fieldsr7   Ústarlette.backgroundr©   Ústarlette.concurrencyr8   Ústarlette.datastructuresr9   r:   r;   r<   Ústarlette.requestsr=   r>   Ústarlette.responsesr?   Ústarlette.websocketsr@   Útyping_extensionsrA   rB   rC   rQ   rO   rT   r“   r¬   r]   r_   r[   ÚCacheKeyÚboolry   r|   rŽ   r‘   rƒ   r–   rf   rŸ   rž   r    r¡   rÔ   rØ   rÛ   rà   rî   rð   rò   r3  rR   rR   rR   rS   Ú<module>   sT   <dÿÿ
ûþýü
û
úúþ
ýüû
ú
ù  üÿý
ü
û#
úþ
ýü
ûú
ù4ÿÿÿ
þþýüû
ú 	
ÿÿ
ÿ
þø
þýüûúù"ø	÷

üÿ
ö ÿþ
ý#ÿþ
ýR