
    7bh~                       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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mZ d dlmZ d dlmZ d dlZd dlZd dlZ	 d dlmZ d Zd	Z G d
 dej8                        Z G d dej8                        Z G d dej8                        Z G d dej8                        Z ej                  jB                   G d dej8                               Z"ej                  jB                   G d dej8                               Z#e$dk(  r ejJ                          yy# e$ r dZY w xY w)    N)support)	os_helper)assert_python_okassert_python_failure)threading_helper)import_helper)interpretersc                 J    t        j                  t        d u d      } ||       S )NzTest requires subinterpreters)unittestskipIfr	   )funcdecos     7/opt/python-3.12.12/usr/lib/python3.12/test/test_sys.pyrequires_subinterpretersr      s$    ??<4/46D:    n2BI2nc                   $    e Zd Zd Zd Zd Zd Zy)DisplayHookTestc                    t         j                  }t        j                         5 } |d       d d d        | j	                  j                         d       | j	                  t        j                  d       t        `t        j                         5 } |d        d d d        | j	                  |j                         d       | j                  t        t        d              | j                  t        |       t         j                  }	 t         `| j                  t        |d       |t         _        y # 1 sw Y   xY w# 1 sw Y   xY w# |t         _        w xY w)N*   z42
 _)sys__displayhook__r   captured_stdoutassertEqualgetvaluebuiltinsr   
assertTruehasattrassertRaises	TypeErrorstdoutRuntimeError)selfdhoutr#   s       r   test_original_displayhookz)DisplayHookTest.test_original_displayhook'   s      $$&#rF ' 	0R(J$$&#tH ' 	,GHc223 	)R(	 
lB3CJ- '& '&  CJs#   	D1	D>E
 1D;>E
Ec                     t         j                  }	 t         `t        ddd      }| j                  t        t
        |       |t         _        y # |t         _        w xY w)N42<string>single)r   displayhookcompiler!   r$   eval)r%   r-   codes      r   test_lost_displayhookz%DisplayHookTest.test_lost_displayhookB   sD    oo	*4X6DlD$7)COkCOs   .A Ac                     d }t        j                  t        d|      5  t        ddd      }| j	                  t
        t        |       d d d        y # 1 sw Y   y xY w)Nc                     t         N
ValueError)objs    r   baddisplayhookz?DisplayHookTest.test_custom_displayhook.<locals>.baddisplayhookL       r   r-   r*   r+   r,   )r   	swap_attrr   r.   r!   r6   r/   )r%   r8   r0   s      r   test_custom_displayhookz'DisplayHookTest.test_custom_displayhookK   sH    	 sM>B4X6Dj$5 CBBs   )AAc                      G d d      }t        j                  t        dd       5  t        j                         t        _        t        j                   |              d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zd Zy)(DisplayHookTest.test_gh130163.<locals>.Xc                 f    t        j                         t        _        t	        j
                          y)Nfoo)ioStringIOr   r#   r   
gc_collectr%   s    r   __repr__z1DisplayHookTest.test_gh130163.<locals>.X.__repr__U   s    [[]
""$r   N)__name__
__module____qualname__rE    r   r   Xr>   T   s    r   rJ   r#   )r   r:   r   rA   rB   r#   r-   )r%   rJ   s     r   test_gh130163zDisplayHookTest.test_gh130163S   sG    	 	 sHd3CJOOAC  433s   8A''A0N)rF   rG   rH   r(   r1   r;   rK   rI   r   r   r   r   %   s     6*6	!r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)ActiveExceptionTestsc                 L    | j                  t        j                         d       y )N)NNN)r   r   exc_inforD   s    r   test_exc_info_no_exceptionz/ActiveExceptionTests.test_exc_info_no_exception`   s    );<r   c                 L    | j                  t        j                         d        y r4   )r   r   	exceptionrD   s    r   test_sys_exception_no_exceptionz4ActiveExceptionTests.test_sys_exception_no_exceptionc   s    $/r   c                 8   d }	  |        | j                  t               | j                  d   t               | j                  |d   |       | j                  |d   |j                         y # t         $ r }|}t        j                         }Y d }~d }~ww xY w)Nc                      t        d      Nr   r5   rI   r   r   fzEActiveExceptionTests.test_exc_info_with_exception_instance.<locals>.fg       R. r   r         	Exceptionr   rO   assertIsInstancer6   assertIs__traceback__r%   rW   e_erO   s        r   %test_exc_info_with_exception_instancez:ActiveExceptionTests.test_exc_info_with_exception_instancef   s    	!	&C
 	a,hqk:.hqk1%hqk1??3  	&A||~H	&   A0 0	B9BBc                 8   d }	  |        | j                  t               | j                  d   t               | j                  |d   |       | j                  |d   |j                         y # t         $ r }|}t        j                         }Y d }~d }~ww xY w)Nc                      t         r4   r5   rI   r   r   rW   zAActiveExceptionTests.test_exc_info_with_exception_type.<locals>.fv   r9   r   r   rY   rZ   r[   r`   s        r   !test_exc_info_with_exception_typez6ActiveExceptionTests.test_exc_info_with_exception_typeu   s    		&C
 	a,hqk:.hqk1%hqk1??3  	&A||~H	&rd   c                     d }	  |        | j                  t               | j                  |       y # t         $ r }|}t        j                         }Y d }~Md }~ww xY w)Nc                      t        d      rV   r5   rI   r   r   rW   zJActiveExceptionTests.test_sys_exception_with_exception_instance.<locals>.f   rX   r   r\   r   rR   r]   r6   r^   r%   rW   ra   rb   excs        r   *test_sys_exception_with_exception_instancez?ActiveExceptionTests.test_sys_exception_with_exception_instance   sS    	!	"C
 	a,c1  	"A--/C	"   5 	AAAc                     d }	  |        | j                  t               | j                  |       y # t         $ r }|}t        j                         }Y d }~Md }~ww xY w)Nc                      t         r4   r5   rI   r   r   rW   zFActiveExceptionTests.test_sys_exception_with_exception_type.<locals>.f   r9   r   rj   rk   s        r   &test_sys_exception_with_exception_typez;ActiveExceptionTests.test_sys_exception_with_exception_type   sS    		"C
 	a,c1  	"A--/C	"rn   N)	rF   rG   rH   rP   rS   rc   rg   rm   rq   rI   r   r   rM   rM   _   s     =044r   rM   c                       e Zd Zd Zd Zd Zy)ExceptHookTestc                    	 t        d      # t         $ rX}t        j                         5 }t        j                  t        j
                           d d d        n# 1 sw Y   nxY wY d }~nd }~ww xY w| j                  j                         j                  d             | j                  t        t        j                         y )Nr   ValueError: 42
)r6   r   captured_stderrr   __excepthook__rO   r   r   endswithr!   r"   r%   rl   errs      r   test_original_excepthookz'ExceptHookTest.test_original_excepthook   s    	4R.  	4((*c""CLLN3 +**	4 	//0BCD)S%7%78s+    	A.A)%A	A)A!	A))A.c                    t        j                         5  t        j                  dt               	 t	        dd      # t        $ rX}t        j                         5 }t        j                  t        j                           d d d        n# 1 sw Y   nxY wY d }~nd }~ww xY wd d d        n# 1 sw Y   nxY wj                         }| j                  d|       | j                  d|       | j                  |j                  d             y )Nignoremsg)s   bytes_filename{   r   textz%  File "b'bytes_filename'", line 123
z	    text
zSyntaxError: msg
)warningscatch_warningssimplefilterBytesWarningSyntaxErrorr   rv   r   rw   rO   r   assertInr   rx   ry   s      r   test_excepthook_bytes_filenamez-ExceptHookTest.test_excepthook_bytes_filename   s     $$&!!(L98!%)LMM 8,,.#&&7 /..8 '&& llnBCH&,%9:;sD   B*=	BB%B?	BBBB*BB**B3c                     t         j                  j                  d      5 }t        j                  ddd       d d d        | j                  dj                         v        y # 1 sw Y   +xY w)NstderrrY   1zETypeError: print_exception(): Exception expected for value, str found)testr   captured_outputr   
excepthookr   r   )r%   r   s     r   test_excepthookzExceptHookTest.test_excepthook   sV    \\))(3vNN1c1% 4 ,/5/@A 	B 43s   A""A+N)rF   rG   rH   r{   r   r   rI   r   r   rs   rs      s    	9<"Br   rs   c                   ^   e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  d        Zd	 Zd
 Z ej"                   eed      d      d        Ze
j                  j*                  d        Zd Zd Zej4                   ej6                         d               Zej4                   ej6                         d               Zd Zd Z ej"                  ej@                  d      d        Z!d Z"d Z#ej                  e$d               Z%ej                  e$d               Z&ej                  e$d               Z'd Z(d Z)d Z*d Z+d  Z,e
j                  j                  d!        Z- ej\                         d"        Z/ ej"                  e0jb                  d#       ej"                   ejd                          e3jh                  d$      k(  d%       ej\                         d&                      Z5 ejl                  ejn                  ejp                  k7  d'       ej\                         d(               Z9dCd*Z:d+ Z;dDd,Z<d- Z= ej\                         d.        Z> ej\                         d/        Z?d0 Z@e
j                  j                  d1        ZA ej"                   eed2      d3      d4        ZBd5 ZCd6 ZDd7 ZE ej"                   eed8      d9      d:        ZF ej\                         d;        ZGd< ZH ej"                   eed=      d>      d?        ZI ej\                         d@        ZJdA ZKdB ZLy))ESysModuleTestc                 @    t         j                  j                          y r4   )r   r   reap_childrenrD   s    r   tearDownzSysModuleTest.tearDown   s    ""$r   c                      j                  t        t        j                  dd        j                  t              5 }t        j                          d d d         j                  j                  j                         t        dd      \  }}} j                  |d        j                  |d        j                  |d        j                  t              5 }t        j                  d       d d d         j                  |j                  j                  d        j                  t              5 }t        j                  d       d d d         j                  |j                  j                  d        j                  t              5 }t        j                  d       d d d         j                  |j                  j                  d        j                  t              5 }t        j                  d       d d d         j                  |j                  j                  d       t        dd	      \  }}} j                  |d
        j                  |d        j                  |d        fd} |dd        |dd        |ddd       y # 1 sw Y   BxY w# 1 sw Y   xY w# 1 sw Y   exY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr   -czimport sys; sys.exit()r   r   )r   exit)      zraise SystemExit(47)/   c                     t        d| fi |\  }}}j                  |d       j                  |d       j                  |j                  |      t	        |      dt	        |             y )Nr   rY   r   z doesn't start with )r   r   r   
