
    7f9                    T   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 dlZd dl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 Z/d Z0 G d d          Z1 e2ed          r	ej3        gZ4ng Z4 G d de1          Z5 ej6        ej7        d d8                                D                       Z9 G d d e          Z:dS )"    )annotationsN)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          P/home/feoh/.local/pipx/shared/lib/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    3   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,   G   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   pushdr1   X   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   )r3   )pickledumps	Exceptionsetuptools.sandboxr3   dumprepr)typeexcclss      r   r9   zUnpickleableException.dumpg   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__staticmethodr9        r   r3   r3   b   s9          1 1 \1 1 1rD   r3   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   rC   selfs    r   	__enter__zExceptionSaver.__enter__|   s    rD   c                \    |sdS t                               ||          | _        || _        dS )NFT)r3   r9   _saved_tb)rI   r;   r<   tbs       r   __exit__zExceptionSaver.__exit__   s6     	5 ,00s;; trD   c                    dt          |           vrdS t          t          j        | j                  \  }}|                    | j                  )z"restore and re-raise any exceptionrL   N)varsmapr5   loadsrL   with_tracebackrM   )rI   r;   r<   s      r   resumezExceptionSaver.resume   sG     4::%%Fdk22	c  ***rD   N)r>   r?   r@   rA   rJ   rO   rU   rC   rD   r   rF   rF   v   sK         
  	 	 	+ + + + +rD   rF   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 ! 	     rD   )r   modulescopyrF   update_clear_modulesrU   )	saved_excdel_modulesr   s     @r   save_modulesrc      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   r`   r`      s0    && " "K!!" "rD   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_staterk      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"   joinrk   rc   r$   hide_setuptoolsr    r,   r1   
__import__)	setup_dirtemp_dirs     r   setup_contextrt      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	distutilsrn   rh   _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***rD   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.
    rw   N)r   r]   get_remove_shimfilterr~   r`   )rw   r]   s     r   rp   rp      sW     koo&7>>O"$$&&&]CK00G7rD   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 rD   __main__)__file__r>   )r'   r"   abspathdirnamert   re   r   r   insertr   __init__	callbacksappendr   dictr   
SystemExitargs)setup_scriptr   rr   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d
Z
dD ]$Z eee          r e
e           e            e<   %dddZer ede          Z ede          ZdD ]$Z eee          r ee           e            e<   %ddZdD ]$Z eee          r ee           e            e<   %d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 )_)rY   hasattr)rZ   namerI   s     r   
<listcomp>z,AbstractSandbox.__init__.<locals>.<listcomp>  sO     
 
 
??3''
 -4D$,?,?

 
 
rD   )dir_os_attrsrH   s   `r   r   zAbstractSandbox.__init__  s7    
 
 
 
C
 
 
rD   c           	     b    | j         D ]&}t          t          |t          ||                     'd S r   )r   setattrr'   getattr)rI   sourcer   s      r   _copyzAbstractSandbox._copy  s<    K 	5 	5DBgfd334444	5 	5rD   c                    |                      |            t          r| j        t          _        | j        t          _        d| _        d S )NT)r   _filebuiltinsfile_openr   _activerH   s    r   rJ   zAbstractSandbox.__enter__  s9    

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

3rD   c                N    | 5   |            cddd           S # 1 swxY w Y   dS )zRun 'func' under os sandboxingNrC   )rI   funcs     r   runzAbstractSandbox.run*  su     	 	466	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   
r   strc                @     t          t                      fd}|S )Nc                X    | j         r | j        ||g|R i |\  }} ||g|R i |S r   )r   _remap_pair)rI   srcdstr   kwr   originals        r   wrapz3AbstractSandbox._mk_dual_path_wrapper.<locals>.wrap2  sZ    | I+4+D#sHTHHHRHHS8C2t222r222rD   r   r   r   r   r   s   ` @r   _mk_dual_path_wrapperz%AbstractSandbox._mk_dual_path_wrapper/  s8    3%%	3 	3 	3 	3 	3 	3
 rD   )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rI   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...rD   r   )r   r   r   s   `` r   _mk_single_path_wrapperz'AbstractSandbox._mk_single_path_wrapper=  s=    1wsD11	/ 	/ 	/ 	/ 	/ 	/
 rD   r   r   )statlistdirr/   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>.wrape  s    | M(t(tAdAAAbAA))$0K0K0K0K0K0KLLL8D.4...2...rD   r   r   s   ` @r   _mk_single_with_returnz&AbstractSandbox._mk_single_with_returnb  s8    3%%	/ 	/ 	/ 	/ 	/ 	/ rD   )readlinktempnamc                @     t          t                      fd}|S )Nc                R     |i |}| j         r|                     |          S |S r   )r   r   )rI   r   r   retvalr   r   s       r   r   z'AbstractSandbox._mk_query.<locals>.wrapt  s<    Xt*r**F| 8))$777MrD   r   r   s   ` @r   	_mk_queryzAbstractSandbox._mk_queryq  s8    3%%	 	 	 	 	 	 rD   )r.   tmpnamc                    |S )z=Called to remap or validate any path, whether input or outputrC   )rI   r"   s     r   _validate_pathzAbstractSandbox._validate_path  s    rD   c                ,    |                      |          S zCalled for path inputsr   rI   	operationr"   r   r   s        r   r   zAbstractSandbox._remap_input      ""4(((rD   c                ,    |                      |          S )zCalled for path outputsr   )rI   r   r"   s      r   r   zAbstractSandbox._remap_output  r   rD   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   rI   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
 	
rD   )r   r   r   )r>   r?   r@   rA   r   r   r   rJ   rO   r   r   _AbstractSandbox__namer   r   r   r   r   r   r   r   r   r   r   r   rC   rD   r   r   r     s.       NNG
 
 
5 5 5      
    0 = =73 	=44V<<FFHHV      7''66##FE22E ? ?* 73 	?66v>>FFHHV	 	 	 	 * > >73 	>55f==FFHHV	 	 	 	 ' 1 173 	1(y00FFHHV  ) ) )) ) )
 
 
 
 
