o
    iiʚ                     @   s  d dl Z d dlZd dlZd dlmZmZmZmZmZm	Z	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m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/m0Z0m1Z1m2Z2 d d	l3m4Z4 d d
l5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z; d dl<m=Z= d dl>m?Z? d dl@mAZA d dlBmCZCmDZD d dlEmFZFmGZG d dlHmIZI d d	lJm4ZK d dlLmMZM d dlNmOZOmPZPmQZQmRZRmSZS d dlTmUZUmVZV d dlWmXZX d dlYmZZZ d dl[m\Z\ dZ]dZ^dddZ_dej`deade9fd d!Zbd"ddd#d$e9d%ecd&edeA dB d'edea dB de9f
d(d)Zed*ede dede fd+d,Zfd$e9dede fd-d.Zgd/ed0ef dejhfd1d2Zid/ed0ef dejhfd3d4Zjd5ed6ekeaef defd7d8Zld/ed0ef defd9d:Zmeeee	e
ehZnd5ededB fd;d<Zodddd=dd>dead/ed0ef d?eadB d@edea dB d'edea dB dAecdBedC dB de9fdDdEZpdFeadGed$e9decdB fdHdIZqeG dJdK dKZrdFead5edLedMecderf
dNdOZsdPed$e9ddfdQdRZtd$e9dSedTekeaef defdUdVZueG dWdX dXZvddddddYdZeVeZB d$e9d[ekeaef eOB ewB dB d\eKdB d]eXdB d^edB d_ekeAef dB d`edaecdevfdbdcZxdPedLeddekeaef deeyead0f deyeede f f
dfdgZzdPedecfdhdiZ{	ddPeddeeaef djeadB defdkdlZ|d*ee dmeeaef eRB ePB deyekeaef ede f fdndoZ}dpedecfdqdrZ~d*ede decfdsdtZduede dveOdekeaef fdwdxZduede dvekeaef eOB ewB dB daecdeyekeaef edekeaef  f fdydzZd{e9d?eadaecdedB fd|d}ZdPedeafd~dZdS )    N)	AsyncGeneratorAsyncIterableAsyncIteratorCallable	GeneratorIterableIteratorMappingSequence)AsyncExitStackcontextmanager)copydeepcopy)	dataclass)	AnnotatedAny
ForwardRefLiteralUnioncastget_args
get_origin)params)
ModelFieldRequiredParam	Undefinedcopy_field_infocreate_body_modelevaluate_forwardreffield_annotation_is_scalar#field_annotation_is_scalar_sequencefield_annotation_is_sequenceget_cached_model_fieldsget_missing_field_error$is_bytes_or_nonable_bytes_annotationis_bytes_sequence_annotationis_scalar_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Json)	FieldInfo)run_in_threadpool)FormDataHeadersImmutableMultiDictQueryParams
UploadFile)HTTPConnectionRequest)Response)	WebSocket)is_typealiastypezForm 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_multipartrF   ImportErrorAssertionError	multipartmultipart.multipartrG   r2   error!multipart_incorrect_install_errorRuntimeErrormultipart_not_installed_error)rF   rG    rQ   b/var/www/scraper.webshop2u.hu/html/venv/lib/python3.10/site-packages/fastapi/dependencies/utils.pyensure_multipart_is_installed^   s(   



rS   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)rU   callscopeown_oauth_scopes)	callable
dependency
isinstancer   Securityscopesextendget_dependantrW   )rT   rU   rX   rQ   rQ   rR   get_parameterless_sub_dependant{   s   r`   Fskip_repeatsvisitedparent_oauth_scopes	dependantrb   rc   rd   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namerV   request_param_namewebsocket_param_namehttp_connection_param_nameresponse_param_namebackground_tasks_param_namesecurity_scopes_param_namerX   rd   	use_cacherU   rW   ra   rQ   )append	cache_keyoauth_scopesr0   rf   r   rg   rh   ri   rj   rk   rV   rl   rm   rn   ro   rp   rq   rX   rr   rU   rW   dependenciesget_flat_dependantr^   )re   rb   rc   rd   use_parent_oauth_scopesflat_dependantsub_dependantflat_subrQ   rQ   rR   rw      sx   




	

rw   fieldsc                 C   s>   | s| S | d }t | dkrt|jjtrt|jj}|S | S )Nr      )lenr)   
field_info
annotationr7   r"   )r|   first_fieldfields_to_extractrQ   rQ   rR   _get_flat_fields_from_params   s   r   c                 C   sD   t | dd}t|j}t|j}t|j}t|j}|| | | S )NT)rb   )rw   r   rf   rg   rh   ri   )re   ry   rf   rg   rh   ri   rQ   rQ   rR   get_flat_params   s   



r   rV   .c                 C   s`   z
t j| dd}W |S  ty/   tjdkr'ddlm} t j| |jd}Y |S t | }Y |S w )NT)eval_str)      r   )Format)annotation_format)inspect	signature	NameErrorsysversion_infoannotationlibr   
FORWARDREF)rV   r   r   rQ   rQ   rR   _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 ))rk   kinddefaultr   )r   	Parameterrk   r   r   get_typed_annotationr   ).0paramglobalnsrQ   rR   
<listcomp>   s    
z'get_typed_signature.<locals>.<listcomp>)r   r   unwrapgetattr
parametersvalues	Signature)rV   r   	unwrappedtyped_paramstyped_signaturerQ   r   rR   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   rQ   rQ   rR   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   )rV   r   r   r   r   rQ   rQ   rR   get_typed_return_annotation   s   