startswithascii)r0   expectedenv_varsrcr'   rz   r%   s         r   check_exit_messagez3SysModuleTest.test_exit.<locals>.check_exit_message   sb    0tHxHLBSR#S#&OOCNN84.3Cj%/JLr   z?import sys; sys.stderr.write("unflushed,"); sys.exit("message")s   unflushed,messagez)import sys; sys.exit("surrogates:\uDCFF")s   surrogates:\udcffzimport sys; sys.exit("h\xe9")s   hzlatin-1)PYTHONIOENCODING)r!   r"   r   r   
SystemExitassertIsNonerR   r0   r   r   r   )r%   cmr   r'   rz   r   s   `     r   	test_exitzSysModuleTest.test_exit   s3   )SXXr26 z*bHHJ +",,++,'.FGCQc"c" z*bHHRL +**B/ z*bHHUO +**B/ z*bHHV +**F3 z*bHHX +**H5 -T3IJCR c"c"	L 	N 	" 	8!	# 	,y	2s +* +* +*
 +*
 +*s;   JJ3J,J9%KJJ),J69KKc                     | j                  t        t        j                  d       | j	                  t        j                         t
               y rV   )r!   r"   r   getdefaultencodingr]   strrD   s    r   test_getdefaultencodingz%SysModuleTest.test_getdefaultencoding  s3    )S%;%;R@c446<r   c                 f   | j                  t        t        j                         | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       t        j
                         }| j                  |dk  |       	 ddd|fD ];  }t        j                  |       | j                  t        j
                         |       = 	 t        j                  |       y # t        j                  |       w xY w)Nag      g        g      ?gh㈵>g?g      @)r!   r"   r   setswitchintervalr6   getswitchintervalr   assertAlmostEqual)r%   origns      r   test_switchintervalz!SysModuleTest.test_switchinterval  s    )S%:%:;)S%:%:C@*c&;&;TB*c&;&;SA$$&s
D)	(dC-%%a(&&s'<'<'>B . !!$'C!!$'s   >AD D0c                     t        j                         }| j                  |t               | j	                  |d       | j                  t        t         j                  d       y )NrY   r   )r   getrecursionlimitr]   intassertGreaterr!   r"   )r%   limits     r   test_getrecursionlimitz$SysModuleTest.test_getrecursionlimit%  sH    %%'eS)5!$)S%:%:B?r   c                    t        j                         }	 t        j                  d       | j                  t        j                         d       | j	                  t
        t         j                         | j	                  t        t         j                  d       t        j                  |       y # t        j                  |       w xY w)Ni'  i)r   r   setrecursionlimitr   r!   r"   r6   )r%   	old_limits     r   test_setrecursionlimitz$SysModuleTest.test_setrecursionlimit,  s    ))+		-!!&)S224f=i)>)>?j#*?*?E!!),C!!),s   BB. .Cc                     t        t        d      r%t        j                         r| j                  d       t        j                         }fd	 dD ]b  }	 t        j
                  |       | j                  t              5           d d d        | j                  t              5           d d d        d 	 t        j
                  |       y # t        $ r Y w xY w# 1 sw Y   VxY w# 1 sw Y   xY w# t        j
                  |       w xY w)Ngettracez(fatal error if run with a trace functionc                                y r4   rI   )rW   s   r   rW   z5SysModuleTest.test_recursionlimit_recovery.<locals>.f<  s    Cr   )2   K   d        )r    r   r   skipTestr   r   RecursionErrorr!   )r%   r   depthrW   s      @r   test_recursionlimit_recoveryz*SysModuleTest.test_recursionlimit_recovery7  s    3
#MMDE))+			-1))%0 &&~6C 7&&~6C 76 2 !!), &   7666 !!),s`   C6 C,C6 C	C6 &C*.
C6 	CC6 CC6 C'	#C6 *C3	/C6 6Dc                 J   t        j                         }	 t        j                         }| j	                  t        j                         |      5  t        j
                  |dz          t        j
                  |       | j                  t              5 }t        j
                  |       d d d        d d d        | j                  t        j                        d       t        j
                  |       y # 1 sw Y   LxY w# 1 sw Y   PxY w# t        j
                  |       w xY w)N)r   r   rY   z\cannot set the recursion limit to [0-9]+ at the recursion depth [0-9]+: the limit is too low)r   r   r   get_recursion_depthsubTestr   r!   r   assertRegexr   rR   )r%   r   r   r   s       r   test_setrecursionlimit_to_depthz-SysModuleTest.test_setrecursionlimit_to_depthP  s    
 ))+		-//1EC$9$9$;5I%%eai0 %%i0&&~6"))%0 7 J S.45
 !!), 76 JI !!),s<   9D AC?C3(C?0-D 3C<	8C??DD D"c                    t         j                  j                  t        d       t        j                         }| j                  t        |      d       | j                  |d   t               | j                  |d   t               | j                  |d   t               | j                  |d   t               | j                  |d   t               | j                  t        t        j                  |d       | j                  |j                  t               | j                  |j                  t               | j                  |j                   t               | j                  |j"                  t               | j                  |j$                  t               | j                  |j&                  t               | j                  |j(                  t               | j                  |j*                  t               | j                  |j,                  t               | j                  |d   |j                         | j                  |d   |j                         | j                  |d   |j                          | j                  |d   |j"                         | j                  |d   |j$                         t        j                         \  }}}}}y )Ngetwindowsversion   r   rY   rZ         )r   r   get_attributer   r   r   lenr]   r   r   r!   
IndexErroroperatorgetitemmajorminorbuildplatformservice_packservice_pack_minorservice_pack_major
suite_maskproduct_type)r%   vmajminbuildnoplatcsds          r   test_getwindowsversionz$SysModuleTest.test_getwindowsversionh  s   ""3(;<!!#Q#adC(adC(adC(adC(adC(*h&6&61=aggs+aggs+aggs+ajj#.annc2a22C8a22C8allC0annc21qww'1qww'1qww'1qzz*1q~~. (+'<'<'>$S'4r   c                 X    | j                  t        t        j                  t        d       y )NrZ   )r!   r"   r   call_tracingtyperD   s    r   test_call_tracingzSysModuleTest.test_call_tracing  s    )S%5%5tQ?r   setdlopenflagsztest needs sys.setdlopenflags()c                    | j                  t        t        d             | j                  t        t        j
                  d       t        j
                         }| j                  t        t        j                         t        j                  |dz          | j                  t        j
                         |dz          t        j                  |       y )Ngetdlopenflagsr   rY   )r   r    r   r!   r"   r   r   r   )r%   oldflagss     r   test_dlopenflagszSysModuleTest.test_dlopenflags  s     	%567)S%7%7<%%')S%7%788A:&++-xz:8$r   c                    | j                  t        t        j                         t        j                  d       }d a| j                  t        j                  d       |       b| j                  t        j                  d       |       t        t        d      r)| j                  t        j                         t               y y )Ngettotalrefcount)
r!   r"   r   getrefcountr   r   r    r]   r   r   )r%   cs     r   test_refcountzSysModuleTest.test_refcount  s     	)S__5OOD!.2.23*+!!#"6"6"8#> ,r   c                 (   | j                  t        t        j                  dd       | j                  t        t        j                  d       | j                  t        j                  j                  t        j                         j                  u        y )Nr   i 5w)
r!   r"   r   	_getframer6   r   r   test_getframe__code__f_coderD   s    r   r   zSysModuleTest.test_getframe  s_    )S]]B;*cmmZ@''00}}%%&	
r   c                    | j                  t        t        j                                | j                  dt        j                  d             d}t        j                  |      }|rr| j                  |j
                  d   t        j                  |      xs d       |dz  }|j                  }	 t        j                  |      }| j                  ||       |rr| j                  t        j                  |             y # t        $ r Y 0w xY w)Nzunittest.caserY   r   rF   __main__)
r   rF   r   _getframemodulenamer   	f_globalsf_backr6   r^   r   )r%   irW   f2s       r   test_getframemodulenamez%SysModuleTest.test_getframemodulename  s    3#:#:#<=#*A*A!*DEMM!J'''*8j FABMM!$ MM!R   	#11!45  s   /C> >	D
	D
