
    &`i*                     8   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
dZ ej                    ZdZe	j        dk    rdZdZndZ G d	 d
e          Zd Zd Zd Zd ZddZddZd ZddZd Zd Zd Zd Zd Ze dk    r e             dS dS )    )with_statementNz0.5.7binwin32ScriptsTFc                       e Zd ZdS )	UserErrorN)__name__
__module____qualname__     }/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/_private/runtime_env/_clonevirtualenv.pyr   r      s        Dr   r   c                     t          |          }|                     |          r| ||dz            t          j        dfv rdS dS )al  Check if path is within matchwith's tree.
    >>> _dirmatch('/home/foo/bar', '/home/foo/bar')
    True
    >>> _dirmatch('/home/foo/bar/', '/home/foo/bar')
    True
    >>> _dirmatch('/home/foo/bar/etc', '/home/foo/bar')
    True
    >>> _dirmatch('/home/foo/bar2', '/home/foo/bar')
    False
    >>> _dirmatch('/home/foo/bar2/etc', '/home/foo/bar')
    False
        TF)len
startswithossep)path	matchwithmatchlens      r   	_dirmatchr   !   sL     9~~Hy!! d8hl+B&CPR|&S&St5r   c           	         t           j                            | t          d          }t          rt           j                                        }ni }t          j        |ddg|t          j	                  }|
                                \  }}|j        s|sJ |                    d                                          }|d         t          t          t           |dd                             fS )	z/obtain version and path info from a virtualenv.pythonz-czjimport sys;print ("%d.%d" % (sys.version_info.major, sys.version_info.minor));print ("\n".join(sys.path));)envstdoututf-8r   r   N)r   r   joinenv_bin_dir_WIN32environcopy
subprocessPopenPIPEcommunicate
returncodedecode
splitlineslistfilterbool)	venv_path
executabler   pr   errliness          r   _virtualenv_sysr3   4   s    ih??J joo 	,	
 
	 
	 
	A --//KFC|&&&&MM'""--//E8T&uQRRy112222r   c                     t           j                                       st          d z            t           j                            |          rt          d|z            t                              d d|d           t          j         |dt          j        d                     t          |          \  }}t                              d	           t           ||            fd
} ||          r+t                              d           t          | |           t          |          } ||d                   }|r
J |            t           |           d S )Nzsrc dir %r does not existzdest dir %r existszcloning virtualenv 'z' => 'z'...Tz*.pyc)symlinksignorezfixing scripts in bin...c                 :    t          fd| D                       S )Nc              3   <   K   | ]}t          |          |V  d S N)r   ).0isrc_dirs     r   	<genexpr>z5clone_virtualenv.<locals>.<lambda>.<locals>.<genexpr>\   s2      BB!Ia,A,ABABBBBBBr   )any)sr<   s    r   <lambda>z"clone_virtualenv.<locals>.<lambda>\   s$    BBBBqBBBBB r   zfixing paths in sys.path...r   )r   r   existsr   loggerinfoshutilcopytreeignore_patternsr3   fixup_scriptsfixup_syspath_itemsfix_symlink_if_necessary)r<   dst_dirversionsys_pathhas_oldv_sys	remainings   `      r   clone_virtualenvrP   N   sn   7>>'"" ?3g=>>>	w~~g 8,w6777
KKKIJJJ
O40Fw0O0O    (00GX
KK*+++'7G,,,BBBBGwx 8 	1222Hgw777G$$Ea!!I%=Wg.....r   c                 >   t                               d           t          j        |          D ]\  }}}t	          j        ||          D ]}t          j                            ||          }t          j                            |          rt          j        	                    |          }|
                    |           r\|                    | |          }t                               d|           t          j        |           t          j        ||           Ҍd S )NzEscanning for internal symlinks that point to the original virtual envzfixing symlink in )rB   rC   r   walk	itertoolschainr   r   islinkrealpathr   replacedebugremovesymlink)	r<   rJ   dirpathdirnames	filenamesa_filefull_file_pathtarget
new_targets	            r   rI   rI   i   s    KKWXXX(*(8(8 	; 	;$9oi:: 	; 	;FW\\'6::Nw~~n-- ;)).99$$W-- ;!'!A!AJLLL>>!KLLLIn---Jz>:::	;	; 	;r   c           	         t           j                            |t                    }t	          t          j        |                    \  }}}t          j        d          }|D ]}	t           j                            ||	          }
|	dd|z  dfv r.|	                    d          r|	                    |	          rY|	
                    d          ro|	dk    s|	                    d          r0t          t           j                            ||	          | |           t           j                            |
          rt          |