r   c                 C   s4   t | }|d ur|tv rt| }|r|d S tS d S )Nr   )r   _STREAM_ORIGINSr   r   )r   origin	type_argsrQ   rQ   rR   get_stream_item_type  s   r   T)rk   rX   rd   rr   rW   rk   rX   rr   rW   )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rd|jdkrd|jjdkrd|jsUJ t|jdd}td| dg }t|jtjrw|jjrwt|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)rV   rk   rU   rr   rW   rX   rd   )
param_namer   valueis_path_paramr   r   __name__z<unnamed_callable>zThe dependency "zS" has a scope of "request", it cannot depend on dependencies with scope "function".)rU   rV   rk   rX   rd   rr   rW   r   type_annotationre   z0Cannot specify multiple FastAPI annotations for )fieldre   )!r0   r6   r   r   itemsanalyze_paramr   r   rT   rZ   is_gen_callableis_async_gen_callablecomputed_scoperW   rV   r   r1   r[   r   r\   r]   listr_   rr   rv   rs   !add_non_field_param_to_dependencyr   r   r   Bodyrj   add_param_to_fields)rU   rV   rk   rX   rd   rr   rW   re   current_scopespath_param_namesendpoint_signaturesignature_paramsr   r   r   param_details	call_namesub_own_oauth_scopesrz   rQ   rQ   rR   r_     s~   
	



	r_   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)   rA   rl   rC   rm   r@   rn   rB   ro   StarletteBackgroundTasksrp   r3   rq   r   rQ   rQ   rR   r   j  s&   





r   c                   @   s0   e Zd ZU eed< ejdB ed< edB ed< dS )ParamDetailsr   NrT   r   )r   
__module____qualname__r   __annotations__r   Dependsr   rQ   rQ   rQ   rR   r     s   
 r   r   r   c                 C   s  d }d }t }t }t|r|j}|tjjur|}|}t|tu rt|}|d }dd |dd  D }	dd |	D }