c                 4   dd l dd l}j                         j                         g fd}fdj                  |      }|j	                          j                          	 | j                  t              d       d   }t        j                         }|D ]*  }| j                  |t               | j                  |d       , j                         }| j                  ||       | j                  ||       |j                  |      }| j!                  |t        j"                         u        |j                  |      }|j%                  |      }	t'        |	      D ]  \  }
\  }}}}|dk(  s n | j)                  d       | j                  d       |	
dz      \  }}}}| j                  |d	       | j                  |d
dg       j+                          |j-                          y # j+                          |j-                          w xY w)Nr   c                                y r4   rI   g456s   r   f123z/SysModuleTest.test_current_frames.<locals>.f123      Fr   c                      j                  j                                 j                          j                          y r4   )append	get_identsetwait	entered_gleave_gthread_info	threadings   r   r  z/SysModuleTest.test_current_frames.<locals>.g456  s,    y2245MMOLLNr   targetrY   r  )didn't find f123() on thread's call stackg456()r  zleave_g.wait()zentered_g.set())r  	tracebackEventThreadstartr  r   r   r   _current_framesr]   r   r   r
  r   popr   r   extract_stack	enumeratefailr  join)r%   r  r  t	thread_iddtidmain_idframestackr   filenamelinenofuncname
sourceliner  r  r  r  r  s                  @@@@@r   test_current_framesz!SysModuleTest.test_current_frames  s    	
 OO%	//#		
 D)		(	 S-q1#AI##%A%%c3/""3*   ))+GMM'1%MM)Q' EE'NEOOES]]_45
 EE)$E++E2E?H?O;;Hfh
v% @P 		EFZ2 6;1Q3Z2Hfh
Xv.MM*'79J&KL KKMFFH KKMFFHs   0D
G5 ;AG5 5"Hc                 J   dd l dd l}j                         j                         g fd}fdj                  |      }|j	                          j                          	 | j                  t              d       d   }t        j                         }|D ]*  }| j                  |t               | j                  |d       , j                         }| j                  ||       | j                  ||       | j                  d |j                  |             |j                  |      }|j!                  |j"                  j$                        }	t'        |	      D ]  \  }
\  }}}}|dk(  s n | j)                  d       | j                  d       |	
dz      \  }}}}| j                  |d	       | j+                  |j-                  d
             j/                          |j1                          y # j/                          |j1                          w xY w)Nr   c                                y r4   rI   r  s   r   r  z3SysModuleTest.test_current_exceptions.<locals>.f123  r  r   c                      j                  j                                 j                          	 	 t        d      # t        $ r% j	                  t
        j                        rY y Y nw xY w>)Noops)timeout)r	  r
  r  r6   r  r   LONG_TIMEOUTr  s   r   r  z3SysModuleTest.test_current_exceptions.<locals>.g456  sg    y2245MMO$V,,! ||G,@,@|A B s   > )A,+A,r  rY   r  r  r  r  zif leave_g.wait()r  r  r  r  r  r  r   r   r   _current_exceptionsr]   r   r   r
  r   r  r  r_   tb_framer  r  r   r   r  r  )r%   r  r  r   r!  r"  r#  r$  	exc_valuer&  r   r'  r(  r)  r*  r  r  r  r  r  s                  @@@@@r   test_current_exceptionsz%SysModuleTest.test_current_exceptions  s    	
 OO%	//#		 D)		%	 S-q1#AI'')A%%c3/""3*   ))+GMM'1%MM)Q'T155>2
 i(I++I,C,C,L,LME?H?O;;Hfh
v% @P 		EFZ2 6;1Q3Z2Hfh
Xv.OOJ112DEF KKMFFH KKMFFHs   0D	H  :A%H   "H"c                    | j                  t        j                  t               | j                  t        j                  t
               t        j                  D ]  }| j                  |t                | j                  t        j                  t
               t        j                  D ]  }| j                  |t                | j                  t        j                  d       | j                  t        j                  t               | j                  t        j                  t               | j                  t        j                  t               | j                  t        j                  t               | j                  t        j                  t               | j!                  t#        t        j$                        d       | j!                  t        j$                  j&                  d       | j!                  t#        t        j(                        d       | j+                  t        j(                  j,                  dz  dk(         | j+                  t        j(                  j.                  dk\         | j1                  t        j(                  j2                  d       | j1                  t        j(                  j4                  d	       | j7                  t        j(                  j2                  t        j(                  j4                         | j!                  t9        t        j(                  j,                        t               | j!                  t9        t        j(                  j.                        t               | j                  t        j(                  j2                  t               | j                  t        j(                  j4                  t               | j                  t        j:                  t               | j!                  t#        t        j<                        d
       | j?                  t        j<                  j@                  dt        j<                  jB                  z         tE        dd	      D ]z  }| j!                  tG        |t        j<                  j@                  dz
  t        j<                  j@                        ddjI                  t        j<                  j@                               | | j                  t        j<                  jJ                  t               | j                  t        j<                  jL                  t               | j                  t        j<                  jN                  t               tQ        jR                  d      }t        j<                  jT                  dv r| j                  t        j<                  jV                  ddh       | j                  t        j<                  jX                  h d       |dk(  r+| j!                  t        j<                  jT                  d       n|dk(  r+| j!                  t        j<                  jT                  d       no|dk(  r+| j!                  t        j<                  jT                  d       n?| j                  t        j<                  jT                  h d       n| j!                  |d       | j1                  t        j<                  jZ                  d       | j?                  t        j<                  jZ                  d       | j                  t        j\                  t               | j                  t        j^                  t               | j!                  t        j^                  d       | j                  t        j`                  t               | j                  t        jb                  t               | j                  t        jd                  t               | j                  t        jf                  t               | j                  t        jh                  t               t        jj                  }| j                  |d d  t               | j!                  t#        |      d       | j                  |d   t               | j                  |d   t               | j                  |d   t               | j                  |d   d       | j                  |d   t               | j                  |jl                  t               | j                  |jn                  t               | j                  |jp                  t               | j                  |jr                  d       | j                  |jt                  t               | j!                  |d   |jl                         | j!                  |d   |jn                         | j!                  |d   |jp                         | j!                  |d   |jr                         | j!                  |d   |jt                         | j+                  |dkD         | j                  t        jv                  t               | j                  t        jv                  d       t        j`                  jy                  d      s%| j                  t        jz                  t               y y )N)littlebig   rZ   r   r   r   rY   i  r   	   z'sys.hash_info.modulus {} is a non-primePy_HASH_ALGORITHM>   fnv	siphash13	siphash24    @   >   r?  r@     r>  r<  r   r=     i alphabeta	candidatefinal)rY   r   r   )shortlegacywin)>r]   r   api_versionr   argvlistr   	orig_argvr   	byteorderbuiltin_module_namestuple	copyrightexec_prefixbase_exec_prefix
executabler   r   
float_inforadixint_infor   bits_per_digitsizeof_digitassertGreaterEqualdefault_max_str_digitsstr_digits_check_thresholdr   r   
hexversion	hash_info
assertLessmoduluswidthrangepowformatinfnanimag	sysconfigget_config_var	algorithm	hash_bits	seed_bitscutoffmaxsize
maxunicoder   prefixbase_prefix
platlibdirversionversion_infor   r   microreleaselevelserialfloat_repr_styler   abiflags)r%   argxalgovis        r   test_attributeszSysModuleTest.test_attributesJ  s   coos3chh-88C!!#s+ cmmT2==C!!#s+ !cmm%67c66>cmmS1coos3c22C8cnnc2S^^,b1--q1S\\*A.33a71<=11Q67 C CSI G GM3<<>><<BB	Dcll99:C@cll778#>cllAA3GcllEEsKcnnc2S]]+Q/--q#--2E2E/EF q#AAs}},,Q.0E0EF9@@MM))+  	cmm//5cmm//5cmm00#6''(;<==""&GGMM#--11B8<MM#--11=Aqy  !8!8+F  !8!8%@  !8!8+Fcmm557XY T1% 4 4a8,,a0ckk3/cnnc22cllC0cjj#.coos3cnnc2ckk3/beU+R!$beS)beS)beS)beDEbeS)bhh,bhh,bhh,boo'NObii-A)A)A)A0A		*W%c22C8c**,?@||&&u-!!#,,4 .r   c                 f   t         j                  }| j                  t        |      d       | j	                  |j
                  d       | j	                  |j                  d       t         j                  j                  d      r| j                  |j
                  d       y t         j                  dk(  r| j                  |j
                  d       y t         j                  dk(  r| j	                  |j
                  dd	h       y t         j                  d
k(  r| j                  |j
                  d	       y y )Nr   )ntpthreadpthread-stubssolarisN)	semaphorez
mutex+condN)linuxfreebsdr  win32r  
emscriptenr  wasi)	r   r  r   r   r   namelockr   r   )r%   infos     r   test_thread_infozSysModuleTest.test_thread_info  s    TA&dii!TUdii!BC<<""#78TYY	2\\W$TYY-\\\)MM$))i%AB\\V#TYY8 $r   zonly available on Emscriptenc                    | j                  t        t        j                        d       | j	                  t        j                  j
                  t               | j	                  t        j                  j                  t        t        d       f       | j	                  t        j                  j                  t               | j	                  t        j                  j                  t               y )Nr   )r   r   r   _emscripten_infor]   emscripten_versionrQ  runtimer   r   pthreadsboolshared_memoryrD   s    r   test_emscripten_infoz"SysModuleTest.test_emscripten_info  s    S112A6c22EEuMc22::S$t*<MNc22;;TBc22@@$Gr   c                     | j                  t        j                  j                  t        j                  j                         y r4   )r   r   
