
    %`i                         d dl Z d dlZd dl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mZ dZ ed          d	z  ZddZded
dfdZded
dfdZdeded
dfdZded
efdZdded
dfdZe G d d                      Zed             ZdS )    N)contextmanager)	dataclass)Path)DictOptional)AuthenticationTokenLoaderConfig)RAY_AUTH_MODERAY_AUTH_TOKENRAY_AUTH_TOKEN_PATHz.ray
auth_tokenreturnc                  x    t          j                                                     t          j        d           dS )z4Reset authentication token and AUTH_MODE ray config. N)r   instancereset_cacher	   
initialize     z/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/_private/authentication_test_utils.pyreset_auth_token_stater      s6     &((44666
br   modec                 $    | t           j        d<   dS )z1Set the authentication mode environment variable.r
   N)osenviron)r   s    r   set_auth_moder      s     #'BJr   tokenc                 d    | t           j        d<   t           j                            dd           dS )z<Configure the authentication token via environment variable.r   r   N)r   r   pop)r   s    r   set_env_auth_tokenr       s.     $)BJ JNN($/////r   pathc                    t          |          }| 1|j                            dd           |                    |            t	          |          t
          j        d<   t
          j                            dd           dS )zMWrite the authentication token to a specific path and point the loader to it.NTparentsexist_okr   r   )r   parentmkdir
write_textstrr   r   r   )r   r!   
token_paths      r   set_auth_token_pathr+   #   su     dJt<<<e$$$(+JBJ$%JNN#T*****r   c                     t          j                    t          z  }|j                            dd           |                    |            |S )zIWrite the authentication token to the default ~/.ray/auth_token location.Tr#   )r   home!_DEFAULT_AUTH_TOKEN_RELATIVE_PATHr&   r'   r(   )r   default_paths     r   set_default_auth_tokenr0   .   sK     9;;!BBLdT:::E"""r   Fremove_defaultc                     dD ]"}t           j                            |d           #| r3t          j                    t
          z  }|                    d           dS dS )zSClear authentication-related environment variables and optional default token file.)r   r   NT
missing_ok)r   r   r   r   r-   r.   unlink)r1   varr/   s      r   clear_auth_token_sourcesr7   7   sl     9 " "

sD!!!! -y{{%FFt,,,,,- -r   c                       e Zd ZU eeee         f         ed<   ee         ed<   eed<   ee         ed<   eed<   eed<   ee         ed<   e	dd	            Z
ddZddZd
S )AuthenticationEnvSnapshotoriginal_envoriginal_homehome_was_set	temp_homedefault_token_pathdefault_token_existsdefault_token_contentsr   c           	      H   d t           D             }dt          j        v }t          j                            d          }d}|st          j                            d          }|rt	          |          nt	          t          j                              }|dz  }|                    dd           t          |          t          j        d<   t	          j	                    t          z  }|                                }|r|                                nd}	 | |||||||	          S )	z9Capture current authentication-related environment state.c                 N    i | ]"}|t           j                            |          #S r   )r   r   get).0r6   s     r   
<dictcomp>z5AuthenticationEnvSnapshot.capture.<locals>.<dictcomp>P   s(    KKKSRZ^^C00KKKr   HOMENTEST_TMPDIRray_test_homeTr#   )r:   r;   r<   r=   r>   r?   r@   )_AUTH_ENV_VARSr   r   rC   r   tempfile
gettempdirr'   r)   r-   r.   exists	read_text)
clsr:   r<   r;   r=   test_tmpdirbase_dirr>   r?   r@   s
             r   capturez!AuthenticationEnvSnapshot.captureL   s$    LKNKKK+
v..$(	 	0*..77K,7XtK(((T(BUBWBW=X=XH ?2IOOD4O888!$YBJv!Y[[+LL188::.BL((*** 	 s%'%1!5#9
 
 
 	
r   Nc                 <    | j                             d           dS )z3Remove the default token file for the current HOME.Tr3   N)r>   r5   )selfs    r   clear_default_tokenz-AuthenticationEnvSnapshot.clear_default_tokenm   s$     	&&$&77777r   c                    t           j                            d          }|9t          |          }|                                r|                    d           | j                                        D ]7\  }}|!t           j                            |d           (|t           j        |<   8| j	        r<| j
        !t           j                            dd           n| j
        t           j        d<   | j        rC| j        j                            dd           | j                            | j        pd           n| j                            d           | j	        st           j                            d          }| j        8|t%          | j                  k    r t           j                            dd           | j        8| j                                        r!t'          j        | j        d           dS dS dS dS )	zERestore the captured environment, HOME, and default token file state.r   NTr3   rF   r#   r   )ignore_errors)r   r   rC   r   rL   r5   r:   itemsr   r<   r;   r?   r>   r&   r'   r(   r@   r=   r)   shutilrmtree)rS   custom_token_pathr6   valuecurrent_homes        r   restorez!AuthenticationEnvSnapshot.restorer   s    JNN+@AA( $%6 7 7 '')) :!((D(999+1133 	( 	(JC}
sD))))"'
3 	8!)
vt,,,,%)%7
6"$ 	<#*000MMM#..t/J/PbQQQQ#**d*;;;  	B:>>&11L~)lc$.>Q>Q.Q.Q
vt,,,~)dn.C.C.E.E)dnDAAAAAA	B 	B *)))r   )r   r9   r   N)__name__
__module____qualname__r   r)   r   __annotations__boolr   classmethodrQ   rT   r]   r   r   r   r9   r9   B   s         sHSM)****C=   ~$SM)))
 
 
 [
@8 8 8 8
 B  B  B  B  B  Br   r9   c               #      K   t                                           } 	 | V  |                                  dS # |                                  w xY w)zGContext manager that restores authentication environment state on exit.N)r9   rQ   r]   )snapshots    r   authentication_env_guardrg      sW       )0022Hs	   7 Ar^   )F)r   rX   rJ   
contextlibr   dataclassesr   pathlibr   typingr   r   ray._rayletr   r	   rI   r.   r   r)   r   r    r+   r0   rc   r7   r9   rg   r   r   r   <module>rm      s   				   % % % % % % ! ! ! ! ! !       ! ! ! ! ! ! ! ! 9 9 9 9 9 9 9 9K$(DLL<$? !   ' ' ' ' ' '0c 0d 0 0 0 0+s +$ +4 + + + +# $    - -T -d - - - - OB OB OB OB OB OB OB OBd     r   