
    6\h]	                    $   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
mZ d dlZd dlZd dlZd adZ G d	 d
ej                  Z G d dej                  Z G d dej                  Z G d dej                  Zej        j         G d dej                              Zej        j         G d dej                              Z e!dk    r ej"                     dS dS )    N)support)	os_helper)assert_python_okassert_python_failure)threading_helper)import_helper)skip_if_sanitizern2BI2nc                        e Zd Zd Zd Zd ZdS )DisplayHookTestc                    t           j        }t          j                    5 } |d           d d d            n# 1 swxY w Y   |                     |                                d           |                     t          j        d           t          `t          j                    5 } |d            d d d            n# 1 swxY w Y   |                     |                                d           |                     t          t          d                      | 
                    t          |           t           j        }	 t           `| 
                    t          |d           |t           _        d S # |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       7/opt/python-3.11.14/usr/lib/python3.11/test/test_sys.pytest_original_displayhookz)DisplayHookTest.test_original_displayhook   s    $&& 	#BrFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	000R(((J$&& 	#BtHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	,,,GHc222333 	)R(((	 
lB333CJJJCJs*   8<<%B==CC#E2 2F c                     t           j        }	 t           `t          ddd          }|                     t          t
          |           |t           _        d S # |t           _        w xY w)N42<string>single)r   displayhookcompiler   r   eval)r   r&   codes      r    test_lost_displayhookz%DisplayHookTest.test_lost_displayhook:   sZ    o	*4X66DlD$777)COOOkCO))))s   9A A#c                     d }t          j        t          d|          5  t          ddd          }|                     t
          t          |           d d d            d S # 1 swxY w Y   d S )Nc                     t           N
ValueError)objs    r    baddisplayhookz?DisplayHookTest.test_custom_displayhook.<locals>.baddisplayhookD           r&   r#   r$   r%   )r   	swap_attrr   r'   r   r/   r(   )r   r1   r)   s      r    test_custom_displayhookz'DisplayHookTest.test_custom_displayhookC   s    	 	 	 sM>BB 	6 	64X66Dj$555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   3AA#&A#N)__name__
__module____qualname__r!   r*   r5    r3   r    r   r      sA             6* * *6 6 6 6 6r3   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )ActiveExceptionTestsc                 T    |                      t          j                    d           d S )NNNN)r   r   exc_infor   s    r    test_exc_info_no_exceptionz/ActiveExceptionTests.test_exc_info_no_exceptionL   s%    );<<<<<r3   c                 T    |                      t          j                    d            d S r-   )r   r   	exceptionr?   s    r    test_sys_exception_no_exceptionz4ActiveExceptionTests.test_sys_exception_no_exceptionO   s$    $/////r3   c                 n   d }	  |             n,# t           $ r}|}t          j                    }Y d }~nd }~ww xY w|                     |t                     |                     |d         t                     |                     |d         |           |                     |d         |j                   d S )Nc                       t          d          Nr   r.   r9   r3   r    fzEActiveExceptionTests.test_exc_info_with_exception_instance.<locals>.fS       R.. r3   r         	Exceptionr   r>   assertIsInstancer/   assertIs__traceback__r   rG   e_er>   s        r    %test_exc_info_with_exception_instancez:ActiveExceptionTests.test_exc_info_with_exception_instanceR   s    	! 	! 	!	&ACCCC 	& 	& 	&A|~~HHHHHH	& 	a,,,hqk:...hqk1%%%hqk1?33333   
 
949c                 n   d }	  |             n,# t           $ r}|}t          j                    }Y d }~nd }~ww xY w|                     |t                     |                     |d         t                     |                     |d         |           |                     |d         |j                   d S )Nc                      t           r-   r.   r9   r3   r    rG   zAActiveExceptionTests.test_exc_info_with_exception_type.<locals>.fb   r2   r3   r   rI   rJ   rK   rP   s        r    !test_exc_info_with_exception_typez6ActiveExceptionTests.test_exc_info_with_exception_typea   s    	 	 		&ACCCC 	& 	& 	&A|~~HHHHHH	& 	a,,,hqk:...hqk1%%%hqk1?33333rT   c                     d }	  |             n,# t           $ r}|}t          j                    }Y d }~nd }~ww xY w|                     |t                     |                     ||           d S )Nc                       t          d          rF   r.   r9   r3   r    rG   zJActiveExceptionTests.test_sys_exception_with_exception_instance.<locals>.fq   rH   r3   rL   r   rB   rM   r/   rN   r   rG   rQ   rR   excs        r    *test_sys_exception_with_exception_instancez?ActiveExceptionTests.test_sys_exception_with_exception_instancep   s    	! 	! 	!	"ACCCC 	" 	" 	"A-//CCCCCC	" 	a,,,c1rT   c                     d }	  |             n,# t           $ r}|}t          j                    }Y d }~nd }~ww xY w|                     |t                     |                     ||           d S )Nc                      t           r-   r.   r9   r3   r    rG   zFActiveExceptionTests.test_sys_exception_with_exception_type.<locals>.f~   r2   r3   rZ   r[   s        r    &test_sys_exception_with_exception_typez;ActiveExceptionTests.test_sys_exception_with_exception_type}   s    	 	 		"ACCCC 	" 	" 	"A-//CCCCCC	" 	a,,,c1rT   N)	r6   r7   r8   r@   rC   rS   rW   r]   r`   r9   r3   r    r;   r;   K   sn        = = =0 0 04 4 44 4 4      r3   r;   c                        e Zd Zd Zd Zd ZdS )ExceptHookTestc                    	 t          d          # t           $ rT}t          j                    5 }t          j        t          j                      d d d            n# 1 swxY w Y   Y d }~nd }~ww xY w|                     |                                                    d                     | 	                    t          t          j                   d S )Nr   ValueError: 42
)r/   r   captured_stderrr   __excepthook__r>   r   r   endswithr   r   r   r\   errs      r    test_original_excepthookz'ExceptHookTest.test_original_excepthook   s    	4R..  	4 	4 	4(** 4c"CLNN334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	4 	//0BCCDDD)S%788888s7    
A/A* AA*A	A*!A	"A**A/c                 D   t          j                    5  t          j        dt                     	 t	          dd          # t          $ rT}t          j                    5 }t          j        t          j	                      d d d            n# 1 swxY w Y   Y d }~nd }~ww xY wd d d            n# 1 swxY w Y   |
                                }|                     d|           |                     d|           |                     |                    d                     d S )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   re   r   rf   r>   r   assertInr   rg   rh   s      r    test_excepthook_bytes_filenamez-ExceptHookTest.test_excepthook_bytes_filename   s    $&& 	8 	8!(L9998!%)LMMM 8 8 8,.. 8#&778 8 8 8 8 8 8 8 8 8 8 8 8 8 88	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 llnnBCHHH&,,,%9::;;;;;sX   B-A  
B
B B	=B	BBBBB-BB--B14B1c                     t           j                            d          5 }t          j        ddd           d d d            n# 1 swxY w Y   |                     d|                                v            d S )NstderrrI   1zETypeError: print_exception(): Exception expected for value, str found)testr   captured_outputr   
excepthookr   r   )r   rx   s     r    test_excepthookzExceptHookTest.test_excepthook   s    \))(33 	&vN1c1%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& ,/5/@/@A 	B 	B 	B 	B 	Bs   AA
AN)r6   r7   r8   rj   rv   r}   r9   r3   r    rb   rb      sF        	9 	9 	9< < <"B B B B Br3   rb   c                   f   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ej         ej                    d                         Z eddd          ej         ej                     ej                     ej        d          d                                                             Zej         ej                    d                         Z d Z!d Z" ej        ej#        d          d             Z$d Z%d Z&d Z'd Z(d Z)d  Z*d! Z+e
j        j        d"             Z, ej-                    d#             Z. ej        e/j0        d$           ej         ej1                     e2j3        d%          k    d&           ej-                    d'                                     Z4 ej5        ej6        ej7        k    d(           ej-                    d)                         Z8dDd+Z9d, Z:dEd-Z;d. Z< ej-                    d/             Z= ej-                    d0             Z>d1 Z?e
j        j        d2             Z@ ej         eed3          d4          d5             ZAd6 ZBd7 ZCd8 ZD ej         eed9          d:          d;             ZE ej-                    d<             ZFd= ZG ej         eed>          d?          d@             ZH ej-                    dA             ZIdB ZJdC ZKd*S )FSysModuleTestc                 B    t           j                                         d S r-   )rz   r   reap_childrenr?   s    r    tearDownzSysModuleTest.tearDown   s    ""$$$$$r3   c                                           t          t          j        dd                                 t                    5 }t          j                     d d d            n# 1 swxY w Y                        |j        j                   t          dd          \  }}} 	                    |d            	                    |d            	                    |d                                 t                    5 }t          j        d           d d d            n# 1 swxY w Y    	                    |j        j        d                                 t                    5 }t          j        d           d d d            n# 1 swxY w Y    	                    |j        j        d                                 t                    5 }t          j        d           d d d            n# 1 swxY w Y    	                    |j        j        d                                 t                    5 }t          j        d           d d d            n# 1 swxY w Y    	                    |j        j        d           t          dd	          \  }}} 	                    |d
            	                    |d            	                    |d            fd} |dd            |dd            |ddd           d S )Nr   -czimport sys; sys.exit()r   r3   )r   exit)      zraise SystemExit(47)/   c                    t          d| fi |\  }}}                    |d                               |d                               |                    |          t	          |          dt	          |                     d S )Nr   rI   r3   z doesn't start with )r   r   r   