__stdout__encoding
__stderr__rD   s    r   
test_43581zSysModuleTest.test_43581  s(     	00#..2I2IJr   c                    | j                  t        t        j                         dt	        t        j                  dd            z   }| j                  t        j                  |      |u        |j                         j                         }| j                  t        j                  |      |u         G d dt              }| j                  t        t        j                   |d             y )Nnever interned beforer    ʚ;c                       e Zd Zd Zy)$SysModuleTest.test_intern.<locals>.Sc                      y)Nr   rI   rD   s    r   __hash__z-SysModuleTest.test_intern.<locals>.S.__hash__      r   N)rF   rG   rH   r  rI   r   r   Sr        r   r  abc)	r!   r"   r   internr   random	randranger   swapcase)r%   ss2r  s       r   test_internzSysModuleTest.test_intern  s    )SZZ0#c&*:*:1e*D&EE

1*+ZZ\""$

2!+,	 	 	)SZZ5:r   c                    dt        t        j                  dd            z   }t        j                  |      }| j                  ||       t        j                         }|j                  t        j                  d|j                         dt        |       dt        |       dt        |       dt        |       d             y )	Nr  r   r  zn
            import sys

            # set `s`, avoid parser interning & constant folding
            s = str(zG, 'utf-8')

            t = sys.intern(s)

            assert id(t) != 
, (id(t), z)
            assert id(t) != z)
            )r   r  r  r   r  r^   r	   createruntextwrapdedentencodeidr%   r  r   interps       r   +test_subinterp_intern_dynamically_allocatedz9SysModuleTest.test_subinterp_intern_dynamically_allocated  s    
 $c&*:*:1e*D&EEJJqMa$$&

8?? ( XXZN #  UG:beW 5UG:beW 5
$ 
 
	r   c                 N   dD ]  }| j                  |      5  t        j                  |      }t        j                         }|j                  t        j                  d|j                         dt        |       dt        |       d             d d d         y # 1 sw Y   xY w)N)__init__	CANCELLEDz<module>utf-8z{{r   
r   r|      ¸   ÿr  
                    import sys

                    # set `s`, avoid parser interning & constant folding
                    s = str(zV, 'utf-8')

                    t = sys.intern(s)
                    assert id(t) == r  z)
                    )
r   r   r  r	   r  r  r  r  r  r  r  s       r   *test_subinterp_intern_statically_allocatedz8SysModuleTest.test_subinterp_intern_statically_allocated  s    A "JJqM%,,.

8?? 0 XXZN +% &(UG:beW =,  	 #" #"s   A8BB$	c                    dD ]s  }| j                  |      5  t        j                         }|j                  t	        j
                  d|j                         dt        |       d             d d d        u y # 1 sw Y   xY w)N)r   r  r   r|  r  r  r  r  r  z0, 'utf-8')

                    assert id(s) == zu
                    t = sys.intern(s)
                    assert id(t) == id(s), (id(t), id(s))
                    )r   r	   r  r  r  r  r  r  )r%   r  r  s      r   test_subinterp_intern_singletonz-SysModuleTest.test_subinterp_intern_singleton  s|    
 AA"%,,.

8?? 0 XXZN +%%'UG ,	, 	 	 #" A""s   AA::B	c           	      <   | j                  t        j                         d}|D ]p  }| j                  t        t        j                  |      |       |dv rt        nt
        }| j                  t        t        t        j                  |            ||       r | j                  t        t        j                               | j                  t        t        j                        t        |             | j                  t        j                  j                  h d       y )N)debuginspectinteractiveoptimizedont_write_bytecodeno_user_siteno_siteignore_environmentverbosebytes_warningquiethash_randomizationisolateddev_mode	utf8_modewarn_default_encoding	safe_pathint_max_str_digits)r  r  >   r   rY   rZ   )r   r   flagsr    r  r   r   r   getattrreprr   r   r  )r%   attrsattr	attr_types       r   test_sys_flagszSysModuleTest.test_sys_flags  s    		"M DOOGCIIt4d; $(A AsIT'#))T":;YM  	SYY(SYYU4cii))95r   c                     |}t        |      }| j                  t              5   ||       d d d        | j                  t              5  |j                  ||       d d d        y # 1 sw Y   :xY w# 1 sw Y   y xY wr4   )r   r!   r"   __new__)r%   sys_attrr{  r  s       r   assert_raise_on_new_sys_typez*SysModuleTest.assert_raise_on_new_sys_type(  sb     N	y)cN *y)i- *) *)))s   	A%	A1%A.1A:c                 B    | j                  t        j                         y r4   )r  r   r  rD   s    r   test_sys_flags_no_instantiationz-SysModuleTest.test_sys_flags_no_instantiation2  s    ))#))4r   c                 B    | j                  t        j                         y r4   )r  r   ru  rD   s    r   &test_sys_version_info_no_instantiationz4SysModuleTest.test_sys_version_info_no_instantiation5  s    ))#*:*:;r   c                     t         j                  j                  t        d       | j	                  t        j
                                y )Nr   )r   r   r   r   r  r   rD   s    r   +test_sys_getwindowsversion_no_instantiationz9SysModuleTest.test_sys_getwindowsversion_no_instantiation8  s.    ""3(;<))#*?*?*ABr   c                 ,    t        j                          y r4   )r   _clear_type_cacherD   s    r   test_clear_type_cachez#SysModuleTest.test_clear_type_cache=  s    r   c                 d   t        t        j                        }d|d<   t        j                  t
        j                  ddgt        j                  |      }|j                         d   j                         }dt        j                  z   j                  d      }| j                  ||       d|d<   t        j                  t
        j                  ddgt        j                  |      }|j                         d   j                         }| j                  |d	       d
|d<   t        j                  t
        j                  ddgt        j                  t        j                  |      }|j                         \  }}| j                  |d       | j                  d|       | j                  d|       d|d<   t        j                  t
        j                  ddgt        j                  t        j                  |      }|j                         \  }}| j                  |d       | j                  d|       | j                  d|       d|d<   t        j                  t
        j                  ddgt        j                  |      }|j                         d   j                         }| j                  |d       y )Ncp424r   r   zprint(chr(0xa2))r#   envr      ¢zascii:replace   ?r   )r#   r   r  r   s   UnicodeEncodeError:s   '\xa2'zascii:z:surrogateescapezprint(chr(0xdcbd))   )dictosenviron
subprocessPopenr   rU  PIPEcommunicatestriplinesepr  r   r   )r%   r  pr'   r   rz   s         r   test_ioencodingzSysModuleTest.test_ioencodingA  s,   2::
 #*cnnd4FG&0oo3@mmoa &&(RZZ'//8h'"1cnnd4FG&0oo3@mmoa &&(d#")cnnd4FG$.OOJOO!$& ==?Sc",c2j#&"*cnnd4FG$.OOJOO!$& ==?Sc",c2j#&"4cnnd4HI$.OO>mmoa &&(g&r   z*requires OS support of non-ASCII encodingsFz$requires FS encoding to match localec                 x   t        t        j                        }d|d<   t        j                  t
        j                  ddt        j                  z  gt        j                  |      }|j                         d   j                         }| j                  |t        j                  t        j                               y )Nr   r   r   z	print(%a)r  r   )r  r  r  r  r  r   rU  r   FS_NONASCIIr  r  r  r   fsencode)r%   r  r  r'   s       r   test_ioencoding_nonasciiz&SysModuleTest.test_ioencoding_nonasciim  s     2::"$cnnd +i.C.C CE'1CA mmoa &&(bkk)*?*?@Ar   zTest is not venv-compatiblec           
         | j                  t        j                  j                  t        j
                        t        j
                         t        j                  j                  t        j                  j                  t        j
                              }t        j                  g dt        j
                  t        j                  |      }|j                         d   }|j                         j                  d      }|j                          | j                  |dt!        t        j
                  j#                  dd            g       y )N)nonexistentr   zEimport sys; print(sys.executable.encode("ascii", "backslashreplace")))rU  r#   cwdr   ASCIIzb''r   backslashreplace)r   r  pathabspathr   rU  dirnamerealpathr  r  r  r  r  decoder  r   r  r  )r%   
python_dirr  r#   rU  s        r   test_executablezSysModuleTest.test_executable|  s    
 	8#..I WW__RWW%5%5cnn%EF
