
    $wLf9                     X   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 dl	Z	d dl
Z
d dlmZmZ d dlZd dlmZ d dlmZ ej                            d          rd dlmc mc mc mZ nej        e j                 Z	 eZn# e$ r dZY nw xY weZg dZ d!dZ!ej"        d!d            Z#ej"        d	             Z$ej"        d
             Z%ej"        d             Z& G d de'          Z( G d d          Z)ej"        d             Z*d Z+ej"        d             Z,ej"        d             Z-h dZ.d Z/d Z0d Z1 G d d          Z2 e3e d          r	e j4        gZ5ng Z5 G d de2          Z6 ej7        ej8        d d9                                D                       Z: G d d e          Z;dS )"    N)UnionList)DistutilsError)working_setjava)AbstractSandboxDirectorySandboxSandboxViolation	run_setupc                     d}t          | |          5 }|                                }ddd           n# 1 swxY w Y   ||}t          || d          }t          |||           dS )z.
    Python 3 implementation of execfile.
    rbNexec)openreadcompiler   )filenameglobalslocalsmodestreamscriptcodes          2lib/python3.11/site-packages/setuptools/sandbox.py	_execfiler   %   s     D	h		               ~68V,,Dws   488c              #      K   t           j        d d          }| | t           j        d d <   	 |V  |t           j        d d <   d S # |t           j        d d <   w xY wN)sysargv)replsaveds     r   	save_argvr!   2   sf      HQQQKEes   A Ac               #      K   t           j        d d          } 	 | V  | t           j        d d <   d S # | t           j        d d <   w xY wr   )r   pathr    s    r   	save_pathr%   =   sQ      HQQQKEes	   / Ac              #      K   t          j        | d           t          j        }| t          _        	 dV  |t          _        dS # |t          _        w xY w)zL
    Monkey-patch tempfile.tempdir with replacement, ensuring it exists
    T)exist_okN)osmakedirstempfiletempdir)replacementr    s     r   override_tempr-   F   s]      
 Kd++++E"H! 5    s   A Ac              #      K   t          j                    }t          j        |            	 |V  t          j        |           d S # t          j        |           w xY wr   )r(   getcwdchdir)targetr    s     r   pushdr2   W   sR      IKKEHV
s   A Ac                   (    e Zd ZdZed             ZdS )UnpickleableExceptionzP
    An exception representing another Exception that could not be pickled.
    c           	          	 t          j        |           t          j        |          fS # t          $ r5 ddlm} |                    | |t          |                              cY S w xY w)z
        Always return a dumped (pickled) type and exc. If exc can't be pickled,
        wrap it in UnpickleableException first.
        r   )r4   )pickledumps	Exceptionsetuptools.sandboxr4   dumprepr)typeexcclss      r   r:   zUnpickleableException.dumpf   s{    	1<%%v|C'8'888 	1 	1 	1GGGGGG88CT#YY00000		1s   '* <A)(A)N)__name__
__module____qualname____doc__staticmethodr:        r   r4   r4   a   s9          1 1 \1 1 1rE   r4   c                   $    e Zd ZdZd Zd Zd ZdS )ExceptionSaverz]
    A Context Manager that will save an exception, serialize, and restore it
    later.
    c                     | S r   rD   selfs    r   	__enter__zExceptionSaver.__enter__{   s    rE   c                 \    |sdS t                               ||          | _        || _        dS )NFT)r4   r:   _saved_tb)rJ   r<   r=   tbs       r   __exit__zExceptionSaver.__exit__~   s6     	5 ,00s;; trE   c                     dt          |           vrdS t          t          j        | j                  \  }}|                    | j                  )z"restore and re-raise any exceptionrM   N)varsmapr6   loadsrM   with_tracebackrN   )rJ   r<   r=   s      r   resumezExceptionSaver.resume   sG     4::%%Fdk22	c  ***rE   N)r?   r@   rA   rB   rK   rP   rV   rD   rE   r   rG   rG   u   sK         
  	 	 	+ + + + +rE   rG   c               #   P  K   t           j                                        t                      5 } V  ddd           n# 1 swxY w Y   t           j                                       fdt           j        D             }t          |           |                                  dS )z
    Context in which imported modules are saved.

    Translates exceptions internal to the context into the equivalent exception
    outside the context.
    Nc              3   N   K   | ]}|v|                     d           |V   dS )z
