3 f)@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl mZmZdaddZGdddejdd#Zd d Zd dZddZddZejejdddZddZd$ddZd%ddZd&ddZd'd!d"ZdS)(N)source_from_cache)make_legacy_pycstrip_python_stderrc CsVtdkrRdtjkrdadSytjtjdddgWntjk rLdaYnXdatS)NZ PYTHONHOMETz-Ez-czimport sys; sys.exit(0)F)$__cached_interp_requires_environmentosenviron subprocessZ check_callsys executableZCalledProcessErrorr r 2/usr/lib64/python3.6/test/support/script_helper.py interpreter_requires_environments   r c@seZdZddZdS)_PythonRunResultcCsd}|j|j}}t||kr0d|| d}t||krNd|| d}|jddj}|jddj}td|j|||fdS) NPds(... truncated stdout ...)s(... truncated stderr ...)asciireplacezRProcess return code is %d command line: %r stdout: --- %s --- stderr: --- %s ---i@)outerrlendecoderstripAssertionErrorrc)selfcmd_linemaxlenrrr r r fail>s   z_PythonRunResult.failN)__name__ __module__ __qualname__rr r r r r;srrrrc Ost}d|kr|jd}n | o$| }tjddg}|rB|jdn| rX| rX|jd|jddri}tjdkrtjd|d<n tjj}d |krd |d <|j ||j |t j |t j t j t j |d }|*z|j\}}Wd|jt jXWdQRX|j} t|}t| |||fS) NZ __isolatedz-XZ faulthandlerz-Iz-EZ __cleanenvZwin32Z SYSTEMROOTTERM)stdinstdoutstderrenv)r popr r appendplatformrrcopyupdateextendrPopenPIPEZ communicatekill_cleanup returncoderr) argsenv_varsZ env_requiredisolatedrr&procrrrr r r run_python_until_end[s:            r6cOs4t||\}}|jr|s&|j r0| r0|j||S)N)r6rr)Zexpected_successr2r3resrr r r _assert_pythons r8cOstd||S)NT)T)r8)r2r3r r r assert_python_oks r9cOstd||S)NF)F)r8)r2r3r r r assert_python_failuresr:)r$r%cOsXtjg}ts|jd|j||jdttj}d|d<t j |ft j ||d|S)Nz-Er&Zvt100r!)r#r$r%) r r r r(r, setdefaultdictrrrr-r.)r$r%r2kwrr&r r r spawn_pythons   r>cCs2|jj|jj}|jj|jtj|S)N)r#closer$readwaitrr0)pdatar r r kill_pythons    rDFcCsP|}|s|tjd7}tjj||}t|ddd}|j||jtj|S)Npywzutf-8)encoding) rextseppathjoinopenwriter? importlibinvalidate_caches)Z script_dirscript_basenamesourceZ omit_suffixZscript_filename script_nameZ script_filer r r make_scripts rRc Cs|tjd}tjj||}tj|d}|dkr~|jtj}t|dkrr|ddkrrt t |}tjj |}|}n tjj |}|j |||j |tjj||fS)NziprF __pycache__)rrHrIrJzipfileZipFilesplitseprrrbasenamerLr?) zip_dir zip_basenamerQZ name_in_zip zip_filenamezip_namezip_filepartsZ legacy_pycr r r make_zip_scripts      rbr"cCstj|t|d|dS)N__init__)rmkdirrR)Zpkg_dirZ init_sourcer r r make_pkgs recs0g}t|dd}|j|tjj|} t|||} |j| |rjtj|dd}tj| dd} |j|| ffddtd|dD} tjj | d tjj| } |tj d} tjj || }t j |d }x&| D]}tjj || }|j ||qW|j | | |jx|D]}tj|q W|tjj || fS) Nrcr"T)doraisecsg|]}tjjg|qSr )rrZrJ).0i)pkg_namer r sz make_zip_pkg..rfrSrF)rRr(rrIr[ py_compilecompiler,rangerJrHrWrXrLr?unlink)r\r]rjrOrPZdepthZcompiledrpZ init_nameZ init_basenamerQZ pkg_namesZscript_name_in_zipr^r_r`nameZinit_name_in_zipr )rjr make_zip_pkgs.         rr)rrr)F)N)r")rfF) collectionsrMr rZos.pathZtempfilerrm contextlibZshutilrWimportlib.utilrZ test.supportrrrr namedtuplerr6r8r9r:r.ZSTDOUTr>rDrRrbrerrr r r r s4 $3