V~~joo:O #\\^**73
	j5$s~~/D/DWN`/a*b"cdr   Nc                 z    | j                  |       t        j                  |       |r| j                  ||       y y r4   )assertIsNotNonecodecslookupr   r%   fs_encodingr   s      r   check_fsencodingzSysModuleTest.check_fsencoding  s4    [)k"[(3 r   c                     t        j                         }t         j                  dk(  rd}nd }| j                  ||       y )Ndarwinr  )r   getfilesystemencodingr   r  r  s      r   test_getfilesystemencodingz(SysModuleTest.test_getfilesystemencoding  s6    //1<<8#HHk84r   c                    t         j                  j                         }||d<   d|d<   dj                  d      }t        j
                  ddd|g}|r|j                  d	       |||d
<   n|j                  d
d        t        j                  |t        j                  t        j                  |d      }|j                         \  }}	|S )NLC_ALL0PYTHONCOERCECLOCALEr  )
import syszdef dump(name):z    std = getattr(sys, name)z(    print("%s: %s" % (name, std.errors))zdump("stdin")zdump("stdout")zdump("stderr")-Xzutf8=0r   -Ir   T)r#   r   r  universal_newlines)r  r  copyr  r   rU  r	  r  r  r  r  STDOUTr  )
r%   localer  r  r  r0   argsr  r#   r   s
             r   c_locale_get_error_handlerz(SysModuleTest.c_locale_get_error_handler  s    jjooH%(!"yy 
  hd;KK&.C"#GG&-T%/__%/%6%6"%15	7
 r   c                    | j                  |d      }| j                  |d       | j                  |d      }| j                  |d       | j                  |d      }| j                  |d       | j                  |d	      }| j                  |d       | j                  |d
      }| j                  |d       | j                  |d      }| j                  |d       y )NT)r  zHstdin: surrogateescape
stdout: surrogateescape
stderr: backslashreplace
z:ignore)r  z6stdin: ignore
stdout: ignore
stderr: backslashreplace
z	iso8859-1z6stdin: strict
stdout: strict
stderr: backslashreplace
z
iso8859-1::r   )r&  r   )r%   r$  r'   s      r   check_locale_surrogateescapez*SysModuleTest.check_locale_surrogateescape  s   --ft-D6	7 --fy-I6	7 --f{-K6	7 --f|-L6	7 --fs-C6	7 --fr-B6	7r   c                 &    | j                  d       y )NCr)  rD   s    r   test_c_locale_surrogateescapez+SysModuleTest.test_c_locale_surrogateescape  s    ))#.r   c                 &    | j                  d       y )NPOSIXr,  rD   s    r   !test_posix_locale_surrogateescapez/SysModuleTest.test_posix_locale_surrogateescape  s    ))'2r   c                 |   ddddd}| j                  t        t        j                  d             | j                  t        t        j                  d             | j                  t        t        j                  d             | j                  t        t        j                  d	             t        j                  j                  }| j                  |d d
 |j                  |j                  f       |j                  dz  |j                  dz  z  |j                  dz  z  ||j                     dz  z  |j                  dz  z  }| j                  t        j                  j                  |       | j                  t        j                  j                  t        j                  j                  j                                y )N
   r9        rC  r  rt  r^  	cache_tagrZ         rB  r   r   )r   r    r   implementationrt  r   r   r   rv  rw  rx  r^  r  lower)r%   levelsrt  r^  s       r   test_implementationz!SysModuleTest.test_implementation  sU    #L 2 2F;< 2 2I>? 2 2LAB 2 2K@A$$,,!w}}gmm&DEmmr)GMMR,??mmq()+1'2F2F+G1+LMnn)*
 	++66
C 	++00++00668	:r   c                 h   ddl m} ddg} || \  }}}t        j                  dk7  rgt	        j
                  d      }t	        j
                  d      }|r| j                  d|       |r| j                  d	|       |s|s| j                  |       | j                  t        t        j                  d
       y )Nr   )r   r   z#import sys; sys._debugmallocstats()r  WITH_FREELISTSWITH_PYMALLOCs   free PyDictObjectss   Small block thresholdT)test.support.script_helperr   r   r   ri  rj  r   assertFalser!   r"   _debugmallocstats)r%   r   r%  retr'   rz   with_freelistswith_pymallocs           r   test_debugmallocstatsz#SysModuleTest.test_debugmallocstats  s     	@;<($/S# <<7"&556FGN%44_EM3S96<!-  % 	)S%:%:DAr   getallocatedblocksz0sys.getallocatedblocks unavailable on this buildc                    	 dd l }	 |j                         }|dv }t        j                         }| j                  t        |      t               |r| j                  |d       n| j                  |d       	 | j                  |t        j                                t!        j"                          t        j                         }| j%                  ||       t!        j"                          t        j                         }| j'                  |t)        |dz
  |dz                y # t        $ r}d}Y d }~d }~ww xY w# t        $ r t	        j
                         }Y =w xY w# t        $ r Y w xY w)Nr   )pymallocpymalloc_debugTr   )	_testcapipymem_getallocatorsnamer$   ImportErrorr   rD  r   rF  r^   r   r   r   r[  r`  r   AttributeErrorgccollectassertLessEqualr   rc  )r%   rJ  
alloc_namerD  rl   r   br   s           r   test_getallocatedblocksz%SysModuleTest.test_getallocatedblocks  s6   	OO&>>@

 ",/M!M ""$d1gs#q!$
 ##Aq)	 OOAs3356 	

""$Q"


""$aq2vq2v./;   % $%  	4#113M	44  		s:   D8 D 6$E 	D5(D00D58EE	E('E(c                     | j                  t        j                         d       d}t        d|      \  }}}| j	                  |j                         d       y )NFa  if 1:
            import sys

            class AtExit:
                is_finalizing = sys.is_finalizing
                print = print

                def __del__(self):
                    self.print(self.is_finalizing(), flush=True)

            # Keep a reference in the __main__ module namespace, so the
            # AtExit destructor will be called at Python exit
            ref = AtExit()
        r   s   True)r^   r   is_finalizingr   r   rstripr%   r0   r   r#   r   s        r   test_is_finalizingz SysModuleTest.test_is_finalizingA  sK    c'')51 .dD9FF'2r   c                     d}t        d|      \  }}}|j                         }| j                  d|d          | j                  d|d          y )Nzif 1:
            import sys
            class A:
                def __del__(self, sys=sys):
                    print(sys.flags)
                    print(sys.float_info)
            a = A()
            r   s	   sys.flagsr   s   sys.float_inforY   )r   
splitlinesr   r%   r0   r   r'   rz   s        r   test_issue20602zSysModuleTest.test_issue20602V  sN     (d3CnnlCF+'Q0r   c                     d}t        d|      \  }}}| j                  |d       | j                  |j                         d       | j                  |j                         d       y )Nzif 1:
            import struct, sys

            class C:
                def __init__(self):
                    self.pack = struct.pack
                def __del__(self):
                    self.pack('I', -42)

            sys.x = C()
            r   r   r   )r   r   rV  rW  s        r   &test_sys_ignores_cleaning_up_user_dataz4SysModuleTest.test_sys_ignores_cleaning_up_user_datae  sZ    
 .dD9FFQ#.#.r   getandroidapilevelzneed sys.getandroidapilevel()c                 |    t        j                         }| j                  |t               | j	                  |d       y )Nr   )r   r_  r]   r   r   )r%   levels     r   test_getandroidapilevelz%SysModuleTest.test_getandroidapilevelv  s2     &&(eS)5!$r   c                 
    d fd}g d} |d|        |d|        |d|d d |dd  z           |d|d d |dd  z           |d|d	   g        |d	|d	   g        |dd
z  |        |d	d
z  |d	   g        |d |       y )Nzif 1:
            import sys
            def f1():
                1 / 0
            def f2():
                f1()
            sys.tracebacklimit = %r
            f2()
        c                     t        j                  t        j                  d| z  gt         j                        }|j                         d   }j                  |j                         |       y )Nr   )r   rY   )r  r  r   rU  r  r  r   rZ  )tracebacklimitr   r  r'   r0   r%   s       r   checkz4SysModuleTest.test_sys_tracebacklimit.<locals>.check  sS      #..$~8M!N(29A--/!$CS^^-x8r   )s"   Traceback (most recent call last):s&     File "<string>", line 8, in <module>s      File "<string>", line 6, in f2s      File "<string>", line 4, in f1s#   ZeroDivisionError: division by zeror2  r   rZ   rY   r   r   rI   )r%   rf  r  r0   s   `  @r   test_sys_tracebacklimitz%SysModuleTest.test_sys_tracebacklimit}  s    	9
	 	b)aa2A12./a2A12./a)B-!b9R=/"agy!b$h2(dIr   c                     | j                  t        t        j                        t        t	        t        j                                     y r4   )r   r   r   	meta_pathr  rD   s    r   test_no_duplicates_in_meta_pathz-SysModuleTest.test_no_duplicates_in_meta_path  s)    S]]+SS]]1C-DEr   _enablelegacywindowsfsencodingz*needs sys._enablelegacywindowsfsencoding()c                     d}t        ddj                  |            \  }}}|j                  dd      j                         }| j	                  |d       y )N)r  z$sys._enablelegacywindowsfsencoding()zCprint(sys.getfilesystemencoding(), sys.getfilesystemencodeerrors())r   z; r   replacezmbcs replace)r   r  r  rV  r   r[  s        r   #test__enablelegacywindowsfsencodingz1SysModuleTest.test__enablelegacywindowsfsencoding  sO    W (diio>Cjj),335n-r   c                 0   t        j                  d      }t        j                  dddd|dg}t	        j
                  |ddd      }t        ddg      t        |      g}| j                  |j                  j                         j                         ||       y )	Nz]
            import sys
            print(sys.argv)
            print(sys.orig_argv)
        r   r  utf8r   r{  T)rf  capture_outputr   )r  r  r   rU  r  r  r  r   r#   rV  rZ  )r%   r0   r%  procr   s        r   test_orig_argvzSysModuleTest.test_orig_argv  s       
 dFD$F~~d$t$O$J
 	++-88:H	r   c                     | j                  t        j                  t               t        j                  D ]  }| j                  |t                y r4   )r]   r   stdlib_module_names	frozensetr   )r%   r  s     r   test_module_nameszSysModuleTest.test_module_names  s8    c55yA++D!!$, ,r   c                 h   t        j                  d      }t        |dd       }|r|j                  j	                  |      sd }|r|j                  j                  |      nd }| j                  |j                  j                  t        j                        |j                  j                  |             y )Nr  __file__)
