
    9CgT                    |   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    rd 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Z	 	 d(d)dZ G d de          Z G d d          Z G d d           Z G d! d"          Z G d# d$e          Z G d% d&e          ZdS )*    )annotationsN)	urlencode)   
   )	ParamSpec)is_async_callable)HTTPException)HTTPConnectionRequest)RedirectResponse)	WebSocket_Pconnr
   scopestyping.Sequence[str]returnboolc                2    |D ]}|| j         j        vr dS dS )NFT)authr   )r   r   scopes      J/var/www/api/venv/lib/python3.11/site-packages/starlette/authentication.pyhas_required_scoper      s2      	(((55 )4      str | typing.Sequence[str]status_codeintredirect
str | NoneStyping.Callable[[typing.Callable[_P, typing.Any]], typing.Callable[_P, typing.Any]]c                j    t          | t                    r| gnt          |           dfd}|S )Nfunctyping.Callable[_P, typing.Any]r   c                    t          j                   }t          |j                                                  D ]$\  }|j        dk    s|j        dk    r	|j        } n%t          d  d          |dk    r$t          j                   d 	fd            }|S t                     r&t          j                   d 	
fd            }|S t          j                   d 	
fd            }|S )Nrequest	websocketz2No "request" or "websocket" argument on function ""args_P.argskwargs	_P.kwargsr   Nonec                   K   |                     dt          |           k     r|          nd           }t          |t                    sJ t	          |          s|                                 d {V  d S  | i | d {V  d S )Nr&   )getlen
isinstancer   r   close)r(   r*   r&   r"   idxscopes_lists      r   websocket_wrapperz6requires.<locals>.decorator.<locals>.websocket_wrapper2   s      "JJ{s4yyDIIVZ[[	!)Y77777))[AA 0#//+++++++++++$////////////r   
typing.Anyc                   K   |                     dt          |           k     r|          nd           }t          |t                    sJ t	          |          s`Nt          dt          |j                  i          }|                               d| }t          |d          S t          	           | i | d {V S Nr%   next?i/  )urlr   )r   r.   r/   r0   r   r   r   strr:   url_forr   r	   
r(   r*   r%   orig_request_qparamnext_urlr"   r2   r   r3   r   s
        r   async_wrapperz2requires.<locals>.decorator.<locals>.async_wrapper@   s       **YS3t99__S		RVWW!'733333)';?? A+.7W[AQAQ8R.S.S+&-ooh&?&?#W#WBU#W#W/H#NNNN'K@@@@!T426222222222r   c                    |                     dt          |           k     r|          nd           }t          |t                    sJ t	          |          s`Nt          dt          |j                  i          }|                               d| }t          |d          S t          	           | i |S r7   r;   r>   s
        r   sync_wrapperz1requires.<locals>.decorator.<locals>.sync_wrapperQ   s     **YS3t99__S		RVWW!'733333)';?? A+.7W[AQAQ8R.S.S+&-ooh&?&?#W#WBU#W#W/H#NNNN'K@@@@tT,V,,,r   )r(   r)   r*   r+   r   r,   )r(   r)   r*   r+   r   r5   )
inspect	signature	enumerate
parametersvaluesname	Exception	functoolswrapsr   )r"   sig	parametertype_r4   rA   rC   r2   r   r3   r   s   `      @r   	decoratorzrequires.<locals>.decorator%   s    %%'(=(=(?(?@@ 	Z 	ZNC~**in.K.K! /L XQUXXXYYYK_T""0 0 0 0 0 0 0 #"0 %$t$$  	 _T""
3 
3 
3 
3 
3 
3 
3 
3 
3 #"
3 !  _T""
- 
- 
- 
- 
- 
- 
- 
- 
- #"
-  r   )r"   r#   r   r#   )r0   r<   list)r   r   r   rP   r3   s    `` @r   requiresrR      sX    
 )55G6((4<<K9  9  9  9  9  9  9  9 v r   c                      e Zd ZdS )AuthenticationErrorN)__name__
__module____qualname__ r   r   rT   rT   c   s        Dr   rT   c                      e Zd ZddZdS )AuthenticationBackendr   r
   r   'tuple[AuthCredentials, BaseUser] | Nonec                "   K   t                      NNotImplementedError)selfr   s     r   authenticatez"AuthenticationBackend.authenticateh   s      !###r   N)r   r
   r   r[   )rU   rV   rW   ra   rX   r   r   rZ   rZ   g   s(        $ $ $ $ $ $r   rZ   c                      e Zd ZdddZdS )AuthCredentialsNr   typing.Sequence[str] | Nonec                6    |g nt          |          | _        d S r]   )rQ   r   )r`   r   s     r   __init__zAuthCredentials.__init__m   s    "NbbVr   r]   )r   rd   )rU   rV   rW   rf   rX   r   r   rc   rc   l   s-        = = = = = = =r   rc   c                  V    e Zd Zedd            Zed	d            Zed	d            ZdS )
BaseUserr   r   c                    t                      r]   r^   r`   s    r   is_authenticatedzBaseUser.is_authenticatedr       !###r   r<   c                    t                      r]   r^   rj   s    r   display_namezBaseUser.display_namev   rl   r   c                    t                      r]   r^   rj   s    r   identityzBaseUser.identityz   rl   r   Nr   r   r   r<   )rU   rV   rW   propertyrk   rn   rp   rX   r   r   rh   rh   q   sr        $ $ $ X$ $ $ $ X$ $ $ $ X$ $ $r   rh   c                  F    e Zd Zd
dZedd            Zedd            Zd	S )
SimpleUserusernamer<   r   r,   c                    || _         d S r]   rv   )r`   rv   s     r   rf   zSimpleUser.__init__   s     r   r   c                    dS )NTrX   rj   s    r   rk   zSimpleUser.is_authenticated   s    tr   c                    | j         S r]   rx   rj   s    r   rn   zSimpleUser.display_name   s
    }r   N)rv   r<   r   r,   rq   rr   )rU   rV   rW   rf   rs   rk   rn   rX   r   r   ru   ru      sh        ! ! ! !    X    X  r   ru   c                  >    e Zd Zedd            Zedd            ZdS )	UnauthenticatedUserr   r   c                    dS )NFrX   rj   s    r   rk   z$UnauthenticatedUser.is_authenticated   s    ur   r<   c                    dS )N rX   rj   s    r   rn   z UnauthenticatedUser.display_name   s    rr   Nrq   rr   )rU   rV   rW   rs   rk   rn   rX   r   r   r|   r|      sR           X    X  r   r|   )r   r
   r   r   r   r   )r   N)r   r   r   r   r   r   r   r    ) 
__future__r   rK   rD   systypingurllib.parser   version_infor   typing_extensionsstarlette._utilsr   starlette.exceptionsr	   starlette.requestsr
   r   starlette.responsesr   starlette.websocketsr   r   r   rR   rJ   rT   rZ   rc   rh   ru   r|   rX   r   r   <module>r      s-   " " " " " "      



  " " " " " "w       ++++++ . . . . . . . . . . . . 6 6 6 6 6 6 6 6 0 0 0 0 0 0 * * * * * *Yt__    B B B B BJ	 	 	 	 	) 	 	 	$ $ $ $ $ $ $ $
= = = = = = = =
$ $ $ $ $ $ $ $
 
 
 
 
 
 
 
    (     r   