
    9bhZ.                        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 d dlmZ dad Z G d d e j                   dd            Z ej$                         d	        Z ej$                         d
        Zd Zd Z ej$                         ej.                  ej0                  dd       Zd ZddZddZddZ	 ddZ ej$                         d        Zy)    N)source_from_cache)support)make_legacy_pycc                     	 t         Xdt        j                  v rda yt        j                  sda y	 t        j                  t        j                  dddg       da t         S t         S # t
        j                  $ r
 da Y t         S w xY w)N
PYTHONHOMETF-Ez-czimport sys; sys.exit(0))
$__cached_interp_requires_environmentosenvironr   has_subprocess_support
subprocess
check_callsys
executableCalledProcessError     D/opt/python-3.12.12/usr/lib/python3.12/test/support/script_helper.py interpreter_requires_environmentr      s    " ,32::%370--380	9!!3>>4#')B#D E
 490//// ,, 	8370 0/	8s   'A& &BBc                       e Zd Z	 d Zy)_PythonRunResultc                 L   	 d}| j                   | j                  }}t        |      |kD  r	d|| d  z   }t        |      |kD  r	d|| d  z   }|j                  dd      j	                         }|j                  dd      j	                         }t        d| j                  |||fz        )Ni0u  s   (... truncated stdout ...)s   (... truncated stderr ...)asciireplacezRProcess return code is %d
command line: %r

stdout:
---
%s
---

stderr:
---
%s
---)outerrlendecoderstripAssertionErrorrc)selfcmd_linemaxlenr   r   s        r   failz_PythonRunResult.failA   s    B88TXXSs8f/#vgh-?Cs8f/#vgh-?Cjj),335jj),335 # !% # # %% & 	&r   N)__name__
__module____qualname__r%   r   r   r   r   r   >   s
    <&r   r   )r!   r   r   c                     t               }|j                  dd       }d|v r|j                  d      }n| xr | }t        j                  ddg}|r|j	                  d       n|s|s|j	                  d       |j                  dd       r,i }t        j
                  dk(  r5t        j                  d	   |d	<   nt        j                  j                         }d
|vrd|d
<   |j                  |       |j                  |        t        j                  |t        j                  t        j                  t        j                  ||      }|5  	 |j                         \  }}	|j                          t        j                           	 d d d        |j"                  }
t%        |
	      |fS # |j                          t        j                           w xY w# 1 sw Y   MxY w)N__cwd
__isolated-Xfaulthandlerz-Ir   
__cleanenvwin32
SYSTEMROOTTERM )stdinstdoutstderrenvcwd)r   popr   r   appendplatformr
   r   copyupdateextendr   PopenPIPEcommunicatekill_cleanup
returncoder   )argsenv_varsenv_requiredr7   isolatedr#   r6   procr   r   r!   s              r   run_python_until_endrI   ^   s   35L
,,w
%Cx<<-<4$4n5H 	l ||L$'<<7" !#

< 8C jjoo XFJJxOODHJOO *
 c+D 
	"'')HCIIK! 
 
BBS)833 IIK! 
s$   GF"$G"&GGGc                |    t        |i |\  }}|j                  r| s|j                  s| s|j                  |       |S N)rI   r!   r%   )expected_successrD   rE   resr#   s        r   _assert_pythonrN      s9    ($;(;MC#SVV<LJr   c                  "    	 t        dg| i |S )NTrN   rD   rE   s     r   assert_python_okrR      s    	 $2222r   c                  "    	 t        dg| i |S )NFrP   rQ   s     r   assert_python_failurerT      s     %3$3(33r   )r4   r5   c                 *   	 t         j                  g}t               s|j                  d       |j	                  |       |j                  dt        t        j                              }d|d<   t        j                  |ft        j                  | |d|S )Nr   r6   vt100r1   )r3   r4   r5   )r   r   r   r9   r=   
setdefaultdictr
   r   r   r>   r?   )r4   r5   rD   kwr#   r6   s         r   spawn_pythonrZ      s    
 H+-OOD --tBJJ/
