
    <e                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Zd dlmZ d dl
mZ d dlmZmZ d dl
mZ d dl
mZ d dlZd dlZd dlZd 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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       $/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_displayhook9   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>.baddisplayhookC           r%   r"   r#   r$   )r   	swap_attrr   r&   r   r.   r'   )r   r0   r(   s      r   test_custom_displayhookz'DisplayHookTest.test_custom_displayhookB   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)   r4    r2   r   r   r      sA             6* * *6 6 6 6 6r2   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_exceptionK   s%    );<<<<<r2   c                 T    |                      t          j                    d            d S r,   )r   r   	exceptionr>   s    r   test_sys_exception_no_exceptionz4ActiveExceptionTests.test_sys_exception_no_exceptionN   s$    $/////r2   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-   r8   r2   r   fzEActiveExceptionTests.test_exc_info_with_exception_instance.<locals>.fR       R.. r2   r         	Exceptionr   r=   assertIsInstancer.   assertIs__traceback__r   rF   e_er=   s        r   %test_exc_info_with_exception_instancez:ActiveExceptionTests.test_exc_info_with_exception_instanceQ   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-   r8   r2   r   rF   zAActiveExceptionTests.test_exc_info_with_exception_type.<locals>.fa   r1   r2   r   rH   rI   rJ   rO   s        r   !test_exc_info_with_exception_typez6ActiveExceptionTests.test_exc_info_with_exception_type`   s    	 	 		&ACCCC 	& 	& 	&A|~~HHHHHH	& 	a,,,hqk:...hqk1%%%hqk1?33333rS   c                     d }	  |             n,# t           $ r}|}t          j                    }Y d }~nd }~ww xY w|                     |t                     |                     ||           d S )Nc                       t          d          rE   r-   r8   r2   r   rF   zJActiveExceptionTests.test_sys_exception_with_exception_instance.<locals>.fp   rG   r2   rK   r   rA   rL   r.   rM   r   rF   rP   rQ   excs        r   *test_sys_exception_with_exception_instancez?ActiveExceptionTests.test_sys_exception_with_exception_instanceo   s    	! 	! 	!	"ACCCC 	" 	" 	"A-//CCCCCC	" 	a,,,c1rS   c                     d }	  |             n,# t           $ r}|}t          j                    }Y d }~nd }~ww xY w|                     |t                     |                     ||           d S )Nc                      t           r,   r-   r8   r2   r   rF   zFActiveExceptionTests.test_sys_exception_with_exception_type.<locals>.f}   r1   r2   rY   rZ   s        r   &test_sys_exception_with_exception_typez;ActiveExceptionTests.test_sys_exception_with_exception_type|   s    	 	 		"ACCCC 	" 	" 	"A-//CCCCCC	" 	a,,,c1rS   N)	r5   r6   r7   r?   rB   rR   rV   r\   r_   r8   r2   r   r:   r:   J   sn        = = =0 0 04 4 44 4 4      r2   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   rd   r   re   r=   r   assertInr   rf   rg   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stderrrH   1zETypeError: print_exception(): Exception expected for value, str found)testr   captured_outputr   
excepthookr   r   )r   rw   s     r   test_excepthookzExceptHookTest.test_excepthook   s    \))(33 	&vN1c1%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& ,/5/@/@A 	B 	B 	B 	B 	Bs   AA
AN)r5   r6   r7   ri   ru   r|   r8   r2   r   ra   ra      sF        	9 	9 	9< < <"B B B B Br2   ra   c                      e 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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*j+        d           ej         ej,                     e-j.        d          k    d            e
j(                    d!                                     Z/ ej0        ej1        ej2        k    d"           e
j(                    d#                         Z3d>d%Z4d& Z5d?d'Z6d( Z7 e
j(                    d)             Z8 e
j(                    d*             Z9d+ Z:e	j
        j        d,             Z; ej         eed-          d.          d/             Z<d0 Z=d1 Z>d2 Z? ej         eed3          d4          d5             Z@ e
j(                    d6             ZAd7 ZB ej         eed8          d9          d:             ZC e
j(                    d;             ZDd< ZEd= ZFd$S )@SysModuleTestc                 B    t           j                                         d S r,   )ry   r   reap_childrenr>   s    r   tearDownzSysModuleTest.tearDown   s    ""$$$$$r2   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   r2   )r   exit)      zraise SystemExit(47)/   c                    t          d| fi |\  }}}                    |d                               |d                               |                    |          t	          |          dt	          |                     d S )Nr   rH   r2   z doesn't start with )r   r   r   
startswithascii)r(   expectedenv_varsrcr   rh   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r2   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assertIsNonerA   r(   r   r   r   )r   cmr   r   rh   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 rE   )r   r   r   getdefaultencodingrL   strr>   s    r   test_getdefaultencodingz%SysModuleTest.test_getdefaultencoding   sB    )S%;R@@@c466<<<<<r2   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          t          j        d           t          j                    }|                      t          t          j                   |                      t
          t          j        d           t          j        d           |                     t          j                    d           t          j        |           d S )Nr   ii'  )r   r   r   getrecursionlimitsetrecursionlimitr.   r   )r   oldlimits     r   test_recursionlimitz!SysModuleTest.test_recursionlimit  s    )S%:B???(**)S%:;;;*c&;SAAAe$$$.00%888h'''''r2   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,   r8   )rF   s   r   rF   z5SysModuleTest.test_recursionlimit_recovery.<locals>.f  s    ACCCCCr2   )2   K   d        )r   r   r   skipTestr   r   RecursionErrorr   )r   r   depthrF   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                      ddl m  fdt          j                    }	 t          j        d           dD ]} ||           	 t          j        |           d S # t          j        |           w xY w)Nr   )get_recursion_depthc                                  }|| k    rp                     t                    5 }t          j        |           d d d            n# 1 swxY w Y                       t          |j                  d           d S  | |           d S )Nz\cannot set the recursion limit to [0-9]+ at the recursion depth [0-9]+: the limit is too low)r   r   r   r   assertRegexr   rA   )r   limitrecursion_depthr   r   r   set_recursion_limit_at_depths       r   r   zZSysModuleTest.test_setrecursionlimit_recursion_depth.<locals>.set_recursion_limit_at_depth9  s    1133O%''&&~66 1")%0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1  R\!2!2"89 9 9 9 9
 -,UE:::::s   AAAr   )
      r   r   r         )_testinternalcapir   r   r   r   )r   r   r   r   r   s   `  @@r   &test_setrecursionlimit_recursion_depthz4SysModuleTest.test_setrecursionlimit_recursion_depth2  s    
 	:99999
	; 
	; 
	; 
	; 
	; 
	; 
	; (**	,!$'''8 ; ;,,UE::::; !(+++++C!(++++s   %A! !A7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   rH   rI         )ry   r   get_attributer   r   r   lenrL   intr   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_getwindowsversionN  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r2   c                 ^    |                      t          t          j        t          d           d S )NrI   )r   r   r   call_tracingtyper>   s    r   test_call_tracingzSysModuleTest.test_call_tracingl  s%    )S%5tQ?????r2   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   rH   )r   r   r   r   r   r   r   r   )r   oldflagss     r   test_dlopenflagszSysModuleTest.test_dlopenflagso  s     	%566777)S%7<<<%'')S%78888A:&&&+--xz:::8$$$$$r2   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 )NrH   gettotalrefcount)
