o
    LDi                     @   s   d dl Z 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 d dlmZ d dlmZ d dlmZ d dlmZ ejd	krHd d
l mZ nd d
lmZ dee
de	f  de	fddZde
de	f de
de	f fddZeG dd dZdS )    N)	dataclassfield)cached_propertypartial)AnyCallableOptionalUnion)
ModelField)SecurityBase)DependencyCacheKey)Literal)      )iscoroutinefunctioncall.returnc                 C   s   | d u r| S t t| }|S N)inspectunwrap
_impartial)r   	unwrapped r   g/var/www/www-root/data/www/77.83.87.30/venv/lib/python3.10/site-packages/fastapi/dependencies/models.py_unwrapped_call   s   r   funcc                 C   s   t | tr| j} t | ts| S r   )
isinstancer   r   )r   r   r   r   r      s   

r   c                   @   s:  e Zd ZU eedZee ed< eedZee ed< eedZ	ee ed< eedZ
ee ed< eedZee ed< eedZed  ed< dZee ed	< dZeed
ef  ed< dZee ed< dZee ed< dZee ed< dZee ed< dZee ed< dZee ed< dZeee  ed< dZeee  ed< dZeed< dZee ed< dZee d df ed< e!dee 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&e!de'fd"d#Z(e!ded  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,e!deedf fd,d-Z-dS ).	Dependant)default_factorypath_paramsquery_paramsheader_paramscookie_paramsbody_paramsdependenciesNname.r   request_param_namewebsocket_param_namehttp_connection_param_nameresponse_param_namebackground_tasks_param_namesecurity_scopes_param_nameown_oauth_scopesparent_oauth_scopesT	use_cachepath)functionrequestscoper   c                 C   s:   | j r| j  ng }| jpg D ]}||vr|| q|S r   )r-   copyr,   append)selfscopesr2   r   r   r   oauth_scopes5   s   
zDependant.oauth_scopesc                 C   s2   | j rttt| jp
g nd}| j|| jpdfS )Nr    )_uses_scopestuplesortedsetr7   r   computed_scope)r5   scopes_for_cacher   r   r   	cache_key>   s   zDependant.cache_keyc                 C   s>   | j rdS | jd urdS | jrdS | jD ]}|jr dS qdS )NTF)r,   r+   _is_security_schemer$   r9   )r5   sub_depr   r   r   r9   I   s   

zDependant._uses_scopesc                 C   s"   | j d u rdS t| j }t|tS )NF)r   r   r   r   r5   r   r   r   r   r@   V   s   


zDependant._is_security_schemec                 C   s   t | j}t|tsJ |S r   )r   r   r   r   rB   r   r   r   _security_scheme^   s   
zDependant._security_schemec                 C   s   dd | j D }|S )Nc                 S   s   g | ]}|j r|qS r   )r@   ).0depr   r   r   
<listcomp>f   s    z4Dependant._security_dependencies.<locals>.<listcomp>)r$   )r5   security_depsr   r   r   _security_dependenciesd   s   z Dependant._security_dependenciesc                 C      | j d u rdS tt| j stt| j rdS tt| j r#dS tt| j dd }|d u r2dS tt|s@tt|rBdS tt| j dd }|d u rQdS tt|s_tt|radS dS NFT__call__)r   r   isgeneratorfunctionr   r   isclassgetattrr5   dunder_calldunder_unwrapped_callr   r   r   is_gen_callablei   :   
zDependant.is_gen_callablec                 C   rI   rJ   )r   r   isasyncgenfunctionr   r   rM   rN   rO   r   r   r   is_async_gen_callable   rS   zDependant.is_async_gen_callablec                 C   s   | j d u rdS tt| j rtt| j rdS tt| j r)tt| j r)dS tt| j r3dS tt| j dd }|d u rBdS tt|sNtt|rPdS tt| j dd }|d u r_dS tt|sktt|rmdS dS rJ   )r   r   	isroutiner   r   r   rM   rN   rO   r   r   r   is_coroutine_callable   s:   

zDependant.is_coroutine_callablec                 C   s    | j r| j S | js| jrdS d S )Nr1   )r2   rR   rU   )r5   r   r   r   r=      s
   zDependant.computed_scope).__name__
__module____qualname__r   listr   r
   __annotations__r    r!   r"   r#   r$   r%   r   strr   r   r   r&   r'   r(   r)   r*   r+   r,   r-   r.   boolr/   r2   r	   r   r   r7   r   r?   r9   r@   r   rC   rH   rR   rU   rW   r=   r   r   r   r   r      sP   
 
r   )r   sysdataclassesr   r   	functoolsr   r   typingr   r   r   r	   fastapi._compatr
   fastapi.security.baser   fastapi.typesr   typing_extensionsr   version_infor   asyncior   r   r   r   r   r   r   <module>   s     
"