o
    i                     @  s  d dl mZ 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 d dlmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ e	dZd)ddZ		d*d+ddZG dd deZG dd  d ZG d!d" d"ZG d#d$ d$ZG d%d& d&eZG d'd( d(eZ dS ),    )annotationsN)CallableSequence)Any	ParamSpec)	urlencode)is_async_callable)HTTPException)HTTPConnectionRequest)RedirectResponse)	WebSocket_Pconnr
   scopesSequence[str]returnboolc                 C  s    |D ]}|| j jvr dS qdS )NFT)authr   )r   r   Zscope r   k/home/www/bk.finsightngr.online/finsigh_v2/venv200/lib/python3.10/site-packages/starlette/authentication.pyhas_required_scope   s
   r     str | Sequence[str]status_codeintredirect
str | None0Callable[[Callable[_P, Any]], Callable[_P, Any]]c                   s.   t | tr| gnt| d fdd}|S )NfuncCallable[_P, Any]r   c                   s   t  }t|j D ]\}|jdks|jdkr|j} q(qtd  d|dkr<t d fdd}|S t	 rRt d fdd}|S t d fdd}|S )Nrequest	websocketz2No "request" or "websocket" argument on function ""args_P.argskwargs	_P.kwargsr   Nonec                    sd   | dt| k r|  nd }t|tsJ t|s&| I d H  d S  | i |I d H  d S )Nr"   )getlen
isinstancer   r   close)r$   r&   r"   )r   idxscopes_listr   r   websocket_wrapper-   s    
z6requires.<locals>.decorator.<locals>.websocket_wrapperr   c                    s   | dt| k r|  nd }t|tsJ t|s?d ur:tdt|ji}| d| }t	|ddS t
d | i |I d H S Nr!   next?i/  )urlr   )r   r)   r*   r+   r   r   r   strr3   Zurl_forr   r	   r$   r&   r!   Zorig_request_qparamZnext_urlr   r-   r   r.   r   r   r   async_wrapper;   s    

z2requires.<locals>.decorator.<locals>.async_wrapperc                    s   | dt| k r|  nd }t|tsJ t|s>d ur9tdt|ji}| d| }t	|ddS t
d | i |S r0   r4   r6   r7   r   r   sync_wrapperL   s    

z1requires.<locals>.decorator.<locals>.sync_wrapper)r$   r%   r&   r'   r   r(   )r$   r%   r&   r'   r   r   )
inspect	signature	enumerate
parametersvaluesname	Exception	functoolswrapsr   )r   sigZ	parametertype_r/   r8   r9   r   r.   r   )r   r-   r   	decorator    s$   
	zrequires.<locals>.decorator)r   r    r   r    )r+   r5   list)r   r   r   rF   r   rE   r   requires   s   ;rH   c                   @  s   e Zd ZdS )AuthenticationErrorN)__name__
__module____qualname__r   r   r   r   rI   ^   s    rI   c                   @  s   e Zd ZdddZdS )	AuthenticationBackendr   r
   r   'tuple[AuthCredentials, BaseUser] | Nonec                   s   t  NNotImplementedError)selfr   r   r   r   authenticatec   s   z"AuthenticationBackend.authenticateN)r   r
   r   rN   )rJ   rK   rL   rS   r   r   r   r   rM   b   s    rM   c                   @  s   e Zd ZddddZdS )AuthCredentialsNr   Sequence[str] | Nonec                 C  s    |d u r	g | _d S t || _d S rO   )rG   r   )rR   r   r   r   r   __init__h   s    zAuthCredentials.__init__rO   )r   rU   )rJ   rK   rL   rV   r   r   r   r   rT   g   s    rT   c                   @  s6   e Zd ZedddZedddZeddd	Zd
S )BaseUserr   r   c                 C     t  rO   rP   rR   r   r   r   is_authenticatedm      zBaseUser.is_authenticatedr5   c                 C  rX   rO   rP   rY   r   r   r   display_nameq   r[   zBaseUser.display_namec                 C  rX   rO   rP   rY   r   r   r   identityu   r[   zBaseUser.identityNr   r   r   r5   )rJ   rK   rL   propertyrZ   r\   r]   r   r   r   r   rW   l   s    rW   c                   @  s2   e Zd ZdddZeddd	Zedd
dZdS )
SimpleUserusernamer5   r   r(   c                 C  s
   || _ d S rO   rb   )rR   rb   r   r   r   rV   {   s   
zSimpleUser.__init__r   c                 C     dS )NTr   rY   r   r   r   rZ   ~      zSimpleUser.is_authenticatedc                 C  s   | j S rO   rc   rY   r   r   r   r\      r[   zSimpleUser.display_nameN)rb   r5   r   r(   r^   r_   )rJ   rK   rL   rV   r`   rZ   r\   r   r   r   r   ra   z   s    
ra   c                   @  s(   e Zd Zed	ddZed
ddZdS )UnauthenticatedUserr   r   c                 C  rd   )NFr   rY   r   r   r   rZ      re   z$UnauthenticatedUser.is_authenticatedr5   c                 C  rd   )N r   rY   r   r   r   r\      re   z UnauthenticatedUser.display_nameNr^   r_   )rJ   rK   rL   r`   rZ   r\   r   r   r   r   rf      s
    rf   )r   r
   r   r   r   r   )r   N)r   r   r   r   r   r   r   r   )!
__future__r   rA   r:   collections.abcr   r   typingr   r   urllib.parser   Zstarlette._utilsr   Zstarlette.exceptionsr	   Zstarlette.requestsr
   r   Zstarlette.responsesr   Zstarlette.websocketsr   r   r   rH   r@   rI   rM   rT   rW   ra   rf   r   r   r   r   <module>   s,    
	E