o
    Ci                     @   sl  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edeje defddZ		d!dejeeje f dedeje dejejeejf gejeejf f f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 )"    N)	urlencode)   
   )	ParamSpec)is_async_callable)HTTPException)HTTPConnectionRequest)RedirectResponse)	WebSocket_Pconnscopesreturnc                 C   s    |D ]}|| j jvr dS qdS )NFT)authr   )r   r   scope r   p/var/www/html/fyndo/python/python_agents/rag_suite/venv/lib/python3.10/site-packages/starlette/authentication.pyhas_required_scope   s
   r     status_coderedirectc                    sN   t | tr| gnt| dtjttjf dtjttjf f fdd}|S )Nfuncr   c                    s   t  }t|j D ]\}|jdks|jdkr|j} n	qtd  d|dkrDt dt	j
dt	jdd f fdd	}|S t rct dt	j
dt	jdtjf fd
d}|S t dt	j
dt	jdtjf fdd}|S )Nrequest	websocketz2No "request" or "websocket" argument on function ""argskwargsr   c                     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_wrapper4   s   
z6requires.<locals>.decorator.<locals>.websocket_wrapperc                     s   | dt| k r|  nd }t|tsJ t|s?d ur:tdt|ji}dj|	|d}t
|ddS td | i |I d H S Nr   nextz{redirect_path}?{orig_request})redirect_pathorig_requesti/  )urlr   )r   r   r   r    r	   r   r   strr)   formaturl_forr
   r   r   r   r   orig_request_qparamnext_urlr   r"   r   r#   r   r   r   async_wrapperD   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j|	|d}t
|ddS td | i |S r%   r*   r.   r1   r   r   sync_wrapperX   s    

z1requires.<locals>.decorator.<locals>.sync_wrapper)inspect	signature	enumerate
parametersvaluesname	Exception	functoolswrapsr   r   r   r   typingAny)r   sig	parametertype_r$   r2   r3   r   r#   r   )r   r"   r   	decorator%   s(   

$**zrequires.<locals>.decorator)r    r+   listr=   Callabler   r>   )r   r   r   rC   r   rB   r   requires   s   ErF   c                   @   s   e Zd ZdS )AuthenticationErrorN)__name__
__module____qualname__r   r   r   r   rG   m   s    rG   c                   @   s*   e Zd Zdedejejd  fddZdS )AuthenticationBackendr   r   )AuthCredentialsBaseUserc                    s   t  NNotImplementedError)selfr   r   r   r   authenticater   s   z"AuthenticationBackend.authenticateN)rH   rI   rJ   r   r=   OptionalTuplerR   r   r   r   r   rK   q   s    rK   c                   @   s(   e Zd Zddejeje  fddZdS )rL   Nr   c                 C   s    |d u r	g | _d S t || _d S rN   )rD   r   )rQ   r   r   r   r   __init__y   s    zAuthCredentials.__init__rN   )rH   rI   rJ   r=   rS   Sequencer+   rU   r   r   r   r   rL   x   s     rL   c                   @   sB   e Zd ZedefddZedefddZedefddZdS )	rM   r   c                 C      t  rN   rO   rQ   r   r   r   is_authenticated~      zBaseUser.is_authenticatedc                 C   rW   rN   rO   rX   r   r   r   display_name   rZ   zBaseUser.display_namec                 C   rW   rN   rO   rX   r   r   r   identity   rZ   zBaseUser.identityN)	rH   rI   rJ   propertyboolrY   r+   r[   r\   r   r   r   r   rM   }   s    rM   c                   @   sB   e Zd ZdeddfddZedefddZedefdd	ZdS )

SimpleUserusernamer   Nc                 C   s
   || _ d S rN   r`   )rQ   r`   r   r   r   rU      s   
zSimpleUser.__init__c                 C      dS )NTr   rX   r   r   r   rY         zSimpleUser.is_authenticatedc                 C   s   | j S rN   ra   rX   r   r   r   r[      rZ   zSimpleUser.display_name)	rH   rI   rJ   r+   rU   r]   r^   rY   r[   r   r   r   r   r_      s    r_   c                   @   s0   e Zd ZedefddZedefddZdS )UnauthenticatedUserr   c                 C   rb   )NFr   rX   r   r   r   rY      rc   z$UnauthenticatedUser.is_authenticatedc                 C   rb   )N r   rX   r   r   r   r[      rc   z UnauthenticatedUser.display_nameN)rH   rI   rJ   r]   r^   rY   r+   r[   r   r   r   r   rd      s
    rd   )r   N)&r;   r4   sysr=   urllib.parser   version_infor   typing_extensionsstarlette._utilsr   starlette.exceptionsr   starlette.requestsr   r	   starlette.responsesr
   starlette.websocketsr   r   rV   r+   r^   r   UnionintrS   rE   r>   rF   r:   rG   rK   rL   rM   r_   rd   r   r   r   r   <module>   sD    
	 
Q