startswithascii)r)   expectedenv_varsrcr   ri   r   s         r    check_exit_messagez3SysModuleTest.test_exit.<locals>.check_exit_message   s    0tHHxHHLBSR###S#&&&OOCNN844.3Cjjjj%///JL L L L Lr3   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assertIsNonerB   r)   r   r   r   )r   cmr   r   ri   r   s   `     r    	test_exitzSysModuleTest.test_exit   s)   )SXr2666 z** 	bHJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	",+,,,'.FGGCQc"""c""" z** 	bHRLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	*B/// z** 	bHUOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	*B/// z** 	bHV	 	 	 	 	 	 	 	 	 	 	 	 	 	 	*F333 z** 	bHX	 	 	 	 	 	 	 	 	 	 	 	 	 	 	*H555 -T3IJJCR   c"""c"""	L 	L 	L 	L 	L 	N 	" 	" 	" 	8!	# 	# 	# 	,y	2 	2 	2 	2 	2 	2sZ   A##A'*A'=DD"%D"#FFF	G**G.1G./IIIc                     |                      t          t          j        d           |                     t          j                    t
                     d S rF   )r   r   r   getdefaultencodingrM   strr?   s    r    test_getdefaultencodingz%SysModuleTest.test_getdefaultencoding   sB    )S%;R@@@c466<<<<<r3   c                 t   |                      t          t          j                   |                      t          t          j        d           |                      t          t          j        d           |                      t          t          j        d           t          j                    }|                     |dk     |           	 ddd|fD ]=}t          j        |           |                     t          j                    |           >	 t          j        |           d S # t          j        |           w xY w)Nag      g        g      ?gh㈵>g?g      @)r   r   r   setswitchintervalr/   getswitchintervalr   assertAlmostEqual)r   origns      r    test_switchintervalz!SysModuleTest.test_switchinterval  s   )S%:;;;)S%:C@@@*c&;TBBB*c&;SAAA$&&s
D)))	(dC- C C%a(((&&s'<'>'>BBBBC !$'''''C!$''''s   AD! !D7c                     t          j                    }|                     |t                     |                     |d           |                     t          t           j        d           d S )NrI   r   )r   getrecursionlimitrM   intassertGreaterr   r   )r   limits     r    test_getrecursionlimitz$SysModuleTest.test_getrecursionlimit  s]    %''eS)))5!$$$)S%:B?????r3   c                    t          j                    }	 t          j        d           |                     t          j                    d           |                     t
          t           j                   |                     t          t           j        d           t          j        |           d S # t          j        |           w xY w)Ni'  i)r   r   setrecursionlimitr   r   r   r/   )r   	old_limits     r    test_setrecursionlimitz$SysModuleTest.test_setrecursionlimit  s    )++		-!&)))S244f===i)>???j#*?EEE!),,,,,C!),,,,s   BB1 1Cc                 V   t          t          d          r(t          j                    r|                     d           t          j                    }fd	 dD ]}	 t          j        |           n# t          $ r Y $w xY w|                     t                    5                d d d            n# 1 swxY w Y   |                     t                    5                d d d            n# 1 swxY w Y   	 t          j        |           d S # t          j        |           w xY w)Ngettracez(fatal error if run with a trace functionc                                     d S r-   r9   )rG   s   r    rG   z5SysModuleTest.test_recursionlimit_recovery.<locals>.f(  s    ACCCCCr3   )2   K   d        )r   r   r   skipTestr   r   RecursionErrorr   )r   r   depthrG   s      @r    test_recursionlimit_recoveryz*SysModuleTest.test_recursionlimit_recovery#  s   3
## 	F 	FMMDEEE)++		 	 	 	 		-1  )%0000%    H &&~66  ACCC              &&~66  ACCC               !),,,,,C!),,,,sx   D A21D 2
A?<D >A??D B3'D 3B7	7D :B7	;D C/#D /C3	3D 6C3	7D D(c                 f   t          j                    }	 t          j                    }|                     t          j                    |          5  t          j        |dz              t          j        |           |                     t                    5 }t          j        |dz              d d d            n# 1 swxY w Y   |                     t          |j
                  d           d d d            n# 1 swxY w Y   t          j        |           d S # t          j        |           w xY w)N)r   r   rJ   rI   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   rB   )r   r   r   r   s       r    test_setrecursionlimit_to_depthz-SysModuleTest.test_setrecursionlimit_to_depth<  s   
 )++		-/11EC$9$;$;5II 9 9%eai000 %i000&&~66 5")%!)4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5  R\!2!2"89 9 99 9 9 9 9 9 9 9 9 9 9 9 9 9 9 !),,,,,C!),,,,sT   ;D AC9B:.C9:B>	>C9B>	+C9-D 9C==D  C=D D0c                    t           j                            t          d           t          j                    }|                     t          |          d           |                     |d         t                     |                     |d         t                     |                     |d         t                     |                     |d         t                     |                     |d         t                     | 
                    t          t          j        |d           |                     |j        t                     |                     |j        t                     |                     |j        t                     |                     |j        t                     |                     |j        t                     |                     |j        t                     |                     |j        t                     |                     |j        t                     |                     |j        t                     |                     |d         |j                   |                     |d         |j                   |                     |d         |j                   |                     |d         |j                   |                     |d         |j                   t          j                    \  }}}}}d S )Ngetwindowsversion   r   rI   rJ         )rz   r   get_attributer   r   r   lenrM   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_getwindowsversionT  si   ""3(;<<<!##Q###adC(((adC(((adC(((adC(((adC(((*h&61===ags+++ags+++ags+++aj#...anc222a2C888a2C888alC000anc2221qw'''1qw'''1qw'''1qz***1q~... (+'<'>'>$S'4r3   c                 ^    |                      t          t          j        t          d           d S )NrJ   )r   r   r   call_tracingtyper?   s    r    test_call_tracingzSysModuleTest.test_call_tracingr  s%    )S%5tQ?????r3   setdlopenflagsztest needs sys.setdlopenflags()c                    |                      t          t          d                     |                     t          t          j        d           t          j                    }|                     t          t          j                   t          j        |dz              |                     t          j                    |dz              t          j        |           d S )Ngetdlopenflagsr   rI   )r   r   r   r   r   r   r   r   )r   oldflagss     r    test_dlopenflagszSysModuleTest.test_dlopenflagsu  s     	%566777)S%7<<<%'')S%78888A:&&&+--xz:::8$$$$$r3   c                    |                      t          t          j                   t          j        d           }d a|                     t          j        d           |dz              b|                     t          j        d           |           t          t          d          r.|                     t          j                    t                     d S d S )NrI   gettotalrefcount)
r   r   r   getrefcountr   r   r   rM   r   r   )r   cs     r    test_refcountzSysModuleTest.test_refcount  s     	)S_555OD!!..!444..2223*++ 	?!!#"6"8"8#>>>>>	? 	?r3   c                    |                      t          t          j        dd           |                      t          t          j        d           |                     t          j        j        t          j                    j	        u            d S )Nr   i 5w)
r   r   r   	_getframer/   r   r   test_getframe__code__f_coder?   s    r    r   zSysModuleTest.test_getframe  sr    )S]B;;;*cmZ@@@'0}%&	
 	
 	
 	
 	
r3   c                    dd l dd l}                                                                g fd}fd                    |          }|                                                                  |                     t                    d           d         }t          j	                    }|D ]3}| 
                    |t                     |                     |d           4                                }|                     ||           |                     ||           |                    |          }|                     |t          j                    u            |                    |          }|                    |          }	t'          |	          D ]\  }