r   r   r   getrefcountr   r   r   rL   r   r   )r   cs     r   test_refcountzSysModuleTest.test_refcountz  s     	)S_555OD!!..!444..2223*++ 	?!!#"6"8"8#>>>>>	? 	?r2   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}%&	
 	
 	
 	
 	
r2   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,   r8   g456s   r   f123z/SysModuleTest.test_current_frames.<locals>.f123      DFFFFFr2   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LLNNNNNr2   targetrH   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_framesrL   r   assertGreaterr   rt   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 		r2   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,   r8   r   s   r   r   z3SysModuleTest.test_current_exceptions.<locals>.f123  r   r2   c                                                                                                                       	 	 t          d          # t          $ r&                     t
          j                  rY d S Y nw xY wD)NToops)timeout)r   r   r   r.   r   r   LONG_TIMEOUTr   s   r   r   z3SysModuleTest.test_current_exceptions.<locals>.g456  s    y2244555MMOOO$V,,,!   ||G,@|AA  s   A *A>=A>r   rH   r<   r   r   r   r   zif leave_g.wait()r   r   r  r  r  r   r   r   r   _current_exceptionsrL   r   r  r   rt   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 		r2   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   rI   r   r   r   rH   i  r   	   z'sys.hash_info.modulus {} is a non-primePy_HASH_ALGORITHM>   fnv	siphash13	siphash24    @   >   r-  r.     r,  r*  r   r+     i alphabeta	candidatefinal)rH   r   r   )shortlegacywin)>rL   r   api_versionr   argvlistr   	orig_argvrt   	byteorderbuiltin_module_namestuple	copyrightexec_prefixbase_exec_prefix
