
    z%i?                    J   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j0                        Z G d
 dej0                        Z G d dej0                        Z G d dej0                        Zej                  j:                   G d dej0                               Zej                  j:                   G d dej0                               Ze dk(  r ejB                          yy)    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y)DisplayHookTestc                    t         j                  }t        j                         5 } |d       d d d        | j	                  j                         d       | j	                  t        j                  d       t        `t        j                         5 } |d        d d d        | j	                  |j                         d       | j                  t        t        d              | j                  t        |       t         j                  }	 t         `| j                  t        |d       |t         _        y # 1 sw Y   xY w# 1 sw Y   xY w# |t         _        w xY w)N*   z42
 _)sys__displayhook__r   captured_stdoutassertEqualgetvaluebuiltinsr   
assertTruehasattrassertRaises	TypeErrorstdoutRuntimeError)selfdhoutr   s       A/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_sys.pytest_original_displayhookz)DisplayHookTest.test_original_displayhook   s     $$& 	#rF	 	0R(J$$& 	#tH	 	,GHc223 	)R(	 
lB3CJ-	 		 	  CJs#   	D1	D>E
 1D;>E
Ec                     t         j                  }	 t         `t        ddd      }| j                  t        t
        |       |t         _        y # |t         _        w xY w)N42<string>single)r   displayhookcompiler   r   eval)r   r%   codes      r   test_lost_displayhookz%DisplayHookTest.test_lost_displayhook9   sD    oo	*4X6DlD$7)COkCOs   .A Ac                     d }t        j                  t        d|      5  t        ddd      }| j	                  t
        t        |       d d d        y # 1 sw Y   y xY w)Nc                     t         N
ValueError)objs    r   baddisplayhookz?DisplayHookTest.test_custom_displayhook.<locals>.baddisplayhookC           r%   r"   r#   r$   )r   	swap_attrr   r&   r   r.   r'   )r   r0   r(   s      r   test_custom_displayhookz'DisplayHookTest.test_custom_displayhookB   sP    	 sM>B 	64X6Dj$5	6 	6 	6s   )AAN)__name__
__module____qualname__r    r)   r4    r2   r   r   r      s     6*6r2   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)ActiveExceptionTestsc                 L    | j                  t        j                         d       y )N)NNN)r   r   exc_infor   s    r   test_exc_info_no_exceptionz/ActiveExceptionTests.test_exc_info_no_exceptionK   s    );<r2   c                 L    | j                  t        j                         d        y r,   )r   r   	exceptionr=   s    r   test_sys_exception_no_exceptionz4ActiveExceptionTests.test_sys_exception_no_exceptionN   s    $/r2   c                 8   d }	  |        | j                  t               | j                  d   t               | j                  |d   |       | j                  |d   |j                         y # t         $ r }|}t        j                         }Y d }~d }~ww xY w)Nc                      t        d      Nr   r-   r8   r2   r   fzEActiveExceptionTests.test_exc_info_with_exception_instance.<locals>.fR       R. r2   r         	Exceptionr   r<   assertIsInstancer.   assertIs__traceback__r   rE   e_er<   s        r   %test_exc_info_with_exception_instancez:ActiveExceptionTests.test_exc_info_with_exception_instanceQ   s    	!	&C
 	a,hqk:.hqk1%hqk1??3  	&A||~H	&   A0 0	B9BBc                 8   d }	  |        | j                  t               | j                  d   t               | j                  |d   |       | j                  |d   |j                         y # t         $ r }|}t        j                         }Y d }~d }~ww xY w)Nc                      t         r,   r-   r8   r2   r   rE   zAActiveExceptionTests.test_exc_info_with_exception_type.<locals>.fa   r1   r2   r   rG   rH   rI   rN   s        r   !test_exc_info_with_exception_typez6ActiveExceptionTests.test_exc_info_with_exception_type`   s    		&C
 	a,hqk:.hqk1%hqk1??3  	&A||~H	&rR   c                     d }	  |        | j                  t               | j                  |       y # t         $ r }|}t        j                         }Y d }~Md }~ww xY w)Nc                      t        d      rD   r-   r8   r2   r   rE   zJActiveExceptionTests.test_sys_exception_with_exception_instance.<locals>.fp   rF   r2   rJ   r   r@   rK   r.   rL   r   rE   rO   rP   excs        r   *test_sys_exception_with_exception_instancez?ActiveExceptionTests.test_sys_exception_with_exception_instanceo   sS    	!	"C
 	a,c1  	"A--/C	"   5 	AAAc                     d }	  |        | j                  t               | j                  |       y # t         $ r }|}t        j                         }Y d }~Md }~ww xY w)Nc                      t         r,   r-   r8   r2   r   rE   zFActiveExceptionTests.test_sys_exception_with_exception_type.<locals>.f}   r1   r2   rX   rY   s        r   &test_sys_exception_with_exception_typez;ActiveExceptionTests.test_sys_exception_with_exception_type|   sS    		"C
 	a,c1  	"A--/C	"r\   N)	r5   r6   r7   r>   rA   rQ   rU   r[   r_   r8   r2   r   r:   r:   J   s     =044r2   r:   c                       e Zd Zd Zd Zd Zy)ExceptHookTestc                    	 t        d      # t         $ rX}t        j                         5 }t        j                  t        j
                           d d d        n# 1 sw Y   nxY wY d }~nd }~ww xY w| j                  j                         j                  d             | j                  t        t        j                         y )Nr   ValueError: 42
)r.   r   captured_stderrr   __excepthook__r<   r   r   endswithr   r   r   rZ   errs      r   test_original_excepthookz'ExceptHookTest.test_original_excepthook   s    	4R.  	4((* 4c""CLLN34 4 4	4 	//0BCD)S%7%78s+    	A.A)%A	A)A!	A))A.c                    t        j                         5  t        j                  dt               	 t	        dd      # t        $ rX}t        j                         5 }t        j                  t        j                           d d d        n# 1 sw Y   nxY wY d }~nd }~ww xY wd d d        n# 1 sw Y   nxY wj                         }| j                  d|       | j                  d|       | j                  |j                  d             y )Nignoremsg)s   bytes_filename{   r   textz%  File "b'bytes_filename'", line 123
z	    text
zSyntaxError: msg
)warningscatch_warningssimplefilterBytesWarningSyntaxErrorr   rd   r   re   r<   r   assertInr   rf   rg   s      r   test_excepthook_bytes_filenamez-ExceptHookTest.test_excepthook_bytes_filename   s     $$& 	8!!(L98!%)LMM 8,,. 8#&&78 8 88	8 	8 	8 llnBCH&,%9:;sD   B*=	BB%B?	BBBB*BB**B3c                     t         j                  j                  d      5 }t        j                  ddd       d d d        | j                  dj                         v        y # 1 sw Y   +xY w)NstderrrG   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 	&vNN1c1%	& ,/5/@A 	B	& 	&s   A""A+N)r5   r6   r7   ri   ru   r|   r8   r2   r   ra   ra      s    	9<"Br2   ra   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  d        Zd	 Zd
 Z ej"                   eed      d      d        Ze
