o
    biR                     @   s   d dl Z d dlZd dlmZ d dl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 d dlmZ ejd	krDd d
l mZ nd d
lmZ dedef dB 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)Callable)	dataclassfield)cached_propertypartial)AnyLiteral)
ModelField)SecurityBase)DependencyCacheKey)      )iscoroutinefunctioncall.returnc                 C   s   | d u r| S t t| }|S N)inspectunwrap
_impartial)r   	unwrapped r   ]/sda-disk/www/egybert/egybert_env/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                   @   s2  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dB ed	< dZed
ef dB ed< dZedB ed< dZedB ed< dZedB ed< dZedB ed< dZedB ed< dZedB ed< dZee dB ed< dZee dB ed< dZeed< dZedB ed< dZed dB 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dB 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scopesr0   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setr5   r   computed_scope)r3   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"   r7   )r3   sub_depr   r   r   r7   I   s   

zDependant._uses_scopesc                 C   s"   | j d u rdS t| j }t|tS )NF)r   r   r   r
   r3   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
   r@   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"   )r3   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r3   dunder_calldunder_unwrapped_callr   r   r   is_gen_callablei   :   
zDependant.is_gen_callablec                 C   rG   rH   )r   r   isasyncgenfunctionr   r   rK   rL   rM   r   r   r   is_async_gen_callable   rQ   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 rH   )r   r   	isroutiner   r   r   rK   rL   rM   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 )Nr/   )r0   rP   rS   )r3   r   r   r   r;      s
   zDependant.computed_scope),__name__
__module____qualname__r   listr   r	   __annotations__r   r   r    r!   r"   r#   strr   r   r   r$   r%   r&   r'   r(   r)   r*   r+   r,   boolr-   r0   r   r   r5   r   r=   r7   r>   r
   rA   rF   rP   rS   rU   r;   r   r   r   r   r      sP   
 
r   )r   syscollections.abcr   dataclassesr   r   	functoolsr   r   typingr   r   fastapi._compatr	   fastapi.security.baser
   fastapi.typesr   version_infor   asyncior   r   r   r   r   r   r   <module>   s     
"