| |           t           j                            |
          rt          ||	| |||           !d S )	Nz(pythonw?([0-9]+(\.[0-9]+(\.[0-9]+)?)?)?$r   zpython%szactivate_this.pyz.pycactivatez	activate.)rewrite_env_python)r   r   r   r    nextrR   recompiler   matchendswithfixup_activaterU   
fixup_linkisfilefixup_script_)old_dirnew_dirrK   rd   bin_dirrootdirsfilespybinrefile_filenames              r   rG   rG   }   s   gll7K00GRWW--..D$jDEEG  7<<e,,XzG35GHHHh'' 	GMM%,@,@ 	^^F## 	j  E$4$4[$A$A 27<<e44gwGGGGW^^H%% 
	x'2222W^^H%% 	#5    r   c                    dt           j                            t           j                            |                    z  }dt           j                            t           j                            |                    z  d}t           j                            | |          t          d          5 }|                    d          dk    r	 d d d            d S |                    d           |                                d d d            n# 1 swxY w Y   sd S d
fd	}		 d         	                    d          
                                }
n# t          $ r Y d S w xY w|
t          |          d          }|
                    d	          sd S |
|k    r |	             d S |
                    |          r(|
t          |          d          |k    r |	|           d S |
                    |          r*|r(|
t          |          d          |k    r |	|           d S |rQ|
                    |          r<|
|k    r |	             d S |
t          |          d          |k    r |	|           d S d S d S )Nz#!%s/bin/pythonz#!/usr/bin/env pythonrb   s   #!r   c                 :   t                               dz             }| r|| z   }|dz                       d          }t          d          5 }|                    |           |                    dd                     d d d            d S # 1 swxY w Y   d S )N	fixing %s
r   wbr   )rB   rX   encodeopenwrite
writelines)rK   shebangfrv   r2   new_shebangs      r   rewrite_shebangz&fixup_script_.<locals>.rewrite_shebang   s    [8+,,, 	('GT>))'22(D!! 	$QGGGLLqrr###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   3BBBr   z#!r9   )r   r   normcaseabspathr   r   readseek	readlinesr)   stripUnicodeDecodeErrorr   r   )rq   ru   rn   ro   rK   rd   old_shebangenv_shebangr   r   bangshort_versionrv   r2   r   s               @@@r   rm   rm      s   #bg&6&6rww7O7O&P&PPK#bg&6&6rww7O7O&P&PPK)Kw||D%((H	h		 66!99        	
q			                $ $ $ $ $ $ $ $Qxw''--//    [))++,M??4   					%	% $s;/?/?/A/A*Bg*M*M     $$ [!!##$55&&&&&	  < < ;O#k""$$%00OG$$$$$ 10 	s*   4D)DDD)-E 
E%$E%c                    t                               d| z             t          | d          5 }|                                                    d          }d d d            n# 1 swxY w Y   |                    ||          }t          | d          5 }|                    |                    d                     d d d            d S # 1 swxY w Y   d S )Nr{   rx   r   r}   )rB   rX   r   r   r)   rW   r   r~   )rv   rn   ro   r   datas        r   rj   rj      s8   
LLx'(((	h		 (vvxxw''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( <<))D	h		 &	G$$%%%& & & & & & & & & & & & & & & & & &s#   (A""A&)A&)C		CCc                    t                               d| z             |t          j        |           }t          j                            t          j                            |                                         ||          }t          j                            |          s@t          j                            t          j        	                    ||                    }d}nd}t          ||          rN|r5|t          |          d                              t          j                  }n|                    ||d          }t          | |           d S )Nr{   TFr   )rB   rX   r   readlinkr   dirnamer   rW   isabsr   r   r   lstripr   _replace_symlink)rv   rn   ro   r`   origdirrellinks         r   rk   rk      s   
LLx'(((~X&&goobgooh7788@@'RRG7==   gv!>!>??!! 9 	9 CLLNN+2226::FF^^GWa88F Xv&&&&&r   c                 d    d| z  }t          j        ||           t          j        ||            d S )Nz%s.new)r   rZ   rename)rv   	newtargettmpfns      r   r   r      s6    xEJy%   IeXr   c                    | D ]O}t           j                            |          s#t           j                            t           j                            |                    }t          ||          r8|                    ||d          }t           j                            |          snt          ||          st          t          j	        |                    \  }}}|D ]o}t           j        
                    ||          }|                    d          rt          |||           I|                    d          rt          |||           pQd S )Nr   z.pthz	.egg-link)r   r   isdirr   r   r   rW   rA   re   rR   r   ri   fixup_pth_filefixup_egglink_file)	syspathrn   ro   r   rq   rr   rs   ru   rv   s	            r   rH   rH      sJ    ? ?w}}T"" 	w 5 566T7## 	<<!44D7>>$'' 4)) 	 //dE 	? 	?Ew||D%00H  (( ?x'::::"";// ?"8Wg>>>	?? ?r   c                    t                               d| z             t          | d          5 }|                                }d d d            n# 1 swxY w Y   d}t	          |          D ]\  }}t          |d          r|                    d          n|                                }|r*|                    d          s|                    d          rkt          ||          r|
                    ||d          ||<   d	}|rvt          | d
          5 }t          j                            d |D                       t          j        z   }|                    |           d d d            d S # 1 swxY w Y   d S d S )Nzfixup_pth_file %srFr)   r   #zimport r   Twc                 6    g | ]}|                                 S r   )r   )r:   lines     r   
