
    E2i                    \   d dl mZ d dlZd dlZd dlmZmZ d dlmZm	Z	 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)CallableSequence)Any	ParamSpec)	urlencode)is_async_callable)HTTPException)HTTPConnectionRequest)RedirectResponse)	WebSocket_Pconnr   scopesSequence[str]returnboolc                2    |D ]}|| j         j        vr dS dS )NFT)authr   )r   r   scopes      W/var/www/html/pixcura-vrs/venv/lib/python3.11/site-packages/starlette/authentication.pyhas_required_scoper      s2      	(((55 )4      str | Sequence[str]status_codeintredirect
str | None0Callable[[Callable[_P, Any]], Callable[_P, Any]]c                j    t          | t                    r| gnt          |           dfd}|S )NfuncCallable[_P, 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_wrapper-   s      "JJ{s4yyDIIVZ[[	!)Y77777))[AA 0#//+++++++++++$////////////r   r   c                   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/   r0   r1   r   r   r   strr:   url_forr   r
   
r)   r+   r&   orig_request_qparamnext_urlr#   r3   r   r4   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_wrapperL   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   r   )
inspect	signature	enumerate
parametersvaluesname	Exception	functoolswrapsr	   )r#   sig	parametertype_r5   rA   rC   r3   r   r4   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$   )r1   r<   list)r   r   r   rP   r4   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   ^   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.authenticatec   s      !###r   N)r   r   r   r[   )rU   rV   rW   ra   rX   r   r   rZ   rZ   b   s(        $ $ $ $ $ $r   rZ   c                      e Zd ZdddZdS )AuthCredentialsNr   Sequence[str] | Nonec                6    |g nt          |          | _        d S r]   )rQ   r   )r`   r   s     r   __init__zAuthCredentials.__init__h   s    "NbbVr   r]   )r   rd   )rU   rV   rW   rf   rX   r   r   rc   rc   g   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_authenticatedm       !###r   r<   c                    t                      r]   r^   rj   s    r   display_namezBaseUser.display_nameq   rl   r   c                    t                      r]   r^   rj   s    r   identityzBaseUser.identityu   rl   r   Nr   r   r   r<   )rU   rV   rW   propertyrk   rn   rp   rX   r   r   rh   rh   l   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   z   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   collections.abcr   r   typingr   r   urllib.parser   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   " " " " " "      . . . . . . . . ! ! ! ! ! ! ! ! " " " " " " . . . . . . . . . . . . 6 6 6 6 6 6 6 6 0 0 0 0 0 0 * * * * * *Yt__    B B B B BJ	 	 	 	 	) 	 	 	$ $ $ $ $ $ $ $
= = = = = = = =
$ $ $ $ $ $ $ $
 
 
 
 
 
 
 
    (     r   