o
    li*                     @  s0  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r2d 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Z		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)Sequence)AnyCallable)	urlencode)   
   )	ParamSpec)is_async_callable)HTTPException)HTTPConnectionRequest)RedirectResponse)	WebSocket_Pconnr   scopesSequence[str]returnboolc                 C  s    |D ]}|| j jvr dS qdS )NFT)authr   )r   r   scope r   _/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/starlette/authentication.pyhas_required_scope   s
   r     str | Sequence[str]status_codeintredirect
str | None0Callable[[Callable[_P, Any]], Callable[_P, Any]]c                   s.   t | tr| gnt| d fdd}|S )NfuncCallable[_P, Any]r   c                   s   t  }t|j D ]\}|jdks|jdkr|j} n	qtd  d|dkr<t d fdd}|S t	 rRt d fdd}|S t d fdd}|S )Nrequest	websocketz2No "request" or "websocket" argument on function ""args_P.argskwargs	_P.kwargsr   Nonec                    sd   | dt| k r|  nd }t|tsJ t|s&| I d H  d S  | i |I d H  d S )Nr%   )getlen
isinstancer   r   close)r'   r)   r%   )r"   idxscopes_listr   r   websocket_wrapper3   s    
z6requires.<locals>.decorator.<locals>.websocket_wrapperr   c                    s   | dt| k r|  nd }t|tsJ t|s?d ur:t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   strr6   Zurl_forr   r   r'   r)   r$   Zorig_request_qparamZnext_urlr"   r0   r   r1   r   r   r   async_wrapperA   s    

z2requires.<locals>.decorator.<locals>.async_wrapperc                    s   | dt| k r|  nd }t|tsJ t|s>d ur9tdt|ji}| d| }t	|ddS t
d | i |S r3   r7   r9   r:   r   r   sync_wrapperR   s    

z1requires.<locals>.decorator.<locals>.sync_wrapper)r'   r(   r)   r*   r   r+   )r'   r(   r)   r*   r   r   )
inspect	signature	enumerate
parametersvaluesname	Exception	functoolswrapsr
   )r"   sigZ	parametertype_r2   r;   r<   r   r1   r   )r"   r0   r   	decorator&   s$   
	zrequires.<locals>.decorator)r"   r#   r   r#   )r.   r8   list)r   r   r   rI   r   rH   r   requires   s   ;rK   c                   @  s   e Zd ZdS )AuthenticationErrorN)__name__
__module____qualname__r   r   r   r   rL   d   s    rL   c                   @  s   e Zd ZdddZdS )	AuthenticationBackendr   r   r   'tuple[AuthCredentials, BaseUser] | Nonec                   s   t  NNotImplementedError)selfr   r   r   r   authenticatei   s   z"AuthenticationBackend.authenticateN)r   r   r   rQ   )rM   rN   rO   rV   r   r   r   r   rP   h   s    rP   c                   @  s   e Zd ZddddZdS )AuthCredentialsNr   Sequence[str] | Nonec                 C  s    |d u r	g | _d S t || _d S rR   )rJ   r   )rU   r   r   r   r   __init__n   s    zAuthCredentials.__init__rR   )r   rX   )rM   rN   rO   rY   r   r   r   r   rW   m   s    rW   c                   @  s6   e Zd ZedddZedddZeddd	Zd
S )BaseUserr   r   c                 C     t  rR   rS   rU   r   r   r   is_authenticateds      zBaseUser.is_authenticatedr8   c                 C  r[   rR   rS   r\   r   r   r   display_namew   r^   zBaseUser.display_namec                 C  r[   rR   rS   r\   r   r   r   identity{   r^   zBaseUser.identityNr   r   r   r8   )rM   rN   rO   propertyr]   r_   r`   r   r   r   r   rZ   r   s    rZ   c                   @  s2   e Zd ZdddZeddd	Zedd
dZdS )
SimpleUserusernamer8   r   r+   c                 C  s
   || _ d S rR   re   )rU   re   r   r   r   rY      s   
zSimpleUser.__init__r   c                 C     dS )NTr   r\   r   r   r   r]         zSimpleUser.is_authenticatedc                 C  s   | j S rR   rf   r\   r   r   r   r_      r^   zSimpleUser.display_nameN)re   r8   r   r+   ra   rb   )rM   rN   rO   rY   rc   r]   r_   r   r   r   r   rd      s    
rd   c                   @  s(   e Zd Zed	ddZed
ddZdS )UnauthenticatedUserr   r   c                 C  rg   )NFr   r\   r   r   r   r]      rh   z$UnauthenticatedUser.is_authenticatedr8   c                 C  rg   )N r   r\   r   r   r   r_      rh   z UnauthenticatedUser.display_nameNra   rb   )rM   rN   rO   rc   r]   r_   r   r   r   r   ri      s
    ri   )r   r   r   r   r   r   )r   N)r   r   r   r   r   r    r   r!   )$
__future__r   rD   r=   syscollections.abcr   typingr   r   urllib.parser   version_infor	   Ztyping_extensionsZstarlette._utilsr
   Zstarlette.exceptionsr   Zstarlette.requestsr   r   Zstarlette.responsesr   Zstarlette.websocketsr   r   r   rK   rC   rL   rP   rW   rZ   rd   ri   r   r   r   r   <module>   s4    

	E