j                  j*                  d        Zd Zd Zej4                   ej6                         d               Zej4                   ej6                         d               Zd Zd Z ej"                  ej@                  d      d        Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(e
j                  j                  d        Z) ejT                         d        Z+ ej"                  e,jZ                  d        ej"                   ej\                          e/j`                  d!      k(  d"       ejT                         d#                      Z1 ejd                  ejf                  ejh                  k7  d$       ejT                         d%               Z5d@d'Z6d( Z7dAd)Z8d* Z9 ejT                         d+        Z: ejT                         d,        Z;d- Z<e
j                  j                  d.        Z= ej"                   eed/      d0      d1        Z>d2 Z?d3 Z@d4 ZA ej"                   eed5      d6      d7        ZB ejT                         d8        ZCd9 ZD ej"                   eed:      d;      d<        ZE ejT                         d=        ZFd> ZGd? ZHy&)BSysModuleTestc                 @    t         j                  j                          y r,   )ry   r   reap_childrenr=   s    r   tearDownzSysModuleTest.tearDown   s    ""$r2   c                      j                  t        t        j                  dd        j                  t              5 }t        j                          d d d         j                  j                  j                         t        dd      \  }}} j                  |d        j                  |d        j                  |d        j                  t              5 }t        j                  d       d d d         j                  |j                  j                  d        j                  t              5 }t        j                  d       d d d         j                  |j                  j                  d        j                  t              5 }t        j                  d       d d d         j                  |j                  j                  d        j                  t              5 }t        j                  d       d d d         j                  |j                  j                  d       t        dd	      \  }}} j                  |d
        j                  |d        j                  |d        fd} |dd        |dd        |ddd       y # 1 sw Y   BxY w# 1 sw Y   xY w# 1 sw Y   exY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr   -czimport sys; sys.exit()r   r2   )r   exit)      zraise SystemExit(47)/   c                     t        d| fi |\  }}}j                  |d       j                  |d       j                  |j                  |      t	        |      dt	        |             y )Nr   rG   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   sb    0tHxHLBSR#S#&OOCNN84.3Cj%/J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assertIsNoner@   r(   r   r   r   )r   cmr   r   rh   r   s   `     r   	test_exitzSysModuleTest.test_exit   sV   )SXXr26 z* 	bHHJ	",,++,'.FGCQc"c" z* 	bHHRL	**B/ z* 	bHHUO	**B/ z* 	bHHV	**F3 z* 	bHHX	**H5 -T3IJCR c"c"	L 	N 	" 	8!	# 	,y	2s	 		 		 	
	 	
	 	s;   JJ3J,J9%KJJ),J69KKc                     | j                  t        t        j                  d       | j	                  t        j                         t
               y rD   )r   r   r   getdefaultencodingrK   strr=   s    r   test_getdefaultencodingz%SysModuleTest.test_getdefaultencoding   s3    )S%;%;R@c446<r2   c                 f   | j                  t        t        j                         | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       t        j
                         }| j                  |dk  |       	 ddd|fD ];  }t        j                  |       | j                  t        j
                         |       = 	 t        j                  |       y # t        j                  |       w xY w)Nag      g        g      ?gh㈵>g?g      @)r   r   r   setswitchintervalr.   getswitchintervalr   assertAlmostEqual)r   origns      r   test_switchintervalz!SysModuleTest.test_switchinterval  s    )S%:%:;)S%:%:C@*c&;&;TB*c&;&;SA$$&s
D)	(dC- C%%a(&&s'<'<'>BC !!$'C!!$'s   >AD D0c                     t        j                         }| j                  |t               | j	                  |d       | j                  t        t         j                  d       y )NrG   r   )r   getrecursionlimitrK   intassertGreaterr   r   )r   limits     r   test_getrecursionlimitz$SysModuleTest.test_getrecursionlimit  sH    %%'eS)5!$)S%:%:B?r2   c                    t        j                         }	 t        j                  d       | j                  t        j                         d       | j	                  t
        t         j                         | j	                  t        t         j                  d       t        j                  |       y # t        j                  |       w xY w)Ni'  i)r   r   setrecursionlimitr   r   r   r.   )r   	old_limits     r   test_setrecursionlimitz$SysModuleTest.test_setrecursionlimit  s    ))+		-!!&)S224f=i)>)>?j#*?*?E!!),C!!),s   BB. .Cc                     t        t        d      r%t        j                         r| j                  d       t        j                         }fd	 dD ]b  }	 t        j
                  |       | j                  t              5           d d d        | j                  t              5           d d d        d 	 t        j
                  |       y # t        $ r Y w xY w# 1 sw Y   VxY w# 1 sw Y   xY w# t        j
                  |       w xY w)Ngettracez(fatal error if run with a trace functionc                                y r,   r8   )rE   s   r   rE   z5SysModuleTest.test_recursionlimit_recovery.<locals>.f'  s    Cr2   )2   K   d        )r   r   r   skipTestr   r   RecursionErrorr   )r   r   depthrE   s      @r   test_recursionlimit_recoveryz*SysModuleTest.test_recursionlimit_recovery"  s    3
#MMDE))+			-1 ))%0 &&~6 C&&~6 C  !!), &     !!),s`   C6 C,C6 C	C6 &C*.
C6 	CC6 CC6 C'	#C6 *C3	/C6 6Dc                 J   t        j                         }	 t        j                         }| j	                  t        j                         |      5  t        j
                  |dz          t        j
                  |       | j                  t              5 }t        j
                  |       d d d        d d d        | j                  t        j                        d       t        j
                  |       y # 1 sw Y   LxY w# 1 sw Y   PxY w# t        j
                  |       w xY w)N)r   r   rG   z\cannot set the recursion limit to [0-9]+ at the recursion depth [0-9]+: the limit is too low)r   r   r   get_recursion_depthsubTestr   r   r   assertRegexr   r@   )r   r   r   r   s       r   test_setrecursionlimit_to_depthz-SysModuleTest.test_setrecursionlimit_to_depth;  s    
 ))+		-//1EC$9$9$;5I 1%%eai0 %%i0&&~6 1"))%011 S.45
 !!),1 11 1 !!),s<   9D AC?C3(C?0-D 3C<	8C??DD D"c                    t         j                  j                  t        d       t        j                         }| j                  t        |      d       | j                  |d   t               | j                  |d   t               | j                  |d   t               | j                  |d   t               | j                  |d   t               | j                  t        t        j                  |d       | j                  |j                  t               | j                  |j                  t               | j                  |j                   t               | j                  |j"                  t               | j                  |j$                  t               | j                  |j&                  t               | j                  |j(                  t               | j                  |j*                  t               | j                  |j,                  t               | j                  |d   |j                         | j                  |d   |j                         | j                  |d   |j                          | j                  |d   |j"                         | j                  |d   |j$                         t        j                         \  }}}}}y )Ngetwindowsversion   r   rG   rH         )ry   r   get_attributer   r   r   lenrK   r   r   r   
IndexErroroperatorgetitemmajorminorbuildplatformservice_packservice_pack_minorservice_pack_major
suite_maskproduct_type)r   vmajminbuildnoplatcsds          r   test_getwindowsversionz$SysModuleTest.test_getwindowsversionS  s   ""3(;<!!#Q#adC(adC(adC(adC(adC(*h&6&61=aggs+aggs+aggs+ajj#.annc2a22C8a22C8allC0annc21qww'1qww'1qww'1qzz*1q~~. (+'<'<'>$S'4r2   c                 X    | j                  t        t        j                  t        d       y )NrH   )r   r   r   call_tracingtyper=   s    r   test_call_tracingzSysModuleTest.test_call_tracingq  s    )S%5%5tQ?r2   setdlopenflagsztest needs sys.setdlopenflags()c                    | j                  t        t        d             | j                  t        t        j
                  d       t        j
                         }| j                  t        t        j                         t        j                  |dz          | j                  t        j
                         |dz          t        j                  |       y )Ngetdlopenflagsr   rG   )r   r   r   r   r   r   r   r   )r   oldflagss     r   test_dlopenflagszSysModuleTest.test_dlopenflagst  s     	%567)S%7%7<%%')S%7%788A:&++-xz:8$r2   c                    | j                  t        t        j                         t        j                  d       }d a| j                  t        j                  d       |       b| j                  t        j                  d       |       t        t        d      r)| j                  t        j                         t               y y )Ngettotalrefcount)
r   r   r   getrefcountr   r   r   rK   r   r   )r   cs     r   test_refcountzSysModuleTest.test_refcount  s     	)S__5OOD!.2.23*+!!#"6"6"8#> ,r2   c                 (   | j                  t        t        j                  dd       | j                  t        t        j                  d       | j                  t        j                  j                  t        j                         j                  u        y )Nr   i 5w)
r   r   r   	_getframer.   r   r~   test_getframe__code__f_coder=   s    r   r   zSysModuleTest.test_getframe  s_    )S]]B;*cmmZ@''00}}%%&	
r2   c                    | j                  t        t        j                                | j                  dt        j                  d             d}t        j                  |      }|rr| j                  |j
                  d   t        j                  |      xs d       |dz  }|j                  }	 t        j                  |      }| j                  ||       |rr| j                  t        j                  |             y # t        $ r Y 0w xY w)Nzunittest.caserG   r   r5   __main__)
