a
    ^gT                     @  s*  d dl mZ d dlZd dlZd dlZd dlZd dlmZ ejdkrPd 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)	urlencode)   
   )	ParamSpec)is_async_callable)HTTPException)HTTPConnectionRequest)RedirectResponse)	WebSocket_Pr	   ztyping.Sequence[str]bool)connscopesreturnc                 C  s    |D ]}|| j jvr dS qdS )NFT)authr   )r   r   scope r   f/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/starlette/authentication.pyhas_required_scope   s    r     zstr | typing.Sequence[str]intz
str | NonezStyping.Callable[[typing.Callable[_P, typing.Any]], typing.Callable[_P, typing.Any]])r   status_coderedirectr   c                   s4   t | tr| gnt| ddd fdd}|S )Nztyping.Callable[_P, typing.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_wrapper2   s
     
z6requires.<locals>.decorator.<locals>.websocket_wrapperz
typing.Anyc                    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_wrapper@   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-   r/   r0   r   r   sync_wrapperQ   s     

z1requires.<locals>.decorator.<locals>.sync_wrapper)
inspect	signature	enumerate
parametersvaluesname	Exception	functoolswrapsr   )r   sigZ	parametertype_r(   r1   r2   r   r'   r   )r   r&   r   	decorator%   s"    
	  zrequires.<locals>.decorator)r$   r.   list)r   r   r   r?   r   r>   r   requires   s    ;rA   c                   @  s   e Zd ZdS )AuthenticationErrorN)__name__
__module____qualname__r   r   r   r   rB   c   s   rB   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   authenticateh   s    z"AuthenticationBackend.authenticateN)rC   rD   rE   rK   r   r   r   r   rF   g   s   rF   c                   @  s   e Zd ZdddddZdS )AuthCredentialsNztyping.Sequence[str] | None)r   c                 C  s   |d u rg nt || _d S rG   )r@   r   )rJ   r   r   r   r   __init__m   s    zAuthCredentials.__init__)N)rC   rD   rE   rM   r   r   r   r   rL   l   s   rL   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 rG   rH   rJ   r   r   r   is_authenticatedr   s    zBaseUser.is_authenticatedr.   c                 C  s
   t  d S rG   rH   rP   r   r   r   display_namev   s    zBaseUser.display_namec                 C  s
   t  d S rG   rH   rP   r   r   r   identityz   s    zBaseUser.identityN)rC   rD   rE   propertyrQ   rR   rS   r   r   r   r   rN   q   s   rN   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 )
SimpleUserr.   r   )usernamer   c                 C  s
   || _ d S rG   rV   )rJ   rV   r   r   r   rM      s    zSimpleUser.__init__r   rO   c                 C  s   dS )NTr   rP   r   r   r   rQ      s    zSimpleUser.is_authenticatedc                 C  s   | j S rG   rW   rP   r   r   r   rR      s    zSimpleUser.display_nameN)rC   rD   rE   rM   rT   rQ   rR   r   r   r   r   rU      s
   rU   c                   @  s0   e Zd ZeddddZeddddZdS )	UnauthenticatedUserr   rO   c                 C  s   dS )NFr   rP   r   r   r   rQ      s    z$UnauthenticatedUser.is_authenticatedr.   c                 C  s   dS )N r   rP   r   r   r   rR      s    z UnauthenticatedUser.display_nameN)rC   rD   rE   rT   rQ   rR   r   r   r   r   rX      s   rX   )r   N) 
__future__r   r:   r3   systypingurllib.parser   version_infor   Ztyping_extensionsZstarlette._utilsr   Zstarlette.exceptionsr   Zstarlette.requestsr	   r
   Zstarlette.responsesr   Zstarlette.websocketsr   r   r   rA   r9   rB   rF   rL   rN   rU   rX   r   r   r   r   <module>   s0   
	  E