r   import_fresh_moduler  r  existsr
  r   normpathr   _stdlib_dir)r%   r  markerr   s       r   test_stdlib_dirzSysModuleTest.test_stdlib_dir  s    ..t4Z."''..0F.4277??6*$))#//:))(3	5r   r4   )FN)MrF   rG   rH   r   r   r   r   r   r   r   r   r   cpython_onlyr   r   r   r   
skipUnlessr    r   r   refcount_testr   r   r  r   reap_threadsrequires_working_threadingr+  r5  r  r  is_emscriptenr  r  r  r   r  r  r  r  r  r  r  r  r  requires_subprocessr  r   r   r  r$  getpreferredencodingr  r   rr  rq  r  r  r  r&  r)  r-  r0  r;  rE  rS  rX  r\  r^  rb  rh  rk  ro  rt  rx  r  rI   r   r   r   r      s3   %@2D=(@	--2 
\\- -.?<@ X&67:<%<% 
\\?  ? 
6* ""0002? 3 #?B ""0002A 3 #AF]5~9 X..0NOH PHK
;$   (   ,   "6".5<C
 
\\    !W  ")' #)'V X..EGX22248S8S8STY8ZZ?A W  "B #AG
B X__S__

224 W  "e #4e(45:$7L !W  "/ #/ !W  "3 #3:, 
\\B B* X&:;KM%0M%0N3*1/" X&:;8:%:%
 !W  " #BF X&FGEG.G. !W  " #-
5r   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	UnraisableHookTestc                     dd l }dd l}d| }	 |j                  |||       |j                  t	        |      ||j
                  ||      d }S # d }w xY w)Nr   Exception ignored )exc_typer4  exc_tracebackerr_msgobject)rJ  typeswrite_unraisable_excSimpleNamespacer   r_   )r%   rl   r  r7   rJ  r  err_msg2s          r   r  z'UnraisableHookTest.write_unraisable_exc  sc    'y1		**3=(($s)367:7H7H1903	 ) 5 C$Cs   ;A Ac           	      f   dD ]  }| j                  |      5  d}t        j                  j                  d      5 }t        j                  j	                  t
        dt
        j                        5  | j                  t        d      ||       d d d        d d d        j                         }|| j                  d| d|d	|       n| j                  d
|d	|       | j                  d|       | j                  d|       d d d        	 y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   -xY w)N)Nzoriginal hook)r  z	an objectr   unraisablehookr   r  z: r  zException ignored in: #Traceback (most recent call last):
ru   )r   r   r   r   r:   r   __unraisablehook__r  r6   r   r   )r%   r  r7   r   rz   s        r   test_original_unraisablehookz/UnraisableHookTest.test_original_unraisablehook  s   .Gg.!\\11(;v//5E030F0FH11*R.'3OH <
 oo'&MM$6wir#"KSQMM$:3'"DcJDcJ0#6 /. /
H H <; /.s;   "D&4D/D	DA.D&DDD#D&&D0	c           	      l    G d d      } G d dt                G fdd      }||fD ]a  }| j                  |      5   |       }t        j                  j	                         5 }t        j                  j                  t        dt        j                        5  ~d d d        d d d        j                         }| j                  d|       | j                  |j                  j                  |       | j                  d	|       | j                  d
|       ||u r%| j                  d|       | j                  d|       n$| j                  d|       | j                  d|       | j                  |j                  d             d d d        d y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nc                       e Zd Zd Zy)FUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenDelc                     t        d      }|)Ndel is brokenr5   r%   rl   s     r   __del__zNUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenDel.__del__  s     1	r   NrF   rG   rH   r  rI   r   r   	BrokenDelr    s    r   r  c                       e Zd Zd Zy)OUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenStrExceptionc                     t        d      )Nzstr() is brokenr\   rD   s    r   __str__zWUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenStrException.__str__  s     122r   N)rF   rG   rH   r  rI   r   r   BrokenStrExceptionr    s    3r   r  c                       e Zd Z fdZy)OUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenExceptionDelc                             }|r4   rI   )r%   rl   r  s     r   r  zWUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenExceptionDel.__del__  s    (*	r   Nr  )r  s   r   BrokenExceptionDelr    s    r   r  r  zException ignoredztest_sys.pyz	raise excz<exception str() failed>r6   r  r  )r\   r   r   r   rv   r:   r   r  r   r   r  rH   r   rx   )r%   r  r  
test_classr7   r   reportr  s          @r    test_original_unraisablehook_errz3UnraisableHookTest.test_original_unraisablehook_err  s]   	 		3 	3	 	 %&89Jj) l\\113v\\++C1A,/,B,BD D 4  *16:j00==vFmV4k62!33MM"6?MM"<fEMM,7MM/6: 56' *) :D D 43 *)s=    &F)&4FF	F$C!F)FFF&"F))F3	c           	          G d d      }dD ]6  }| j                  |      5  ||j                  j                  _        t        j
                  j                         5 }t        j
                  j                  t        dt        j                        5  | j                  |j                  j                         dd      }d d d        d d d        j                         }| j                  |j                  j                  j                  |       |dv r| j                  |d	z   |       n| j                  |d	z   |       d d d        9 y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ]xY w)
Nc                        e Zd Z G d d      Zy)MUnraisableHookTest.test_original_unraisablehook_exception_qualname.<locals>.Ac                   "    e Zd Z G d de      Zy)OUnraisableHookTest.test_original_unraisablehook_exception_qualname.<locals>.A.Bc                       e Zd Zy)QUnraisableHookTest.test_original_unraisablehook_exception_qualname.<locals>.A.B.XNrF   rG   rH   rI   r   r   rJ   r    s    r   rJ   N)rF   rG   rH   r\   rJ   rI   r   r   Br    s    	 r   r  N)rF   rG   rH   r  rI   r   r   Ar    s     r   r  )r   r   some_module)
moduleNamer  r~   r7   )r   r   .)r   r  rJ   rG   r   r   rv   r:   r   r  r  r   r   rH   assertNotIn)r%   r  r  r   r   r  s         r   /test_original_unraisablehook_exception_qualnamezBUnraisableHookTest.test_original_unraisablehook_exception_qualname  s   
	 	
 @J4#- \\113vt||?U?U)3+A+A@  $88 H@3  *accee00&9!99$$Z#%5v>MM*s"2F; 54 @@ @33 54s<   :E 4E,E	=EA7E EEEE  E*	c                 (   t        d      }t        j                  j                  t        dt        j
                        5  | j                  t              5  t	        j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r  )	r6   r   r   r:   r   r  r!   r"   r  r  s     r   'test_original_unraisablehook_wrong_typez:UnraisableHookTest.test_original_unraisablehook_wrong_type0  sh    n\\##C)9$'$:$:<""9-""3' .< <--< <s#   BA<+B<B	BBc           	      n   d fd}t               }	 t        j                  j                  t        d|      5  | j                  t        d      d|      }dj                         D ]+  }| j                  t        |      t        ||      |f       - 	 d d d        d }d y # 1 sw Y   xY w# d }d w xY w)Nc                 
    | y r4   rI   )r%  	hook_argss    r   	hook_funcz@UnraisableHookTest.test_custom_unraisablehook.<locals>.hook_func:  s    Ir   r  r   zcustom hookz/exc_type exc_value exc_traceback err_msg object)
r  r   r   r:   r   r  r6   splitr   r  )r%   r  r7   r   r  r  s        @r   test_custom_unraisablehookz-UnraisableHookTest.test_custom_unraisablehook7  s    		 h	''-=yI44Z^5BCIMSSUD$$WY%=%,Xt%<&/%:< V J HI JI HIs#   %B. AB"B. "B+'B. .B4c                    d }t         j                  j                  d      5 }t         j                  j                  t        d|      5  | j                  t        d      dd        d d d        d d d        j                         }| j                  d|d|       | j                  d|       | j                  d	|       y # 1 sw Y   \xY w# 1 sw Y   `xY w)
Nc                      t        d      )Nzhook_func failedr  )r%  s    r   r  zEUnraisableHookTest.test_custom_unraisablehook_fail.<locals>.hook_funcM  s    .//r   r   r  r   zcustom hook failz)Exception ignored in sys.unraisablehook: r  r  zException: hook_func failed
)	r   r   r   r:   r   r  r6   r   r   )r%   r  r   rz   s       r   test_custom_unraisablehook_failz2UnraisableHookTest.test_custom_unraisablehook_failL  s    	0 \\))(3v''-=yI))*R.*<dD J 4
 ooA"R)	 	<cB5s; JI 43s#   &C	C&CC
	CCN)
rF   rG   rH   r  r  r  r  r  r  r  rI   r   r   r  r    s&    7$&7P<4(*<r   r  c                        e Zd Zd Zej
                  j                  Zd Zd Zd Z	 fdZ
d Zd Zd Zd	 Zd
 Z xZS )
SizeofTestc                     t        j                  d      | _        t        j                  j
                  | _        dd l}|j                  | _	        y )NPr   )