rD   r   devnullc                      e Zd ZU dZe                    g d          Zg Zd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   zlist[str | re.Pattern]_exception_patternsc                2   t           j                            t           j                            |                    | _        t           j                            | j        d          | _        d |D             | _        t          	                    |            d S )N c                    g | ]>}t           j                            t           j                            |                    ?S rC   )r'   r"   normcaserealpath)rZ   r"   s     r   r   z-DirectorySandbox.__init__.<locals>.<listcomp>  sE     
 
 
9=BGRW--d3344
 
 
rD   )
r'   r"   r   r   _sandboxro   _prefix_exceptionsr   r   )rI   sandbox
exceptionss      r   r   zDirectorySandbox.__init__  s    (()9)9')B)BCCw||DM266
 
AK
 
 
 	  &&&&&rD   c                (    ddl m}  ||||          )Nr   )r	   )r8   r	   )rI   r   r   r   r	   s        r   
_violationzDirectorySandbox._violation  s)    777777y$333rD   rc                |    |dvr(|                      |          s | j        d||g|R i | t          ||g|R i |S )Nr   rtr   rUUr   )_okr   r   rI   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1rD   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-$---"---rD   c                0    |                      d           d S )Nr   )r   rH   s    r   r   zDirectorySandbox.tmpnam  s    !!!!!rD   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   rY   r   )rI   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   rX   )rZ   	exceptionfilepaths     r   r\   z-DirectorySandbox._exempted.<locals>.<genexpr>  sB       
 
/8H	**
 
 
 
 
 
rD   c              3  B   K   | ]}t          j        |          V  d S r   )rematch)rZ   patternr  s     r   r\   z-DirectorySandbox._exempted.<locals>.<genexpr>  s@       
 
,3BHWh''
 
 
 
 
 
rD   )r   r   	itertoolschainany)rI   r  start_matchespattern_matches
candidatess    `   r   r
  zDirectorySandbox._exempted  sx    
 
 
 
<@<L
 
 

 
 
 
7;7O
 
 
 _]ODD
:rD   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rD   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rD     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   )rI   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7rD   N)r   )r  )r>   r?   r@   rA   r   fromkeysr  r   __annotations___EXCEPTIONSr   r   r   r   r   r  r
  r   r   r   rC   rD   r   r   r     s        FF     I  3544444+6 ' ' ' '4 4 4
  2	2 	2 	2 	2
. . . .
" " "" " "      8 8 8 8 8 8rD   r   c                :    g | ]}t          t          |d           S )r   r   )rZ   as     r   r   r     s4        	Q  rD   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 )NrC   )r   tmplformatr   )rI   cmdr   kwargss       r   __str__zSandboxViolation.__str__  s/     IT6ty++&((+++rD   N)	r>   r?   r@   rA   textwrapdedentlstripr(  r,  rC   rD   r   r	   r	     sO        OO8?
	  fhh 	, , , , ,rD   r	   r   );
__future__r   r'   r   r)   operator	functoolsr  r  
contextlibr5   r-  r   rh   distutils.errorsr   r   platformrY   $org.python.modules.posix.PosixModulepythonr]   posixPosixModuler   r   r   r   	NameErrorr   r   __all__r   contextmanagerr    r$   r,   r1   r7   r3   rF   rc   r`   rk   rt   r|   r~   rp   r
   r   r   r   r#  r   reduceor_r{   r  r	   rC   rD   r   <module>r?     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