executabler   r   
float_inforadixint_infor   bits_per_digitsizeof_digitassertGreaterEqualdefault_max_str_digitsstr_digits_check_thresholdr  r   
hexversion	hash_info
assertLessmoduluswidthrangepowformatinfnanimag	sysconfigget_config_var	algorithm	hash_bits	seed_bitscutoffmaxsize
maxunicoder   prefixbase_prefix
platlibdirversionversion_infor   r   microreleaselevelserialfloat_repr_styler   abiflags)r   argxalgovis        r   test_attributeszSysModuleTest.test_attributes  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 	5r2   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freebsdrp  win32ro  
emscriptenrq  wasi)	r   r   r   r   rt   namelockr   r   )r   infos     r   test_thread_infozSysModuleTest.test_thread_infox  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 $#r2   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_inforL   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Gr2   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Jr2   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 )NrH   znever interned beforec                       e Zd Zd ZdS )$SysModuleTest.test_intern.<locals>.Sc                     dS )Nrm   r8   r>   s    r   __hash__z-SysModuleTest.test_intern.<locals>.S.__hash__      sr2   N)r5   r6   r7   r  r8   r2   r   Sr    #            r2   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:::::r2   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   rH   rI   )r   r   flagsr   r  r   r   r   getattrreprr   rt   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5r2   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_attrri  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4r2   c                 D    |                      t          j                   d S r,   )r  r   rc  r>   s    r   &test_sys_version_info_no_instantiationz4SysModuleTest.test_sys_version_info_no_instantiation  s    ))#*:;;;;;r2   c                     t           j                            t          d           |                     t          j                               d S )Nr   )ry   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Br2   c                 ,    t          j                     d S r,   )r   _clear_type_cacher>   s    r   test_clear_type_cachez#SysModuleTest.test_clear_type_cache  s    r2   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   rw   r  r2   s   UnicodeEncodeError:s   '\xa2'zascii:z:surrogateescapezprint(chr(0xdcbd))   )dictosenviron
subprocessPopenr   rC  PIPEcommunicatestriplinesepencoder   rt   )r   r  pr   r   rh   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&&&&&r2   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   rC  r   FS_NONASCIIr  r  r  r   fsencode)r   r  r  r   s       r   test_ioencoding_nonasciiz&SysModuleTest.test_ioencoding_nonascii  s     2:"$cnd +i.C CE'1CA A A mmooa &&((bk)*?@@AAAAAr2   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")))rC  r   cwdr   ASCIIzb''r   backslashreplace)r   r  pathabspathr   rC  dirnamerealpathr  r  r  r  r  decoder   rt   r  r  )r   
python_dirr  r   rC  s        r   test_executablezSysModuleTest.test_executable  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dr2   Nc                     |                      |           t          j        |           |r|                     ||           d S d S r,   )assertIsNotNonecodecslookupr   r   fs_encodingr   s      r   check_fsencodingzSysModuleTest.check_fsencoding#  sT    [)))k""" 	4[(33333	4 	4r2   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_getfilesystemencoding)  sE    /11<8##HHHk844444r2   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   rw   r  universal_newlines)r  r  copyr
  r   rC  r   r  r  r  r  STDOUTr  )