encodings.N
startswith).0mod_namer    s     r   	<genexpr>zsave_modules.<locals>.<genexpr>   sP        5  ##L11 ! 	     rE   )r   modulescopyrG   update_clear_modulesrV   )	saved_excdel_modulesr    s     @r   save_modulesrd      s       KE			 Y               Ku     K ;s   AAAc                 D    t          |           D ]}t          j        |= d S r   )listr   r^   )module_namesr\   s     r   ra   ra      s0    && " "K!!" "rE   c               #      K   t          j                    } 	 | V  t          j        |            d S # t          j        |            w xY wr   )pkg_resources__getstate____setstate__r$   s    r   save_pkg_resources_staterl      sP      &((E*"5)))))"5))))s	   1 Ac              #   Z  K   t           j                            | d          }t                      5  t	                      5  t                      5  t                       t                      5  t          |          5  t          |           5  t          d           d V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Ntemp
setuptools)r(   r#   joinrl   rd   r%   hide_setuptoolsr!   r-   r2   
__import__)	setup_dirtemp_dirs     r   setup_contextru      s     w||Iv..H	!	#	# 	" 	"^^ 	" 	" " "!!![[ " "&x00 " ""9-- " "&|444!EEE" " " " " " " " " " " " " " "" " " " " " " " " " " " " " "" " " " " " " " " " " " " " "" " " " " " " " " " " " " " "	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   D  DC1,C	<CB, C,B00C3B04C7C	CC	
CC	C1CC1!C"C1%D1C55D8C59D<D D	D D	D  D$'D$>   Cython	distutilsro   ri   _distutils_hackc                 L    |                      dd          d         }|t          v S )aH  
    >>> _needs_hiding('setuptools')
    True
    >>> _needs_hiding('pkg_resources')
    True
    >>> _needs_hiding('setuptools_plugin')
    False
    >>> _needs_hiding('setuptools.__init__')
    True
    >>> _needs_hiding('distutils')
    True
    >>> _needs_hiding('os')
    False
    >>> _needs_hiding('Cython')
    True
    .   r   )split_MODULES_TO_HIDE)r\   base_modules     r   _needs_hidingr      s(    " ..a((+K***rE   c                      t           j                            dd          } | |                                  t	          t
          t           j                  }t          |           dS )a%  
    Remove references to setuptools' modules from sys.modules to allow the
    invocation to import the most appropriate setuptools. This technique is
    necessary to avoid issues such as #315 where setuptools upgrading itself
    would fail to find a function declared in the metadata.
    rx   N)r   r^   get_remove_shimfilterr   ra   )rx   r^   s     r   rq   rq      sW     koo&7>>O"$$&&&]CK00G7rE   c                    t           j                            t           j                            |                     }t	          |          5  	 | gt          |          z   t          j        dd<   t          j                            d|           t          j
                     t          j                            d            t          |          5  t          | d          }t          | |           ddd           n# 1 swxY w Y   n,# t           $ r}|j        r|j        d         r Y d}~nd}~ww xY wddd           dS # 1 swxY w Y   dS )z8Run a distutils setup script, sandboxed in its directoryNr   c                 *    |                                  S r   )activate)dists    r   <lambda>zrun_setup.<locals>.<lambda>   s    dmmoo rE   __main__)__file__r?   )r(   r#   abspathdirnameru   rf   r   r   insertr   __init__	callbacksappendr	   dictr   
