
    F\h2                     z    S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJr  SSK	J
r
   " S S\5      r " S S	5      rg)
    N)support)	os_helper   )print_warningc                       \ rS rSrSrg)SkipTestEnvironment    N)__name__
__module____qualname____firstlineno____static_attributes__r
       0/usr/lib/python3.13/test/libregrtest/save_env.pyr   r      s    r   r   c            
          \ rS rSrSrS rSrS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4S3 r5S4 r6S5 r7S6 r8S7 r9S8 r:\;" \<5       V VVVs/ s H+  nUR{                  S95      (       d  M  [}        [x        U5      PM-     snnnn r?S: r@S; rAS< rBS= rCS> rDS? rES@ rFSArGgBs  snnnn f )Csaved_test_environment   a  Save bits of the test environment and restore them at block exit.

    with saved_test_environment(test_name, 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.
c                4    Xl         X l        X0l        X@l        g N)	test_nameverbosequietpgo)selfr   r   r   r   s        r   __init__saved_test_environment.__init__'   s    "
r   )zsys.argvcwdz	sys.stdinz
sys.stdoutz
sys.stderrz
os.environzsys.pathzsys.path_hooks
__import__zwarnings.filterszasyncore.socket_mapzlogging._handlerszlogging._handlerListzsys.gettracezsys.warnoptionsz!multiprocessing.process._danglingzthreading._danglingzsysconfig._CONFIG_VARSzsysconfig._INSTALL_SCHEMESfileslocalezwarnings.showwarningshutil_archive_formatsshutil_unpack_formatsz!asyncio.events._event_loop_policyzurllib.requests._url_tempfileszurllib.requests._openerc                 (    [         R                  U   $ r   )sysmodulesr   names     r   
get_module!saved_test_environment.get_moduleF   s    {{4  r   c                 N     U R                  U5      $ ! [         a    [        ef = fr   )r)   KeyErrorr   r'   s     r   try_get_module%saved_test_environment.try_get_moduleJ   s+    	&??4(( 	&%%	&s    $c                 N    U R                  S5      n[        UR                  5      $ Nzurllib.request)r-   list_url_tempfilesr   urllib_requests     r   "get_urllib_requests__url_tempfiles9saved_test_environment.get_urllib_requests__url_tempfilesQ   s$    ,,-=>N1122r   c                 B    U H  n[         R                  " U5        M     g r   )r   unlink)r   	tempfilesfilenames      r   &restore_urllib_requests__url_tempfiles=saved_test_environment.restore_urllib_requests__url_tempfilesT   s    !HX& "r   c                 <    U R                  S5      nUR                  $ r0   )r-   _openerr3   s     r   get_urllib_requests__opener2saved_test_environment.get_urllib_requests__openerX   s    ,,-=>%%%r   c                 2    U R                  S5      nXl        g r0   )r)   r>   )r   openerr4   s      r   restore_urllib_requests__opener6saved_test_environment.restore_urllib_requests__opener[   s    )9:!'r   c                 N    U R                  S5        [        R                  " 5       $ Nasyncio)r-   r   maybe_get_event_loop_policyr   s    r   %get_asyncio_events__event_loop_policy<saved_test_environment.get_asyncio_events__event_loop_policy_   s    I&2244r   c                 H    U R                  S5      nUR                  U5        g rF   )r)   set_event_loop_policy)r   policyrG   s      r   )restore_asyncio_events__event_loop_policy@saved_test_environment.restore_asyncio_events__event_loop_policyb   s    //),%%f-r   c                 x    [        [        R                  5      [        R                  [        R                  S S  4$ r   )idr%   argvrI   s    r   get_sys_argv#saved_test_environment.get_sys_argvf   #    #((|SXXsxx{22r   c                 L    US   [         l        US   [         R                  S S & g Nr      )r%   rS   )r   
saved_argvs     r   restore_sys_argv'saved_test_environment.restore_sys_argvh       a= mr   c                 ,    [         R                  " 5       $ r   )osgetcwdrI   s    r   get_cwdsaved_test_environment.get_cwdl   s    yy{r   c                 0    [         R                  " U5        g r   )r_   chdir)r   	saved_cwds     r   restore_cwd"saved_test_environment.restore_cwdn   s    
r   c                 "    [         R                  $ r   r%   stdoutrI   s    r   get_sys_stdout%saved_test_environment.get_sys_stdoutq       zzr   c                     U[         l        g r   ri   )r   saved_stdouts     r   restore_sys_stdout)saved_test_environment.restore_sys_stdouts   	    !
r   c                 "    [         R                  $ r   r%   stderrrI   s    r   get_sys_stderr%saved_test_environment.get_sys_stderrv   rm   r   c                     U[         l        g r   rt   )r   saved_stderrs     r   restore_sys_stderr)saved_test_environment.restore_sys_stderrx   rr   r   c                 "    [         R                  $ r   r%   stdinrI   s    r   get_sys_stdin$saved_test_environment.get_sys_stdin{   s    yyr   c                     U[         l        g r   r}   )r   saved_stdins     r   restore_sys_stdin(saved_test_environment.restore_sys_stdin}   s	    	r   c                     [        [        R                  5      [        R                  [        [        R                  5      4$ r   )rR   r_   environdictrI   s    r   get_os_environ%saved_test_environment.get_os_environ   s$    "**~rzz4

+;;;r   c                     US   [         l        [         R                  R                  5         [         R                  R                  US   5        g rX   )r_   r   clearupdate)r   saved_environs     r   restore_os_environ)saved_test_environment.restore_os_environ   s5    "1%






-*+r   c                 x    [        [        R                  5      [        R                  [        R                  S S  4$ r   )rR   r%   pathrI   s    r   get_sys_path#saved_test_environment.get_sys_path   rV   r   c                 L    US   [         l        US   [         R                  S S & g rX   )r%   r   )r   
saved_paths     r   restore_sys_path'saved_test_environment.restore_sys_path   r]   r   c                 x    [        [        R                  5      [        R                  [        R                  S S  4$ r   )rR   r%   
path_hooksrI   s    r   get_sys_path_hooks)saved_test_environment.get_sys_path_hooks   s%    #..!3>>3>>!3DDDr   c                 L    US   [         l        US   [         R                  S S & g rX   )r%   r   )r   saved_hookss     r   restore_sys_path_hooks-saved_test_environment.restore_sys_path_hooks   s    $Q'Nqr   c                 ,    [         R                  " 5       $ r   )r%   gettracerI   s    r   get_sys_gettrace'saved_test_environment.get_sys_gettrace   s    ||~r   c                 0    [         R                  " U5        g r   )r%   settrace)r   	trace_fxns     r   restore_sys_gettrace+saved_test_environment.restore_sys_gettrace   s    Yr   c                 "    [         R                  $ r   builtinsr   rI   s    r   get___import__%saved_test_environment.get___import__   s    """r   c                     U[         l        g r   r   )r   import_s     r   restore___import__)saved_test_environment.restore___import__   s
    %r   c                     U R                  S5      n[        UR                  5      UR                  UR                  S S  4$ Nwarnings)r-   rR   filtersr   r   s     r   get_warnings_filters+saved_test_environment.get_warnings_filters   s;    &&z2(""#X%5%5x7G7G7JJJr   c                 ^    U R                  S5      nUS   Ul        US   UR                  S S & g )Nr   r   rY   )r)   r   )r   saved_filtersr   s      r   restore_warnings_filters/saved_test_environment.restore_warnings_filters   s2    ??:.(++A.r   c                     [         R                  R                  S5      nU=(       a    UR                  R	                  5       =(       d    0 $ )Ntest.support.asyncore)r%   r&   get
socket_mapcopy)r   asyncores     r   get_asyncore_socket_map.saved_test_environment.get_asyncore_socket_map   s4    ;;??#:;6H//446<"<r   c                     [         R                  R                  S5      nUb+  UR                  SS9  UR                  R                  U5        g g )Nr   T)
ignore_all)r%   r&   r   	close_allr   r   )r   	saved_mapr   s      r   restore_asyncore_socket_map2saved_test_environment.restore_asyncore_socket_map   sE    ;;??#:;$/&&y1  r   c                 p    U R                  S5      nUR                  UR                  R                  5       4$ Nshutil)r-   _ARCHIVE_FORMATSr   r   r   s     r   get_shutil_archive_formats1saved_test_environment.get_shutil_archive_formats   s4    $$X. &&(?(?(D(D(FFFr   c                     U R                  S5      nUS   Ul        UR                  R                  5         UR                  R                  US   5        g Nr   r   r   )r)   r   r   r   r   savedr   s      r   restore_shutil_archive_formats5saved_test_environment.restore_shutil_archive_formats   sF    *"'(%%'&&uQx0r   c                 p    U R                  S5      nUR                  UR                  R                  5       4$ r   )r-   _UNPACK_FORMATSr   r   s     r   get_shutil_unpack_formats0saved_test_environment.get_shutil_unpack_formats   s2    $$X.%%v'='='B'B'DDDr   c                     U R                  S5      nUS   Ul        UR                  R                  5         UR                  R                  US   5        g r   )r)   r   r   r   r   s      r   restore_shutil_unpack_formats4saved_test_environment.restore_shutil_unpack_formats   sF    *!&q$$&%%eAh/r   c                     U R                  S5      n[        UR                  5      UR                  UR                  R                  5       4$ Nlogging)r-   rR   	_handlersr   r   r   s     r   get_logging__handlers,saved_test_environment.get_logging__handlers   s?    %%i0'##$g&7&79J9J9O9O9QQQr   c                     g r   r
   )r   saved_handlerss     r   restore_logging__handlers0saved_test_environment.restore_logging__handlers       r   c                     U R                  S5      n[        UR                  5      UR                  UR                  S S  4$ r   )r-   rR   _handlerListr   s     r   get_logging__handlerList/saved_test_environment.get_logging__handlerList   s<    %%i0'&&')=)=w?S?STU?VVVr   c                     g r   r
   )r   saved_handlerLists     r   restore_logging__handlerList3saved_test_environment.restore_logging__handlerList   r   r   c                 x    [        [        R                  5      [        R                  [        R                  S S  4$ r   )rR   r%   warnoptionsrI   s    r   get_sys_warnoptions*saved_test_environment.get_sys_warnoptions   s%    #//"COOS__Q5GGGr   c                 L    US   [         l        US   [         R                  S S & g rX   )r%   r   )r   saved_optionss     r   restore_sys_warnoptions.saved_test_environment.restore_sys_warnoptions   s!    '**1-r   c                 >    [         R                  R                  5       $ r   )	threading	_danglingr   rI   s    r   get_threading__dangling.saved_test_environment.get_threading__dangling   s    ""''))r   c                 ~    [         R                  R                  5         [         R                  R                  U5        g r   )r   r   r   r   )r   r   s     r   restore_threading__dangling2saved_test_environment.restore_threading__dangling   s(    !!#""5)r   c                 x    U R                  S5      nUR                  5         UR                  R                  5       $ Nzmultiprocessing.process)r-   _cleanupr   r   )r   multiprocessing_processs     r   %get_multiprocessing_process__dangling<saved_test_environment.get_multiprocessing_process__dangling   s5    "&"5"56O"P((*&005577r   c                     U R                  S5      nUR                  R                  5         UR                  R                  U5        g r  )r)   r   r   r   )r   r   r  s      r   )restore_multiprocessing_process__dangling@saved_test_environment.restore_multiprocessing_process__dangling   s8    "&//2K"L))//1))007r   c                     U R                  S5      nUR                  S5        [        UR                  5      UR                  [	        UR                  5      4$ )N	sysconfigprefix)r-   get_config_varrR   _CONFIG_VARSr   r   r  s     r   get_sysconfig__CONFIG_VARS1saved_test_environment.get_sysconfig__CONFIG_VARS   sN    ''4	  *9))*I,B,BY++,. 	.r   c                     U R                  S5      nUS   Ul        UR                  R                  5         UR                  R                  US   5        g Nr  r   rY   )r)   r  r   r   r   r   r  s      r   restore_sysconfig__CONFIG_VARS5saved_test_environment.restore_sysconfig__CONFIG_VARS   sF    OOK0	!&q	$$&%%eAh/r   c                     U R                  S5      n[        UR                  5      UR                  UR                  R                  5       4$ )Nr  )r-   rR   _INSTALL_SCHEMESr   r  s     r   get_sysconfig__INSTALL_SCHEMES5saved_test_environment.get_sysconfig__INSTALL_SCHEMES   sD    ''4	9--.	0J0J**//13 	3r   c                     U R                  S5      nUS   Ul        UR                  R                  5         UR                  R                  US   5        g r  )r)   r  r   r   r  s      r   "restore_sysconfig__INSTALL_SCHEMES9saved_test_environment.restore_sysconfig__INSTALL_SCHEMES   sF    OOK0	%*1X	"""((*""))%(3r   c                 L    [        S [        R                  " 5        5       5      $ )Nc              3      #    U  HH  nUR                  S 5      (       a  M  U[        R                  R                  U5      (       a  SOS-   v   MJ     g7f)z.hypothesis/ N)
startswithr_   r   isdir).0fns     r   	<genexpr>3saved_test_environment.get_files.<locals>.<genexpr>  s>      ; ,"]]=9 >b277==#4#4C"= ,s
   A2A)sortedr_   listdirrI   s    r   	get_files saved_test_environment.get_files  s"     ; "

; ; 	;r   c                 0   [         R                  nX!;  a  US-   U;  aw  [        R                  R	                  U5      (       a  [         R
                  " U5        g [        R                  R                  U5      (       a  [         R                  " U5        g g g g )Nr"  )r   TESTFNr_   r   isfiler8   r%  rmtree)r   saved_valuer'  s      r   restore_files$saved_test_environment.restore_files
  sn     b3h{%Bww~~b!!  $r""  $ # &C r   LC_c                     / nU R                    H,  n UR                  U[        R                  " US 5      45        M.     U$ ! [        [
        4 a     ME  f = fr   )_lcappendr!   	setlocale	TypeError
ValueError)r   pairingslcs      r   
get_locale!saved_test_environment.get_locale  sX    ((BV%5%5b$%? @A 
  z* s   (AAAc                 F    U H  u  p#[         R                  " X#5        M     g r   )r!   r9  )r   r   r=  settings       r   restore_locale%saved_test_environment.restore_locale  s     KBR) !r   c                 <    U R                  S5      nUR                  $ r   )r-   showwarningr   s     r   get_warnings_showwarning/saved_test_environment.get_warnings_showwarning   s    &&z2###r   c                 2    U R                  S5      nXl        g r   )r)   rE  )r   fxnr   s      r   restore_warnings_showwarning3saved_test_environment.restore_warnings_showwarning#  s    ??:."r   c              #      #    U R                    H8  nUR                  SS5      nSU-   nSU-   nU[        X5      [        X5      4v   M:     g 7f)N._get_restore_)	resourcesreplacegetattr)r   r(   method_suffixget_namerestore_names        r   resource_info$saved_test_environment.resource_info'  sN     NND LLc2M-H%5L/1LLL	 #s   A
Ac                     / U l         U R                  5        H+  u  pn U" 5       nU R                   R                  XX445        M-     U $ ! [         a     M>  f = fr   )saved_valuesrW  r   r8  )r   r(   r   restoreoriginals        r   	__enter__ saved_test_environment.__enter__.  sd    "&"4"4"6Dw5 $$d%CD #7 	 ' s   A		
AAc                 <   U R                   nS U l         [        R                  " 5         U Hn  u  pVpxU" 5       n	X:w  d  M  S[        l        U" U5        U R                  (       a  M:  U R
                  (       a  MM  [        U SU R                   SU SU	 S35        Mp     g)NTz was modified by z
  Before: z
  After:   F)rZ  r   
gc_collectenvironment_alteredr   r   r   r   )
r   exc_typeexc_valexc_tbrZ  r(   r   r[  r\  currents
             r   __exit__saved_test_environment.__exit__9  s    ((  	,8(DweG".2+!zzz$(((!& 1$..1A B%%-J /%%,IQ01 -9 r   )r   r   rZ  r   r   N)Hr   r   r   r   __doc__r   rQ  r)   r-   r5   r;   r?   rC   rJ   rO   rT   r[   ra   rf   rk   rp   rv   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r,  r3  dirr!   r$  rS  r7  r>  rB  rF  rJ  rW  r]  rg  r   )r&  r=  rS  r!   s   0000r   r   r      s~    I!&3'&(5.3$"" <,
3$E+ #&K/
=2G1E0RWH.**
88
.034;
% *-V $2mmE" 762 $C*$#M	O$s   7D
D
r   )r   r!   r_   r%   r   testr   test.supportr   utilsr   	Exceptionr   r   r
   r   r   <module>ro     s5      	 
   "  	) 	r rr   