r   localer  r  r  r(   argsr  r   rw   s
             r   c_locale_get_error_handlerz(SysModuleTest.c_locale_get_error_handler1  s    jooH%(!"yy 
   hd; 	KK&.C"##GG&---T%/_%/%6"%15	7 7 7
 r2   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_surrogateescapeN  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 	7r2   c                 0    |                      d           d S )NCr  r>   s    r   test_c_locale_surrogateescapez+SysModuleTest.test_c_locale_surrogateescapet  s    ))#.....r2   c                 0    |                      d           d S )NPOSIXr  r>   s    r   !test_posix_locale_surrogateescapez/SysModuleTest.test_posix_locale_surrogateescapex  s    ))'22222r2   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 )Nr   r'        r1  ry  rb  rL  	cache_tagrI         r0  r   r   )r   r   r   implementationrb  r   r   r   rd  re  rf  rL  ry  lower)r   levelsrb  rL  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	: 	: 	: 	: 	:r2   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()rv  WITH_FREELISTSWITH_PYMALLOCs   free PyDictObjectss   Small block thresholdT)test.support.script_helperr   r   r   rW  rX  rt   assertFalser   r   _debugmallocstats)r   r   r  retr   rh   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Ar2   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   r  r   r  rM   r   r   r  rI  rN  r   AttributeErrorgccollectassertLessEqualrt   rQ  )r   r  