\  }}}}|dk    r n|                     d           |                     |d           |	|
dz            \  }}}}|                     |d	           |                     |d
dg                                            |                                 d S )Nr   c                                     d S r-   r9   g456s   r    f123z/SysModuleTest.test_current_frames.<locals>.f123      DFFFFFr3   c                                                                                                                                                         d S r-   )append	get_identsetwait	entered_gleave_gthread_info	threadings   r    r   z/SysModuleTest.test_current_frames.<locals>.g456  sA    y2244555MMOOOLLNNNNNr3   targetrI   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_framesrM   r   r   r   ru   popr   r   extract_stack	enumeratefailr   join)r   r   r   t	thread_iddtidmain_idframestackifilenamelinenofuncname
sourceliner   r   r   r   r   s                  @@@@@r    test_current_framesz!SysModuleTest.test_current_frames  s    	
 OO%%	//##	 	 	 	 		 	 	 	 	 	 	 	
 D))				
 	[))1---N	!! 	' 	'C!!#s+++sA&&&&%%''gq!!!i### g0111
 i  ''..;DU;K;K 	C 	C7A7&(J6!! " IIABBBX... 27qs.&(J6***j#35F"GHHH 		r3   Tz4Test too slow when the address sanitizer is enabled.)memoryaddressreasoncpuc                    	 dd l }dd l}dd l} G d d          fd}d}d}t          j                    }|rM	 t          j        |dt
          j                   d S # t          $ r t          j	        ||j
                    w xY wg }t          |          D ]C}	|                    ||f          }
|                    |
           |
                                 D|D ]}|                                 t          j        d           d S )	Nr   c                       e Zd Zd Zd ZdS )ISysModuleTest.test_current_frames_exceptions_deadlock.<locals>.MockObjectc                     t          t          d                    | _        t          j                    | _        t          j                    | _        d S )Ni'  )listrange_listr   r  _trace_current_exceptions_exceptionsr?   s    r    __init__zRSysModuleTest.test_current_frames_exceptions_deadlock.<locals>.MockObject.__init__  s>    !%,,//
!133#&#:#<#<   r3   c                     d S r-   r9   r?   s    r    __del__zQSysModuleTest.test_current_frames_exceptions_deadlock.<locals>.MockObject.__del__  s	     r3   N)r6   r7   r8   r"  r$  r9   r3   r    
MockObjectr    s2        = = =    r3   r%  c                 D    d }t          |           D ]}             }d S r-   )r  )num_objectsr0   r   r%  s      r    thread_functionzNSysModuleTest.test_current_frames_exceptions_deadlock.<locals>.thread_function   s6    C;'' # # jll# #r3   r   rJ   )exitcodetimeout)r   args)r   timesignalosforkr   wait_processSHORT_TIMEOUTKeyboardInterruptkillSIGTERMr  r   r   r   r  _exit)r   r   r,  r-  r(  NUM_OBJECTSNUM_THREADSpidthreadsr  threadr  r%  s               @r    'test_current_frames_exceptions_deadlockz5SysModuleTest.test_current_frames_exceptions_deadlock  ss   	 		 	 	 	 	 	 	 	.	# 	# 	# 	# 	#  gii 	$S1g>STTTTTT$   V^,,, G;''  "))*+ *   v&&&  HQKKKKKs   !A &Bc                    dd l dd l}                                                                g fd}fd                    |          }|                                                                  |                     t                    d           d         }t          j	                    }|D ]3}| 
                    |t                     |                     |d           4                                }|                     ||           |                     ||           |                     d|                    |                     |                    |          \  }}	}
|                    |
j                  }t%          |          D ]\  }\  }}}}|dk    r n|                     d           |                     |d	           ||dz            \  }}}}|                     |d
           |                     |                    d                                                      |                                 d S )Nr   c                                     d S r-   r9   r   s   r    r   z3SysModuleTest.test_current_exceptions.<locals>.f123-  r   r3   c                                                                                                                       	 	 t          d          # t          $ r&                     t
          j                  rY d S Y nw xY wD)NToops)r*  )r   r   r   r/   r   r   LONG_TIMEOUTr   s   r    r   z3SysModuleTest.test_current_exceptions.<locals>.g4560  s    y2244555MMOOO$V,,,!   ||G,@|AA  s   A *A>=A>r   rI   r=   r   r   r   r   zif leave_g.wait()r   r   r   r   r   r   r   r   r   r   rM   r   r   r   ru   r  r  tb_framer  r  r   r   r   r  )r   r   r   r  r  r	  r
  r  exc_type	exc_valueexc_tbr  r  r  r  r  r  r   r   r   r   r   s                    @@@@@r    test_current_exceptionsz%SysModuleTest.test_current_exceptions   s    	
 OO%%	//##	 	 	 	 		 	 	 	 	 	 	 	 D))				
 	[))1---N	#%% 	' 	'C!!#s+++sA&&&&%%''gq!!!i###+QUU7^^<<<
 '(eeI&6&6#)V''88;DU;K;K 	C 	C7A7&(J6!! " IIABBBX... 27qs.&(J6***