SystemExitargs)setup_scriptr   rs   nsvs        r   r   r      s    = =>>I	y	!	!  	'.4::5CHQQQKHOOAy))) """!(()E)EFFF!),, , ,<*EEE,+++, , , , , , , , , , , , , , ,  	 	 	v !&) 	                 sa   EBD"D 4D D	DD	DE
D5D0+E0D55EE	E	c                      e Zd ZdZdZd Zd Zd Zd Zd Z	de
fd	Zd
D ]$Z eee          r ee           e            e<   %dde
fdZer ede          Z ede          ZdD ]$Z eee          r ee           e            e<   %de
fdZdD ]$Z eee          r ee           e            e<   %de
fdZdD ]$Z eee          r ee           e            e<   %d Zd Zd Zd ZdS )r   zDWrap 'os' module and 'open()' builtin for virtualizing setup scriptsFc                 R      fdt          t                    D              _        d S )Nc                 ^    g | ])}|                     d           t          |          '|*S )_)rZ   hasattr)r[   namerJ   s     r   
<listcomp>z,AbstractSandbox.__init__.<locals>.<listcomp>  sO     
 
 
??3''
 -4D$,?,?

 
 
rE   )dir_os_attrsrI   s   `r   r   zAbstractSandbox.__init__  s7    
 
 
 
C
 
 
rE   c           	      b    | j         D ]&}t          t          |t          ||                     'd S r   )r   setattrr(   getattr)rJ   sourcer   s      r   _copyzAbstractSandbox._copy  s<    K 	5 	5DBgfd334444	5 	5rE   c                     |                      |            t          r| j        t          _        | j        t          _        d| _        d S )NT)r   _filebuiltinsfile_openr   _activerI   s    r   rK   zAbstractSandbox.__enter__  s9    

4 	' JHM
rE   c                     d| _         t          rt          t          _        t          t          _        |                     t                     d S NF)r   r   r   r   r   r   r   r   )rJ   exc_type	exc_value	tracebacks       r   rP   zAbstractSandbox.__exit__"  s2     	"!HM

3rE   c                 N    | 5   |            cddd           S # 1 swxY w Y   dS )zRun 'func' under os sandboxingNrD   )rJ   funcs     r   runzAbstractSandbox.run)  su     	 	466	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   
r   c                 @     t          t                      fd}|S )Nc                 X    | j         r | j        ||g|R i |\  }} ||g|R i |S r   )r   _remap_pair)rJ   srcdstr   kwr   originals        r   wrapz3AbstractSandbox._mk_dual_path_wrapper.<locals>.wrap1  sZ    | I+4+D#sHTHHHRHHS8C2t222r222rE   r   r   r   r   r   s   ` @r   _mk_dual_path_wrapperz%AbstractSandbox._mk_dual_path_wrapper.  s8    3%%	3 	3 	3 	3 	3 	3
 rE   )renamelinksymlinkNc                 D     pt          t                      fd}|S )Nc                 N    | j         r | j        |g|R i |} |g|R i |S r   )r   _remap_inputrJ   r#   r   r   r   r   s       r   r   z5AbstractSandbox._mk_single_path_wrapper.<locals>.wrap?  sR    | B(t(tAdAAAbAA8D.4...2...rE   r   )r   r   r   s   `` r   _mk_single_path_wrapperz'AbstractSandbox._mk_single_path_wrapper<  s=    1wsD11	/ 	/ 	/ 	/ 	/ 	/
 rE   r   r   )statlistdirr0   r   chmodchownmkdirremoveunlinkrmdirutimelchownchrootlstat	startfilemkfifomknodpathconfaccessc                 @     t          t                      fd}|S )Nc                     | j         r2 | j        |g|R i |}|                      |g|R i |          S  |g|R i |S r   )r   r   _remap_outputr   s       r   r   z4AbstractSandbox._mk_single_with_return.<locals>.wrapd  s    | M(t(tAdAAAbAA))$0K0K0K0K0K0KLLL8D.4...2...rE   r   r   s   ` @r   _mk_single_with_returnz&AbstractSandbox._mk_single_with_returna  s8    3%%	/ 	/ 	/ 	/ 	/ 	/ rE   )readlinktempnamc                 @     t          t                      fd}|S )Nc                 R     |i |}| j         r|                     |          S |S r   )r   r   )rJ   r   r   retvalr   r   s       r   r   z'AbstractSandbox._mk_query.<locals>.wraps  s<    Xt*r**F| 8))$777MrE   r   r   s   ` @r   	_mk_queryzAbstractSandbox._mk_queryp  s8    3%%	 	 	 	 	 	 rE   )r/   tmpnamc                     |S )z=Called to remap or validate any path, whether input or outputrD   )rJ   r#   s     r   _validate_pathzAbstractSandbox._validate_path  s    rE   c                 ,    |                      |          S zCalled for path inputsr   rJ   	operationr#   r   r   s        r   r   zAbstractSandbox._remap_input      ""4(((rE   c                 ,    |                      |          S )zCalled for path outputsr   )rJ   r   r#   s      r   r   zAbstractSandbox._remap_output  r   rE   c                 V     | j         |dz   |g|R i | | j         |dz   |g|R i |fS )?Called for path pairs like rename, link, and symlink operationsz-fromz-to)r   rJ   r   r   r   r   r   s         r   r   zAbstractSandbox._remap_pair  s\     Di'13DDDDDDDi%/BtBBBrBB
 	