alloc_namer  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)rM   r   is_finalizingr   r   rstripr   r(   r   r   rw   s        r   test_is_finalizingz SysModuleTest.test_is_finalizing  sb    c'))5111 .dD99FF'22222r2   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_inforH   )r   
splitlinesrt   r   r(   r   r   rh   s        r   test_issue20602zSysModuleTest.test_issue20602  sf     (d33CnnlCF+++'Q00000r2   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   r2   )r   r   r*  r+  s        r   &test_sys_ignores_cleaning_up_user_dataz4SysModuleTest.test_sys_ignores_cleaning_up_user_data  sy    
 .dD99FFQ#...#.....r2   getandroidapilevelzneed sys.getandroidapilevel()c                     t          j                    }|                     |t                     |                     |d           d S )Nr   )r   r3  rL   r   r  )r   levels     r   test_getandroidapilevelz%SysModuleTest.test_getandroidapilevel  sD     &((eS)))5!$$$$$r2   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   )rw   rH   )r  r  r   rC  r  r  r   r.  )tracebacklimitr   r  r   r(   r   s       r   checkz4SysModuleTest.test_sys_tracebacklimit.<locals>.check  sg     #.$~8M!N(29 9 9A--//!$CS^^--x88888r2   )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   rI   rH   r   r   r8   )r   r:  r   r(   s   `  @r   test_sys_tracebacklimitz%SysModuleTest.test_sys_tracebacklimit  s(   	9 	9 	9 	9 	9 	9
 
 
	 	b)aa2A2122.///a2A2122.///a)B-!!!b9R=/"""agy!!!b$h2(((dIr2   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_path/  s:    S]++SS]1C1C-D-DEEEEEr2   _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  r*  r   r/  s        r   #test__enablelegacywindowsfsencodingz1SysModuleTest.test__enablelegacywindowsfsencoding2  sf    W (diioo>>Cjj),,3355n-----r2   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   ri  T)r:  capture_outputrn   )textwrapdedentr   rC  r  runr  r   r   r*  r.  )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	 	 	 	 	r2   c                     |                      t          j        t                     t          j        D ]}|                      |t                     d S r,   )rL   r   stdlib_module_names	frozensetr   )r   ry  s     r   test_module_nameszSysModuleTest.test_module_namesL  sP    c5yAAA+ 	- 	-D!!$,,,,	- 	-r2   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_dirQ  s    .t44Z.. 	"'..00 	F.4>27??6***$))#/::))(33	5 	5 	5 	5 	5r2   r,   )FN)Gr5   r6   r7   r   r   r   r   r   r   ry   r   cpython_onlyr   r   r   unittest
skipUnlessr   r   r   refcount_testr   r   r   reap_threadsrequires_working_threadingr  r#  rm  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  r  r'  r,  r0  r2  r6  r<  r?  rC  rK  rO  rW  r8   r2   r   r~   r~      s       % % %@2 @2 @2D= = =( ( (( ( (, , ,2 
\, , ,6? ? ?<@ @ @ X&677:< <% %< <% 
\? ?  ?
 
 
 "0022> > 32 #">@ "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 5r2   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 )r   r!  exc_tracebackerr_msgobject)r  typeswrite_unraisable_excSimpleNamespacer   rN   )r   r[   rg  r/   r  ri  err_msg2s          r   rj  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)rg  z	an objectrw   unraisablehookr   re  z: r  zException ignored in: #Traceback (most recent call last):
rc   )subTestry   r   rz   r3   r   __unraisablehook__rj  r.   r   rt   )r   rg  r/   rw   rh   s        r   test_original_unraisablehookz/UnraisableHookTest.test_original_unraisablehookl  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   __del__zNUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenDel.__del__  s     11	r2   Nr5   r6   r7   ry  r8   r2   r   	BrokenDelru    s#            r2   r{  c                       e Zd Zd ZdS )OUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenStrExceptionc                      t          d          )Nzstr() is brokenrK   r>   s    r   __str__zWUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenStrException.__str__  s     1222r2   N)r5   r6   r7   r  r8   r2   r   BrokenStrExceptionr}    s#        3 3 3 3 3r2   r  c                       e Zd Z fdZdS )OUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenExceptionDelc                                  }|r,   r8   )r   r[   r  s     r   ry  zWUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenExceptionDel.__del__  s    ((**	r2   Nrz  )r  s   r   BrokenExceptionDelr    s.              r2   r  rn  zException ignoredztest_sys.pyz	raise excz<exception str() failed>r.   rw  r  )rK   rp  ry   r   rd   r3   r   rq  r   rt   ry  r7   r   rf   )r   r{  r  
test_classr/   rw   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r5   r6   r7   r8   r2   r   Xr    s        Dr2   r  N)r5   r6   r7   rK   r  r8   r2   r   Br    s>            	     r2   r  N)r5   r6   r7   r  r8   r2   r   Ar    s<                 r2   r  )r   __main__some_module)
moduleNamern  rl   r/   )r   r  .)rp  r  r  r6   ry   r   rd   r3   r   rq  rj  r   rt   r7   assertNotIn)r   r  r  rw   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   rn  )	r.   ry   r   r3   r   rq  r   r   rn  rx  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,   r8   )r  	hook_argss    r   	hook_funcz@UnraisableHookTest.test_custom_unraisablehook.<locals>.hook_func  s    IIIr2   rn  r   zcustom hookz/exc_type exc_value exc_traceback err_msg object)
rh  ry   r   r3   r   rj  r.   splitr   r  )r   r  r/   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    .///r2   rw   rn  r   zcustom hook failz)Exception ignored in sys.unraisablehook: r  ro  zException: hook_func failed
)	ry   r   rz   r3   r   rj  r.   r   rt   )r   r  rw   rh   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)
r5   r6   r7   rj  rr  r  r  r  r  r  r8   r2   r   rc  rc  [  s~          7 7 7$&7 &7 &7P< < <4( ( (  *< < < < <r2   rc  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   rF  rH  	longdigitr   SIZEOF_PYGC_HEADgc_headsize)r   r   s     r   setUpzSizeofTest.setUp  s<    %%2    ,=r2   c                    t           j        j        }| j        }|                     t          j        d           |d          | j        z              |                     t          j        g            |d          |z              d S )NTr   Pn)ry   r   calcvobjsizer  r   r   	getsizeofr  )r   vsizegc_header_sizes      r   test_gc_head_sizezSizeofTest.test_gc_head_size  sv    ))t,,eeBii$..HIIIr**EE$KK.,HIIIIIr2   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__  s      r2   Nr5   r6   r7   r  r8   r2   r   	BadSizeofr    #        ! ! ! ! !r2   r  c                       e Zd Zd ZdS )-SizeofTest.test_errors.<locals>.InvalidSizeofc                     d S r,   r8   r>   s    r   r  z8SizeofTest.test_errors.<locals>.InvalidSizeof.__sizeof__  s    tr2   Nr  r8   r2   r   InvalidSizeofr    s#            r2   r  sentinelc                       e Zd Zd ZdS )+SizeofTest.test_errors.<locals>.FloatSizeofc                     dS )Ng      @r8   r>   s    r   r  z6SizeofTest.test_errors.<locals>.FloatSizeof.__sizeof__  r  r2   Nr  r8   r2   r   FloatSizeofr    r  r2   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 r2   Nr  r8   r2   r   OverflowSizeofr    r  r2   r  rH   r;  )r   r.   r   r  r   rM   r   r   r]  r  OverflowError)r   r  r  r  r  r  s         r   test_errorszSizeofTest.test_errors  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   r;  )ry   r   r  r   r   r  r  )r   sizes     r   test_defaultzSizeofTest.test_default   sr    |(t,,dd2hh.GHHHtR00$$r((T^2KLLLLLr2   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5Pr2      ui n2PinPr   rH   s
   xxxxxxxxxxr'  c                      dfd} | S )Nr   c                       S r,   r8   rj  s   r   innerz<SizeofTest.test_objecttypes.<locals>.get_cell.<locals>.inner?      r2   r8   )r  rj  s    @r   get_cellz-SizeofTest.test_objecttypes.<locals>.get_cell=  s&    A    Lr2   r   r  c                 X                         t          j        |           |           d S r,   )rI  r   r  )r   expected_sizer   s     r   check_code_sizez4SizeofTest.test_objecttypes.<locals>.check_code_sizeD  s)    ##CM!$4$4mDDDDDr2   6i13Pc                       fd}|S )Nc                       S r,   r8   r  s   r   r  z=SizeofTest.test_objecttypes.<locals>.get_cell2.<locals>.innerI  r  r2   r8   )rj  r  s   ` r   	get_cell2z.SizeofTest.test_objecttypes.<locals>.get_cell2H  s!        Lr2   2d3PPP3PP3P2P2PnQ2Pr   r0  r   c                 .    i | ]}t          |          |S r8   )r   ).0r  s     r   