r   r5   r   _getframemodulenamer   	f_globalsf_backr.   rL   r   )r   irE   f2s       r   test_getframemodulenamez%SysModuleTest.test_getframemodulename  s    3#:#:#<=#*A*A!*DEMM!J'''*8j FABMM!$ MM!R   	#11!45  s   /C> >	D
	D
c                 4   dd l dd l}j                         j                         g fd}fdj                  |      }|j	                          j                          	 | j                  t              d       d   }t        j                         }|D ]*  }| j                  |t               | j                  |d       , j                         }| j                  ||       | j                  ||       |j                  |      }| j!                  |t        j"                         u        |j                  |      }|j%                  |      }	t'        |	      D ]  \  }
\  }}}}|dk(  s n | j)                  d       | j                  d       |	
dz      \  }}}}| j                  |d	       | j                  |d
dg       j+                          |j-                          y # j+                          |j-                          w xY w)Nr   c                                y r,   r8   g456s   r   f123z/SysModuleTest.test_current_frames.<locals>.f123      Fr2   c                      j                  j                                 j                          j                          y r,   )append	get_identsetwait	entered_gleave_gthread_info	threadings   r   r   z/SysModuleTest.test_current_frames.<locals>.g456  s,    y2245MMOLLNr2   targetrG   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_framesrK   r   r   r   rt   popr   r   extract_stack	enumeratefailr   join)r   r  r   t	thread_iddtidmain_idframestackr   filenamelinenofuncname
sourceliner   r   r   r   r   s                  @@@@@r   test_current_framesz!SysModuleTest.test_current_frames  s    	
 OO%	//#		
 D)		(	 S-q1#AI##%A +%%c3/""3*+  ))+GMM'1%MM)Q' EE'NEOOES]]_45
 EE)$E++E2E?H?O G;;Hfh
v%G 		EFZ2 6;1Q3Z2Hfh
Xv.MM*'79J&KL KKMFFH KKMFFHs   0D
G5 ;AG5 5"Hc                 J   dd l dd l}j                         j                         g fd}fdj                  |      }|j	                          j                          	 | j                  t              d       d   }t        j                         }|D ]*  }| j                  |t               | j                  |d       , j                         }| j                  ||       | j                  ||       | j                  d |j                  |             |j                  |      }|j!                  |j"                  j$                        }	t'        |	      D ]  \  }
\  }}}}|dk(  s n | j)                  d       | j                  d       |	
dz      \  }}}}| j                  |d	       | j+                  |j-                  d
             j/                          |j1                          y # j/                          |j1                          w xY w)Nr   c                                y r,   r8   r   s   r   r   z3SysModuleTest.test_current_exceptions.<locals>.f123  r   r2   c                      j                  j                                 j                          	 	 t        d      # t        $ r% j	                  t
        j                        rY y Y nw xY w>)Noops)timeout)r   r   r   r.   r   r   LONG_TIMEOUTr   s   r   r   z3SysModuleTest.test_current_exceptions.<locals>.g456   sg    y2245MMO$V,,! ||G,@,@|A B s   > )A,+A,r   rG   r   r  r  r   zif leave_g.wait()r   r  r  r  r  r   r   r   r   _current_exceptionsrK   r   r   r   rt   r	  r
  rM   tb_framer  r  r   r   r   r  )r   r  r   r  r  r  r  r  	exc_valuer  r   r  r  r  r  r   r   r   r   r   s                  @@@@@r   test_current_exceptionsz%SysModuleTest.test_current_exceptions  s    	
 OO%	//#		 D)		%	 S-q1#AI'')A +%%c3/""3*+  ))+GMM'1%MM)Q'T155>2
 i(I++I,C,C,L,LME?H?O G;;Hfh
v%G 		EFZ2 6;1Q3Z2Hfh
Xv.OOJ112DEF KKMFFH KKMFFHs   0D	H  :A%H   "H"c                    | j                  t        j                  t               | j                  t        j                  t
               t        j                  D ]  }| j                  |t                | j                  t        j                  t
               t        j                  D ]  }| j                  |t                | j                  t        j                  d       | j                  t        j                  t               | j                  t        j                  t               | j                  t        j                  t               | j                  t        j                  t               | j                  t        j                  t               | j!                  t#        t        j$                        d       | j!                  t        j$                  j&                  d       | j!                  t#        t        j(                        d       | j+                  t        j(                  j,                  dz  dk(         | j+                  t        j(                  j.                  dk\         | j1                  t        j(                  j2                  d       | j1                  t        j(                  j4                  d	       | j7                  t        j(                  j2                  t        j(                  j4                         | j!                  t9        t        j(                  j,                        t               | j!                  t9        t        j(                  j.                        t               | j                  t        j(                  j2                  t               | j                  t        j(                  j4                  t               | j                  t        j:                  t               | j!                  t#        t        j<                        d
       | j?                  t        j<                  j@                  dt        j<                  jB                  z         tE        dd	      D ]z  }| j!                  tG        |t        j<                  j@                  dz
  t        j<                  j@                        ddjI                  t        j<                  j@                               | | j                  t        j<                  jJ                  t               | j                  t        j<                  jL                  t               | j                  t        j<                  jN                  t               tQ        jR                  d      }t        j<                  jT                  dv r| j                  t        j<                  jV                  ddh       | j                  t        j<                  jX                  h d       |dk(  r+| j!                  t        j<                  jT                  d       n|dk(  r+| j!                  t        j<                  jT                  d       no|dk(  r+| j!                  t        j<                  jT                  d       n?| j                  t        j<                  jT                  h d       n| j!                  |d       | j1                  t        j<                  jZ                  d       | j?                  t        j<                  jZ                  d       | j                  t        j\                  t               | j                  t        j^                  t               | j!                  t        j^                  d       | j                  t        j`                  t               | j                  t        jb                  t               | j                  t        jd                  t               | j                  t        jf                  t               | j                  t        jh                  t               t        jj                  }| j                  |d d  t               | j!                  t#        |      d       | j                  |d   t               | j                  |d   t               | j                  |d   t               | j                  |d   d       | j                  |d   t               | j                  |jl                  t               | j                  |jn                  t               | j                  |jp                  t               | j                  |jr                  d       | j                  |jt                  t               | j!                  |d   |jl                         | j!                  |d   |jn                         | j!                  |d   |jp                         | j!                  |d   |jr                         | j!                  |d   |jt                         | j+                  |dkD         | j                  t        jv                  t               | j                  t        jv                  d       t        j`                  jy                  d      s%| j                  t        jz                  t               y y )N)littlebig   rH   r   r   r   rG   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)rG   r   r   )shortlegacywin)>rK   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_attributes5  s   coos3chh-88 	,C!!#s+	,cmmT2== 	,C!!#s+	,cmm%67c66>cmmS1coos3c22C8cnnc2S^^,b1--q1S\\*A.33a71<=11Q67 C CSI G GM3<<>><<BB	Dcll99:C@cll778#>cllAA3GcllEEsKcnnc2S]]+Q/--q#--2E2E/EF q# 	AAs}},,Q.0E0EF9@@MM))+	 	cmm//5cmm//5cmm00#6''(;<==""&GGMM#--11B8<MM#--11=Aqy  !8!8+F  !8!8%@  !8!8+Fcmm557XY T1% 4 4a8,,a0ckk3/cnnc22cllC0cjj#.coos3cnnc2ckk3/beU+R!$beS)beS)beS)beDEbeS)bhh,bhh,bhh,boo'NObii-A)A)A)A0A		*W%c22C8c**,?@||&&u-!!#,,4 .r2   c                 f   t         j                  }| j                  t        |      d       | j	                  |j
                  d       | j	                  |j                  d       t         j                  j                  d      r| j                  |j
                  d       y t         j                  dk(  r| j                  |j
                  d       y t         j                  dk(  r| j	                  |j
                  dd	h       y t         j                  d
k(  r| j                  |j
                  d	       y y )Nr   )ntpthreadpthread-stubssolarisN)	semaphorez