|
r@|
d }nd }t	|t
rxt||d}|jtksd|jtksdJ d|jj d	| d
|tjjurt|rpJ d||_nt|_nt	|tjr|}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}|d u rt|ttttttfr|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||d}|rt/|dsJ dn#t	|tj%rt/|st0|j1jst|j1jt2sJ d| dt3|||dS )Nr   c                 S   s    g | ]}t |ttjfr|qS rQ   )r[   r9   r   r   r   argrQ   rQ   rR   r     s    z!analyze_param.<locals>.<listcomp>r}   c                 S   s&   g | ]}t |tjtjtjfr|qS rQ   )r[   r   Paramr   r   r   rQ   rQ   rR   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 )rZ   z+Cannot specify FastAPI annotation for type )r   )r   r   zCannot use `z` for path param in_convert_underscores_-)rk   type_r   aliasr   r   z1Path params must be of one of the supported typeszQuery parameter z# must be one of the supported types)r   rT   r   )4r   rD   	__value__r   r   r   r   r   r   r[   r9   r   r   r   r   	__class__r   r   r   r   rZ   r   dataclassesreplacer)   rA   rC   r@   rB   r   r3   Pathr'   r(   Filer   r   Queryr   r   
ParamTypesqueryr   FormrS   r   r5   r&   r    r   r7   r   )r   r   r   r   r   rT   r   use_annotationannotated_argsfastapi_annotationsfastapi_specific_annotationsfastapi_annotationdefault_valuer   use_annotation_from_field_infor   rQ   rQ   rR   r     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   rU   rf   rs   r   rg   headerrh   cookierk   ri   )r   re   r   field_info_inrQ   rQ   rR   r   2  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 )NrQ   )rV   r   r.   r   r/   r   enter_async_context)re   r   r   cmrQ   rQ   rR   _solve_generatorB  s   
r   c                   @   sN   e Zd ZU eeef ed< ee ed< edB ed< e	ed< ee
ef ed< dS )SolvedDependencyr   errorsNbackground_tasksresponsedependency_cache)r   r   r   dictr   r   r   r   r   rB   r4   rQ   rQ   rQ   rR   r   M  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)rU   rV   rk   rd   rW   )	r   re   r   r   r   r   r   r   r   r   )re   r   r   )body_fieldsreceived_bodyr   )r]   )r   r   r   r   r   rQ   )2rW   getr[   r   rB   headersstatus_coderv   r   r   r   rV   r   r   rU   r_   rk   ru   solve_dependenciesr   r   r^   rr   rt   r   r   r   r   is_coroutine_callabler:   request_params_to_argsrf   rg   rh   ri   cookiesupdaterj   request_body_to_argsrn   rl   rA   rm   rC   rp   r-   ro   rq   r3   r   )r   re   r   r   r   r   r   r   r   request_astackfunction_astackr   r   rz   rV   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_errorsrQ   rQ   rR   r  V  s   

















r  r   locc                 C   s@   |d u r| j  rd t|dgfS t| jg fS | j|||dS )N)r  )r   is_requiredr#   r   r   validater   r   r   r  rQ   rQ   rR    _validate_value_with_model_field  s
   
r!  c                 C   s   t dd | jjD S )Nc                 s   s    | ]	}t |tu V  qd S r   )r   r8   )r   itemrQ   rQ   rR   	<genexpr>  s    z!_is_json_field.<locals>.<genexpr>)anyr   metadatar   rQ   rQ   rR   _is_json_field  s   r&  r   c                 C   s   |pt | }t| st| jjrt|ttfr||}n|	|d }|d u sCt| jt
jr7t|tr7|dksCt| jjrOt|dkrO| j rJd S t| jS |S )N r   )get_validation_aliasr&  r!   r   r   r[   r=   r<   getlistr  r   r   r   r~   r  r   r   )r   r   r   r   rQ   rQ   rR   _get_multidict_value  s,   



r*  received_paramsc                 C   s  i }g }| s
||fS | d }| }d}d}t | dkr0t|jjtr0t|jj}d}t|jdd}i }t }	|D ];}
d }t|t	rXt|
jd|}|rXt
|
}||
jkrX|dd}t|
||d}|d uri||t
|
< |	|ppt
|
 q7| D ]0}||	vrt|tt	fr||}t|trt |dkr|d ||< qw|||< qw||||< qw|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   FTr}   r   r   r   )r   z"Params must be subclasses of Paramr   )r~   r)   r   r   r7   r"   r   setr[   r<   r(  rk   r   r*  addkeysr=   r)  r   r  r   r   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  v_errors_rQ   rQ   rR   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.typesr7  r   r   r   r)   r7   )r6  r7  r   