--.@AABBB 		r3   c                 \   |                      t          j        t                     |                      t          j        t
                     t          j        D ]}|                      |t                     |                      t          j        t
                     t          j        D ]}|                      |t                     |                     t          j	        d           |                      t          j
        t                     |                      t          j        t                     |                      t          j        t                     |                      t          j        t                     |                      t          j        t                     |                     t#          t          j                  d           |                     t          j        j        d           |                     t#          t          j                  d           |                     t          j        j        dz  dk               |                     t          j        j        dk               |                     t          j        j        d           |                     t          j        j        d	           |                     t          j        j        t          j        j                   |                     t9          t          j        j                  t                     |                     t9          t          j        j                  t                     |                      t          j        j        t                     |                      t          j        j        t                     |                      t          j        t                     |                     t#          t          j                  d
           |                     t          j        j         dt          j        j!        z             tE          dd	          D ]k}|                     tG          |t          j        j         dz
  t          j        j                   dd$                    t          j        j                              l|                      t          j        j%        t                     |                      t          j        j&        t                     |                      t          j        j'        t                     tQ          j)        d          }t          j        j*        dv r|                     t          j        j+        ddh           |                     t          j        j,        h d           |dk    r&|                     t          j        j*        d           n|dk    r&|                     t          j        j*        d           nj|dk    r&|                     t          j        j*        d           n>|                     t          j        j*        h d           n|                     |d           |                     t          j        j-        d           |                     t          j        j-        d           |                      t          j.        t                     |                      t          j/        t                     |                     t          j/        d           |                      t          j0        t                     |                      t          j1        t                     |                      t          j2        t                     |                      t          j3        t                     |                      t          j4        t                     t          j5        }|                      |d d          t                     |                     t#          |          d           |                      |d         t                     |                      |d         t                     |                      |d         t                     |                     |d         d           |                      |d         t                     |                      |j6        t                     |                      |j7        t                     |                      |j8        t                     |                     |j9        d           |                      |j:        t                     |                     |d         |j6                   |                     |d         |j7                   |                     |d         |j8                   |                     |d         |j9                   |                     |d         |j:                   |                     |dk               |                      t          j;        t                     |                     t          j;        d           t          j0        <                    d          s'|                      t          j=        t                     d S d S )N)littlebig   rJ   r   r   r   rI   i  r   	   z'sys.hash_info.modulus {} is a non-primePy_HASH_ALGORITHM>   fnv	siphash13	siphash24    @   >   rO  rP     rN  rL  r   rM     i alphabeta	candidatefinal)rI   r   r   )shortlegacywin)>rM   r   api_versionr   argvr  r   	orig_argvru   	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widthr  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_attributesd  s   cos333ch---8 	, 	,C!!#s++++cmT222= 	, 	,C!!#s++++cm%6777c6>>>cmS111cos333c2C888cnc222S^,,b111-q111S\**A...3a71<===1Q6777 CSIII GMMM3<><B	D 	D 	Dcl9::C@@@cl788#>>>clA3GGGclEsKKKcnc222S]++Q///-q#-2E/EFFF q# 	 	AAs},Q.0EFF9@@M)+ +    	cm/555cm/555cm0#666'(;<<="&GGGMM#-1B8<<<MM#-1===AAAqyy  !8+FFFF  !8%@@@@  !8+FFFFcm57X7X7XYYYY T1%%% 4a888,a000ck3///cnc222222clC000cj#...cos333cnc222ck3///beU+++R!$$$beS)))beS)))beS)))beDEEEbeS)))bh,,,bh,,,bh,,,bo'NOOObi---A)))A)))A)))A000A	***W%%%c2C888c*,?@@@|&&u-- 	5!!#,44444	5 	5r3   c                 Z   t           j        }|                     t          |          d           |                     |j        d           |                     |j        d           t           j                            d          r|                     |j        d           d S t           j        dk    r|                     |j        d           d S t           j        dk    r|                     |j        dd	h           d S t           j        d
k    r|                     |j        d	           d S d S )Nr   )ntpthreadpthread-stubssolarisN)	semaphorez
mutex+condN)linuxfreebsdr  win32r  
emscriptenr  wasi)	r   r   r   r   ru   namelockr   r   )r   infos     r    test_thread_infozSysModuleTest.test_thread_info  s   TA&&&di!TUUUdi!BCCC<""#788 	9TY	22222\W$$TY-----\\))MM$)i%ABBBBB\V##TY88888 $#r3   zonly available on Emscriptenc                    |                      t          t          j                  d           |                     t          j        j        t                     |                     t          j        j        t          t          d           f           |                     t          j        j
        t                     |                     t          j        j        t                     d S )Nr   )r   r   r   _emscripten_inforM   emscripten_versionr`  runtimer   r   pthreadsboolshared_memoryr?   s    r    test_emscripten_infoz"SysModuleTest.test_emscripten_info  s    S122A666c2EuMMMc2:S$t**<MNNNc2;TBBBc2@$GGGGGr3   c                 n    |                      t          j        j        t          j        j                   d S r-   )r   r   
__stdout__encoding
__stderr__r?   s    r    
test_43581zSysModuleTest.test_43581  s*     	0#.2IJJJJJr3   c                    t           dz  a |                     t          t          j                   dt          t                     z   }|                     t          j        |          |u            |                                                                }|                     t          j        |          |u             G d dt
                    }|                     t          t          j         |d                     d S )NrI   znever interned beforec                       e Zd Zd ZdS )$SysModuleTest.test_intern.<locals>.Sc                     dS )Nrn   r9   r?   s    r    __hash__z-SysModuleTest.test_intern.<locals>.S.__hash__      sr3   N)r6   r7   r8   r  r9   r3   r    Sr    #            r3   r  abc)INTERN_NUMRUNSr   r   r   internr   r   swapcase)r   ss2r  s       r    test_internzSysModuleTest.test_intern  s    !)SZ000#c.&9&99
1*+++ZZ\\""$$
2!+,,,	 	 	 	 	 	 	 	 	)SZ5:::::r3   c           	      d   |                      t          j                   d}|D ]~}|                      t          t          j        |          |           |dv rt          nt
          }|                     t          t          t          j        |                    ||           |                      t          t          j                             |                     t          t          j                  t          |                     |                     t          j        j        h d           d S )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   rI   rJ   )r   r   flagsr   r  r   r   r   getattrreprr   ru   r  )r   attrsattr	attr_types       r    test_sys_flagszSysModuleTest.test_sys_flags  s    	"""M  	N 	NDOOGCIt44d;;; $(A A AsIT'#)T":":;;YMMMMSY(((SYU444ci)99955555r3   c                 4   |}t          |          }|                     t                    5   ||           d d d            n# 1 swxY w Y   |                     t                    5  |                    ||           d d d            d S # 1 swxY w Y   d S r-   )r   r   r   __new__)r   sys_attrr  r  s       r    assert_raise_on_new_sys_typez*SysModuleTest.assert_raise_on_new_sys_type  s    NN	y)) 	 	IcNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	. 	.i---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s#   AAA)BBBc                 D    |                      t          j                   d S r-   )r  r   r  r?   s    r    test_sys_flags_no_instantiationz-SysModuleTest.test_sys_flags_no_instantiation  s    ))#)44444r3   c                 D    |                      t          j                   d S r-   )r  r   r  r?   s    r    &test_sys_version_info_no_instantiationz4SysModuleTest.test_sys_version_info_no_instantiation  s    ))#*:;;;;;r3   c                     t           j                            t          d           |                     t          j                               d S )Nr   )rz   r   r   r   r  r   r?   s    r    +test_sys_getwindowsversion_no_instantiationz9SysModuleTest.test_sys_getwindowsversion_no_instantiation  s>    ""3(;<<<))#*?*A*ABBBBBr3   c                 ,    t          j                     d S r-   )r   _clear_type_cacher?   s    r    test_clear_type_cachez#SysModuleTest.test_clear_type_cache  s    r3   c                    t          t          j                  }d|d<   t          j        t
          j        ddgt          j        |          }|                                d         	                                }dt          j
        z                       d          }|                     ||           d|d<   t          j        t
          j        ddgt          j        |          }|                                d         	                                }|                     |d	           d
|d<   t          j        t
          j        ddgt          j        t          j        |          }|                                \  }}|                     |d           |                     d|           |                     d|           d|d<   t          j        t
          j        ddgt          j        t          j        |          }|                                \  }}|                     |d           |                     d|           |                     d|           d|d<   t          j        t
          j        ddgt          j        |          }|                                d         	                                }|                     |d           d S )Ncp424r   r   zprint(chr(0xa2))r   envr      ¢zascii:replace   ?r   )r   rx   r  r3   s   UnicodeEncodeError:s   '\xa2'zascii:z:surrogateescapezprint(chr(0xdcbd))   )dictr.  environ
subprocessPopenr   rd  PIPEcommunicatestriplinesepencoder   ru   )r   r  pr   r   ri   s         r    test_ioencodingzSysModuleTest.test_ioencoding  s   2:
 #*cnd4FG&0o3@ @ @mmooa &&((RZ'//88h'''"1cnd4FG&0o3@ @ @mmooa &&((d###")cnd4FG$.OJO!$& & & ==??Sc""",c222j#&&&"*cnd4FG$.OJO!$& & & ==??Sc""",c222j#&&&"4cnd4HI$.O> > >mmooa &&((g&&&&&r3   z*requires OS support of non-ASCII encodingsFz$requires FS encoding to match localec                 t   t          t          j                  }d|d<   t          j        t
          j        ddt          j        z  gt          j	        |          }|
                                d                                         }|                     |t          j        t          j                             d S )Nr   r   r   z	print(%a)r  r   )r  r.  r  r  r  r   rd  r   FS_NONASCIIr  r  r  r   fsencode)r   r  r  r   s       r    test_ioencoding_nonasciiz&SysModuleTest.test_ioencoding_nonasciiH  s     2:"$cnd +i.C CE'1CA A A mmooa &&((bk)*?@@AAAAAr3   zTest is not venv-compatiblec           
         |                      t          j                            t          j                  t          j                   t          j                            t          j                            t          j                            }t          j	        g dt          j        t          j
        |          }|                                d         }|                                                    d          }|                                 |                     |dt!          t          j                            dd                    g           d S )N)nonexistentr   zEimport sys; print(sys.executable.encode("ascii", "backslashreplace")))rd  r   cwdr   ASCIIzb''r   backslashreplace)r   r.  pathabspathr   rd  dirnamerealpathr  r  r  r  r  decoder   ru   r  r  )r   
python_dirr  r   rd  s        r    test_executablezSysModuleTest.test_executableW  s    
 	88#.III W__RW%5%5cn%E%EFF
V V V~jo:O O O #\\^^**733
	j5$s~/D/DWN`/a/a*b*b"cdddddr3   Nc                     |                      |           t          j        |           |r|                     ||           d S d S r-   )assertIsNotNonecodecslookupr   r   fs_encodingr   s      r    check_fsencodingzSysModuleTest.check_fsencodingn  sT    [)))k""" 	4[(33333	4 	4r3   c                     t          j                    }t           j        dk    rd}nd }|                     ||           d S )Ndarwinzutf-8)r   getfilesystemencodingr   r  r  s      r    test_getfilesystemencodingz(SysModuleTest.test_getfilesystemencodingt  sE    /11<8##HHHk844444r3   c                    t           j                                        }||d<   d|d<   d                    d          }t          j        ddd|g}|r|                    d	           |||d
<   n|                    d
d            t          j	        |t          j
        t          j        |d          }|                                \  }}	|S )NLC_ALL0PYTHONCOERCECLOCALE
)
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   rx   r  universal_newlines)r.  r  copyr  r   rd  r   r  r  r  r  STDOUTr  )
r   localer  r  r  r)   r+  r  r   rx   s
             r    c_locale_get_error_handlerz(SysModuleTest.c_locale_get_error_handler|  s    jooH%(!"yy 
   hd; 	KK&.C"##GG&---T%/_%/%6"%15	7 7 7
 r3   c                 "   |                      |d          }|                     |d           |                      |d          }|                     |d           |                      |d          }|                     |d           |                      |d	          }|                     |d           |                      |d
          }|                     |d           |                      |d          }|                     |d           d S )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D6	7 	7 	7 --fy-II6	7 	7 	7 --f{-KK6	7 	7 	7 --f|-LL6	7 	7 	7 --fs-CC6	7 	7 	7 --fr-BB6	7 	7 	7 	7 	7r3   c                 0    |                      d           d S )NCr  r?   s    r    test_c_locale_surrogateescapez+SysModuleTest.test_c_locale_surrogateescape  s    ))#.....r3   c                 0    |                      d           d S )NPOSIXr  r?   s    r    !test_posix_locale_surrogateescapez/SysModuleTest.test_posix_locale_surrogateescape  s    ))'22222r3   c                 @   ddddd}|                      t          t          j        d                     |                      t          t          j        d                     |                      t          t          j        d                     |                      t          t          j        d	                     t          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  }|                     t          j        j        |           |                     t          j        j        t          j        j                                                   d S )N
   rI        rS  r  r  rm  	cache_tagrJ         rR  r   r   )r   r   r   implementationr  r   r   r   r  r  r  rm  r  lower)r   levelsr  rm  s       r    test_implementationz!SysModuleTest.test_implementation  sn    #LL 2F;;<<< 2I>>??? 2LAABBB 2K@@AAA$,!w}gm&DEEEmr)GMR,??mq()+1'2F+G1+LMn)*
 	+6