rE   r   )r?   r@   rA   rB   r   r   r   rK   rP   r   strr   _AbstractSandbox__namer   r   r   r   r   r   r   r   r   r   r   r   rD   rE   r   r   r     sJ       NNG
 
 
5 5 5      
C     0 = =73 	=44V<<FFHHV c      7''66##FE22E ? ?* 73 	?66v>>FFHHV	S 	 	 	 	 * > >73 	>55f==FFHHV	 	 	 	 	 ' 1 173 	1(y00FFHHV  ) ) )) ) )
 
 
 
 
rE   r   devnullc                       e Zd ZU dZe                    g d          Zg Zee	e
ej        f                  ed<   	 efdZd ZerddZddZd	 Zd
 Zd Zd Zd ZddZdS )r	   z<Restrict operations to a single subdirectory - pseudo-chroot)r   r   r   r   r   r   r   r   r   r   r   r   r   _exception_patternsc                 2   t           j                            t           j                            |                    | _        t           j                            | j        d          | _        d |D             | _        t          	                    |            d S )N c                     g | ]>}t           j                            t           j                            |                    ?S rD   )r(   r#   normcaserealpath)r[   r#   s     r   r   z-DirectorySandbox.__init__.<locals>.<listcomp>  sE     
 
 
9=BGRW--d3344
 
 
rE   )
r(   r#   r   r   _sandboxrp   _prefix_exceptionsr   r   )rJ   sandbox
exceptionss      r   r   zDirectorySandbox.__init__  s    (()9)9')B)BCCw||DM266
 
AK
 
 
 	  &&&&&rE   c                 (    ddl m}  ||||          )Nr   )r
   )r9   r
   )rJ   r   r   r   r
   s        r   
_violationzDirectorySandbox._violation  s)    777777y$333rE   rc                 |    |dvr(|                      |          s | j        d||g|R i | t          ||g|R i |S )Nr   rtr   rUUr   )_okr   r   rJ   r#   r   r   r   s        r   r   zDirectorySandbox._file  sc    7777d@T@@@R@@@t1d111b111rE   c                 |    |dvr(|                      |          s | j        d||g|R i | t          ||g|R i |S )Nr  r   )r  r   r   r  s        r   r   zDirectorySandbox._open  sc    333DHHTNN3DOFD$<<<<<<<T4-$---"---rE   c                 0    |                      d           d S )Nr   )r   rI   s    r   r   zDirectorySandbox.tmpnam  s    !!!!!rE   c                 4   | j         }	 d| _         t          j                            t          j                            |                    }|                     |          p$|| j        k    p|                    | j                  	 || _         S # || _         w xY wr   )	r   r(   r#   r   r   	_exemptedr   rZ   r   )rJ   r#   activer   s       r   r  zDirectorySandbox._ok  s    		" DLw''(8(8(>(>??Hx(( 5t},5&&t|44 "DLL6DL!!!!s   A<B 	Bc                     fd| j         D             }fd| j        D             }t          j        ||          }t	          |          S )Nc              3   B   K   | ]}                     |          V  d S r   rY   )r[   	exceptionfilepaths     r   r]   z-DirectorySandbox._exempted.<locals>.<genexpr>  sB       
 