mutex+condN)linuxfreebsdrp  win32ro  
emscriptenrq  wasi)	r   r   r   r   rt   namelockr   r   )r   infos     r   test_thread_infozSysModuleTest.test_thread_info  s    TA&dii!TUdii!BC<<""#78TYY	2\\W$TYY-\\\)MM$))i%AB\\V#TYY8 $r2   zonly available on Emscriptenc                    | j                  t        t        j                        d       | j	                  t        j                  j
                  t               | j	                  t        j                  j                  t        t        d       f       | j	                  t        j                  j                  t               | j	                  t        j                  j                  t               y )Nr   )r   r   r   _emscripten_inforK   emscripten_versionr?  runtimer   r   pthreadsboolshared_memoryr=   s    r   test_emscripten_infoz"SysModuleTest.test_emscripten_info  s    S112A6c22EEuMc22::S$t*<MNc22;;TBc22@@$Gr2   c                     | j                  t        j                  j                  t        j                  j                         y r,   )r   r   
__stdout__encoding
__stderr__r=   s    r   
test_43581zSysModuleTest.test_43581  s(     	00#..2I2IJr2   c                    t         dz  a | j                  t        t        j                         dt        t               z   }| j                  t        j                  |      |u        |j                         j                         }| j                  t        j                  |      |u         G d dt
              }| j                  t        t        j                   |d             y )NrG   znever interned beforec                       e Zd Zd Zy)$SysModuleTest.test_intern.<locals>.Sc                      y)Nrm   r8   r=   s    r   __hash__z-SysModuleTest.test_intern.<locals>.S.__hash__      r2   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    !)SZZ0#c.&99

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

2!+,	 	 	)SZZ5:r2   c           	      <   | j                  t        j                         d}|D ]p  }| j                  t        t        j                  |      |       |dv rt        nt
        }| j                  t        t        t        j                  |            ||       r | j                  t        t        j                               | j                  t        t        j                        t        |             | j                  t        j                  j                  h d       y )N)debuginspectinteractiveoptimizedont_write_bytecodeno_user_siteno_siteignore_environmentverbosebytes_warningquiethash_randomizationisolateddev_mode	utf8_modewarn_default_encoding	safe_pathint_max_str_digits)r  r  >   r   rG   rH   )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DOOGCIIt4d; $(A AsIT'#))T":;YM	N 	SYY(SYYU4cii))95r2   c                     |}t        |      }| j                  t              5   ||       d d d        | j                  t              5  |j                  ||       d d d        y # 1 sw Y   :xY w# 1 sw Y   y xY wr,   )r   r   r   __new__)r   sys_attrri  r  s       r   assert_raise_on_new_sys_typez*SysModuleTest.assert_raise_on_new_sys_type  st     N	y) 	cN	y) 	.i-	. 	.	 		. 	.s   	A%	A1%A.1A:c                 B    | j                  t        j                         y r,   )r  r   r  r=   s    r   test_sys_flags_no_instantiationz-SysModuleTest.test_sys_flags_no_instantiation  s    ))#))4r2   c                 B    | j                  t        j                         y r,   )r  r   rc  r=   s    r   &test_sys_version_info_no_instantiationz4SysModuleTest.test_sys_version_info_no_instantiation  s    ))#*:*:;r2   c                     t         j                  j                  t        d       | j	                  t        j
                                y )Nr   )ry   r   r   r   r  r   r=   s    r   +test_sys_getwindowsversion_no_instantiationz9SysModuleTest.test_sys_getwindowsversion_no_instantiation  s.    ""3(;<))#*?*?*ABr2   c                 ,    t        j                          y r,   )r   _clear_type_cacher=   s    r   test_clear_type_cachez#SysModuleTest.test_clear_type_cache  s    r2   c                 d   t        t        j                        }d|d<   t        j                  t
        j                  ddgt        j                  |      }|j                         d   j                         }dt        j                  z   j                  d      }| j                  ||       d|d<   t        j                  t
        j                  ddgt        j                  |      }|j                         d   j                         }| j                  |d	       d
|d<   t        j                  t
        j                  ddgt        j                  t        j                  |      }|j                         \  }}| j                  |d       | j                  d|       | j                  d|       d|d<   t        j                  t
        j                  ddgt        j                  t        j                  |      }|j                         \  }}| j                  |d       | j                  d|       | j                  d|       d|d<   t        j                  t
        j                  ddgt        j                  |      }|j                         d   j                         }| j                  |d       y )Ncp424r   r   zprint(chr(0xa2))r   envr      ¢zascii:replace   ?r   )r   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::
 #*cnnd4FG&0oo3@mmoa &&(RZZ'//8h'"1cnnd4FG&0oo3@mmoa &&(d#")cnnd4FG$.OOJOO!$& ==?Sc",c2j#&"*cnnd4FG$.OOJOO!$& ==?Sc",c2j#&"4cnnd4HI$.OO>mmoa &&(g&r2   z*requires OS support of non-ASCII encodingsFz$requires FS encoding to match localec                 x   t        t        j                        }d|d<   t        j                  t
        j                  ddt        j                  z  gt        j                  |      }|j                         d   j                         }| j                  |t        j                  t        j                               y )Nr   r   r   z	print(%a)r  r   )r  r  r  r  r  r   rC  r   FS_NONASCIIr  r  r  r   fsencode)r   r  r  r   s       r   test_ioencoding_nonasciiz&SysModuleTest.test_ioencoding_nonascii  s     2::"$cnnd +i.C.C CE'1CA mmoa &&(bkk)*?*?@Ar2   zTest is not venv-compatiblec           
         | j                  t        j                  j                  t        j
                        t        j
                         t        j                  j                  t        j                  j                  t        j
                              }t        j                  g dt        j
                  t        j                  |      }|j                         d   }|j                         j                  d      }|j                          | j                  |dt!        t        j
                  j#                  dd            g       y )N)nonexistentr   zEimport sys; print(sys.executable.encode("ascii", "backslashreplace")))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#..I WW__RWW%5%5cnn%EF
