o
    Þ­j¬  ã                   @  s  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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)Ú	urlencode)é   é
   )Ú	ParamSpec)Úis_async_callable)ÚHTTPException)ÚHTTPConnectionÚRequest)ÚRedirectResponse)Ú	WebSocketÚ_PÚconnr	   Úscopesútyping.Sequence[str]ÚreturnÚboolc                 C  s    |D ]}|| j jvr dS qdS )NFT)Úauthr   )r   r   Úscope© r   úU/var/www/html/CropPilot/venv/lib/python3.10/site-packages/starlette/authentication.pyÚhas_required_scope   s
   ÿr   é“  ústr | typing.Sequence[str]Ústatus_codeÚintÚredirectú
str | NoneúStyping.Callable[[typing.Callable[_P, typing.Any]], typing.Callable[_P, typing.Any]]c                   s.   t | tƒr| gnt| ƒ‰d‡ ‡‡fdd„}|S )NÚfuncútyping.Callable[_P, typing.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_wrapper6   s   €ÿ
z6requires.<locals>.decorator.<locals>.websocket_wrapperú
typing.Anyc                  Ÿ  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   Ústrr4   Úurl_forr   r   ©r$   r&   r!   Úorig_request_qparamÚnext_url©r   r-   r   r.   r   r   r   Úasync_wrapperF   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 r1   r5   r8   r;   r   r   Úsync_wrapperW   s    

z1requires.<locals>.decorator.<locals>.sync_wrapper)r$   r%   r&   r'   r   r(   )r$   r%   r&   r'   r   r0   )
ÚinspectÚ	signatureÚ	enumerateÚ
parametersÚvaluesÚnameÚ	ExceptionÚ	functoolsÚwrapsr   )r   ÚsigÚ	parameterÚtype_r/   r<   r=   ©r   r.   r   )r   r-   r   Ú	decorator'   s(   
þ
ÿzrequires.<locals>.decorator)r   r    r   r    )r+   r6   Úlist)r   r   r   rK   r   rJ   r   Úrequires   s   ?rM   c                   @  s   e Zd ZdS )ÚAuthenticationErrorN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   rN   i   s    rN   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   Úauthenticaten   s   €z"AuthenticationBackend.authenticateN)r   r	   r   rS   )rO   rP   rQ   rX   r   r   r   r   rR   m   s    rR   c                   @  s   e Zd Zdddd„ZdS )ÚAuthCredentialsNr   útyping.Sequence[str] | Nonec                 C  s    |d u r	g | _d S t |ƒ| _d S rT   )rL   r   )rW   r   r   r   r   Ú__init__u   s    zAuthCredentials.__init__rT   )r   rZ   )rO   rP   rQ   r[   r   r   r   r   rY   t   s    rY   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 ƒ ‚rT   rU   ©rW   r   r   r   Úis_authenticatedz   ó   zBaseUser.is_authenticatedr6   c                 C  r]   rT   rU   r^   r   r   r   Údisplay_name~   r`   zBaseUser.display_namec                 C  r]   rT   rU   r^   r   r   r   Úidentity‚   r`   zBaseUser.identityN©r   r   ©r   r6   )rO   rP   rQ   Úpropertyr_   ra   rb   r   r   r   r   r\   y   s    r\   c                   @  s2   e Zd Zddd„Zeddd	„ƒZedd
d„ƒZdS )Ú
SimpleUserÚusernamer6   r   r(   c                 C  s
   || _ d S rT   ©rg   )rW   rg   r   r   r   r[   ˆ   s   
zSimpleUser.__init__r   c                 C  ó   dS )NTr   r^   r   r   r   r_   ‹   ó   zSimpleUser.is_authenticatedc                 C  s   | j S rT   rh   r^   r   r   r   ra   �   r`   zSimpleUser.display_nameN)rg   r6   r   r(   rc   rd   )rO   rP   rQ   r[   re   r_   ra   r   r   r   r   rf   ‡   s    
rf   c                   @  s(   e Zd Zed	dd„ƒZed
dd„ƒZdS )ÚUnauthenticatedUserr   r   c                 C  ri   )NFr   r^   r   r   r   r_   •   rj   z$UnauthenticatedUser.is_authenticatedr6   c                 C  ri   )NÚ r   r^   r   r   r   ra   ™   rj   z UnauthenticatedUser.display_nameNrc   rd   )rO   rP   rQ   re   r_   ra   r   r   r   r   rk   ”   s
    rk   )r   r	   r   r   r   r   )r   N)r   r   r   r   r   r   r   r   ) Ú
__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   rM   rD   rN   rR   rY   r\   rf   rk   r   r   r   r   Ú<module>   s2    

	ýK