h2ddlZddlZddlZddlZddlZddlmZddlmZddl m Z Gdde Z GddZ dS) N)support) os_helper) print_warningceZdZdS)SkipTestEnvironmentN)__name__ __module__ __qualname__0/usr/lib/python3.11/test/libregrtest/save_env.pyrr sDr rceZdZdZdDdddZdZdZdZd Zd Z d Z d Z d Z dZ dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd Zd!Z d"Z!d#Z"d$Z#d%Z$d&Z%d'Z&d(Z'd)Z(d*Z)d+Z*d,Z+d-Z,d.Z-d/Z.d0Z/d1Z0d2Z1d3Z2d4Z3d5Z4d6Z5d7Z6d8Z7d9Z8d:Z9d;e:e;DZd>Z?d?Z@d@ZAdAZBdBZCdCS)Esaved_test_environmentaSave bits of the test environment and restore them at block exit. with saved_test_environment(testname, verbose, quiet): #stuff Unless quiet is True, a warning is printed to stderr if any of the saved items was changed by the test. The support.environment_altered attribute is set to True if a change is detected. If verbose is more than 1, the before and after state of changed items is also printed. rF)pgoc>||_||_||_||_dSN)testnameverbosequietr)selfrrrrs r __init__zsaved_test_environment.__init__%s"    r )zsys.argvcwdz sys.stdinz sys.stdoutz sys.stderrz os.environzsys.pathzsys.path_hooks __import__zwarnings.filterszasyncore.socket_mapzlogging._handlerszlogging._handlerListz sys.gettracezsys.warnoptionsz!multiprocessing.process._danglingzthreading._danglingzsysconfig._CONFIG_VARSzsysconfig._INSTALL_SCHEMESfileslocalezwarnings.showwarningshutil_archive_formatsshutil_unpack_formatsz!asyncio.events._event_loop_policyzurllib.requests._url_tempfileszurllib.requests._openerc&tj|Sr)sysmodulesrnames r get_modulez!saved_test_environment.get_moduleDs{4  r cX ||S#t$rtwxYwr)r#KeyErrorrr!s r try_get_modulez%saved_test_environment.try_get_moduleHs: &??4(( ( & & &% % &s)cT|d}t|jSNzurllib.request)r&list_url_tempfilesrurllib_requests r "get_urllib_requests__url_tempfilesz9saved_test_environment.get_urllib_requests__url_tempfilesOs',,-=>>N1222r c8|D]}tj|dSr)runlink)r tempfilesfilenames r &restore_urllib_requests__url_tempfilesz=saved_test_environment.restore_urllib_requests__url_tempfilesRs/! ' 'H  X & & & & ' 'r c:|d}|jSr()r&_openerr+s r get_urllib_requests__openerz2saved_test_environment.get_urllib_requests__openerVs,,-=>>%%r c>|d}||_dSr()r#r4)ropenerr,s r restore_urllib_requests__openerz6saved_test_environment.restore_urllib_requests__openerYs")9::!'r cR|dtjSNasyncio)r&rmaybe_get_event_loop_policyrs r %get_asyncio_events__event_loop_policyz3>!!!3DDDr cX|dt_|dtjdd<dSrI)rr~)r saved_hookss r restore_sys_path_hooksz-saved_test_environment.restore_sys_path_hookss'$Q'Nqqqr c(tjSr)rgettracer=s r get_sys_gettracez'saved_test_environment.get_sys_gettraces|~~r c.tj|dSr)rsettrace)r trace_fxns r restore_sys_gettracez+saved_test_environment.restore_sys_gettraces Yr ctjSrbuiltinsrr=s r get___import__z%saved_test_environment.get___import__s ""r c|t_dSrr)rimport_s r restore___import__z)saved_test_environment.restore___import__s%r c~|d}t|j|j|jddfSNwarnings)r&rDfiltersrrs r get_warnings_filtersz+saved_test_environment.get_warnings_filterss<&&z22("##X%5x7G7JJJr cn|d}|d|_|d|jdd<dS)NrrJrK)r#r)r saved_filtersrs r restore_warnings_filtersz/saved_test_environment.restore_warnings_filterss<??:..(++A.r cztjd}|r|jpiS)Nasyncore)rr get socket_mapcopy)rrs r get_asyncore_socket_mapz.saved_test_environment.get_asyncore_socket_maps4;??:..6H/4466<"tjSr) threading _danglingrr=s r get_threading__danglingz.saved_test_environment.get_threading__danglings"'')))r ctjtj|dSr)rrrsrt)rrs r restore_threading__danglingz2saved_test_environment.restore_threading__danglings4!!###""5)))))r c|d}||jSNzmultiprocessing.process)r&_cleanuprr)rmultiprocessing_processs r %get_multiprocessing_process__danglingz"&"5"56O"P"P((***&055777r c|d}|j|j|dSr)r#rrsrt)rrrs r )restore_multiprocessing_process__danglingz@saved_test_environment.restore_multiprocessing_process__danglingsG"&//2K"L"L)//111)0077777r c|d}|dt|j|jt |jfS)N sysconfigprefix)r&get_config_varrD _CONFIG_VARSrprrs r get_sysconfig__CONFIG_VARSz1saved_test_environment.get_sysconfig__CONFIG_VARSsT'' 44   ***9)**I,BY+,,. .r c|d}|d|_|j|j|ddSNrrJrK)r#rrsrtrrrs r restore_sysconfig__CONFIG_VARSz5saved_test_environment.restore_sysconfig__CONFIG_VARSsUOOK00 !&q $$&&&%%eAh/////r c|d}t|j|j|jfS)Nr)r&rD_INSTALL_SCHEMESrrs r get_sysconfig__INSTALL_SCHEMESz5saved_test_environment.get_sysconfig__INSTALL_SCHEMESsD'' 44 9-.. 0J*//113 3r c|d}|d|_|j|j|ddSr)r#rrsrtrs r "restore_sysconfig__INSTALL_SCHEMESz9saved_test_environment.restore_sysconfig__INSTALL_SCHEMESsUOOK00 %*1X ""((***"))%(33333r cVtdtjDS)Nc3bK|]*}|tj|rdndzV+dS)/N)rPrxisdir).0fns r z3saved_test_environment.get_files..sR..27==#4#4z!saved_test_environment.sB $ $ $2mmE"" $762   $ $ $r cg}|jD]D} ||tj|df.#tt f$rYAwxYw|Sr)_lcappendr setlocale TypeError ValueError)rpairingsrs r get_localez!saved_test_environment.get_localesn(  B V%5b$%?%? @AAAAz*    s*8A  A c@|D]\}}tj||dSr)rr)rrrsettings r restore_localez%saved_test_environment.restore_locales5  * *KB  R ) ) ) ) * *r c:|d}|jSr)r& showwarningrs r get_warnings_showwarningz/saved_test_environment.get_warnings_showwarnings&&z22##r c>|d}||_dSr)r#r )rfxnrs r restore_warnings_showwarningz3saved_test_environment.restore_warnings_showwarnings!??:.."r c#K|jD]E}|dd}d|z}d|z}|t||t||fVFdS)N._get_restore_) resourcesreplacer)rr" method_suffixget_name restore_names r resource_infoz$saved_test_environment.resource_info#svN M MD LLc22M -H% 5Lh//|1L1LL L L L L  M Mr cg|_|D]@\}}} |}n#t$rYwxYw|j||||fA|Sr) saved_valuesrrr)rr"rrestoreoriginals r __enter__z saved_test_environment.__enter__*s"&"4"4"6"6 E E D#w 355&       $ $dC(%C D D D D s . ;;c |j}d|_tj|D]\\}}}}|} | |krEdt_|||js'|js t |d|jd|d| d]dS)NTz was modified by z Before: z After:  F)rr gc_collectenvironment_alteredrrrr) rexc_typeexc_valexc_tbrr"rrrcurrents r __exit__zsaved_test_environment.__exit__5s(   ,8 1 1 (D#wceeG("".2+!!!z1$(1!00$-00%-00%,000111ur N)rF)Drr r __doc__rrr#r&r-r2r5r8r>rBrFrMrRrVrZr^rcrfrjrmrqrvryr|rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrdirrrrr r rrrr(r r r rrs   I!!!&&&333'''&&&(((555...333$$$""""""   <<<,,, 333$$$EEE+++   ###&&&KKK/// ===222 GGG 111 EEE000 RRR   WWW   HHH... ****** 888 888 ... 000 333444 ...%%% $ $V $ $ $C***$$$###MMM   r r)rrrPrrtestr test.supportrtest.libregrtest.utilsr Exceptionrrr r r r/s """"""000000     )   ppppppppppr