V~~joo:O #\\^**73
	j5$s~~/D/DWN`/a*b"cdr2   Nc                 z    | j                  |       t        j                  |       |r| j                  ||       y y r,   )assertIsNotNonecodecslookupr   r   fs_encodingr   s      r   check_fsencodingzSysModuleTest.check_fsencoding?  s4    [)k"[(3 r2   c                     t        j                         }t         j                  dk(  rd}nd }| j                  ||       y )Ndarwinzutf-8)r   getfilesystemencodingr   r  r  s      r   test_getfilesystemencodingz(SysModuleTest.test_getfilesystemencodingE  s6    //1<<8#HHk84r2   c                    t         j                  j                         }||d<   d|d<   dj                  d      }t        j
                  ddd|g}|r|j                  d	       |||d
<   n|j                  d
d        t        j                  |t        j                  t        j                  |d      }|j                         \  }}	|S )NLC_ALL0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_handlerM  s    jjooH%(!"yy 
  hd;KK&.C"#GG&-T%/__%/%6%6"%15	7
 r2   c                    | j                  |d      }| j                  |d       | j                  |d      }| j                  |d       | j                  |d      }| j                  |d       | j                  |d	      }| j                  |d       | j                  |d
      }| j                  |d       | j                  |d      }| j                  |d       y )NT)r  zHstdin: surrogateescape
stdout: surrogateescape
stderr: backslashreplace
z:ignore)r  z6stdin: ignore
stdout: ignore
stderr: backslashreplace
z	iso8859-1z6stdin: strict
stdout: strict
stderr: backslashreplace
z
iso8859-1::r   )r  r   )r   r  r   s      r   check_locale_surrogateescapez*SysModuleTest.check_locale_surrogateescapej  s   --ft-D6	7 --fy-I6	7 --f{-K6	7 --f|-L6	7 --fs-C6	7 --fr-B6	7r2   c                 &    | j                  d       y )NCr  r=   s    r   test_c_locale_surrogateescapez+SysModuleTest.test_c_locale_surrogateescape  s    ))#.r2   c                 &    | j                  d       y )NPOSIXr  r=   s    r   !test_posix_locale_surrogateescapez/SysModuleTest.test_posix_locale_surrogateescape  s    ))'2r2   c                 |   ddddd}| j                  t        t        j                  d             | j                  t        t        j                  d             | j                  t        t        j                  d             | j                  t        t        j                  d	             t        j                  j                  }| j                  |d d
 |j                  |j                  f       |j                  dz  |j                  dz  z  |j                  dz  z  ||j                     dz  z  |j                  dz  z  }| j                  t        j                  j                  |       | j                  t        j                  j                  t        j                  j                  j                                y )N
   r'        r1  ry  rb  rL  	cache_tagrH         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  sU    #L 2 2F;< 2 2I>? 2 2LAB 2 2K@A$$,,!w}}gmm&DEmmr)GMMR,??mmq()+1'2F2F+G1+LMnn)*
 	++66
C 	++00++00668	:r2   c                 h   ddl m} ddg} || \  }}}t        j                  dk7  rgt	        j
                  d      }t	        j
                  d      }|r| j                  d|       |r| j                  d	|       |s|s| j                  |       | j                  t        t        j                  d
       y )Nr   )r   r   z#import sys; sys._debugmallocstats()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"&556FGN%44_EM3S96<!-  % 	)S%:%:DAr2   getallocatedblocksz0sys.getallocatedblocks unavailable on this buildc                    	 dd l }	 |j                         }|dv }t        j                         }| j                  t        |      t               |r| j                  |d       n| j                  |d       	 | j                  |t        j                                t!        j"                          t        j                         }| j%                  ||       t!        j"                          t        j                         }| j'                  |t)        |dz
  |dz                y # t        $ r}d}Y d }~d }~ww xY w# t        $ r t	        j
                         }Y =w xY w# t        $ r Y w xY w)Nr   )pymallocpymalloc_debugTr   )	_testcapipymem_getallocatorsnamer   ImportErrorr   r  r   r  rL   r   r   r   rI  rN  r   AttributeErrorgccollectassertLessEqualrt   rQ  )r   r  
alloc_namer  rZ   r   br   s           r   test_getallocatedblocksz%SysModuleTest.test_getallocatedblocks  s6   	OO&>>@

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

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


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

            class AtExit:
                is_finalizing = sys.is_finalizing
                print = print

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

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

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

            sys.x = C()
            r   r   r2   )r   r   r+  r,  s        r   &test_sys_ignores_cleaning_up_user_dataz4SysModuleTest.test_sys_ignores_cleaning_up_user_data  sZ    
 .dD9FFQ#.#.r2   getandroidapilevelzneed sys.getandroidapilevel()c                 |    t        j                         }| j                  |t               | j	                  |d       y )Nr   )r   r4  rK   r   r   )r   levels     r   test_getandroidapilevelz%SysModuleTest.test_getandroidapilevel"  s2     &&(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 |       y )Nzif 1:
            import sys
            def f1():
                1 / 0
            def f2():
                f1()
            sys.tracebacklimit = %r
            f2()
        c                     t        j                  t        j                  d| z  gt         j                        }|j                         d   }j                  |j                         |       y )Nr   )rw   rG   )r  r  r   rC  r  r  r   r/  )tracebacklimitr   r  r   r(   r   s       r   checkz4SysModuleTest.test_sys_tracebacklimit.<locals>.check4  sS      #..$~8M!N(29A--/!$CS^^-x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   rH   rG   r   r   r8   )r   r;  r  r(   s   `  @r   test_sys_tracebacklimitz%SysModuleTest.test_sys_tracebacklimit)  s    	9
	 	b)aa2A12./a2A12./a)B-!b9R=/"agy!b$h2(dIr2   c                     | j                  t        t        j                        t        t	        t        j                                     y r,   )r   r   r   	meta_pathr   r=   s    r   test_no_duplicates_in_meta_pathz-SysModuleTest.test_no_duplicates_in_meta_pathK  s)    S]]+SS]]1C-DEr2   _enablelegacywindowsfsencodingz*needs sys._enablelegacywindowsfsencoding()c                     d}t        ddj                  |            \  }}}|j                  dd      j                         }| j	                  |d       y )N)r  z$sys._enablelegacywindowsfsencoding()zCprint(sys.getfilesystemencoding(), sys.getfilesystemencodeerrors())r   z; r   replacezmbcs replace)r   r  r  r+  r   r0  s        r   #test__enablelegacywindowsfsencodingz1SysModuleTest.test__enablelegacywindowsfsencodingN  sO    W (diio>Cjj),335n-r2   c                 0   t        j                  d      }t        j                  dddd|dg}t	        j
                  |ddd      }t        ddg      t        |      g}| j                  |j                  j                         j                         ||       y )	Nz]
            import sys
            print(sys.argv)
            print(sys.orig_argv)
        r  r  utf8r   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_argvX  s       
 dFD$F~~d$t$O$J
 	++-88:H	r2   c                     | j                  t        j                  t               t        j                  D ]  }| j                  |t                y r,   )rK   r   stdlib_module_names	frozensetr   )r   ry  s     r   test_module_nameszSysModuleTest.test_module_namesh  s=    c55yA++ 	-D!!$,	-r2   c                 h   t        j                  d      }t        |dd       }|r|j                  j	                  |      sd }|r|j                  j                  |      nd }| j                  |j                  j                  t        j                        |j                  j                  |             y )Nr  __file__)
r   import_fresh_moduler  r  existsr  r   normpathr   _stdlib_dir)r   r  markerr   s       r   test_stdlib_dirzSysModuleTest.test_stdlib_dirm  s    ..t4Z."''..0F.4277??6*$))#//:))(3	5r2   r,   )FN)Ir5   r6   r7   r   r   r   r   r   r   r   ry   r   cpython_onlyr   r   r   unittest
skipUnlessr   r   r   refcount_testr   r   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-  r1  r3  r7  r=  r@  rD  rL  rP  rX  r8   r2   r   r~   r~      s   %@2D=(@	--2 
\\- -.?<@ X&67:<%<% 
\\?  ? 
6* ""0002? 3 #?B ""0002A 3 #AF]5~9 X..0NOH PHK
;(6".5<C
 
\\    !W  ")' #)'V X..EGX22248S8S8STY8ZZ?A W  "B #AG
B X__S__

224 W  "e #4e(45:$7L !W  "/ #/ !W  "3 #3:, 
\\B B* X&:;KM%0M%0N3*1/" X&:;8:%:%
 !W  " #BF X&FGEG.G. !W  " #-
5r2   r~   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	UnraisableHookTestc                     dd l }dd l}d| }	 |j                  |||       |j                  t	        |      ||j
                  ||      d }S # d }w xY w)Nr   Exception ignored )exc_typer"  exc_tracebackerr_msgobject)r  typeswrite_unraisable_excSimpleNamespacer   rM   )r   rZ   ri  r/   r  rk  err_msg2s          r   rl  z'UnraisableHookTest.write_unraisable_excy  sc    'y1		**3=(($s)367:7H7H1903	 ) 5 C$Cs   ;A Ac           	      f   dD ]  }| j                  |      5  d}t        j                  j                  d      5 }t        j                  j	                  t
        dt
        j                        5  | j                  t        d      ||       d d d        d d d        j                         }|| j                  d| d|d	|       n| j                  d