<listcomp>z"fixup_pth_file.<locals>.<listcomp>&  s     &F&F&Ftzz||&F&F&Fr   )rB   rX   r   r   	enumeratehasattrr)   r   r   r   rW   r   linesepr   r   )	rv   rn   ro   r   r2   
has_changenumr   payloads	            r   r   r     s   
LL$x/000	h		                Ju%%  	T(/h(?(?IG$$$TPPRR 	ts++ 	ty/I/I 	tW%% 	gw::E#JJ (C   	Ajoo&F&F&F&F&FGG"*TGGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s$   AAAAE..E25E2c                     t                               d| z             t          | d          5 }|                                                    d                                          }d d d            n# 1 swxY w Y   t          ||          ro|                    ||d          }t          | d          5 }|dz                       d          }|	                    |           d d d            d S # 1 swxY w Y   d S d S )Nr{   rx   r   r   r}   r|   )
rB   rX   r   r   r)   r   r   rW   r~   r   )rv   rn   ro   r   links        r   r   r   *  sh   
LLx'(((	h		 0vvxxw''--//0 0 0 0 0 0 0 0 0 0 0 0 0 0 0w ||GWa00(D!! 	Q4K''00DGGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s#   :A44A8;A86.C11C58C5c                     t          j        d          } |                     ddddd           |                                 \  }}	 |\  }}n<# t          $ r/ t          dt                     |                     d	           Y nw xY wt          j	        
                    |          }t          j	        
                    |          }t          j        t          j        t          j        ft          d
|j                           }t          j        |d           	 t%          ||           d S # t&          $ r? t)          j                    d         }|                     t-          |                     Y d S w xY w)NzBusage: %prog [options] /path/to/existing/venv /path/to/cloned/venvz-vcountverboseF	verbosity)actiondestdefaulthelpzvirtualenv-clone znot enough arguments given.ry   z%(message)s)levelformatr   )optparseOptionParser
add_option
parse_args
ValueErrorprint__version__errorr   r   rV   loggingWARNINGINFODEBUGminr   basicConfigrP   r   sysexc_infostr)parseroptionsargsrn   ro   logleveles          r   mainr   5  s~   "L F W9e+     %%''MGT4 4 4 4{{45552333334 gw''Ggw''Gw}=c!W_>U>UVHh}===='*****   LNN1SVVs%   A 6BBD, ,AE54E5__main__)Fr9   )!
__future__r   r   r   r   os.pathrf   rD   r$   r   rS   r   	getLoggerrB   r    platformr!   	Exceptionr   r   r3   rP   rI   rG   rm   rj   rk   r   rH   r   r   r   r	   r   r   r   <module>r      s   & % % % % %   				  				      



     
			 <7KFFF	 	 	 	 		 	 	 	  &3 3 34/ / /6; ; ;(   :9 9 9 9x& & &' ' ' '2  ? ? ?(  .    0 zDFFFFF r   