CCC 	+0+06688	: 	: 	: 	: 	:r3   c                 z   ddl m} ddg} || \  }}}t          j        dk    rqt	          j        d          }t	          j        d          }|r|                     d|           |r|                     d	|           |s|s|                     |           |                     t          t          j
        d
           d S )Nr   )r   r   z#import sys; sys._debugmallocstats()r  WITH_FREELISTSWITH_PYMALLOCs   free PyDictObjectss   Small block thresholdT)test.support.script_helperr   r   r   rw  rx  ru   assertFalser   r   _debugmallocstats)r   r   r+  retr   ri   with_freelistswith_pymallocs           r    test_debugmallocstatsz#SysModuleTest.test_debugmallocstats  s     	@?????;<(($/S# <7""&56FGGN%4_EEM :3S999 =6<<<! &- &  %%% 	)S%:DAAAAAr3   getallocatedblocksz0sys.getallocatedblocks unavailable on this buildc                    	 dd l }	 |                                }|dv }n<# t          $ r}d}Y d }~n+d }~ww xY w# t          $ r t	          j                    }Y nw xY wt          j                    }|                     t          |          t                     |r|                     |d           n|                     |d           	 |                     |t          j                               n# t          $ r Y nw xY wt!          j                     t          j                    }|                     ||           t!          j                     t          j                    }|                     |t)          |dz
  |dz                        d S )Nr   )pymallocpymalloc_debugTr   )	_testcapipymem_getallocatorsnamer   ImportErrorr   r7  r   r9  rN   r   r   r   rj  ro  r   AttributeErrorgccollectassertLessEqualru   r  )r   r=  
alloc_namer7  r\   r   br   s           r    test_getallocatedblocksz%SysModuleTest.test_getallocatedblocks  s   	OO&>>@@

 ",/M!M	   % % % $%  	4 	4 	4#133MMM	4 "$$d1ggs### 	*q!$$$$
 ##Aq)))	 OOAs3556666 	 	 	D	 	
"$$Q"""

"$$aq2vq2v../////s1   9   
616AA'C/ /
C<;C<c                     |                      t          j                    d           d}t          d|          \  }}}|                     |                                d           d S )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)rN   r   is_finalizingr   r   rstripr   r)   r   r   rx   s        r    test_is_finalizingz SysModuleTest.test_is_finalizing  sb    c'))5111 .dD99FF'22222r3   c                     d}t          d|          \  }}}|                                }|                     d|d                    |                     d|d                    d S )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_inforI   )r   
splitlinesru   r   r)   r   r   ri   s        r    test_issue20602zSysModuleTest.test_issue206021  sf     (d33CnnlCF+++'Q00000r3   c                     d}t          d|          \  }}}|                     |d           |                     |                                d           |                     |                                d           d S )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   r3   )r   r   rI  rJ  s        r    &test_sys_ignores_cleaning_up_user_dataz4SysModuleTest.test_sys_ignores_cleaning_up_user_data@  sy    
 .dD99FFQ#...#.....r3   getandroidapilevelzneed sys.getandroidapilevel()c                     t          j                    }|                     |t                     |                     |d           d S )Nr   )r   rR  rM   r   r   )r   levels     r    test_getandroidapilevelz%SysModuleTest.test_getandroidapilevelQ  sD     &((eS)))5!$$$$$r3   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 |           d S )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                  }|                                d         }                    |                                |           d S )Nr   )rx   rI   )r  r  r   rd  r  r  r   rM  )tracebacklimitr   r  r   r)   r   s       r    checkz4SysModuleTest.test_sys_tracebacklimit.<locals>.checkc  sg     #.$~8M!N(29 9 9A--//!$CS^^--x88888r3   )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 zeror%  r   rJ   rI   r   r   r9   )r   rY  r   r)   s   `  @r    test_sys_tracebacklimitz%SysModuleTest.test_sys_tracebacklimitX  s(   	9 	9 	9 	9 	9 	9
 
 
	 	b)aa2A2122.///a2A2122.///a)B-!!!b9R=/"""agy!!!b$h2(((dIr3   c                     |                      t          t          j                  t          t	          t          j                                       d S r-   )r   r   r   	meta_pathr   r?   s    r    test_no_duplicates_in_meta_pathz-SysModuleTest.test_no_duplicates_in_meta_pathz  s:    S]++SS]1C1C-D-DEEEEEr3   _enablelegacywindowsfsencodingz*needs sys._enablelegacywindowsfsencoding()c                     d}t          dd                    |                    \  }}}|                    dd                                          }|                     |d           d S )N)r  z$sys._enablelegacywindowsfsencoding()zCprint(sys.getfilesystemencoding(), sys.getfilesystemencodeerrors())r   z; r   replacezmbcs replace)r   r  r  rI  r   rN  s        r    #test__enablelegacywindowsfsencodingz1SysModuleTest.test__enablelegacywindowsfsencoding}  sf    W (diioo>>Cjj),,3355n-----r3   c                 D   t          j        d          }t          j        dddd|dg}t	          j        |ddd          }t          ddg          t          |          g}|                     |j        	                                
                                ||           d S )	Nz]
            import sys
            print(sys.argv)
            print(sys.orig_argv)
        r  r  utf8r   r  T)rY  capture_outputro   )textwrapdedentr   rd  r  runr  r   r   rI  rM  )r   r)   r+  procr   s        r    test_orig_argvzSysModuleTest.test_orig_argv  s        
 dFD$F~d$t$OOO$JJ
 	++--88::H	 	 	 	 	r3   c                     |                      t          j        t                     t          j        D ]}|                      |t                     d S r-   )rM   r   stdlib_module_names	frozensetr   )r   r  s     r    test_module_nameszSysModuleTest.test_module_names  sP    c5yAAA+ 	- 	-D!!$,,,,	- 	-r3   c                 h   t          j        d          }t          |dd           }|r|j                            |          sd }|r|j                            |          nd }|                     |j                            t          j	                  |j                            |                     d S )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4Z.. 	"'..00 	F.4>27??6***$))#/::))(33	5 	5 	5 	5 	5r3   r-   )FN)Lr6   r7   r8   r   r   r   r   r   r   r   rz   r   cpython_onlyr   r   r   unittest
skipUnlessr   r   r   refcount_testr   r   r   reap_threadsrequires_working_threadingr  r	   requires_forkrequires_resourcer;  rE  r  r  is_emscriptenr  r  r  r  r  r  r  r  r  requires_subprocessr  r   r  r  r  getpreferredencodingr  skipIfr  r  r  r  r  r  r  r   r#  r.  r8  rF  rK  rO  rQ  rU  r[  r^  rb  rj  rn  rv  r9   r3   r    r   r      sj       % % %@2 @2 @2D= = =( ( (@ @ @	- 	- 	-- - -2 
\- - -.? ? ?<@ @ @ X&677:< <% %< <% 
\? ?  ?
 
 
 "0022> > 32 #">@ dD ;@ A A A"0022WWu%%= = &%  32 #"A A=~ "0022@ @ 32 #"@D]5 ]5 ]5~9 9 9 X.0NOOH H POHK K K
; ; ;(6 6 6". . .5 5 5< < <C C C
 
\      !W "")' )' #")'V X.EG GX22448S8STY8Z8ZZ?A A W ""B B #"A AG G
B X_S_
224 4 W ""e e #"4 4e(4 4 4 45 5 5   :$7 $7 $7L !W ""/ / #"/ !W ""3 3 #"3: : :, 
\B B B* X&:;;KM M%0 %0M M%0N3 3 3*1 1 1/ / /" X&:;;8: :% %: :%
 !W ""  #"BF F F X&FGGEG G. .G G. !W ""  #"- - -
5 5 5 5 5r3   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	UnraisableHookTestc                     dd l }dd l}d| }	 |                    |||           |                    t	          |          ||j        ||          d }S # d }w xY w)Nr   Exception ignored )rB  rC  exc_tracebackerr_msgobject)r=  typeswrite_unraisable_excSimpleNamespacer   rO   )r   r\   r  r0   r=  r  err_msg2s          r    r  z'UnraisableHookTest.write_unraisable_exc  s    111		**3===(($s))367:7H1903	 ) 5 5 CC$CJJJJs   AA Ac           	         dD ]P}|                      |          5  d}t          j                            d          5 }t          j                            t
          dt
          j                  5  |                     t          d          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |	                                }|| 
                    d| d|d	|           n| 
                    d
|d	|           | 
                    d|           | 
                    d|           d d d            n# 1 swxY w Y   Rd S )N)Nzoriginal hook)r  z	an objectrx   unraisablehookr   r  z: r  zException ignored in: #Traceback (most recent call last):