|d	|       | j                  d|       | j                  d|       d d d        	 y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   -xY w)N)Nzoriginal hook)ri  z	an objectrw   unraisablehookr   rf  z: r  zException ignored in: #Traceback (most recent call last):
rc   )r   ry   r   rz   r3   r   __unraisablehook__rl  r.   r   rt   )r   ri  r/   rw   rh   s        r   test_original_unraisablehookz/UnraisableHookTest.test_original_unraisablehook  s#   . 	7Gg. 7!\\11(; Pv//5E030F0FH P11*R.'3OPP
 oo'&MM$6wir#"KSQMM$:3'"DcJDcJ0#67 7	7
P PP P7 7s;   "D&4D/D	DA.D&DDD#D&&D0	c           	      l    G d d      } G d dt                G fdd      }||fD ]a  }| j                  |      5   |       }t        j                  j	                         5 }t        j                  j                  t        dt        j                        5  ~d d d        d d d        j                         }| j                  d|       | j                  |j                  j                  |       | j                  d	|       | j                  d
|       ||u r%| j                  d|       | j                  d|       n$| j                  d|       | j                  d|       | j                  |j                  d             d d d        d y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nc                       e Zd Zd Zy)FUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenDelc                     t        d      }|)Ndel is brokenr-   r   rZ   s     r   __del__zNUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenDel.__del__  s     1	r2   Nr5   r6   r7   rz  r8   r2   r   	BrokenDelrv    s    r2   r|  c                       e Zd Zd Zy)OUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenStrExceptionc                     t        d      )Nzstr() is brokenrJ   r=   s    r   __str__zWUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenStrException.__str__  s     122r2   N)r5   r6   r7   r  r8   r2   r   BrokenStrExceptionr~    s    3r2   r  c                       e Zd Z fdZy)OUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenExceptionDelc                             }|r,   r8   )r   rZ   r  s     r   rz  zWUnraisableHookTest.test_original_unraisablehook_err.<locals>.BrokenExceptionDel.__del__  s    (*	r2   Nr{  )r  s   r   BrokenExceptionDelr    s    r2   r  rp  zException ignoredztest_sys.pyz	raise excz<exception str() failed>r.   rx  r  )rJ   r   ry   r   rd   r3   r   rr  r   rt   rz  r7   r   rf   )r   r|  r  
test_classr/   rw   reportr  s          @r    test_original_unraisablehook_errz3UnraisableHookTest.test_original_unraisablehook_err  st   	 		3 	3	 	 %&89 	7Jj) 7 l\\113 v\\++C1A,/,B,BD 	   *16:j00==vFmV4k62!33MM"6?MM"<fEMM,7MM/6: 56'7 7	7   7 7s=    &F)&4FF	F$C!F)FFF&"F))F3	c           	          G d d      }dD ]6  }| j                  |      5  ||j                  j                  _        t        j
                  j                         5 }t        j
                  j                  t        dt        j                        5  | j                  |j                  j                         dd      }d d d        d d d        j                         }| j                  |j                  j                  j                  |       |dv r| j                  |d	z   |       n| j                  |d	z   |       d d d        9 y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ]xY w)
Nc                        e Zd Z G d d      Zy)MUnraisableHookTest.test_original_unraisablehook_exception_qualname.<locals>.Ac                   "    e Zd Z G d de      Zy)OUnraisableHookTest.test_original_unraisablehook_exception_qualname.<locals>.A.Bc                       e Zd Zy)QUnraisableHookTest.test_original_unraisablehook_exception_qualname.<locals>.A.B.XNr5   r6   r7   r8   r2   r   Xr    s    r2   r  N)r5   r6   r7   rJ   r  r8   r2   r   Br    s    	 r2   r  N)r5   r6   r7   r  r8   r2   r   Ar    s     r2   r  )r   r   some_module)
moduleNamerp  rl   r/   )r   r   .)r   r  r  r6   ry   r   rd   r3   r   rr  rl  r   rt   r7   assertNotIn)r   r  r  rw   r   r  s         r   /test_original_unraisablehook_exception_qualnamezBUnraisableHookTest.test_original_unraisablehook_exception_qualname  s0   
	 	
 @ 	<J4 <#- \\113 vt||?U?U)3+A+A@   $88 H   *accee00&9!99$$Z#%5v>MM*s"2F;< <	<   < <s<   :E 4E,E	=EA7E EEEE  E*	c                 (   t        d      }t        j                  j                  t        dt        j
                        5  | j                  t              5  t	        j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   rp  )	r.   ry   r   r3   r   rr  r   r   rp  ry  s     r   'test_original_unraisablehook_wrong_typez:UnraisableHookTest.test_original_unraisablehook_wrong_type  sv    n\\##C)9$'$:$:< 	(""9- (""3'(	( 	(( (	( 	(s#   BA<+B<B	BBc           	      n   d fd}t               }	 t        j                  j                  t        d|      5  | j                  t        d      d|      }dj                         D ]+  }| j                  t        |      t        ||      |f       - 	 d d d        d }d y # 1 sw Y   xY w# d }d w xY w)Nc                 
    | y r,   r8   )r  	hook_argss    r   	hook_funcz@UnraisableHookTest.test_custom_unraisablehook.<locals>.hook_func  s    Ir2   rp  r   zcustom hookz/exc_type exc_value exc_traceback err_msg object)
rj  ry   r   r3   r   rl  r.   splitr   r  )r   r  r/   r   r  r  s        @r   test_custom_unraisablehookz-UnraisableHookTest.test_custom_unraisablehook  s    		 h	''-=yI <44Z^5BCIMSSU <D$$WY%=%,Xt%<&/%:<<< HI< < HIs#   %B. AB"B. "B+'B. .B4c                    d }t         j                  j                  d      5 }t         j                  j                  t        d|      5  | j                  t        d      dd        d d d        d d d        j                         }| j                  d|d|       | j                  d|       | j                  d	|       y # 1 sw Y   \xY w# 1 sw Y   `xY w)
Nc                      t        d      )Nzhook_func failedr  )r  s    r   r  zEUnraisableHookTest.test_custom_unraisablehook_fail.<locals>.hook_func  s    .//r2   rw   rp  r   zcustom hook failz)Exception ignored in sys.unraisablehook: r  rq  zException: hook_func failed
)	ry   r   rz   r3   r   rl  r.   r   rt   )r   r  rw   rh   s       r   test_custom_unraisablehook_failz2UnraisableHookTest.test_custom_unraisablehook_fail  s    	0 \\))(3 	Dv''-=yI D))*R.*<dDD	D
 ooA"R)	 	<cB5s;D D	D 	Ds#   &C	C&CC
	CCN)
r5   r6   r7   rl  rs  r  r  r  r  r  r8   r2   r   rd  rd  w  s&    7$&7P<4(*<r2   rd  c                        e Zd Zd Zej
                  j                  Zd Zd Zd Z	 fdZ
d Zd Zd Zd	 Zd
 Z xZS )
SizeofTestc                     t        j                  d      | _        t        j                  j
                  | _        dd l}|j                  | _	        y )NPr   )
