a
    h*                     @  s>  d dl mZ d dlZ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 ejdkrdd dlmZ n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dddZd(ddd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)Sequence)AnyCallable)	urlencode)   
   )	ParamSpec)is_async_callable)HTTPException)HTTPConnectionRequest)RedirectResponse)	WebSocket_Pr   zSequence[str]bool)connscopesreturnc                 C  s    |D ]}|| j jvr dS qdS )NFT)authr   )r   r   Zscope r   T/var/www/html/assistant/venv/lib/python3.9/site-packages/starlette/authentication.pyhas_required_scope   s    r     zstr | Sequence[str]intz
str | Nonez0Callable[[Callable[_P, Any]], Callable[_P, Any]])r   status_coderedirectr   c                   s4   t | tr| gnt| ddd fdd}|S )NzCallable[_P, Any])funcr   c                   s   t  }t|j D ]&\}|jdks4|jdkr|j} qPqtd  d|dkrt dddd fd	d
}|S t	 rt dddd fdd}|S t dddd fdd}|S d S )Nrequest	websocketz2No "request" or "websocket" argument on function ""z_P.argsz	_P.kwargsNone)argskwargsr   c                    s`   | dt| k r|  nd }t|ts.J t|sH| I d H  n | i |I d H  d S )Nr   )getlen
isinstancer   r   close)r"   r#   r   )r   idxscopes_listr   r   websocket_wrapper3   s
     
z6requires.<locals>.decorator.<locals>.websocket_wrapperr   c                    s   | dt| k r|  nd }t|ts.J t|s|d urrt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   strr.   Zurl_forr   r   r"   r#   r   Zorig_request_qparamZnext_urlr   r(   r   r)   r   r   r   async_wrapperA   s     

z2requires.<locals>.decorator.<locals>.async_wrapperc                    s   | dt| k r|  nd }t|ts.J t|s|d urrtdt|ji}| d| }t	|ddS t
d | i |S r+   r/   r1   r2   r   r   sync_wrapperR   s     

z1requires.<locals>.decorator.<locals>.sync_wrapper)
inspect	signature	enumerate
parametersvaluesname	Exception	functoolswrapsr
   )r   sigZ	parametertype_r*   r3   r4   r   r)   r   )r   r(   r   	decorator&   s"    
	  zrequires.<locals>.decorator)r&   r0   list)r   r   r   rA   r   r@   r   requires   s    ;rC   c                   @  s   e Zd ZdS )AuthenticationErrorN)__name__
__module____qualname__r   r   r   r   rD   d   s   rD   c                   @  s   e Zd ZdddddZdS )AuthenticationBackendr   z'tuple[AuthCredentials, BaseUser] | None)r   r   c                   s
   t  d S NNotImplementedError)selfr   r   r   r   authenticatei   s    z"AuthenticationBackend.authenticateN)rE   rF   rG   rM   r   r   r   r   rH   h   s   rH   c                   @  s   e Zd ZdddddZdS )AuthCredentialsNzSequence[str] | None)r   c                 C  s   |d u rg nt || _d S rI   )rB   r   )rL   r   r   r   r   __init__n   s    zAuthCredentials.__init__)N)rE   rF   rG   rO   r   r   r   r   rN   m   s   rN   c                   @  sB   e Zd ZeddddZeddddZedddd	Zd
S )BaseUserr   r   c                 C  s
   t  d S rI   rJ   rL   r   r   r   is_authenticateds   s    zBaseUser.is_authenticatedr0   c                 C  s
   t  d S rI   rJ   rR   r   r   r   display_namew   s    zBaseUser.display_namec                 C  s
   t  d S rI   rJ   rR   r   r   r   identity{   s    zBaseUser.identityN)rE   rF   rG   propertyrS   rT   rU   r   r   r   r   rP   r   s   rP   c                   @  s@   e Zd ZdddddZedddd	Zeddd
dZdS )
SimpleUserr0   r!   )usernamer   c                 C  s
   || _ d S rI   rX   )rL   rX   r   r   r   rO      s    zSimpleUser.__init__r   rQ   c                 C  s   dS )NTr   rR   r   r   r   rS      s    zSimpleUser.is_authenticatedc                 C  s   | j S rI   rY   rR   r   r   r   rT      s    zSimpleUser.display_nameN)rE   rF   rG   rO   rV   rS   rT   r   r   r   r   rW      s
   rW   c                   @  s0   e Zd ZeddddZeddddZdS )	UnauthenticatedUserr   rQ   c                 C  s   dS )NFr   rR   r   r   r   rS      s    z$UnauthenticatedUser.is_authenticatedr0   c                 C  s   dS )N r   rR   r   r   r   rT      s    z UnauthenticatedUser.display_nameN)rE   rF   rG   rV   rS   rT   r   r   r   r   rZ      s   rZ   )r   N)$
__future__r   r<   r5   syscollections.abcr   typingr   r   urllib.parser   version_infor	   Ztyping_extensionsZstarlette._utilsr
   Zstarlette.exceptionsr   Zstarlette.requestsr   r   Zstarlette.responsesr   Zstarlette.websocketsr   r   r   rC   r;   rD   rH   rN   rP   rW   rZ   r   r   r   r   <module>   s2   
	  E