rd   )r   rz   r   r{   r4   r   __unraisablehook__r  r/   r   ru   )r   r  r0   rx   ri   s        r    test_original_unraisablehookz/UnraisableHookTest.test_original_unraisablehook  s7   . 	7 	7Gg.. 7 7!\11(;; Pv//5E030FH H P P11*R..'3OOOP P P P P P P P P P P P P P PP P P P P P P P P P P P P P P
 oo''&MM"Kw"K"K#"K"K"KSQQQQMM"D3"D"D"DcJJJDcJJJ0#6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7sY   "E1B7/%B 	B7 B$$B7'B$(B7+E7B;;E>B;?A=EE	E	c           	          G d d          } G d dt                      G fdd          }||fD ]}|                     |          5   |            }t          j                                        5 }t          j                            t          dt          j                  5  ~d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                }| 	                    d|           | 	                    |j
        j        |           | 	                    d	|           | 	                    d
|           ||u r-| 	                    d|           | 	                    d|           n,| 	                    d|           | 	                    d|           |                     |                    d                     d d d            n# 1 swxY w Y   d S )Nc                       e Zd Zd ZdS )FUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenDelc                 $    t          d          }|)Ndel is brokenr.   r   r\   s     r    r$  zNUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenDel.__del__  s     11	r3   Nr6   r7   r8   r$  r9   r3   r    	BrokenDelr    s#            r3   r  c                       e Zd Zd ZdS )OUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenStrExceptionc                      t          d          )Nzstr() is brokenrL   r?   s    r    __str__zWUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenStrException.__str__  s     1222r3   N)r6   r7   r8   r  r9   r3   r    BrokenStrExceptionr    s#        3 3 3 3 3r3   r  c                       e Zd Z fdZdS )OUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenExceptionDelc                                  }|r-   r9   )r   r\   r  s     r    r$  zWUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenExceptionDel.__del__  s    ((**	r3   Nr  )r  s   r    BrokenExceptionDelr    s.              r3   r  r  zException ignoredztest_sys.pyz	raise excz<exception str() failed>r/   r  r  )rL   r   rz   r   re   r4   r   r  r   ru   r$  r8   r   rg   )r   r  r  
test_classr0   rx   reportr  s          @r     test_original_unraisablehook_errz3UnraisableHookTest.test_original_unraisablehook_err  s   	 	 	 	 	 	 	 		3 	3 	3 	3 	3 	3 	3 	3	 	 	 	 	 	 	 	 	 	 %&89 	7 	7Jj)) 7 7 jll\1133 v\++C1A,/,BD D  	                               **16:::j0=vFFFmV444k6222!333MM"6???MM"<fEEEEMM,777MM/6::: 5 5666'7 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7s[   )G61C'B5	)C5B99C<B9=C GCGCC>GG"	%G"	c           	          G d d          }dD ]^}|                      |          5  ||j        j        _        t          j                                        5 }t          j                            t          dt          j	                  5  | 
                    |j                                        dd          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                }|                     |j        j        j        |           |dv r|                     |d	z   |           n|                     |d	z   |           d d d            n# 1 swxY w Y   `d S )
Nc                   (    e Zd Z G d d          ZdS )MUnraisableHookTest.test_original_unraisablehook_exception_qualname.<locals>.Ac                   *    e Zd Z G d de          ZdS )OUnraisableHookTest.test_original_unraisablehook_exception_qualname.<locals>.A.Bc                       e Zd ZdS )QUnraisableHookTest.test_original_unraisablehook_exception_qualname.<locals>.A.B.XNr6   r7   r8   r9   r3   r    Xr    s        Dr3   r  N)r6   r7   r8   rL   r  r9   r3   r    Br    s>            	     r3   r  N)r6   r7   r8   r  r9   r3   r    Ar    s<                 r3   r  )r   __main__some_module)
moduleNamer  rm   r0   )r   r  .)r   r  r  r7   rz   r   re   r4   r   r  r  r   ru   r8   assertNotIn)r   r  r  rx   r   r  s         r    /test_original_unraisablehook_exception_qualnamezBUnraisableHookTest.test_original_unraisablehook_exception_qualname  s2   
	 	 	 	 	 	 	 	
 @ 	< 	<J44 < <#- \1133 vt|?U?U)3+A@ @    $88   H                               **ace0&999!999$$Z#%5v>>>>MM*s"2F;;;< < < < < < < < < < < < < < <	< 	<sZ   0E#1C
/C	9CC		CC	CE#C  E##C $A3E##E'	*E'	c                 B   t          d          }t          j                            t          dt          j                  5  |                     t                    5  t	          j        |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r  )	r/   rz   r   r4   r   r  r   r   r  r  s     r    'test_original_unraisablehook_wrong_typez:UnraisableHookTest.test_original_unraisablehook_wrong_type  s   nn\##C)9$'$:< < 	( 	(""9-- ( ("3'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s6    BA<0B<B 	 BB 	BBBc           	         d fd}t                      }	 t          j                            t          d|          5  |                     t          d          d|          }d                                D ]7}|                     t          |          t          ||          |f           8	 d d d            n# 1 swxY w Y   d }d d S # d }d w xY w)Nc                     | d S r-   r9   )r+  	hook_argss    r    	hook_funcz@UnraisableHookTest.test_custom_unraisablehook.<locals>.hook_func  s    IIIr3   r  r   zcustom hookz/exc_type exc_value exc_traceback err_msg object)
r  rz   r   r4   r   r  r/   splitr   r  )r   r  r0   r   r  r  s        @r    test_custom_unraisablehookz-UnraisableHookTest.test_custom_unraisablehook  sL   		 	 	 	 	 hh	''-=yII < <44Z^^5BCI IMSSUU < <D$$WY%=%=%,Xt%<%<&/%:< < < <<< < < < < < < < < < < < < < < HIII HIs/   &C A1B<0C <C  C C C Cc                    d }t           j                            d          5 }t           j                            t          d|          5  |                     t          d          dd            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                }|                     d|d|           |                     d|           |                     d	|           d S )
Nc                       t          d          )Nzhook_func failedr  )r+  s    r    r  zEUnraisableHookTest.test_custom_unraisablehook_fail.<locals>.hook_func(  s    .///r3   rx   r  r   zcustom hook failz)Exception ignored in sys.unraisablehook: r  r  zException: hook_func failed
)	rz   r   r{   r4   r   r  r/   r   ru   )r   r  rx   ri   s       r    test_custom_unraisablehook_failz2UnraisableHookTest.test_custom_unraisablehook_fail'  s   	0 	0 	0 \))(33 	Dv''-=yII D D))*R..*<dD D DD D D D D D D D D D D D D D D	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D
 oo )") ) )	 	 	 	<cBBB5s;;;;;s5   'B
%A;/B;A?	?BA?	BBBN)
r6   r7   r8   r  r  r  r  r  r  r  r9   r3   r    r  r    s~          7 7 7$&7 &7 &7P< < <4( ( (  *< < < < <r3   r  c                   l     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        | _	        d S )NPr   )
structcalcsizer  r   rg  ri  	longdigit_testinternalcapiSIZEOF_PYGC_HEADgc_headsize)r   r  s     r    setUpzSizeofTest.setUp;  s<    %%2    ,=r3   c                    t           j        j        }| j        }|                     t          j        d           |d          | j        z              |                     t          j        g            |d          |z              d S )NTr   Pn)rz   r   calcvobjsizer  r   r   	getsizeofr  )r   vsizegc_header_sizes      r    test_gc_head_sizezSizeofTest.test_gc_head_sizeC  sv    ))t,,eeBii$..HIIIr**EE$KK.,HIIIIIr3   c                     G d d          }|                      t          t          j         |                        G d d          }|                      t          t          j         |                       dg}|                     t          j         |            |          |            G d d          }|                      t          t          j         |                       |                     t          j         |            |          |            G d d	t                    }|                     t          j         |t          j                            t          j        | j	        z              |                      t                    5  t          j         |t          j        d
z                        d d d            n# 1 swxY w Y   |                      t                    5  t          j         |d                     d d d            n# 1 swxY w Y   |                      t          t          f          5  t          j         |t          j         d
z
                       d d d            d S # 1 swxY w Y   d S )Nc                       e Zd Zd ZdS ))SizeofTest.test_errors.<locals>.BadSizeofc                     t           r-   r.   r?   s    r    
