o
    JXh2                     @   sn   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
 G dd deZG dd dZdS )	    N)support)	os_helper)print_warningc                   @   s   e Zd ZdS )SkipTestEnvironmentN)__name__
__module____qualname__ r	   r	   C/opt/python-3.10.19/usr/lib/python3.10/test/libregrtest/save_env.pyr      s    r   c                   @   s  e Zd Z	 dddddZdZdd Zd	d
 Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Z d?d@ Z!dAdB Z"dCdD Z#dEdF Z$dGdH Z%dIdJ Z&dKdL Z'dMdN Z(dOdP Z)dQdR Z*dSdT Z+dUdV Z,dWdX Z-dYdZ Z.d[d\ Z/d]d^ Z0d_d` Z1dadb Z2dcdd Z3dedf Z4dgdh Z5didj Z6dkdl Z7dmdn Z8dodp e9e:D Z;dqdr Z<dsdt Z=dudv Z>dwdx Z?dydz Z@d{d| ZAd}d~ ZBdS )saved_test_environmentr   F)pgoc                C   s   || _ || _|| _|| _d S N)testnameverbosequietr   )selfr   r   r   r   r	   r	   r
   __init__%   s   
zsaved_test_environment.__init__)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.showwarningZshutil_archive_formatsZshutil_unpack_formatsz!asyncio.events._event_loop_policyzurllib.requests._url_tempfileszurllib.requests._openerc                 C   s
   t j| S r   )sysmodulesr   namer	   r	   r
   
get_moduleD      
z!saved_test_environment.get_modulec                 C   s    z|  |W S  ty   tw r   )r   KeyErrorr   r   r	   r	   r
   try_get_moduleH   s
   z%saved_test_environment.try_get_modulec                 C   s   |  d}t|jS Nzurllib.request)r   listZ_url_tempfilesr   urllib_requestr	   r	   r
   "get_urllib_requests__url_tempfilesO      

z9saved_test_environment.get_urllib_requests__url_tempfilesc                 C   s   |D ]}t | qd S r   )r   unlink)r   Z	tempfilesfilenamer	   r	   r
   &restore_urllib_requests__url_tempfilesR   s   z=saved_test_environment.restore_urllib_requests__url_tempfilesc                 C      |  d}|jS r   )r   _openerr!   r	   r	   r
   get_urllib_requests__openerV      
z2saved_test_environment.get_urllib_requests__openerc                 C      |  d}||_d S r   )r   r)   )r   openerr"   r	   r	   r
   restore_urllib_requests__openerY   r$   z6saved_test_environment.restore_urllib_requests__openerc                 C   s   |  d t S Nasyncio)r   r   Zmaybe_get_event_loop_policyr   r	   r	   r
   %get_asyncio_events__event_loop_policy]   s   