structcalcsizer  r   rF  rH  	longdigit_testinternalcapiSIZEOF_PYGC_HEADgc_headsize)r   r  s     r   setUpzSizeofTest.setUp  s4    %22 ,==r2   c                    t         j                  j                  }| j                  }| j	                  t        j                  d       |d      | j                  z          | j	                  t        j                  g        |d      |z          y )NTr   Pn)ry   r   calcvobjsizer  r   r   	getsizeofr  )r   vsizegc_header_sizes      r   test_gc_head_sizezSizeofTest.test_gc_head_size  sd    ))))t,eBi$...HIr*E$K.,HIr2   c                     G d d      }| j                  t        t        j                   |               G d d      }| j                  t        t        j                   |              dg}| j                  t        j                   |       |      |        G d d      }| j                  t        t        j                   |              | j                  t        j                   |       |      |        G d d	t              }| j                  t        j                   |t        j                              t        j                  | j                  d
z  z          | j                  t              5  t        j                   |t        j                  dz                d d d        | j                  t              5  t        j                   |d             d d d        | j                  t        t        f      5  t        j                   |t        j                   dz
               d d d        y # 1 sw Y   xY w# 1 sw Y   gxY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zy))SizeofTest.test_errors.<locals>.BadSizeofc                     t         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y)-SizeofTest.test_errors.<locals>.InvalidSizeofc                      y r,   r8   r=   s    r   r  z8SizeofTest.test_errors.<locals>.InvalidSizeof.__sizeof__$  s    r2   Nr  r8   r2   r   InvalidSizeofr  #  s    r2   r  sentinelc                       e Zd Zd Zy)+SizeofTest.test_errors.<locals>.FloatSizeofc                      y)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y).SizeofTest.test_errors.<locals>.OverflowSizeofc                     t        |       S r,   )r   r=   s    r   r  z9SizeofTest.test_errors.<locals>.OverflowSizeof.__sizeof__1  s    4y r2   Nr  r8   r2   r   OverflowSizeofr  0  r  r2   r  rH   rG   r<  )r   r.   r   r  r   rL   r   r   r]  r  OverflowError)r   r  r  r  r  r  s         r   test_errorszSizeofTest.test_errors  s   	! 	! 	*cmmY[A	 	 	)S]]MOD<cmmMOX>I	 	 	)S]]KMBcmmKM8<hG	!S 	! 	~ckk'BCt'7'7'99	;}- 	;MM.q9:	;z* 	.MM.,-	.
M:; 	<MM.#++)9:;	< 	<		; 	;	. 	.	< 	<s$   1-H1;H=:.I	1H:=I	Ic                    t         j                  j                  }| j                  t	        j
                  d       |d      | j                  z          | j                  t	        j
                  dd       |d      | j                  z          y )NTr   r<  )ry   r   r  r   r   r  r  )r   sizes     r   test_defaultzSizeofTest.test_default<  s_    ||((t,d2h.GHtR0$r(T^^2KLr2   c           	         $% t         j                  }t        j                  j                  %t        j                  j
                  } j                  $ $d |d       j                  z           $d |d       j                  z           $t         %d             dddz  g}|D ]-  }t        |      } $| |d      |j                         z          /  $t        t                      %d	              $d |d
      dz           $d |d
      dz          d } $ |       j                  d    %d              fd} | |       j                   %d              ||j                   %d             d } ||j                   %d       |d
      z           $t        dd       %d              $t        j                    %d             dd l}	 $|	j$                  j&                   %d             dd l}
 $|
j*                  j,                   %d              $t.        j0                   %d              $i j2                   %d              $i  %d              $ddi %d       |t4              z   dz   d |d      z  z          t7        d      D ci c]  }t        |      | }} $| %d       |t4              z   dz   d |d      z  z           $ddi %d       |t4              z   dz   d |d      z  z          dd d!d"dd#d$dd%} $| %d       |t4              z   dz   d |d      z  z           $i j9                          %d              $i j;                          %d              $i j=                          %d              $t        i        %d&              $t        i j9                                %d&              $t        i j;                                %d&              $t        i j=                                %d&              G d' d(t>              } $|j@                   %d              $tC                %d)              $tE        ddddd       %d*              $tG        ddddd       %d*              $tI        dddd       %d*              $tJ         %d             dd l&}dd l'} |jP                  |jR                  jT                        } $| %d+              $tW        g        %d,              $tY        d       %d	              $t[        d       %d-              $t\        j^                   |d       j`                  t        t\        j^                        z  z          d. } |       } $| %d/             d0 } $| %d1              G $%fd2d3      }d4 } $ |        %d5              $t        d6       %d7             dd l1} $|je                  dd       %d              $tg        g        |d8              $tg        dg       |d8      d  j`                  z  z           $tg        dd g       |d8      d  j`                  z  z           $tg        g d9       |d8      d" j`                  z  z           $t        g        %d7              $tY        g        %d	              $d |d       j                  z           $d |d       j                  z           $d: |d       j                  z          d t\        jh                  jj                  z  } $t/        |       |d      d  j                  z  z           $t/        |d z  dz
         |d      d  j                  z  z           $t/        |d z         |d      d! j                  z  z           $tl         %d;              $d  %d              $tn         %d              $t?                %d              G $%fd<d(t>              } $t        t7        d             %d=              $t        t7        d d>z               %d?              $tY        d       %d	              $t7        d       %d@              $t7        dA       %d@             d}g t7        d      t7        dB      g} %dC|d	z  z   dDz         }|D ]  }t        |      }|dk(  rd}|d z  }|}||k  r|dz  }||k  r|dk  r% $tq        |      |        $ts        |      |       V $tq        |      || |d	      z  z           $ts        |      || |d	      z  z            $t        tq                      %dE              $tu        d       %d?              $tw        t.               %d?              $dF |d              $d9 |d      d! j`                  z  z          dG} |d|z         } $t.        |        ||dHz         } G dI dJt>              } $|| |t4              z   dKz   dL |d      z  z          t7        dM      D cg c]	  } |        c}  $ |       j@                   %d       j`                  z           |       }dx|_<        x|_=        x|_>        x|_?        x|_@        x|_A        x|_B        |_C         $|| |t4              z   dKz   dL |d      z  z           $ |       j@                   %d       j`                  z          g dN}dO}|d	z   }|dz   } |D ]  }t        t        |            }!|!dPk  r %|      t        |      z   dz   }"nW|!dQk  r %|      t        |      z   dz   }"n:|!dRk  r %|      d t        |      dz   z  z   }"n %|      d"t        |      dz   z  z   }" $||"        t        dS      } $| %|      d"z          t        |dTdU        $| %|      d"z   d"z          dd lH}# $|#j                  t.               %dV              $|#j                  t.               %dV             y c c}w c c}w )WNTr   F5Pr2      ui n2PinPr   rG   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_cellY  s    ALr2   r   r  c                 P    j                  t        j                  |       |       y r,   )rI  r   r  )r   expected_sizer   s     r   check_code_sizez4SizeofTest.test_objecttypes.<locals>.check_code_size`  s    ##CMM!$4mDr2   6i13Pc                       fd}|S )Nc                       S r,   r8   r  s   r   r  z=SizeofTest.test_objecttypes.<locals>.get_cell2.<locals>.innere  r  r2   r8   )rj  r  s   ` r   	get_cell2z.SizeofTest.test_objecttypes.<locals>.get_cell2d  s    Lr2   2d3PPP3PP3P2P2PnQ2Pr   r0  r   r  r  n2PrH   r   r         )rG   rH   r   r   r   r  r  r0  P2nPnc                       e Zd Zy)&SizeofTest.test_objecttypes.<locals>.CNr  r8   r2   r   r   r        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                       y r,   r8   r8   r2   r   r  z)SizeofTest.test_objecttypes.<locals>.func      r2   15Pic                   r    e Zd Zed        Zed        Z W  e W d              W  e W d             y)&SizeofTest.test_objecttypes.<locals>.cc                       y r,   r8   r8   r2   r   fooz*SizeofTest.test_objecttypes.<locals>.c.foo      r2   c                      y 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    sE       #tDz"#tDz"r2   r   c               3      K   d y w)NrG   r8   r8   r2   r   get_genz,SizeofTest.test_objecttypes.<locals>.get_gen  s
     Qws   zPP4P4c7P2ic??2Pr  lPr  )rG   rH   r   r<  PnPPPc                   X    e Zd Zd Zd Zd Z eeeed      Z W  e W d             y)r  c                     | j                   S r,   _C__xr=   s    r   getxz+SizeofTest.test_objecttypes.<locals>.C.getx  s
    488Or2   c                     || _         y r,   r
  )r   values     r   setxz+SizeofTest.test_objecttypes.<locals>.C.setx  s    e48r2   c                     | ` y 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(tT2.A!T%[!r2   3lA   3P4Pi r   3nP2nPP3nr8   P2nPI13Pl4Pn9Pn12PIPc4P36P3P10P2P6P1PIc                       e Zd Zy)2SizeofTest.test_objecttypes.<locals>.newstyleclassNr  r8   r2   r   newstyleclassr    r  r2   r  r.  r   r   )d1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111ud   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿuP   ĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀu,  ￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿ux   𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀u  􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿􏿿nnbr/     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itemsrj  __dict__BaseExceptionUnicodeEncodeErrorUnicodeDecodeErrorUnicodeTranslateErrorEllipsisr  encodings.iso8859_3charmap_build	iso8859_3decoding_tabler  reversedfloatr   rD  r  refinditerr;  rF  rG  rZ  NotImplementedr   rO  slicesuperr   r'  r   r  rP   rE   ghordmaxchrr&   weakrefrefproxy)'r   r  r  samplessamplerj  r  r  r  r+  r.  r   longdictr   r  	encodingsr  r   r  rC  PyLong_BASEPySet_MINSIZEr  minusedtmpnewsizefmtr  r   oasciifieldscompactfieldsunicodefieldsmaxcharLrM  r;  r  	__class__s'   `                                   @@r   test_objecttypeszSizeofTest.test_objecttypesA  s
   ??||''))!!dE"I./eU2Y/0 	c4:V$ 	4F&!A!U6]Q[[]23	4 	d9;d,c5:>"isb)	
 	hj$$Q'c3	E