structcalcsizer  r   rX  rZ  	longdigit_testinternalcapiSIZEOF_PYGC_HEADgc_headsize)r%   r  s     r   setUpzSizeofTest.setUp`  s4    %22 ,==r   c                    t         j                  j                  }| j                  }| j	                  t        j                  d       |d      | j                  z          | j	                  t        j                  g        |d      |z          y )NTr   Pn)r   r   calcvobjsizer  r   r   	getsizeofr  )r%   vsizegc_header_sizes      r   test_gc_head_sizezSizeofTest.test_gc_head_sizeh  sd    ))))t,eBi$...HIr*E$K.,HIr   c                     G d d      }| j                  t        t        j                   |               G d d      }| j                  t        t        j                   |              dg}| j                  t        j                   |       |      |        G d d      }| j                  t        t        j                   |              | j                  t        j                   |       |      |        G d d	t              }| j                  t        j                   |t        j                              t        j                  | j                  d
z  z          | j                  t              5  t        j                   |t        j                  dz                d d d        | j                  t              5  t        j                   |d             d d d        | j                  t        t        f      5  t        j                   |t        j                   dz
               d d d        y # 1 sw Y   xY w# 1 sw Y   gxY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zy))SizeofTest.test_errors.<locals>.BadSizeofc                     t         r4   r5   rD   s    r   
__sizeof__z4SizeofTest.test_errors.<locals>.BadSizeof.__sizeof__s  s      r   NrF   rG   rH   r  rI   r   r   	BadSizeofr  r      !r   r  c                       e Zd Zd Zy)-SizeofTest.test_errors.<locals>.InvalidSizeofc                      y r4   rI   rD   s    r   r  z8SizeofTest.test_errors.<locals>.InvalidSizeof.__sizeof__x  s    r   Nr  rI   r   r   InvalidSizeofr  w  s    r   r  sentinelc                       e Zd Zd Zy)+SizeofTest.test_errors.<locals>.FloatSizeofc                      y)Ng      @rI   rD   s    r   r  z6SizeofTest.test_errors.<locals>.FloatSizeof.__sizeof__  r  r   Nr  rI   r   r   FloatSizeofr  ~  r  r   r  c                       e Zd Zd Zy).SizeofTest.test_errors.<locals>.OverflowSizeofc                     t        |       S r4   )r   rD   s    r   r  z9SizeofTest.test_errors.<locals>.OverflowSizeof.__sizeof__  s    4y r   Nr  rI   r   r   OverflowSizeofr    r  r   r  rZ   rY   rg  )r!   r6   r   r  r"   r^   r   r   ro  r  OverflowError)r%   r  r  r  r  r  s         r   test_errorszSizeofTest.test_errorsq  s   	! 	! 	*cmmY[A	 	 	)S]]MOD<cmmMOX>I	 	 	)S]]KMBcmmKM8<hG	!S 	! 	~ckk'BCt'7'7'99	;}-MM.q9: .z*MM.,- +
M:;MM.#++)9:; <;	 .-**;;s$   1-H1;H=:.I	1H:=I	Ic                    t         j                  j                  }| j                  t	        j
                  d       |d      | j                  z          | j                  t	        j
                  dd       |d      | j                  z          y )NTr   rg  )r   r   r  r   r   r  r  )r%   sizes     r   test_defaultzSizeofTest.test_default  s_    ||((t,d2h.GHtR0$r(T^^2KLr   c           	         $% t         j                  }t        j                  j                  %t        j                  j
                  } j                  $ $d |d       j                  z           $d |d       j                  z           $t         %d             dddz  g}|D ]-  }t        |      } $| |d      |j                         z          /  $t        t                      %d	              $d |d
      dz           $d |d
      dz          d } $ |       j                  d    %d              fd} | |       j                   %d              ||j                   %d             d } ||j                   %d       |d
      z           $t        dd       %d              $t        j                    %d             dd l}	 $|	j$                  j&                   %d             dd l}
 $|
j*                  j,                   %d              $t.        j0                   %d              $i j2                   %d              $i  %d              $ddi %d       |t4              z   dz   d |d      z  z          t7        d      D ci c]  }t        |      | }} $| %d       |t4              z   dz   d |d      z  z           $ddi %d       |t4              z   dz   d |d      z  z          dd d!d"dd#d$dd%} $| %d       |t4              z   dz   d |d      z  z           $i j9                          %d              $i j;                          %d              $i j=                          %d              $t        i        %d&              $t        i j9                                %d&              $t        i j;                                %d&              $t        i j=                                %d&              G d' d(t>              } $|j@                   %d              $tC                %d)              $tE        ddddd       %d*              $tG        ddddd       %d*              $tI        dddd       %d*              $tJ         %d             dd l&}dd l'} |jP                  |jR                  jT                        } $| %d+              $tW        g        %d,              $tY        d       %d	              $t[        d       %d-              $t\        j^                   |d       j`                  t        t\        j^                        z  z          d. } |       } $| %d/             d0 } $| %d1              G $%fd2d3      }d4 } $ |        %d5              $t        d6       %d7             dd l1} $|je                  dd       %d              $tg        g        |d8              $tg        dg       |d8      d  j`                  z  z           $tg        dd g       |d8      d  j`                  z  z           $tg        g d9       |d8      d" j`                  z  z           $t        g        %d7              $tY        g        %d	              $d |d       j                  z           $d |d       j                  z           $d: |d       j                  z          d t\        jh                  jj                  z  } $t/        |       |d      d  j                  z  z           $t/        |d z  dz
         |d      d  j                  z  z           $t/        |d z         |d      d! j                  z  z           $tl         %d;              $d  %d              $tn         %d              $t?                %d              G $%fd<d(t>              } $t        t7        d             %d=              $t        t7        d d>z               %d?              $tY        d       %d	              $t7        d       %d@              $t7        dA       %d@             d}g t7        d      t7        dB      g} %dC|d	z  z   dDz         }|D ]  }t        |      }|dk(  rd}|d z  }|}||k  r|dz  }||k  r|dk  r% $tq        |      |        $ts        |      |       V $tq        |      || |d	      z  z           $ts        |      || |d	      z  z            $t        tq                      %dE              $tu        d       %d?              $tw        t.               %d?              $dF |d              $d9 |d      d! j`                  z  z          dG} |d|z         } $t.        |        ||dHz         } G dI dJt>              } $|| |t4              z   dKz   dL |d      z  z          t7        dM      D cg c]	  } |        c}  $ |       j@                   %d       j`                  z           |       }dx|_<        x|_=        x|_>        x|_?        x|_@        x|_A        x|_B        |_C         $|| |t4              z   dKz   dL |d      z  z           $ |       j@                   %d       j`                  z          g dN}dO}|d	z   }|dz   } |D ]  }t        t        |            }!|!dPk  r %|      t        |      z   dz   }"nW|!dQk  r %|      t        |      z   dz   }"n:|!dRk  r %|      d t        |      dz   z  z   }"n %|      d"t        |      dz   z  z   }" $||"        t        dS      } $| %|      d"z          t        |dTdU        $| %|      d"z   d"z          dd lH}# $|#j                  t.               %dV              $|#j                  t.               %dV             y c c}w c c}w )WNTr   F5Pr      ui n2PinPr   rY   s
   xxxxxxxxxxr9  c                      dfd} | S )Nr   c                       S r4   rI   r|  s   r   innerz<SizeofTest.test_objecttypes.<locals>.get_cell.<locals>.inner      r   rI   )r  r|  s    @r   get_cellz-SizeofTest.test_objecttypes.<locals>.get_cell  s    ALr   r   r  c                 P    j                  t        j                  |       |       y r4   )r[  r   r  )r   expected_sizer%   s     r   check_code_sizez4SizeofTest.test_objecttypes.<locals>.check_code_size  s    ##CMM!$4mDr   6i13Pc                       fd}|S )Nc                       S r4   rI   r  s   r   r  z=SizeofTest.test_objecttypes.<locals>.get_cell2.<locals>.inner  r  r   rI   )r|  r  s   ` r   	get_cell2z.SizeofTest.test_objecttypes.<locals>.get_cell2  s    Lr   2d3PPP3PP3P2P2PnQ2Pr   rB  r   r7  r2  n2PrZ   r   r         )rY   rZ   r   r   r   r  r  rB  P2nPnc                       e Zd Zy)&SizeofTest.test_objecttypes.<locals>.CNr  rI   r   r   r+  r        r   r+  6Pbz	6Pb 2P2nP32B2iBn4Pr"  c                  *    t        j                         S r4   )r   r   rI   r   r   r   z)SizeofTest.test_objecttypes.<locals>.func  s    ==?"r   z3Pi3c7P2ic??2Pc                       y r4   rI   rI   r   r   r   z)SizeofTest.test_objecttypes.<locals>.func  s    Dr   15Pic                   r    e Zd Zed        Zed        Z W  e W d              W  e W d             y)&SizeofTest.test_objecttypes.<locals>.cc                       y r4   rI   rI   r   r   r@   z*SizeofTest.test_objecttypes.<locals>.c.foo      r   c                      y r4   rI   )clss    r   barz*SizeofTest.test_objecttypes.<locals>.c.bar
  r  r   PPN)rF   rG   rH   staticmethodr@   classmethodr!  rf  r  s   r   r   r    sE       #tDz"#tDz"r   r   c               3      K   d y w)NrY   rI   rI   r   r   get_genz,SizeofTest.test_objecttypes.<locals>.get_gen  s
     Qws   zPP4P4c7P2ic??2Pr  lPr  )rY   rZ   r   rg  PnPPPc                   X    e Zd Zd Zd Zd Z eeeed      Z W  e W d             y)r  c                     | j                   S r4   _C__xrD   s    r   getxz+SizeofTest.test_objecttypes.<locals>.C.getx8  s
    488Or   c                     || _         y r4   r,  )r%   values     r   setxz+SizeofTest.test_objecttypes.<locals>.C.setx9  s    e48r   c                     | ` y r4   r,  rD   s    r   delxz+SizeofTest.test_objecttypes.<locals>.C.delx:  s    r   r   5PiN)rF   rG   rH   r.  r1  r3  propertyr|  r%  s   r   r+  z&SizeofTest.test_objecttypes.<locals>.C7  s*    +3(tT2.A!T%[!r   3lA   3P4Pi r   3nP2nPP3nrI   P2nPI13Pl4Pn9Pn12PIPc4P36P3P10P2P6P1PIc                       e Zd Zy)2SizeofTest.test_objecttypes.<locals>.newstyleclassNr  rI   r   r   newstyleclassr@  s  r  r   rA  r@  r   r   )d1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111ud   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿuP   ĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀu,  ￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿ux   𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀u  􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿nnbrA     i   i @  z<stdin>r/   2Pn3P)Kr  r  r   r   calcobjsizer  check_sizeofr  r   	bytearray	__alloc__iter__closure__r   complexr   r9  datetime	timedeltadayscollectionsdefaultdictdefault_factoryr   __add____iter__DICT_KEY_STRUCT_FORMATrc  keysvaluesitemsr  __dict__BaseExceptionUnicodeEncodeErrorUnicodeDecodeErrorUnicodeTranslateErrorEllipsisr  encodings.iso8859_3charmap_build	iso8859_3decoding_tabler  reversedfloatr   rV  r  refinditerrM  rX  rY  r   NotImplementedr  rw  slicesuperr   rR  r   r"  rb   rW   ghordmaxchrr.   weakrefrefproxy)'r%   r  r  samplessampler|  r   r  r  rM  rP  r   longdictr+  r  	encodingsr   r   r'  re  PyLong_BASEPySet_MINSIZEr  minusedtmpnewsizefmtrA  r   oasciifieldscompactfieldsunicodefieldsmaxcharLro  rf  r  	__class__s'   `                                   @@r   test_objecttypeszSizeofTest.test_objecttypes  s
   ??||''))!!dE"I./eU2Y/0 	c4:V$F&!A!U6]Q[[]23  	d9;d,c5:>"isb)	
 	hj$$Q'c3	E