0CCKH "JOO#)&" " "r   c                     	 | j                   j                          | j                  j                         }| j                  j                          | j	                          t        j                          |S rK   )r3   closer4   readwaitr   rB   )pdatas     r   kill_pythonra      sK    IGGMMO88==?DHHNN FFHKr   c                    |}|s|t         j                  dz   z  }t         j                  j                  | |      }t	        |t
              r)t        |dd      5 }|j                  |       d d d        n&t        |d      5 }|j                  |       d d d        t        j                          |S # 1 sw Y   xY w# 1 sw Y   +xY w)Npywzutf-8)encodingwb)
r
   extseppathjoin
isinstancestropenwrite	importlibinvalidate_caches)
script_dirscript_basenamesourceomit_suffixscript_filenamescript_namescript_files          r   make_scriptrw      s    %O299t++'',,z?;K&#+sW5f% 65 +t$f% %! 65 %$s   B0 B<0B9<Cc                 D   |t         j                  z   dz   }t         j                  j                  | |      }t	        j
                  |d      5 }||j                  t         j                        }t        |      dk\  r>|d   dk(  r6t        t        |            }t         j                  j                  |      }|}nt         j                  j                  |      }|j                  ||       d d d        |t         j                  j                  ||      fS # 1 sw Y   +xY w)Nziprd      __pycache__)r
   rg   rh   ri   zipfileZipFilesplitsepr   r   r   basenamerm   )	zip_dirzip_basenameru   name_in_zipzip_filenamezip_namezip_fileparts
legacy_pycs	            r   make_zip_scriptr      s    		)%/Lww||G\2H	3	'8%%bff-E5zQ59#=,->{-KL
 gg..z:( gg..{;{K0 
( RWW\\(K888 
(	's   BDDc                 H    t        j                  |        t        | d|       y )N__init__)r
   mkdirrw   )pkg_dirinit_sources     r   make_pkgr      s    HHW[1r   c                    g }t        | dd      }|j                  |       t        j                  j	                  |      }	t        | ||      }
|j                  |
       |rAt        j                  |d      }t        j                  |
d      }
|j                  ||
f       t        d|dz         D cg c]%  }t        j                  j                  |g|z        ' }}t        j                  j                  |d   t        j                  j	                  |
            }|t        j                  z   dz   }t        j                  j                  | |      }t        j                  |d      5 }|D ]4  }t        j                  j                  ||	      }|j                  ||       6 |j                  |
|       d d d        |D ]  }t        j                  |        |t        j                  j                  ||      fS c c}w # 1 sw Y   LxY w)	Nr   r2   T)doraise   ry   rd   )rw   r9   r
   rh   r   
py_compilecompiler=   ranger   ri   rg   r}   r~   rm   unlink)r   r   pkg_namerq   rr   depthcompiledr   	init_nameinit_basenameru   i	pkg_namesscript_name_in_zipr   r   r   nameinit_name_in_zips                      r   make_zip_pkgr     s   FGZ4I
MM)GG$$Y/Mg?K
MM+&&y$?	 ((dCy+./49!U1W4EF4EqhZ\*4EIFimRWW5E5Ek5RS		)%/Lww||G\2H	3	'8D!ww||D-@NN9&67  	{$67	 
(
 
		$  RWW\\(,>??? G 
(	's   2*G<*AHH
c                    t         j                  rd }dt        j                  j	                  |        }t                t         ||      d       t        j                  dddd| d	g}t        j                  |      }t         || d
|j                         d       |j                  rt        | d      y t        d| d	       y )Nc                     d|  dS )Nz===== z ======r   )texts    r   titlezrun_test_script.<locals>.title#  s    D6))r   zscript T)flushr   r,   r-   z-uz-vz completed: exit code z failed)r   verboser
   rh   r   printr   r   r   runrC   r    rR   )scriptr   r   rD   rH   s        r   run_test_scriptr     s     	* ))&123eDk& dND&$O~~d#etf24??2CDE	?? D6!122  	vt,r   )FrK   )r2   )r   F) collectionsrn   r   r
   os.pathr   r   r}   importlib.utilr   testr   test.support.import_helperr   r	   r   
namedtupler   requires_subprocessrI   rN   rR   rT   r?   STDOUTrZ   ra   rw   r   r   r   r   r   r   r   <module>r      s     
 	     ,  6 (, $%0P&-{--.@*>@ &@ 14 14h  34 )z7H7H " ".	 9(2 ,1@< - -r   