
    z%i-                        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     N/home/uftp/.pyenv/versions/3.12.0/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        )Ni@  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	        |dd      5 }|j                  |       d d d        t        j                          |S # 1 sw Y   xY w)Npywzutf-8)encoding)r
   extseppathjoinopenwrite	importlibinvalidate_caches)
script_dirscript_basenamesourceomit_suffixscript_filenamescript_namescript_files          r   make_scriptrt      st    %O299t++'',,z?;K	k3	1 "[&!"!" "s   	A99B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
   rf   rg   rh   zipfileZipFilesplitsepr   r   r   basenamerj   )	zip_dirzip_basenamerr   name_in_zipzip_filenamezip_namezip_fileparts
legacy_pycs	            r   make_zip_scriptr      s    		)%/Lww||G\2H	3	' 	18%%bff-E5zQ59#=,->{-KL
 gg..z:( gg..{;{K0	1 RWW\\(K888	1 	1s   BDDc                 H    t        j                  |        t        | d|       y )N__init__)r
   mkdirrt   )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   rv   rd   )rt   r9   r
   rg   r~   
py_compilecompiler=   ranger}   rh   rf   rz   r{   rj   unlink)r   r   pkg_namern   ro   depthcompiledr   	init_nameinit_basenamerr   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FqhZ\*FIFimRWW5E5Ek5RS		)%/Lww||G\2H	3	' 88 	8D!ww||D-@NN9&67	8 	{$67	8
  
		$ RWW\\(,>??? G8 8s   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
   rg   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) collectionsrk   r   r
   os.pathr   r   rz   importlib.utilr   testr   test.support.import_helperr   r	   r   
namedtupler   requires_subprocessrI   rN   rR   rT   r?   STDOUTrZ   ra   rt   r   r   r   r   r   r   r   <module>r      s     
 	     ,  6 (, $%0P&-{--.@*>@ &@ 14 14h  34 )z7H7H " ".		9(2 ,1@< - -r   