__sizeof__z4SizeofTest.test_errors.<locals>.BadSizeof.__sizeof__N  s      r3   Nr6   r7   r8   r  r9   r3   r    	BadSizeofr  M  #        ! ! ! ! !r3   r  c                       e Zd Zd ZdS )-SizeofTest.test_errors.<locals>.InvalidSizeofc                     d S r-   r9   r?   s    r    r  z8SizeofTest.test_errors.<locals>.InvalidSizeof.__sizeof__S  s    tr3   Nr  r9   r3   r    InvalidSizeofr  R  s#            r3   r  sentinelc                       e Zd Zd ZdS )+SizeofTest.test_errors.<locals>.FloatSizeofc                     dS )Ng      @r9   r?   s    r    r  z6SizeofTest.test_errors.<locals>.FloatSizeof.__sizeof__Z  r  r3   Nr  r9   r3   r    FloatSizeofr  Y  r  r3   r  c                       e Zd Zd ZdS ).SizeofTest.test_errors.<locals>.OverflowSizeofc                      t          |           S r-   )r   r?   s    r    r  z9SizeofTest.test_errors.<locals>.OverflowSizeof.__sizeof__`  s    4yy r3   Nr  r9   r3   r    OverflowSizeofr  _  r  r3   r  rI   rZ  )r   r/   r   r  r   rN   r   r   r}  r  OverflowError)r   r  r  r  r  r  s         r    test_errorszSizeofTest.test_errorsL  sH   	! 	! 	! 	! 	! 	! 	! 	! 	*cmYY[[AAA	 	 	 	 	 	 	 	 	)S]MMOODDD<cmMMOOX>>III	 	 	 	 	 	 	 	 	)S]KKMMBBBcmKKMM8<<hGGG	! 	! 	! 	! 	!S 	! 	! 	! 	~~ck'B'BCCt'77	9 	9 	9}-- 	; 	;M..q99:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;z** 	. 	.M..,,---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.
M:;; 	< 	<M..#+)9::;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s6   +GGG-HHH,I<<J J c                    t           j        j        }|                     t	          j        d           |d          | j        z              |                     t	          j        dd           |d          | j        z              d S )NTr   rZ  )rz   r   r  r   r   r  r  )r   sizes     r    test_defaultzSizeofTest.test_defaultk  sr    |(t,,dd2hh.GHHHtR00$$r((T^2KLLLLLr3   c           	      x   !"# 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          |
                                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.          j         #d                      !i j         #d                      !i  #d                      !ddi #d           |t4                    z   dz   d |d          z  z              d t7          d          D             } !| #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                                  #d                      !i                                  #d                      !i                                  #d                      !t          i            #d'                      !t          i                                            #d'                      !t          i                                            #d'                      !t          i                                            #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'} |j(        |j)        j*                  } !| #d,                      !tW          g            #d-                      !tY          d           #d	                      !t[          d           #d.                      !t\          j/         |d           j0        t          t\          j/                  z  z              d/ } |            } !| #d0                     d1 } !| #d2                      G !#fd3d4          }d5 } ! |             #d6                      !t          d7           #d8                     dd l1} !|2                    dd           #d                      !tg          g            |d9                      !tg          dg           |d9          d! j0        z  z               !tg          dd!g           |d9          d! j0        z  z               !tg          g d:           |d9          d# j0        z  z               !t          g            #d8                      !tY          g            #d	                      !d |d           j        z               !d |d           j        z               !d; |d           j        z              d!t\          j4        j5        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>                      !tY          d           #d	                      !t7          d           #d?                      !t7          d@           #d?                     d}g t7          d          t7          dA          g} #dB|d	z  z   dCz             }|D ]}t          |          }|dk    rd}|d!z  }|}||k    r|dz  }||k    |dk    r3 !tq          |          |            !ts          |          |           j !tq          |          || |d	          z  z               !ts          |          || |d	          z  z               !t          tq                                 #dD                      !tu          d           #dE                      !tw          t.                     #dE                      !dF |d                      !d: |d          d" j0        z  z              dG} |d|z             } !t.          |            ||dHz             } G dI dJt>                    " !"| |t4                    z   dKz   dL |d          z  z              "fdMt7          dN          D               ! "            j          #d           j0        z               "            }dx|_<        x|_=        x|_>        x|_?        x|_@        x|_A        x|_B        |_C         !"| |t4                    z   dKz   dL |d          z  z               ! "            j          #d           j0        z              g dO}dP}|dQz   }|dz   }|D ]}t          t          |                    }|dRk     r #|          t          |          z   dz   }nn|dSk     r #|          t          |          z   dz   }nI|dTk     r" #|          d!t          |          dz   z  z   }n! #|          d#t          |          dz   z  z   } !||           t          dU          } !| #|          d#z              t          |dVdW            !| #|          d#z   d#z              dd lH}  !| I                    t.                     #dX                      !| J                    t.                     #dX                     d S )YNTr   F5Pr3      ui n2PinPr   rI   s
   xxxxxxxxxxrI  c                      dfd} | S )Nr   c                       S r-   r9   r  s   r    innerz<SizeofTest.test_objecttypes.<locals>.get_cell.<locals>.inner      r3   r9   )r  r  s    @r    get_cellz-SizeofTest.test_objecttypes.<locals>.get_cell  s&    A    Lr3   r   r  c                 X                         t          j        |           |           d S r-   )rj  r   r  )r   expected_sizer   s     r    check_code_sizez4SizeofTest.test_objecttypes.<locals>.check_code_size  s)    ##CM!$4$4mDDDDDr3   6i13Pc                       fd}|S )Nc                       S r-   r9   r  s   r    r  z=SizeofTest.test_objecttypes.<locals>.get_cell2.<locals>.inner  r  r3   r9   )r  r  s   ` r    	get_cell2z.SizeofTest.test_objecttypes.<locals>.get_cell2  s!        Lr3   2d3PPP3PP3P2P2PnQ2Pr   rR  r   c                 .    i | ]}t          |          |S r9   )r   ).0r  s     r    
<dictcomp>z/SizeofTest.test_objecttypes.<locals>.<dictcomp>  s     000!CFFA000r3   r*  r%  n2PrJ   r   r         )rI   rJ   r   r   r   r  r  rR  P2nPnc                       e Zd ZdS )&SizeofTest.test_objecttypes.<locals>.CNr  r9   r3   r    r  r              r3   r  6Pbz	6Pb 2P2nP32B2iBn4Pr	  c                  (    t          j                    S r-   )r   r   r9   r3   r    funcz)SizeofTest.test_objecttypes.<locals>.func  s    =??"r3   z3Pi3c7P2ic??2Pc                      d S r-   r9   r9   r3   r    r  z)SizeofTest.test_objecttypes.<locals>.func  s      r3   14Pic                       e Zd Zed             Zed             Z  e d                       e d                     dS )&SizeofTest.test_objecttypes.<locals>.cc                      d S r-   r9   r9   r3   r    fooz*SizeofTest.test_objecttypes.<locals>.c.foo      r3   c                     d S r-   r9   )clss    r    barz*SizeofTest.test_objecttypes.<locals>.c.bar  r  r3   PPN)r6   r7   r8   staticmethodr  classmethodr   rY  r  s   r    r   r    sy          \  [ E#ttDzz"""E#ttDzz"""""r3   r   c               3      K   dV  d S )NrI   r9   r9   r3   r    get_genz,SizeofTest.test_objecttypes.<locals>.get_gen  s      Qwwwwwr3   zP2P4P4c7P2ic??Pr  lPr  )rI   rJ   r   rZ  PnPPPc                   h    e Zd Zd Zd Zd Z eeeed          Z  e d                     dS )r  c                     | j         S r-   _C__xr?   s    r    getxz+SizeofTest.test_objecttypes.<locals>.C.getx  s    48Or3   c                     || _         d S r-   r+  )r   values     r    setxz+SizeofTest.test_objecttypes.<locals>.C.setx  s    e4888r3   c                 
    | ` d S r-   r+  r?   s    r    delxz+SizeofTest.test_objecttypes.<locals>.C.delx  s
    r3   r   5PiN)r6   r7   r8   r-  r0  r2  propertyr  r$  s   r    r  z&SizeofTest.test_objecttypes.<locals>.C  s[        +++333(((tT2..AE!TT%[[!!!!!r3   4l4Pi r   3nP2nPP3n3Pr9   P2nPI13Pl4Pn9Pn12PIP4P36P3P10P2P6P1Pc                       e Zd ZdS )2SizeofTest.test_objecttypes.<locals>.newstyleclassNr  r9   r3   r    newstyleclassr>  M  r  r3   r?  rP  r   c                 $    g | ]}             S r9   r9   )r	  r   r?  s     r    
<listcomp>z/SizeofTest.test_objecttypes.<locals>.<listcomp>Q  s    ---Q---r3   r   )d1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111ud   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿuP   ĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀu,  ￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿ux   𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀u  􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿nnbPnPnrQ     i   i @  z<stdin>r(   2Pn3P)Kr  r  rz   r   calcobjsizer  check_sizeofr  r   	bytearray	__alloc__iter__closure__r   complexr   r,  datetime	timedeltadayscollectionsdefaultdictdefault_factoryr   __add____iter__DICT_KEY_STRUCT_FORMATr  keysvaluesitemsr  __dict__BaseExceptionUnicodeEncodeErrorUnicodeDecodeErrorUnicodeTranslateErrorEllipsisr  encodings.iso8859_3charmap_build	iso8859_3decoding_tabler  reversedfloatr   re  r  refinditerr  rg  rh  rx  NotImplementedr   rm  slicesuperr   rE  r   r	  rR   rG   ghordmaxchrr'   weakrefrefproxy)%r   r  r  samplessampler  r  r  r  rN  rQ  longdictr  r  	encodingsr  r   r&  rf  PyLong_BASEPySet_MINSIZEr  minusedtmpnewsizefmtoasciifieldscompactfieldsunicodefieldsmaxcharLrp  rY  r?  r  	__class__s%   `                                @@@r    test_objecttypeszSizeofTest.test_objecttypesp  sr   ?|')!dEE"II.///eUU2YY/000 	c44::V$ 	4 	4F&!!AE!UU6]]Q[[]]23333d9;;d,,,c55::>"""isb)))	 	 	
 	hhjj$Q'c333	E 	E 	E 	E 	E