/8H	**
 
 
 
 
 
rE   c              3   B   K   | ]}t          j        |          V  d S r   )rematch)r[   patternr  s     r   r]   z-DirectorySandbox._exempted.<locals>.<genexpr>  s@       
 
,3BHWh''
 
 
 
 
 
rE   )r   r   	itertoolschainany)rJ   r  start_matchespattern_matches
candidatess    `   r   r  zDirectorySandbox._exempted  sx    
 
 
 
<@<L
 
 

 
 
 
7;7O
 
 
 _]ODD
:rE   c                     || j         v rD|                     |          s/ | j        |t          j                            |          g|R i | |S r   )	write_opsr  r   r(   r#   r   r   s        r   r   zDirectorySandbox._remap_input  sW    &&txx~~&DOIrw'7'7'='=KKKKKKKrE   c                     |                      |          r|                      |          s | j        |||g|R i | ||fS )r   )r  r   r   s         r   r   zDirectorySandbox._remap_pair  sU    xx}} 	>DHHSMM 	>DOIsC=$==="===SzrE     c                     |t           z  r)|                     |          s | j        d|||g|R i | t          j        |||g|R i |S )zCalled for low-level os.open()zos.open)WRITE_FLAGSr  r   r   r   )rJ   r   flagsr   r   r   s         r   r   zDirectorySandbox.open  sn    ; 	Gtxx~~ 	GDOItUDF4FFF2FFFxeT7D777B777rE   N)r   )r  )r?   r@   rA   rB   r   fromkeysr  r   r   r   r   r  Pattern__annotations___EXCEPTIONSr   r   r   r   r   r  r  r   r   r   rD   rE   r   r	   r	     s        FF     I  9;eCO45:::4+6 ' ' ' '4 4 4
  2	2 	2 	2 	2
. . . .
" " "" " "      8 8 8 8 8 8rE   r	   c                 :    g | ]}t          t          |d           S )r   r   )r[   as     r   r   r     s4        	Q  rE   z4O_WRONLY O_RDWR O_APPEND O_CREAT O_TRUNC O_TEMPORARYc                   \    e Zd ZdZ ej        d                                          Zd ZdS )r
   zEA setup script attempted to modify the filesystem outside the sandboxa  
        SandboxViolation: {cmd}{args!r} {kwargs}

        The package setup script has attempted to modify files on your system
        that are not within the EasyInstall build area, and has been aborted.

        This package cannot be safely installed by EasyInstall, and may not
        support alternate installation locations even if you run its setup
        script by hand.  Please inform the package's author and the EasyInstall
        maintainers to find out if a fix or workaround is available.
        c                 T    | j         \  }}} | j        j        di t                      S )NrD   )r   tmplformatr   )rJ   cmdr   kwargss       r   __str__zSandboxViolation.__str__  s/     IT6ty++&((+++rE   N)	r?   r@   rA   rB   textwrapdedentlstripr*  r.  rD   rE   r   r
   r
     sO        OO8?
	  fhh 	, , , , ,rE   r
   r   )<r(   r   r*   operator	functoolsr  r  
contextlibr6   r/  r   typingr   r   ri   distutils.errorsr   r   platformrZ   $org.python.modules.posix.PosixModulepythonr^   posixPosixModuler   r   r   r   	NameErrorr   r   __all__r   contextmanagerr!   r%   r-   r2   r8   r4   rG   rd   ra   rl   ru   r}   r   rq   r   r   r   r   r%  r	   reduceor_r|   r   r
   rD   rE   r   <module>rA     s   				 



           				                    + + + + + + % % % % % %<6"" 6666666666666666
+bg
CEE   EEE  
  
  
  
         ! ! !    1 1 1 1 1I 1 1 1(+ + + + + + + +<   2" " "
 * * * " " "   + + +*    (E
 E
 E
 E
 E
 E
 E
 E
P 72y :,KKKY8 Y8 Y8 Y8 Y8 Y8 Y8 Y8x iL GMMOO   , , , , ,~ , , , , ,s   B BB