<dictcomp>z/SizeofTest.test_objecttypes.<locals>.<dictcomp>a  s     000!CFFA000r2   r  r   n2PrI   r   r         )rH   rI   r   r   r   r  r  r0  P2nPnc                       e Zd ZdS )&SizeofTest.test_objecttypes.<locals>.CNr  r8   r2   r   r   r  v            r2   r   6Pbz	6Pb 2P2nP32B2iBn4Pr  c                  (    t          j                    S r,   )r   r   r8   r2   r   funcz)SizeofTest.test_objecttypes.<locals>.func  s    =??"r2   z3Pi3c7P2ic??2Pc                      d S r,   r8   r8   r2   r   r  z)SizeofTest.test_objecttypes.<locals>.func  s      r2   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,   r8   r8   r2   r   fooz*SizeofTest.test_objecttypes.<locals>.c.foo      r2   c                     d S r,   r8   )clss    r   barz*SizeofTest.test_objecttypes.<locals>.c.bar  r  r2   PPN)r5   r6   r7   staticmethodr  classmethodr   r:  r  s   r   r   r    sy          \  [ E#ttDzz"""E#ttDzz"""""r2   r   c               3      K   dV  d S )NrH   r8   r8   r2   r   get_genz,SizeofTest.test_objecttypes.<locals>.get_gen  s      Qwwwwwr2   zP2P4P4c7P2ic??Pr  lPr  )rH   rI   r   r;  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    48Or2   c                     || _         d S r,   r  )r   values     r   setxz+SizeofTest.test_objecttypes.<locals>.C.setx  s    e4888r2   c                 
    | ` d S r,   r  r>   s    r   delxz+SizeofTest.test_objecttypes.<locals>.C.delx  s
    r2   r   5PiN)r5   r6   r7   r  r  r  propertyrj  r  s   r   r   z&SizeofTest.test_objecttypes.<locals>.C  s[        +++333(((tT2..AE!TT%[[!!!!!r2   4l4Pi r   3nP2nPP3n3Pr8   P2nPI13Pl4Pn9Pn12PIP4P36P3P10P2P6P1Pc                       e Zd ZdS )2SizeofTest.test_objecttypes.<locals>.newstyleclassNr  r8   r2   r   newstyleclassr    r  r2   r  r.  r   c                 $    g | ]}             S r8   r8   )r  r   r  s     r   
<listcomp>z/SizeofTest.test_objecttypes.<locals>.<listcomp>  s    ---Q---r2   r   )d1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111ud   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿuP   ĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀu,  ￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿ux   𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀u  􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿nnbPnPnr/     i   i @  z<stdin>r'   2Pn3P)Kr  r  ry   r   calcobjsizer  check_sizeofr  r   	bytearray	__alloc__iter__closure__r   complexr   r  datetime	timedeltadayscollectionsdefaultdictdefault_factoryr   __add____iter__DICT_KEY_STRUCT_FORMATrQ  keysvaluesitemsrh  __dict__BaseExceptionUnicodeEncodeErrorUnicodeDecodeErrorUnicodeTranslateErrorEllipsisr  encodings.iso8859_3charmap_build	iso8859_3decoding_tabler  reversedfloatr   rD  r  refinditerr;  rF  rG  rY  NotImplementedr   rN  slicesuperr   r&  r   r  rQ   rF   ghordmaxchrr&   weakrefrefproxy)%r   r  r  samplessamplerj  r  r  r  r.  r1  longdictr   r  	encodingsr  r   r  rF  PyLong_BASEPySet_MINSIZEr  minusedtmpnewsizefmtoasciifieldscompactfieldsunicodefieldsmaxcharLrP  r:  r  r  	__class__s%   `                                @@@r   test_objecttypeszSizeofTest.test_objecttypes%  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0r2   c                    t          j        |          t          j        |          z   }t	          j        |          rt	          j        |          s
|| j        z  }|                     t          j        |          |           d S r,   )r   r  r  r  r"  
is_trackedr  r   )r   r/   baseextrar   s        r   check_slotszSizeofTest.check_slots5  sv    =&&)?)??= 	)bmD&9&9 	)((Hs++X66666r2   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   r&  r   Nr5   r6   r7   	__slots__r8   r2   r   BArl  ?          %IIIr2   rp  r  c                       e Zd ZdZdS ) SizeofTest.test_slots.<locals>.Drm  Nrn  r8   r2   r   Drs  B  rq  r2   rt  r  rj  c                       e Zd ZdZdS ) SizeofTest.test_slots.<locals>.Lrm  Nrn  r8   r2   r   rb  rv  E  rq  r2   rb  c                       e Zd ZdZdS ) SizeofTest.test_slots.<locals>.Srm  Nrn  r8   r2   r   r  rx  H  rq  r2   r  c                       e Zd ZdZdS )!SizeofTest.test_slots.<locals>.FSrm  Nrn  r8   r2   r   FSrz  K  rq  r2   r{  r   )OrderedDictc                       e Zd ZdZdS )!SizeofTest.test_slots.<locals>.ODrm  Nrn  r8   r2   r   ODr~  O  rq  r2   r  )ri  r)  r  r;  r   rN  r1  r|  )	r   r:  rp  rt  rb  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0r2   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  rI   2P2ir   )ry   r   r'  r  r(  _astASTr   r   r=   r  r  r   )r   r  r  r:  r  tbs         r   test_pythontypeszSizeofTest.test_pythontypesS  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,   r8   r   s    r   <lambda>z0SizeofTest.test_asyncgen_hooks.<locals>.<lambda>l      t r2   )	firstiterr   rH   c                      d S r,   r8   r  s    r   r  z0SizeofTest.test_asyncgen_hooks.<locals>.<lambda>t  r  r2   )	finalizer)r   get_asyncgen_hooksr   r  r  set_asyncgen_hooksrM   )r   oldr  hooksr  curs         r   test_asyncgen_hookszSizeofTest.test_asyncgen_hooksg  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	***$$$&&#-(((#-(((((r2   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   r2   )rG  rH  r   r   r/  s        r   /test_changing_sys_stderr_and_removing_referencez:SizeofTest.test_changing_sys_stderr_and_removing_reference  sc          -T488Cc"""c"""""r2   )r5   r6   r7   r  ry   r   r(  r  r  r  rd  ri  r  r  r  r  __classcell__)rc  s   @r   r  r    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# # # # # # #r2   r  r  )"r   r  r"  r  r   r  r  r  r   rW  test.supportry   r   r   r  r   r   r   r   rG  rY  ro   r  r6  TestCaser   r:   ra   r~   rX  rc  r  r5   mainr8   r2   r   <module>r     sw     				   				      



               " " " " " " 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f5 f5 f5 f5 f5H% f5 f5 f5R N< N< N< N< N<* N< N< N<b a# a# a# a# a#" a# a# a#F zHMOOOOO r2   