+TT']];;;)44==999	 	 	 		*DDMMHHSMM,IJJJgallDDJJ'''cif&&& 	h %ttE{{333k%5ttE{{CCCck44<<(((bk44::&&&b$$v,,sAhVxx0F'G'GG!KvW_W_`dWeWeNeefff00uQxx000hVxx0F'G'GG"LPWYaYabfYgYgOgghhhq!fdd6llXX.D%E%EEIVU]U]^cUdUdLddeee1Q!qA;;hVxx0F'G'GG"LPWYaYabgYhYhOhhiiibggiic###biikk4499%%%bhhjj$$s))$$$d2hhW&&&d27799oottG}}---d299;;g///d288::W...aj$$s))$$$moottE{{+++ RAr22DD4E4EFFF S!Q33TT+5F5FGGG#B1b11443D3DEEEhR!!!******** F !4!CDDah   immTT%[[)))hrllDDJJ'''eAhhS		"""cneeBii$&3s~3F3F*FFGGG	# 	# 	#DFFa&''(((dDDLL!!!
	# 
	# 
	# 
	# 
	# 
	# 
	# 
	# 
	# 
	# 
	# 	ggii/00111d5kk44::&&&			bkk"R  $$t**---d2hhd$$$dA3iitqx/000dAq6llEE$KK!DF(2333d999oouuT{{QtvX5666 	d2hhT

###hrllDDJJ'''arT^+,,,arT^+,,,b%%))dn,---44c+b		Adn,< <===c+q."##UU2YY4>1A%ABBBc+q.!!5599q/?#?@@@hW&&&dDDHHndd2hh'''fhhR!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	d588nndd4jj)))hrllDDJJ'''eAhhT

###eEllDDJJ''' uRyy%)),Dt++e344 	E 	EF&kkG!||1S aiG#GW$$!Q, W$$!||c&kk1%%%i''++++c&kk1wxx~~'=#=>>>i''WXXd^^-C)CDDDDd355kk44;;'''eAhhT

###eCjj$$t**%%%b%%))guuRyy1TV8+,,, %E$*c1E#   	*))))F)))mQ*@!A!AABFHHUYNNIZZ[[[----%**----mmoo&Vtv(=>>>MOO8999ac9AC9!#99ac9AC!#mQ*@!A!AABFHHUYNNIZZ[[[mmoo&Vtv(=>>>
6 6 6 #e+%+ 
	 
	A#a&&kkG}}D%%A.23D''#a&&0145D''!SVVaZ.8D''!SVVaZ.8E!QKKKKKKam$$q())) 	9f%%%am$$q(1,--- 	gkk#W... 	gmmC  $$w--00000r3   c                    t          j        |          t          j        |          z   }t	          j        |          rt	          j        |          s
|| j        z  }|                     t          j        |          |           d S r-   )r   r  r  r  rA  
is_trackedr  r   )r   r0   baseextrar   s        r    check_slotszSizeofTest.check_slots  sv    =&&)?)??= 	)bmD&9&9 	)((Hs++X66666r3   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           d S )Nc                       e Zd ZdZdS )!SizeofTest.test_slots.<locals>.BAr   rE  r   Nr6   r7   r8   	__slots__r9   r3   r    BAr            %IIIr3   r  r:  c                       e Zd ZdZdS ) SizeofTest.test_slots.<locals>.Dr  Nr  r9   r3   r    Dr    r  r3   r  r  r  c                       e Zd ZdZdS ) SizeofTest.test_slots.<locals>.Lr  Nr  r9   r3   r    r  r    r  r3   r  c                       e Zd ZdZdS ) SizeofTest.test_slots.<locals>.Sr  Nr  r9   r3   r    r  r    r  r3   r  c                       e Zd ZdZdS )!SizeofTest.test_slots.<locals>.FSr  Nr  r9   r3   r    FSr    r  r3   r  r   )OrderedDictc                       e Zd ZdZdS )!SizeofTest.test_slots.<locals>.ODr  Nr  r9   r3   r    ODr    r  r3   r  )r  rI  r  r  r   rm  rQ  r  )	r   rY  r  r  r  r  r  r  r  s	            r    
test_slotszSizeofTest.test_slots  s     	& 	& 	& 	& 	& 	& 	& 	&bbddIKK&&&	& 	& 	& 	& 	& 	& 	& 	&aa"gggRy$'''	& 	& 	& 	& 	& 	& 	& 	&aacc2t	& 	& 	& 	& 	& 	& 	& 	&aacc355$	& 	& 	& 	& 	& 	& 	& 	&bbddIKK&&&++++++	& 	& 	& 	& 	& 	& 	& 	&bb2hhhb)))400000r3   c                    t           j        j        }t           j        j        }| j        }dd l} ||                                 |d                     	 t          # t          $ r3 t          j	                    d         }| || |d                     Y nw xY w |t          j
         |d          | j        t          t          j
                  z  z              d S )Nr   r  rJ   2P2ir   )rz   r   rG  r  rH  _astASTr   r   r>   r  r  r   )r   r  r  rY  r  tbs         r    test_pythontypeszSizeofTest.test_pythontypes  s    |')!dhhjj$$s))$$$	(O 	( 	( 	("B~b$$v,,'''		( 	cirTVc#)nn%<<=====s   A :BBc                    t          j                    }|                     |j                   |                     |j                   d }t          j        |           t          j                    }|                     |j        |           |                     |d         |           |                     |j        d            |                     |d         d            d }t          j        |           t          j                    }|                     |j        |           |                     |d         |           |                     |j        |           |                     |d         |           t          j        |  t          j                    }|                     |j                   |                     |j                   d S )Nc                      d S r-   r9   r   s    r    <lambda>z0SizeofTest.test_asyncgen_hooks.<locals>.<lambda>      t r3   )	firstiterr   rI   c                      d S r-   r9   r  s    r    r  z0SizeofTest.test_asyncgen_hooks.<locals>.<lambda>  r  r3   )	finalizer)r   get_asyncgen_hooksr   r  r  set_asyncgen_hooksrN   )r   oldr  hooksr  curs         r    test_asyncgen_hookszSizeofTest.test_asyncgen_hooks  s   $&&#-(((#-(((#O	3333&((eoy111eAh	***eot,,,eAh%%%#O	3333&((eoy111eAh	***eoy111eAh	***$$$&&#-(((#-(((((r3   c                     t          j        d          }t          d|          \  }}}|                     |d           |                     |d           d S )Nz
            import sys
            class MyStderr:
                def write(self, s):
                    sys.stderr = None
            sys.stderr = MyStderr()
            1/0
        r   r3   )rf  rg  r   r   rN  s        r    /test_changing_sys_stderr_and_removing_referencez:SizeofTest.test_changing_sys_stderr_and_removing_reference  sc          -T488Cc"""c"""""r3   )r6   r7   r8   r  rz   r   rH  r  r  r  r  r  r  r  r  r  __classcell__)r  s   @r    r  r  8  s        > > > <,LJ J J< < <>M M M
N1 N1 N1 N1 N1`7 7 71 1 10> > >() ) )4# # # # # # #r3   r  r  )#r   r  rA  r  r   r.  r  r  r   rw  test.supportrz   r   r   r2  r   r   r   r   r	   rf  rx  rp   r  rV  TestCaser   r;   rb   r   rw  r  r  r6   mainr9   r3   r    <module>r     s     				   				      



               " " " " " " N N N N N N N N ) ) ) ) ) ) & & & & & & * * * * * *   
 ! ,6 ,6 ,6 ,6 ,6h' ,6 ,6 ,6\= = = = =8, = = =@"B "B "B "B "BX& "B "B "BPp5 p5 p5 p5 p5H% p5 p5 p5f N< N< N< N< N<* N< N< N<b a# a# a# a# a#" a# a# a#F zHMOOOOO r3   