
    gT                    n   S SK Jr  S SKrS SKrS SKrS SKrS SKJr  \R                  S:  a  S SKJ	r	  OS SK
J	r	  S SKJr  S SKJr  S SKJrJr  S S	KJr  S S
KJr  \	" S5      rSS jr  S       SS jjr " S S\5      r " S S5      r " S S5      r " S S5      r " S S\5      r " S S\5      rg)    )annotationsN)	urlencode)   
   )	ParamSpec)is_async_callable)HTTPException)HTTPConnectionRequest)RedirectResponse)	WebSocket_Pc                L    U H  nX R                   R                  ;  d  M    g   g)NFT)authscopes)connr   scopes      Q/home/matz/Project1/venv/lib/python3.13/site-packages/starlette/authentication.pyhas_required_scoper      s$    		(((      c                n   ^^^ [        U [        5      (       a  U /O
[        U 5      m    SUUU4S jjnU$ )Nc                  >^ ^ [         R                  " T 5      n[        UR                  R	                  5       5       H4  u  mnUR
                  S:X  d  UR
                  S:X  d  M(  UR
                  n  O   [        ST  S35      eUS:X  a%  [        R                  " T 5      SU UU	4S jj5       nU$ [        T 5      (       a'  [        R                  " T 5      S	U UUU	U
4S jj5       nU$ [        R                  " T 5      S	U UUU	U
4S jj5       nU$ )
Nrequest	websocketz2No "request" or "websocket" argument on function ""c                   >#    UR                  ST[        U 5      :  a  U T   OS 5      n[        U[        5      (       d   e[	        UT5      (       d  UR                  5       I S h  vN   g T" U 0 UD6I S h  vN   g  N N7f)Nr   )getlen
isinstancer   r   close)argskwargsr   funcidxscopes_lists      r   websocket_wrapper6requires.<locals>.decorator.<locals>.websocket_wrapper2   sr     "JJ{s4yDIVZ[	!)Y7777))[AA#//+++//// ,/s$   A"B %A<&B 6A>7B >B c                 d  >#    UR                  ST[        U 5      :  a  U T   OS 5      n[        U[        5      (       d   e[	        UT5      (       dL  Tb@  [        S[        UR                  5      05      nUR                  T5       SU 3n[        USS9$ [        T	S9eT" U 0 UD6I S h  vN $  N7fNr   next?i/  )urlstatus_code)r-   r   r   r   r   r   r   strr,   url_forr   r	   
r!   r"   r   orig_request_qparamnext_urlr#   r$   redirectr%   r-   s
        r   async_wrapper2requires.<locals>.decorator.<locals>.async_wrapper@   s      **YS3t9_S	RVW!'73333)';??+.7W[[AQ8R.S+&-ooh&?%@BUAV#W/H#NN'K@@!4262222s   B&B0)B.*B0c                 H  > UR                  ST[        U 5      :  a  U T   OS 5      n[        U[        5      (       d   e[	        UT5      (       dL  Tb@  [        S[        UR                  5      05      nUR                  T5       SU 3n[        USS9$ [        T	S9eT" U 0 UD6$ r)   r.   r1   s
        r   sync_wrapper1requires.<locals>.decorator.<locals>.sync_wrapperQ   s     **YS3t9_S	RVW!'73333)';??+.7W[[AQ8R.S+&-ooh&?%@BUAV#W/H#NN'K@@T,V,,r   )r!   _P.argsr"   	_P.kwargsreturnNone)r!   r:   r"   r;   r<   z
typing.Any)
inspect	signature	enumerate
parametersvaluesname	Exception	functoolswrapsr   )r#   sig	parametertype_r&   r5   r8   r$   r4   r%   r-   s   `      @r   	decoratorrequires.<locals>.decorator%   s     %'(=(=(?@NC~~*inn.K! A
 PQUPVVWXYYK__T"0 0 #0 %$t$$__T"
3 
3 #
3 !  __T"
- 
- #
-  r   )r#   typing.Callable[_P, typing.Any]r<   rL   )r   r/   list)r   r-   r4   rJ   r%   s    `` @r   requiresrN      sA    
 )556(4<K9 -9 	(9  9 v r   c                      \ rS rSrSrg)AuthenticationErrorc    N)__name__
__module____qualname____firstlineno____static_attributes__rR   r   r   rP   rP   c   s    r   rP   c                      \ rS rSrSS jrSrg)AuthenticationBackendg   c                   #    [        5       e7fNNotImplementedError)selfr   s     r   authenticate"AuthenticationBackend.authenticateh   s     !##s   rR   N)r   r
   r<   z'tuple[AuthCredentials, BaseUser] | None)rS   rT   rU   rV   r`   rW   rR   r   r   rY   rY   g   s    $r   rY   c                  "    \ rS rSrSSS jjrSrg)AuthCredentialsl   Nc                :    Uc  / U l        g [        U5      U l        g r\   )rM   r   )r_   r   s     r   __init__AuthCredentials.__init__m   s    "NbVr   )r   r\   )r   ztyping.Sequence[str] | None)rS   rT   rU   rV   rf   rW   rR   r   r   rc   rc   l   s    = =r   rc   c                  P    \ rS rSr\SS j5       r\SS j5       r\SS j5       rSrg)	BaseUserq   c                    [        5       er\   r]   r_   s    r   is_authenticatedBaseUser.is_authenticatedr       !##r   c                    [        5       er\   r]   rl   s    r   display_nameBaseUser.display_namev   ro   r   c                    [        5       er\   r]   rl   s    r   identityBaseUser.identityz   ro   r   rR   Nr<   boolr<   r/   )	rS   rT   rU   rV   propertyrm   rq   rt   rW   rR   r   r   ri   ri   q   s<    $ $ $ $ $ $r   ri   c                  F    \ rS rSrSS jr\SS j5       r\S	S j5       rSrg)

SimpleUser   c                    Xl         g r\   username)r_   r   s     r   rf   SimpleUser.__init__   s     r   c                    g)NTrR   rl   s    r   rm   SimpleUser.is_authenticated   s    r   c                    U R                   $ r\   r~   rl   s    r   rq   SimpleUser.display_name   s    }}r   r~   N)r   r/   r<   r=   rv   rx   )	rS   rT   rU   rV   rf   ry   rm   rq   rW   rR   r   r   r{   r{      s/    !    r   r{   c                  <    \ rS rSr\SS j5       r\SS j5       rSrg)UnauthenticatedUser   c                    g)NFrR   rl   s    r   rm   $UnauthenticatedUser.is_authenticated   s    r   c                    g)N rR   rl   s    r   rq    UnauthenticatedUser.display_name   s    r   rR   Nrv   rx   )rS   rT   rU   rV   ry   rm   rq   rW   rR   r   r   r   r      s(       r   r   )r   r
   r   ztyping.Sequence[str]r<   rw   )i  N)r   zstr | typing.Sequence[str]r-   intr4   z
str | Noner<   zStyping.Callable[[typing.Callable[_P, typing.Any]], typing.Callable[_P, typing.Any]]) 
__future__r   rE   r>   systypingurllib.parser   version_infor   typing_extensionsstarlette._utilsr   starlette.exceptionsr	   starlette.requestsr
   r   starlette.responsesr   starlette.websocketsr   r   r   rN   rD   rP   rY   rc   ri   r{   r   rR   r   r   <module>r      s    "   
  "w + . . 6 0 *t_ B&BB B Y	BJ	) 	$ $
= =
$ $
 
( r   