
    vh*                    z   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\  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#y)    )annotationsN)Sequence)AnyCallable)	urlencode)   
   )	ParamSpec)is_async_callable)HTTPException)HTTPConnectionRequest)RedirectResponse)	WebSocket_Pc                F    |D ]  }|| j                   j                  vs y y)NFT)authscopes)connr   scopes      P/var/www/html/luna/venv/lib/python3.12/site-packages/starlette/authentication.pyhas_required_scoper      s+     		(((     c                `    t        | t              r| gn
t        |       	 	 	 	 dfd}|S )Nc                    t        j                         }t        |j                  j	                               D ]1  \  }|j
                  dk(  s|j
                  dk(  s%|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 ""c                    K   |j                  dt        |       k  r|    nd       }t        |t              sJ t	        |      s|j                          d {    y  | i | d {    y 7 7 w)Nr   )getlen
isinstancer   r   close)argskwargsr   funcidxscopes_lists      r   websocket_wrapperz6requires.<locals>.decorator.<locals>.websocket_wrapper3   sn     "JJ{s4yDIVZ[	!)Y777))[A#//+++//// ,/s$   AA5A1A5+A3,A53A5c                 X  K   |j                  dt        |       k  r|    nd       }t        |t              sJ t	        |      sQCt        dt        |j                        i      }|j                         d| }t        |d      S t        	       | i | d {   S 7 w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_wrapperz2requires.<locals>.decorator.<locals>.async_wrapperA   s      **YS3t9_S	RVW!'7333)';?+.7W[[AQ8R.S+&-ooh&?%@BUAV#W/H#NN'K@@!4262222s   B B*#B($B*c                 <   |j                  dt        |       k  r|    nd       }t        |t              sJ t	        |      sQCt        dt        |j                        i      }|j                         d| }t        |d      S t        	       | i |S r+   r0   r3   s
        r   sync_wrapperz1requires.<locals>.decorator.<locals>.sync_wrapperR   s     **YS3t9_S	RVW!'7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<   r   )
inspect	signature	enumerate
parametersvaluesname	Exception	functoolswrapsr   )r&   sig	parametertype_r)   r7   r9   r'   r6   r(   r/   s   `      @r   	decoratorzrequires.<locals>.decorator&   s     %'(=(=(?@ 	ZNC~~*inn.K!	Z
 PQUPVVWXYYK__T"0 #0 %$t$__T"
3 
3 #
3 !  __T"
- 
- #
-  r   )r&   Callable[_P, Any]r<   rK   )r"   r1   list)r   r/   r6   rJ   r(   s    `` @r   requiresrM      s9    
 )56(4<K9 9 	9 v r   c                      e Zd Zy)AuthenticationErrorN)__name__
__module____qualname__ r   r   rO   rO   d   s    r   rO   c                      e Zd ZddZy)AuthenticationBackendc                   K   t               wNNotImplementedError)selfr   s     r   authenticatez"AuthenticationBackend.authenticatei   s     !##s   N)r   r   r<   z'tuple[AuthCredentials, BaseUser] | None)rP   rQ   rR   r[   rS   r   r   rU   rU   h   s    $r   rU   c                      e Zd ZdddZy)AuthCredentialsNc                8    |g | _        y t        |      | _        y rW   )rL   r   )rZ   r   s     r   __init__zAuthCredentials.__init__n   s    "NbVr   rW   )r   zSequence[str] | None)rP   rQ   rR   r_   rS   r   r   r]   r]   m   s    =r   r]   c                  B    e Zd Zedd       Zedd       Zedd       Zy)BaseUserc                    t               rW   rX   rZ   s    r   is_authenticatedzBaseUser.is_authenticateds       !##r   c                    t               rW   rX   rc   s    r   display_namezBaseUser.display_namew   re   r   c                    t               rW   rX   rc   s    r   identityzBaseUser.identity{   re   r   Nr<   boolr<   r1   )rP   rQ   rR   propertyrd   rg   ri   rS   r   r   ra   ra   r   s<    $ $ $ $ $ $r   ra   c                  8    e Zd ZddZedd       Zedd       Zy)
SimpleUserc                    || _         y rW   username)rZ   rr   s     r   r_   zSimpleUser.__init__   s	     r   c                     y)NTrS   rc   s    r   rd   zSimpleUser.is_authenticated   s    r   c                    | j                   S rW   rq   rc   s    r   rg   zSimpleUser.display_name   s    }}r   N)rr   r1   r<   r=   rj   rl   )rP   rQ   rR   r_   rm   rd   rg   rS   r   r   ro   ro      s/    !    r   ro   c                  0    e Zd Zedd       Zedd       Zy)UnauthenticatedUserc                     y)NFrS   rc   s    r   rd   z$UnauthenticatedUser.is_authenticated   s    r   c                     y)N rS   rc   s    r   rg   z UnauthenticatedUser.display_name   s    r   Nrj   rl   )rP   rQ   rR   rm   rd   rg   rS   r   r   rv   rv      s(       r   rv   )r   r   r   zSequence[str]r<   rk   )i  N)r   zstr | Sequence[str]r/   intr6   z
str | Noner<   z0Callable[[Callable[_P, Any]], Callable[_P, Any]])$
__future__r   rE   r>   syscollections.abcr   typingr   r   urllib.parser   version_infor
   typing_extensionsstarlette._utilsr   starlette.exceptionsr   starlette.requestsr   r   starlette.responsesr   starlette.websocketsr   r   r   rM   rD   rO   rU   r]   ra   ro   rv   rS   r   r   <module>r      s    "   
 $   "w + . . 6 0 *t_ BBB B 6	BJ	) 	$ $
= =
$ $
 
( r   