++T'];))4=9	 		**DMHSM,IJgalDJ'ciif& 	h  %%tE{3k%%55tE{Cckk4<(bkk4:&b$v,sAhVx0F'GG!KvW_`dWeNeef',Qx0!CFAI00hVx0F'GG"LPWYabfYgOgghq!fd6lX.D%EEIVU]^cUdLdde1Q!qA;hVx0F'GG"LPWYabgYhOhhibggic#biik49%bhhj$s)$d2hW&d2779otG}-d299;g/d288:W.ajj$s)$motE{+ RAr2D4EF S!Q3T+5FG#B1b143DEhR!* F  !4!4!C!CDah imT%[)hrlDJ'eAhS	"cnneBi$&&3s~~3F*FFG	#Fa&'(dDL!
	# 
	# 	gi/01d5k4:&bkk"R $t*-d2hd$dA3itqx/0dAq6lE$K!DFF(23d9ouT{QtvvX56 	d2hT
#hrlDJ'arT^^+,arT^^+,b%)dnn,-444c+b	Adnn,< <=c+q."#U2Y4>>1A%ABc+q.!59q/?#?@hW&dDHnd2h'fhR!	" 	" 	d58nd4j)d5B< $t*-hrlDJ'eAhT
#eElDJ' uRy%),t++e34 	EF&kG!|1S aiG#GW$!Q, W$!|c&k1%i'+c&k1wx~'=#=>i'WXd^-C)CD	E  	d35k4;'eAhT
#eCj$t*%b%)guRy1TVV8+, &$*c1#  	*F)mQ*@!AABFHUYNIZZ["'*-Q-mo&&Vtvv(=>O8999ac9AC9!#99ac9AC!#mQ*@!AABFHUYNIZZ[mo&&Vtvv(=>
6 #d*%+ 
	A#a&kG}%A.23'#a&0145'!SVaZ.8'!SVaZ.8!QK
	 Kam$q() 	9f%am$q(1,- 	gkk#W. 	gmmC $w-0g 1L 	.s   %q&+q+c                    t        j                  |      t        j                  |      z   }t	        j
                  |      r$t	        j
                  |      s|| j                  z  }| j                  t        j                  |      |       y r,   )r   r  r  r  r#  
is_trackedr  r   )r   r/   baseextrar   s        r   check_slotszSizeofTest.check_slotsR  s^    ==&)??==bmmD&9(((Hs+X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       y )Nc                       e Zd ZdZy)!SizeofTest.test_slots.<locals>.BAr   r'  r   Nr5   r6   r7   	__slots__r8   r2   r   BAri  \      %Ir2   rm  r  c                       e Zd ZdZy) SizeofTest.test_slots.<locals>.Drj  Nrk  r8   r2   r   Drp  _  rn  r2   rq  r  rj  c                       e Zd ZdZy) SizeofTest.test_slots.<locals>.Lrj  Nrk  r8   r2   r   r_  rs  b  rn  r2   r_  c                       e Zd ZdZy) SizeofTest.test_slots.<locals>.Srj  Nrk  r8   r2   r   r  ru  e  rn  r2   r  c                       e Zd ZdZy)!SizeofTest.test_slots.<locals>.FSrj  Nrk  r8   r2   r   FSrw  h  rn  r2   rx  r   )OrderedDictc                       e Zd ZdZy)!SizeofTest.test_slots.<locals>.ODrj  Nrk  r8   r2   r   ODr{  l  rn  r2   r|  )rf  r&  r  r;  r   rO  r.  ry  )	r   r;  rm  rq  r_  r  rx  ry  r|  s	            r   
test_slotszSizeofTest.test_slotsX  s       	& 	&bdIK&	& 	&a"gRy$'	& 	&ac2t	& 	&ac35$	& 	&bdIK&+	& 	&b2hb)40r2   c                    t         j                  j                  }t         j                  j                  }| j                  }dd l} ||j                          |d             	 t        # t        $ r'}|j                  }| || |d             Y d }~nd }~ww xY w |t        j                   |d      | j                  t        t        j                        z  z          y )Nr   r  2P2ir   )ry   r   r$  r  r%  _astASTr   rM   r   r  r  r   )r   r  r  r;  r  rP   tbs          r   test_pythontypeszSizeofTest.test_pythontypesp  s    ||''))!!dhhj$s)$	(O 	(B~b$v,'		( 	ciirTVVc#))n%<<=s   #A) )	B2BBc                    t        j                         }| j                  |j                         | j                  |j                         d }t        j
                  |       t        j                         }| j                  |j                  |       | j                  |d   |       | j                  |j                  d        | j                  |d   d        d }t        j
                  |       t        j                         }| j                  |j                  |       | j                  |d   |       | j                  |j                  |       | j                  |d   |       t        j
                  |  t        j                         }| j                  |j                         | j                  |j                         y )Nc                       y r,   r8   r   s    r   <lambda>z0SizeofTest.test_asyncgen_hooks.<locals>.<lambda>  r  r2   )	firstiterr   rG   c                       y r,   r8   r  s    r   r  z0SizeofTest.test_asyncgen_hooks.<locals>.<lambda>  r  r2   )	finalizer)r   get_asyncgen_hooksr   r  r  set_asyncgen_hooksrL   )r   oldr  hooksr  curs         r   test_asyncgen_hookszSizeofTest.test_asyncgen_hooks  sF   $$&#--(#--(#	3&&(eooy1eAh	*eoot,eAh%#	3&&(eooy1eAh	*eooy1eAh	*$$$&#--(#--(r2   c                     t        j                  d      }t        d|      \  }}}| j                  |d       | j                  |d       y )Nz
            import sys
            class MyStderr:
                def write(self, s):
                    sys.stderr = None
            sys.stderr = MyStderr()
            1/0
        r   r2   )rH  rI  r   r   r0  s        r   /test_changing_sys_stderr_and_removing_referencez:SizeofTest.test_changing_sys_stderr_and_removing_reference  sK         -T48Cc"c"r2   )r5   r6   r7   r  ry   r   r%  r  r  r  ra  rf  r}  r  r  r  __classcell__)r`  s   @r   r  r  	  sJ    > <<,,LJ<>M
O1b710>()4#r2   r  r   )"r   r  r#  r  r   r  r  r  r   rW  test.supportry   r   r   r  r   r   r   r   rH  rZ  ro   r  r3  TestCaser   r:   ra   r~   rY  rd  r  r5   mainr8   r2   r   <module>r     s     	   	   
    " N ) &   
 ! ,6h'' ,6\=8,, =@"BX&& "BPB5H%% B5J N<** N< N<b b#"" b# b#H zHMMO r2   