union_argsr   rQ   rQ   rR   is_union_of_base_modelse  s   
r:  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r6t|jjts6t	|jjs6dS dS )NFc                 S   s   h | ]}|j qS rQ   )rk   r   r   rQ   rQ   rR   	<setcomp>}  s    z,_should_embed_body_fields.<locals>.<setcomp>r}   Tr   embed)
r~   r   r   r[   r   r   r)   r   r7   r:  )r|   body_param_names_setr   rQ   rQ   rR   _should_embed_body_fieldsx  s    
r?  r   r  c                    s  i }| D ][}t ||}|j}t|tjr(t|jjr(t|tr(| I d H }n.t	|jjrVt|tjrVt
|rVt|ts?J g }|D ]}|| I d H  qCt||d}|d ur`||t|< qdd | D }| D ]}	|	|vr||	}
t|
dkr|
d ||	< ql|
||	< ql|S )N)r   r   c                 S   s   h | ]}t |qS rQ   )r(  r;  rQ   rQ   rR   r<    s    z%_extract_form_body.<locals>.<setcomp>r}   r   )r*  r   r[   r   r   r$   r   r?   readr%   r,   r*   rs   r+   r(  r.  r)  r~   )r   r  r   r   r   r   results	sub_valuefield_aliasesr3  param_valuesrQ   rQ   rR   _extract_form_body  sF   





rE  c              	      s:  i }g }| sJ dt | dko| }| d }|}| }|r0t|jjtr0t|tr0t|jj}t|tr=t||I d H }|rRd}	t	||||	d\}
}|j
|
i|fS | D ]D}dt|f}	d }|d urt|tsz	|t|}W n ty   |t|	 Y qTw t	||||	d\}
}|r|| qT|
||j
< qT||fS )Nz3request_body_to_args() should be called with fieldsr}   r   )r   r   r   )r~   r)   r   r   r7   r[   r;   r"   rE  r!  rk   r(  bytesr  AttributeErrorrs   r#   r^   )r   r  r   r   r   r/  r   body_to_processr   r  r4  r5  r   r   rQ   rQ   rR   r
    sP   


r
  ry   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_)r|   
model_namec                 s   s    | ]
}|j  rd V  qdS )TN)r   r  r   frQ   rQ   rR   r#    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   rK  rQ   rQ   rR   r#        c                 s   rM  r   )r[   r   r   r   rK  rQ   rQ   rR   r#  
  rN  c                 S   s"   g | ]}t |jtjr|jjqS rQ   )r[   r   r   r   
media_typerK  rQ   rQ   rR   r     s    z"get_body_field.<locals>.<listcomp>r}   rO  )rk   r   r   r   rQ   )
rj   r   r$  r   r   r   r   r~   r,  r5   )ry   rk   r   first_paramrJ  	BodyModelrequiredBodyFieldInfo_kwargsBodyFieldInfobody_param_media_typesfinal_fieldrQ   rQ   rR   get_body_field  sD   
rW  c                 C   s   t | dd }|p
| jS )Nvalidation_alias)r   r   )r   varQ   rQ   rR   r(    s   
r(  )rE   Nr   )r   r   r   collections.abcr   r   r   r   r   r   r   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,   fastapi.backgroundr-   fastapi.concurrencyr.   r/   fastapi.dependencies.modelsr0   fastapi.exceptionsr1   fastapi.loggerr2   fastapi.security.oauth2r3   r8  r4   fastapi.utilsr5   r6   pydanticr7   r8   pydantic.fieldsr9   starlette.backgroundr   starlette.concurrencyr:   starlette.datastructuresr;   r<   r=   r>   r?   starlette.requestsr@   rA   starlette.responsesrB   starlette.websocketsrC    typing_inspection.typing_objectsrD   rP   rN   rS   r   r   r`   boolr   rw   r   r   r   r   r   r   r   r   r   r   r_   r   r   r   r   r   r   rF  r  tupler!  r&  r*  r  r:  r?  rE  r
  rW  r(  rQ   rQ   rQ   rR   <module>   s   ,(X




6		




	
L

 *


 





U

'
2
6