++T'];))4=9	 		**DMHSM,IJgalDJ'ciif& 	h  %%tE{3k%%55tE{Cckk4<(bkk4:&b$v,sAhVx0F'GG!KvW_`dWeNeef',Qx0x!CFAIx0hVx0F'GG"LPWYabfYgOgghq!fd6lX.D%EEIVU]^cUdLdde1Q!qA;hVx0F'GG"LPWYabgYhOhhibggic#biik49%bhhj$s)$d2hW&d2779otG}-d299;g/d288:W.ajj$s)$motE{+ RAr2D4EF S!Q3T+5FG#B1b143DEhR!* F  !4!4!C!CDah imT%[)hrlDJ'eAhS	"cnneBi$&&3s~~3F*FFG	#Fa&'(dDL!
	# 
	# 	gi/01d5k4:&bkk"R $t*-d2hd$dA3itqx/0dAq6lE$K!DFF(23d9ouT{QtvvX56 	d2hT
#hrlDJ'arT^^+,arT^^+,b%)dnn,-444c+b	Adnn,< <=c+q."#U2Y4>>1A%ABc+q.!59q/?#?@hW&dDHnd2h'fhR!	" 	" 	d58nd4j)d5B< $t*-hrlDJ'eAhT
#eElDJ' uRy%),t++e34F&kG!|1S aiG#GW$!Q, W$!|c&k1%i'+c&k1wx~'=#=>i'WXd^-C)CD   	d35k4;'eAhT
#eCj$t*%b%)guRy1TVV8+, &$*c1#  	*F)mQ*@!AABFHUYNIZZ["'*-*Q*-mo&&Vtvv(=>O8999ac9AC9!#99ac9AC!#mQ*@!AABFHUYNIZZ[mo&&Vtvv(=>
6 #d*%+A#a&kG}%A.23'#a&0145'!SVaZ.8'!SVaZ.8!QK  Kam$q() 	9f%am$q(1,- 	gkk#W. 	gmmC $w-0g 1L 	.s   %q&+q+c                    t        j                  |      t        j                  |      z   }t	        j
                  |      r$t	        j
                  |      s|| j                  z  }| j                  t        j                  |      |       y r4   )r   r  r  r  rN  
is_trackedr  r   )r%   r7   baseextrar   s        r   check_slotszSizeofTest.check_slots  s^    ==&)??==bmmD&9(((Hs+X6r   c                    | j                   } G d dt              } | |       t               d        G d dt              } | |g       dg id        G d d	t              } | |       g d        G d
 dt              } | |       t	               d        G d dt
              } | |       t               d       ddlm}  G d d|      } | |g        |g       d       y )Nc                       e Zd ZdZy)!SizeofTest.test_slots.<locals>.BAr   rR  r   NrF   rG   rH   	__slots__rI   r   r   BAr        %Ir   r  r8  c                       e Zd ZdZy) SizeofTest.test_slots.<locals>.Dr  Nr  rI   r   r   Dr    r  r   r  r  r|  c                       e Zd ZdZy) SizeofTest.test_slots.<locals>.Lr  Nr  rI   r   r   r  r    r  r   r  c                       e Zd ZdZy) SizeofTest.test_slots.<locals>.Sr  Nr  rI   r   r   r  r    r  r   r  c                       e Zd ZdZy)!SizeofTest.test_slots.<locals>.FSr  Nr  rI   r   r   FSr    r  r   r  r   )OrderedDictc                       e Zd ZdZy)!SizeofTest.test_slots.<locals>.ODr  Nr  rI   r   r   ODr    r  r   r  )r  rH  r  rM  r  rw  rP  r  )	r%   rf  r  r  r  r  r  r  r  s	            r   
test_slotszSizeofTest.test_slots  s       	& 	&bdIK&	& 	&a"gRy$'	& 	&ac2t	& 	&ac35$	& 	&bdIK&+	& 	&b2hb)40r   c                    t         j                  j                  }t         j                  j                  }| j                  }dd l} ||j                          |d             	 t        # t        $ r'}|j                  }| || |d             Y d }~nd }~ww xY w |t        j                   |d      | j                  t        t        j                        z  z          y )Nr   r  2P2ir   )r   r   rF  r  rG  _astASTr"   r_   r   r  r  r   )r%   r  r  rf  r  rb   tbs          r   test_pythontypeszSizeofTest.test_pythontypes  s    ||''))!!dhhj$s)$	(O 	(B~b$v,'		( 	ciirTVVc#))n%<<=s   #A) )	B2BBc                    t        j                         }| j                  |j                         | j                  |j                         d }t        j
                  |       t        j                         }| j                  |j                  |       | j                  |d   |       | j                  |j                  d        | j                  |d   d        d }t        j
                  |       t        j                         }| j                  |j                  |       | j                  |d   |       | j                  |j                  |       | j                  |d   |       t        j
                  |  t        j                         }| j                  |j                         | j                  |j                         y )Nc                       y r4   rI   r   s    r   <lambda>z0SizeofTest.test_asyncgen_hooks.<locals>.<lambda>      tr   )	firstiterr   rY   c                       y r4   rI   r  s    r   r  z0SizeofTest.test_asyncgen_hooks.<locals>.<lambda>  r  r   )	finalizer)r   get_asyncgen_hooksr   r  r  set_asyncgen_hooksr^   )r%   oldr  hooksr  curs         r   test_asyncgen_hookszSizeofTest.test_asyncgen_hooks  sF   $$&#--(#--(#	3&&(eooy1eAh	*eoot,eAh%#	3&&(eooy1eAh	*eooy1eAh	*$$$&#--(#--(r   c                     t        j                  d      }t        d|      \  }}}| j                  |d       | j                  |d       y )Nz
            import sys
            class MyStderr:
                def write(self, s):
                    sys.stderr = None
            sys.stderr = MyStderr()
            1/0
        r   r   )r  r  r   r   r[  s        r   /test_changing_sys_stderr_and_removing_referencez:SizeofTest.test_changing_sys_stderr_and_removing_reference  sK         -T48Cc"c"r   )rF   rG   rH   r  r   r   rG  r  r  r  r  r  r  r  r  r  __classcell__)r  s   @r   r  r  ]  sJ    > <<,,LJ<>M
O1b710>()4#r   r  r   )&r   r  rN  rA   r$  r   r  r  r  r  r   ri  test.supportr   r   r   r?  r   r   r   r   r  r   r   r	   rL  r   rU  TestCaser   rM   rs   r   r  r  r  rF   mainrI   r   r   <module>r     s8     	 	   	    
    " N ) &   )
 " 7!h'' 7!t=8,, =@"BX&& "BPA5H%% A5H  N<** N< N<b b#"" b# b#H zHMMO S7  Ls   "D5 5D?>D?