z<saved_test_environment.get_asyncio_events__event_loop_policyc                 C   s   |  d}|| d S r/   )r   Zset_event_loop_policy)r   Zpolicyr0   r	   r	   r
   )restore_asyncio_events__event_loop_policy`   s   
z@saved_test_environment.restore_asyncio_events__event_loop_policyc                 C      t tjtjtjd d  fS r   )idr   argvr1   r	   r	   r
   get_sys_argvd      z#saved_test_environment.get_sys_argvc                 C       |d t _|d t jd d < d S N      )r   r6   )r   Z
saved_argvr	   r	   r
   restore_sys_argvf      
z'saved_test_environment.restore_sys_argvc                 C      t  S r   )osgetcwdr1   r	   r	   r
   get_cwdj      zsaved_test_environment.get_cwdc                 C      t | d S r   )r@   chdir)r   Z	saved_cwdr	   r	   r
   restore_cwdl      z"saved_test_environment.restore_cwdc                 C      t jS r   r   stdoutr1   r	   r	   r
   get_sys_stdouto      z%saved_test_environment.get_sys_stdoutc                 C   
   |t _d S r   rI   )r   Zsaved_stdoutr	   r	   r
   restore_sys_stdoutq      
z)saved_test_environment.restore_sys_stdoutc                 C   rH   r   r   stderrr1   r	   r	   r
   get_sys_stderrt   rL   z%saved_test_environment.get_sys_stderrc                 C   rM   r   rP   )r   Zsaved_stderrr	   r	   r
   restore_sys_stderrv   rO   z)saved_test_environment.restore_sys_stderrc                 C   rH   r   r   stdinr1   r	   r	   r
   get_sys_stdiny   rL   z$saved_test_environment.get_sys_stdinc                 C   rM   r   rT   )r   Zsaved_stdinr	   r	   r
   restore_sys_stdin{   rO   z(saved_test_environment.restore_sys_stdinc                 C   s   t tjtjttjfS r   )r5   r@   environdictr1   r	   r	   r
   get_os_environ~   s   z%saved_test_environment.get_os_environc                 C   s(   |d t _t j  t j|d  d S r:   )r@   rX   clearupdate)r   Zsaved_environr	   r	   r
   restore_os_environ   s   

z)saved_test_environment.restore_os_environc                 C   r4   r   )r5   r   pathr1   r	   r	   r
   get_sys_path   r8   z#saved_test_environment.get_sys_pathc                 C   r9   r:   )r   r^   )r   Z
saved_pathr	   r	   r
   restore_sys_path   r>   z'saved_test_environment.restore_sys_pathc                 C   r4   r   )r5   r   
path_hooksr1   r	   r	   r
   get_sys_path_hooks   r8   z)saved_test_environment.get_sys_path_hooksc                 C   r9   r:   )r   ra   )r   Zsaved_hooksr	   r	   r
   restore_sys_path_hooks   r>   z-saved_test_environment.restore_sys_path_hooksc                 C   r?   r   )r   gettracer1   r	   r	   r
   get_sys_gettrace   rC   z'saved_test_environment.get_sys_gettracec                 C   rD   r   )r   settrace)r   Z	trace_fxnr	   r	   r
   restore_sys_gettrace   rG   z+saved_test_environment.restore_sys_gettracec                 C   rH   r   builtinsr   r1   r	   r	   r
   get___import__   rL   z%saved_test_environment.get___import__c                 C   rM   r   rh   )r   import_r	   r	   r
   restore___import__   rO   z)saved_test_environment.restore___import__c                 C   &   |  d}t|j|j|jd d  fS Nwarnings)r   r5   filtersr   ro   r	   r	   r
   get_warnings_filters   s   
z+saved_test_environment.get_warnings_filtersc                 C   s*   |  d}|d |_|d |jd d < d S )Nro   r;   r<   )r   rp   )r   Zsaved_filtersro   r	   r	   r
   restore_warnings_filters   s   

z/saved_test_environment.restore_warnings_filtersc                 C   s   t jd}|r|j pi S )Nasyncore)r   r   get
socket_mapcopy)r   rt   r	   r	   r
   get_asyncore_socket_map   s   z.saved_test_environment.get_asyncore_socket_mapc                 C   s4   t jd}|d ur|jdd |j| d S d S )Nrt   T)Z
ignore_all)r   r   ru   Z	close_allrv   r\   )r   Z	saved_maprt   r	   r	   r
   restore_asyncore_socket_map   s
   z2saved_test_environment.restore_asyncore_socket_mapc                 C      |  d}|j|j fS Nshutil)r   _ARCHIVE_FORMATSrw   r   r|   r	   r	   r
   get_shutil_archive_formats   s   
z1saved_test_environment.get_shutil_archive_formatsc                 C   2   |  d}|d |_|j  |j|d  d S Nr|   r   r;   )r   r}   r[   r\   r   savedr|   r	   r	   r
   restore_shutil_archive_formats      


z5saved_test_environment.restore_shutil_archive_formatsc                 C   rz   r{   )r   _UNPACK_FORMATSrw   r~   r	   r	   r
   get_shutil_unpack_formats      
z0saved_test_environment.get_shutil_unpack_formatsc                 C   r   r   )r   r   r[   r\   r   r	   r	   r
   restore_shutil_unpack_formats   r   z4saved_test_environment.restore_shutil_unpack_formatsc                 C   "   |  d}t|j|j|j fS Nlogging)r   r5   	_handlersrw   r   r   r	   r	   r
   get_logging__handlers   s   
z,saved_test_environment.get_logging__handlersc                 C      d S r   r	   )r   Zsaved_handlersr	   r	   r
   restore_logging__handlers      z0saved_test_environment.restore_logging__handlersc                 C   rm   r   )r   r5   _handlerListr   r	   r	   r
   get_logging__handlerList   s   
z/saved_test_environment.get_logging__handlerListc                 C   r   r   r	   )r   Zsaved_handlerListr	   r	   r
   restore_logging__handlerList   r   z3saved_test_environment.restore_logging__handlerListc                 C   r4   r   )r5   r   warnoptionsr1   r	   r	   r
   get_sys_warnoptions   r8   z*saved_test_environment.get_sys_warnoptionsc                 C   r9   r:   )r   r   )r   Zsaved_optionsr	   r	   r
   restore_sys_warnoptions   r>   z.saved_test_environment.restore_sys_warnoptionsc                 C   s
   t j S r   )	threading	_danglingrw   r1   r	   r	   r
   get_threading__dangling   r   z.saved_test_environment.get_threading__danglingc                 C   s   t j  t j| d S r   )r   r   r[   r\   )r   r   r	   r	   r
   restore_threading__dangling   r   z2saved_test_environment.restore_threading__danglingc                 C   s   |  d}|  |j S Nzmultiprocessing.process)r   _cleanupr   rw   )r   multiprocessing_processr	   r	   r
   %get_multiprocessing_process__dangling   s   

z<saved_test_environment.get_multiprocessing_process__danglingc                 C   s$   |  d}|j  |j| d S r   )r   r   r[   r\   )r   r   r   r	   r	   r
   )restore_multiprocessing_process__dangling   s   

z@saved_test_environment.restore_multiprocessing_process__danglingc                 C   s,   |  d}|d t|j|jt|jfS )N	sysconfigprefix)r   Zget_config_varr5   _CONFIG_VARSrY   r   r   r	   r	   r
   get_sysconfig__CONFIG_VARS   s
   

z1saved_test_environment.get_sysconfig__CONFIG_VARSc                 C   r   Nr   r;   r<   )r   r   r[   r\   r   r   r   r	   r	   r
   restore_sysconfig__CONFIG_VARS   r   z5saved_test_environment.restore_sysconfig__CONFIG_VARSc                 C   r   )Nr   )r   r5   _INSTALL_SCHEMESrw   r   r	   r	   r
   get_sysconfig__INSTALL_SCHEMES   s   
z5saved_test_environment.get_sysconfig__INSTALL_SCHEMESc                 C   r   r   )r   r   r[   r\   r   r	   r	   r
   "restore_sysconfig__INSTALL_SCHEMES   r   z9saved_test_environment.restore_sysconfig__INSTALL_SCHEMESc                 C   s   t dd t D S )Nc                 s   s(    | ]}|t j|rd nd V  qdS )/ N)r@   r^   isdir).0fnr	   r	   r
   	<genexpr>  s     z3saved_test_environment.get_files.<locals>.<genexpr>)sortedr@   listdirr1   r	   r	   r
   	get_files  s   z saved_test_environment.get_filesc                 C   sZ   t j}||vr'|d |vr)tj|rt | d S tj|r+t | d S d S d S d S )Nr   )r   ZTESTFNr@   r^   isfiler%   r   rmtree)r   Zsaved_valuer   r	   r	   r
   restore_files  s   z$saved_test_environment.restore_filesc                 C   s    g | ]}| d rtt|qS )LC_)
startswithgetattrr   )r   lcr	   r	   r
   
<listcomp>  s    z!saved_test_environment.<listcomp>c              
   C   sD   g }| j D ]}z||t|d f W q ttfy   Y qw |S r   )_lcappendr   	setlocale	TypeError
ValueError)r   Zpairingsr   r	   r	   r
   
get_locale  s   
z!saved_test_environment.get_localec                 C   s   |D ]
\}}t || qd S r   )r   r   )r   r   r   Zsettingr	   r	   r
   restore_locale  s   z%saved_test_environment.restore_localec                 C   r(   rn   )r   showwarningrq   r	   r	   r
   get_warnings_showwarning  r+   z/saved_test_environment.get_warnings_showwarningc                 C   r,   rn   )r   r   )r   fxnro   r	   r	   r
   restore_warnings_showwarning  r$   z3saved_test_environment.restore_warnings_showwarningc                 c   sF    | j D ]}|dd}d| }d| }|t| |t| |fV  qd S )N._Zget_Zrestore_)	resourcesreplacer   )r   r   Zmethod_suffixget_nameZrestore_namer	   r	   r
   resource_info#  s   
z$saved_test_environment.resource_infoc              	   C   sP   g | _ |  D ]\}}}z| }W n	 ty   Y qw | j ||||f q| S r   )saved_valuesr   r   r   )r   r   ru   restoreoriginalr	   r	   r
   	__enter__*  s   
z saved_test_environment.__enter__c           
      C   s   | j }d | _ t  |D ]3\}}}}| }	|	|kr?dt_|| | js?| js?t| d| j  td| d|	 dt	j
dd qdS )NTz was modified by z
  Before: z
  After:   )fileflushF)r   r   
gc_collectZenvironment_alteredr   r   r   r   printr   rQ   )
r   exc_typeexc_valexc_tbr   r   ru   r   r   currentr	   r	   r
   __exit__5  s   zsaved_test_environment.__exit__N)r   F)Cr   r   r   r   r   r   r   r#   r'   r*   r.   r2   r3   r7   r=   rB   rF   rK   rN   rR   rS   rV   rW   rZ   r]   r_   r`   rb   rc   re   rg   rj   rl   rr   rs   rx   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   dirr   r   r   r   r   r   r   r   r   r	   r	   r	   r
   r      s    r   )ri   r   r@   r   r   testr   Ztest.supportr   Ztest.libregrtest.utilsr   	Exceptionr   r   r	   r	   r	   r
   <module>   s    