
    daf                         d dl mZ d dlZd dlZd dlm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 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 ej2                  ddg      Z ej2                  ddg      Zed        Z G d de      Z G d d      Z G d de      Z  G d de e	jB                        Z" G d de e	jB                        Z# G d de      Z$ G d de$e	jB                        Z% G d de$e	jB                        Z& G d  d!e      Z' G d" d#e'e	jB                        Z( G d$ d%e'e	jB                        Z) G d& d'e      Z* G d( d)e*e	jB                        Z+ G d* d+e*e	jB                        Z, G d, d-ee	jB                        Z- G d. d/e      Z. G d0 d1e.e	jB                        Z/ G d2 d3e.e	jB                        Z0 G d4 d5e      Z1 G d6 d7e1e	jB                        Z2 G d8 d9e1e	jB                        Z3 G d: d;e      Z4 G d< d=e4e	jB                        Z5 G d> d?e4e	jB                        Z6 G d@ dAee	jB                        Z7 G dB dCe	jB                        Z8 G dD dEe	jB                        Z9dF Z:e:Z;e<dGk(  r e	jz                          yy)H    )contextmanagerN)StringIO)support)import_helper)	os_helper)warnings_helper)assert_python_okassert_python_failure)package_helper
stacklevelwarnings	_warnings)blocked)freshc              #     K   t         t        fD ]  }	 |j                  j                           	 t        j                          t        j                  }| j                  }	 |dd | _        | j                  d       | t        _        d |t        _        || _        y# t        $ r Y w xY w# t
        $ r Y tw xY w# |t        _        || _        w xY ww)z8Use a specific warnings implementation in warning_tests.Nonce)	syswarning_tests__warningregistry__clearAttributeError	NameErrorr   filterssimplefilter)moduleto_clearoriginal_warningsoriginal_filterss       6/root/Python-3.12.4/Lib/test/test_warnings/__init__.pywarnings_stater!      s      -( 	((..0
!!# &..~~*)!,F#!'!2)  		   "3)sb   CBCB- C!*B< C	B*'C)B**C-	B96C8B99C<CCc                       e Zd Zy)TestWarningN__name__
__module____qualname__     r    r#   r#   3   s    r)   r#   c                   ,     e Zd ZdZ fdZ fdZ xZS )BaseTestz'Basic bookkeeping required for testing.c                 f   t         j                  j                  | _        dt	               v rt	               d= t        t        d      rt        `t        t        d      rt        `| j                  t        j                  d<   | j                  t         j                  _        t        t        | 7          y )Nr   r   )unittestcaser   old_unittest_moduleglobalshasattrr   r   r   r   modulessuperr+   setUpself	__class__s    r    r4   zBaseTest.setUp;   s    #+==#9#9  !GI-	/0="7813-.' #'++J "&h#%r)   c                     t         t        j                  d<   | j                  t        j
                  _        t        t        | '          y )Nr   )
r   r   r2   r/   r-   r.   r   r3   r+   tearDownr5   s    r    r9   zBaseTest.tearDownN   s0    "3J!%!9!9h&(r)   )r%   r&   r'   __doc__r4   r9   __classcell__)r7   s   @r    r+   r+   7   s    1&&) )r)   r+   c                       e Zd ZdZd Zy)PublicAPITestszGEnsures that the correct values are exposed in the
    public API.
    c                     | j                  t        | j                  d             g d}| j                  t	        | j                  j
                        t	        |             y )N__all__)warnwarn_explicitshowwarningformatwarningfilterwarningsr   resetwarningscatch_warnings)
assertTruer1   r   assertSetEqualsetr?   )r6   
target_apis     r    test_module_all_attributez(PublicAPITests.test_module_all_attributeY   sH    Y789
 	C 3 34
O	-r)   N)r%   r&   r'   r:   rK   r(   r)   r    r=   r=   S   s    -r)   r=   c                       e Zd ZeZy)CPublicAPITestsNr%   r&   r'   
c_warningsr   r(   r)   r    rM   rM   a       Fr)   rM   c                       e Zd ZeZy)PyPublicAPITestsNr%   r&   r'   py_warningsr   r(   r)   r    rR   rR   d       Fr)   rR   c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)FilterTestsz$Testing the filtering functionality.c                 :   t        j                  | j                        5 }| j                  j                          | j                  j	                  dt
               | j                  t
        | j                  j                  d       d d d        y # 1 sw Y   y xY w)Nr   errorcategoryzFilterTests.test_error)r   rF   r   rE   rD   UserWarningassertRaisesr@   r6   ws     r    
test_errorzFilterTests.test_errork   sq    --T[[A 	:QKK%%'KK&&w&Ek4;;+;+; 8:	: 	: 	:s   A'BBc                     t        j                   j                        5 } j                  j                          d fd}t	        j
                         5 } |        d d d        j                         } j                  d|        j                  d|        j                  j                  dt                j                  t        |       d d d        y # 1 sw Y   }xY w# 1 sw Y   y xY w)NrY   %FilterTests.test_ignore_after_defaultc                  F    j                   j                   t               y Nr   r@   r]   messager6   s   r    fz/FilterTests.test_error_after_default.<locals>.fv         +6r)   z2UserWarning: FilterTests.test_ignore_after_defaultz&self.module.warn(message, UserWarning)rZ   r[   )r   rF   r   rE   r   captured_stderrgetvalueassertInrD   r]   r^   )r6   r`   ri   stderrrh   s   `   @r    test_error_after_defaultz$FilterTests.test_error_after_defaultr   s    --T[[A 	.QKK%%'=G7 ((* f__&FMMN "MMB " KK&&w&Ek1-	. 	. 	. 	.s$   7C*C"A3C*C'	#C**C3c                    t        j                  d| j                        5 }| j                  j                          | j                  j	                  dt
               | j                  j                  dt
               | j                  t        |      d       | j                  t        t              dg       d d d        y # 1 sw Y   y xY w)NTrecordr   ignorer[   zFilterTests.test_ignorer   version)r   rF   r   rE   rD   r]   r@   assertEquallenlistr   r_   s     r    test_ignorezFilterTests.test_ignore   s    --T{{$ 	E'(KK%%'KK&&x+&FKK6DSVQ'T"56D	E 	E 	Es   BCCc                 Z    t        j                  d j                        5 } j                  j                          d fd} |         j                  j	                  dt
                |         |         j                  t        |      d       d d d        y # 1 sw Y   y xY w)NTrq   rc   c                  F    j                   j                   t               y re   rf   rg   s   r    ri   z0FilterTests.test_ignore_after_default.<locals>.f   rj   r)   rs   r[      )r   rF   r   rE   rD   r]   ru   rv   r6   r`   ri   rh   s   `  @r    test_ignore_after_defaultz%FilterTests.test_ignore_after_default   s    --T{{$ 
	('(KK%%'=G7CKK&&x+&FCCSVQ'
	( 
	( 
	(s   A4B!!B*c                 2    t        j                  d j                        5 } j                  j                           j                  j	                  dt
               d fd} |         j                  t        |      d        j                  |d   j                  j                  d	           |         j                  t        |      d
        j                  |d   j                  j                  d	          d d d        y # 1 sw Y   y xY w)NTrq   alwaysr[   zFilterTests.test_alwaysc                  F    j                   j                   t               y re   rf   rg   s   r    ri   z"FilterTests.test_always.<locals>.f   rj   r)   r{   r      )
r   rF   r   rE   rD   r]   ru   rv   rh   argsr|   s   `  @r    test_alwayszFilterTests.test_always   s    --T{{$ 	='(KK%%'KK&&x+&F/G7CSVQ'QrU]]//2G<CSVQ'QrU]]//2G<	= 	= 	=s   C DDc                     t        j                  d j                        5 } j                  j                          d fd} |         j	                  t        |      d        j	                  |d   j                  j                  d           |         j	                  t        |      d        j                  j                  dt        	        |         j	                  t        |      d
        j	                  |d   j                  j                  d           |         j	                  t        |      d        j	                  |d   j                  j                  d          d d d        y # 1 sw Y   y xY w)NTrq   z$FilterTests.test_always_after_ignorec                  F    j                   j                   t               y re   rf   rg   s   r    ri   z0FilterTests.test_always_after_default.<locals>.f   rj   r)   r{   r   r   r   r[   r      )
r   rF   r   rE   ru   rv   rh   r   rD   r]   r|   s   `  @r    test_always_after_defaultz%FilterTests.test_always_after_default   s0   --T{{$ 	='(KK%%'<G7CSVQ'QrU]]//2G<CSVQ'KK&&x+&FCSVQ'QrU]]//2G<CSVQ'QrU]]//2G<#	= 	= 	=s   EE==Fc                    t        j                  d| j                        5 }| j                  j                          | j                  j	                  dt
               t        d      }t        d      D ]w  }| j                  j                  |t
               |dk(  r%| j                  |d   j                  |       |d d = M|d	k(  r| j                  t        |      d       nt        d
       	 d d d        y # 1 sw Y   y xY w)NTrq   defaultr[   zFilterTests.test_defaultr   r   r   r{   zloop variant unhandled)r   rF   r   rE   rD   r]   ranger@   ru   rh   rv   
ValueError)r6   r`   rh   xs       r    test_defaultzFilterTests.test_default   s    --T{{$ 	?'(KK%%'KK&&y;&G!"<=G1X ?  +66$$QrU]]G<!!V$$SVQ/$%=>>?	? 	? 	?s   CC88Dc                    t        j                  d| j                        5 }| j                  j                          | j                  j	                  dt
               t        d      }| j                  j                  |t
               | j                  |d   j                  |       |d d = | j                  j                  |t
               | j                  t        |      d       d d d        y # 1 sw Y   y xY w)NTrq   r   r[   zFilterTests.test_moduler   r   )
r   rF   r   rE   rD   r]   r@   ru   rh   rv   r6   r`   rh   s      r    test_modulezFilterTests.test_module   s    --T{{$ 		('(KK%%'KK&&x+&F!";<GKKWk2QrU]]G4!KKWk2SVQ'		( 		( 		(s   CC11C:c                 |   t        j                  d| j                        5 }| j                  j                          | j                  j	                  dt
               t        d      }| j                  j                  |t
        dd       | j                  |d   j                  |       |d d = | j                  j                  |t
        dd	       | j                  t        |      d
       | j                  j                  |t
        dd       | j                  t        |      d
       d d d        y # 1 sw Y   y xY w)NTrq   r   r[   zFilterTests.test_once__init__.py*   r      r   ztest_warnings2.py)
r   rF   r   rE   rD   r]   rA   ru   rh   rv   r   s      r    	test_oncezFilterTests.test_once   s    --T{{$ 	('(KK%%'KK&&v&D!"9:GKK%%g{M$&(QrU]]G4!KK%%g{M$&(SVQ'KK%%g{<O$&(SVQ'	( 	( 	(s   DD22D;c           	      ~   t        j                  d| j                        5 }| j                  j                  dt               | j                  j                  dt        ddd        | j                  t        |      d       | j                  t              5  | j                  j                  dt        ddd       d d d        | j                  t        |      d       | j                  j                  dt        ddi        | j                  t        |      d	       d d d        y # 1 sw Y   lxY w# 1 sw Y   y xY w)
NTrq   r   msgfilenamer   module_globalsr{   r   )
r   rF   r   r   r]   rA   ru   rv   r^   	TypeErrorr_   s     r    test_module_globalszFilterTests.test_module_globals   s   --T{{$ 	('(KK$$X{; KK%%e[*b59 & ;SVQ' ""9- ?))%j"9= * ?? SVQ' KK%%e[*b57 & 9SVQ'%	( 	(? ?	( 	(s%   A5D3%D'<A"D3'D0	,D33D<c                 D   t        j                  | j                        5 }| j                  j                          | j                  j	                  dt
               | j                  t        | j                  j                  dt               d d d        y # 1 sw Y   y xY w)NrY   rZ   r[   zFilterTests.test_inheritance)	r   rF   r   rE   rD   Warningr^   r]   r@   r_   s     r    test_inheritancezFilterTests.test_inheritance   sx    --T[[A 	MQKK%%'KK&&w&Ak4;;+;+; >M	M 	M 	Ms   A,BBc                    t        j                  d| j                        5 }| j                  j                          | j                  j	                  dt
               | j                  j	                  dt
        d       |d d = 	 | j                  j                  dt
               | j                  t        |      d	       d d d        y # t
        $ r | j                  d       Y @w xY w# 1 sw Y   y xY w)
NTrq   rs   r[   rZ   )r\   appendzFilterTests.test_orderingz!order handling for actions failedr   )
r   rF   r   rE   rD   r]   r@   failru   rv   r_   s     r    test_orderingzFilterTests.test_ordering  s    --T{{$ 	('(KK%%'KK&&x+&FKK&&w/3 ' 5!?  !<kJ SVQ'	( 	(  ?		=>?	( 	(s0   A#C* C
&C*
C'$C*&C''C**C3c                    t        j                  d| j                        5 }| j                  j                  ddt        dd       | j                  t        | j                  j                  d       | j                  j                          d}| j                  j                  |       | j                  t        |d   j                        |       | j                  |d   j                  t               | j                  j                  d	dt        dd       d
}| j                  j                  |       | j                  t        |d   j                        |       | j                  j                          | j                  j                  ddt        dd       | j                  t        | j                  j                  d       d}| j                  j                  |       | j                  t        |d   j                        |       | j                  |d   j                  t               d d d        y # 1 sw Y   y xY w)NTrq   rZ    r   convert to errorzhandle normallyr   rs   zfiltered outzhex*zhex/octznonmatching text)r   rF   r   rD   r   r^   r]   r@   rE   ru   strrh   assertIsr\   assertNotEqual)r6   r`   texts      r    test_filterwarningszFilterTests.test_filterwarnings  s    --T{{$ 	7'(KK&&wGRCk4;;+;+;=OPKK%%'$DKKT"S2/6MM!B%..+6KK&&xWb!D!DKKT"AbEMM 2D9KK%%'KK&&wQGk4;;+;+;YG%DKKT"S2/6MM!B%..+6-	7 	7 	7s   H	H44H=c                 R   t        j                  d| j                        5 }| j                  j                  dt               | j                  j                  ddt               | j                  t        | j                  j                  d       | j                  t        | j                  j                  d       | j                  j                  d       | j                  |g        | j                  j                  d       | j                  |g        d d d        y # 1 sw Y   y xY w)	NTrq   rs   rZ   matchzmatch prefixzsuffix matchzsomething completely different)	r   rF   r   r   r]   rD   r^   r@   ru   r_   s     r    test_message_matchingz!FilterTests.test_message_matching/  s    --T{{$ 		$'(KK$$X{;KK&&wEk4;;+;+;WEk4;;+;+;^LKK^,Q#KK=>Q#		$ 		$ 		$s   C2DD&c                     G fdd      }t        d      D cg c]  }d |       t         |       df c}t        j                  d| j                        5 }| j                  _        | j                  j                  t        d      d d	d
       | j                  t        |d   j                        d       d d d        y c c}w # 1 sw Y   y xY w)Nc                       e Zd Z fdZy).FilterTests.test_mutate_filter_list.<locals>.Xc                     g d d  y re   r(   )r6   aLs     r    r   z4FilterTests.test_mutate_filter_list.<locals>.X.match=  s    !r)   N)r%   r&   r'   r   )r   s   r    Xr   <  s    r)   r   r   r   r   Trq   bzf.pyr   r   )
r   r]   r   rF   r   r   rA   ru   r   rh   )r6   r   ir`   r   s       @r    test_mutate_filter_listz#FilterTests.test_mutate_filter_list;  s    	 	 9>aA1iKA.A--T{{$ 	6'("#DKKKK%%k#&6fbIS2/5		6 	6 B	6 	6s   CA!C

Cc                    t        j                  | j                        5  | j                  j                          | j                  j	                  dt
               | j                  t        | j                  j                        d       | j                  j	                  dt
               | j                  j	                  dt
               | j                  t        | j                  j                        dd       | j                  | j                  j                  d   d   dd	       d d d        y # 1 sw Y   y xY w)
NrY   rZ   r[   r{   rs   r   z(filterwarnings inserted duplicate filterr   z>filterwarnings did not promote filter to the beginning of list)	r   rF   r   rE   rD   r]   ru   rv   r   r6   s    r    %test_filterwarnings_duplicate_filtersz1FilterTests.test_filterwarnings_duplicate_filtersG  s    --T[[A 	KK%%'KK&&w&ES!4!45q9KK&&x+&FKK&&w&EDKK''(!: ##A&q)7(	 	 	   D
D44D=c                    t        j                  | j                        5  | j                  j                          | j                  j	                  dt
               | j                  t        | j                  j                        d       | j                  j	                  dt
               | j                  j	                  dt
               | j                  t        | j                  j                        dd       | j                  | j                  j                  d   d   dd	       d d d        y # 1 sw Y   y xY w)
NrY   rZ   r[   r{   rs   r   &simplefilter inserted duplicate filterr   z<simplefilter did not promote filter to the beginning of list)	r   rF   r   rE   r   r]   ru   rv   r   r   s    r    #test_simplefilter_duplicate_filtersz/FilterTests.test_simplefilter_duplicate_filtersX  s    --T[[A 	KK%%'KK$$W{$CS!4!45q9KK$$X$DKK$$W{$CDKK''(!8 ##A&q)7N	 	 	r   c                 (   t        j                  | j                  d      5 }| j                  j                          | j                  j	                  d       | j                  j	                  dd       | j                  j	                  dd       | j                  j                  dt               | j                  t        | j                  j                        dd	       | j                  t        |      d
d       d d d        y # 1 sw Y   y xY w)NTr   rr   rs   rZ   r   test_append_duplicater[   r   r   r   z+appended duplicate changed order of filters)
r   rF   r   rE   r   r@   r]   ru   rv   r   r_   s     r    r   z!FilterTests.test_append_duplicateh  s    --T[[ 	 !KK%%'KK$$X.KK$$WT$:KK$$Xd$;KK4{KS!4!45q8 SVQ=	 	 	s   CDDc                    t        j                  | j                        5  | j                  j                          | j                  j	                  d       | j                  j                  | j                  d      5  | j                  j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NrY   rZ   rs   )r   actionzThis will be ignored)r   rF   r   rE   r   r@   r   s    r    +test_catchwarnings_with_simplefilter_ignorez7FilterTests.test_catchwarnings_with_simplefilter_ignorew  s    --T[[A 	9KK%%'KK$$W-++{{8 ,  9   !789	9 	99 9	9 	9s$   AB7>B+B7+B4	0B77C c           
      \   t        j                  | j                        5  | j                  j                          | j                  j                  | j                  dt              5  t        j                         5 }d}| j                  j                  |       | j                  t        | j                  j                  t	        d             |j                         }| j                  ||       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrY   rZ   )r   r   r\   z&Other types of warnings are not errorsr   )r   rF   r   rE   FutureWarningr   rk   r@   r^   rl   rm   )r6   rn   	error_msgs      r    *test_catchwarnings_with_simplefilter_errorz6FilterTests.test_catchwarnings_with_simplefilter_error  s    --T[[A 	5KK%%'++{{7] ,  	5 ,,. 5& HIKK$$Y/%%m&*kk&6&6e8LN#__.FMM)V45	5	5 	5
5 5	5 	5	5 	5s=   AD"(D=A4D
1D9D"
DDD	D""D+N)r%   r&   r'   r:   ra   ro   rx   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(   r)   r    rW   rW   g   sk    .:.$E(==(? 
(("(*M(76
$
6" 95r)   rW   c                       e Zd ZeZy)CFilterTestsNrN   r(   r)   r    r   r     rP   r)   r   c                       e Zd ZeZy)PyFilterTestsNrS   r(   r)   r    r   r     rU   r)   r   c                   X    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)	WarnTestsz2Test warnings.warn() and warnings.warn_explicit().c                    t        j                  d| j                        5 }| j                  j                  d       t	        d      D ]m  }d|z  }| j                  j                  |       | j                  t        |d   j                        |       | j                  |d   j                  t               o 	 d d d        y # 1 sw Y   y xY w)NTrq   r      zmulti %dr   )r   rF   r   r   r   r@   ru   r   rh   r   r\   r]   )r6   r`   r   r   s       r    test_messagezWarnTests.test_message  s    --T{{$ 	;'(KK$$V,1X ;!1}  &  QrU]]!3T:aennk:	;	; 	; 	;s   BCCc           
      l   t         d dfD ]  }t        j                  d| j                        5 }| j                  j	                  d       | j                  j                  |       | j                  t        |d   j                        t        t        |                   d d d         y # 1 sw Y   xY w)Nr   Trq   r   r   )
r   r   rF   r   r   r@   ru   r   rh   r]   )r6   obr`   s      r    test_warn_nonstandard_typesz%WarnTests.test_warn_nonstandard_types  s    D"% 	KB"11;;( K+,((0  $   QrU]]!3SR5IJK K	KK Ks   A1B**B3	c                    t        | j                        5  t        j                  d| j                        5 }t	        j
                  d       | j                  t        j                  j                  |d   j                        d       t	        j                  d       | j                  t        j                  j                  |d   j                        d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NTrq   spam1r   stacklevel.pyspam2r!   r   r   rF   r   innerru   ospathbasenamer   outerr_   s     r    test_filenamezWarnTests.test_filename  s    DKK( 	5"11;;( 5+,##G,  !1!1!B%..!A$35##G,  !1!1!B%..!A$355	5 	55 5	5 	5s#   "C8B#C,C8,C5	1C88Dc                    t        | j                        5  t        j                  d| j                        5 }t	        j
                  dd       | j                  t        j                  j                  |d   j                        d       t	        j                  dd       | j                  t        j                  j                  |d   j                        d       t	        j
                  d	d
       | j                  t        j                  j                  |d   j                        d       t	        j                  dd
       | j                  t        j                  j                  |d   j                        d       t	        j                  dd       | j                  t        j                  j                  |d   j                        d       t	        j
                  dd       | j                  t        j                  j                  |d   j                        d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NTrq   spam3r{   r   r   r   spam4spam5r   r   spam6zspam6.5r   spam7i'  r   r   r_   s     r    test_stacklevelzWarnTests.test_stacklevel  s    DKK( 	+"11;;( ++,##G:  !1!1!B%..!A$35##G:  !1!1!B%..!A$35 ##G:  !1!1!B%..!A$13##G:  !1!1!B%..!A$35##I!<  !1!1!B%..!A$13 ##G=  !1!1!B%..!A$)+)+	+ 	++ +	+ 	+s#   "IG3H<+I<I	IIc                    t        j                  d       t        | j                        5  t	        j
                  d| j                        5 }| j                  j                  d       dd l}| j                  t        |      d       | j                  |d   j                  t               d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz&test.test_warnings.data.import_warningTrq   r   r   r{   )r   unloadr!   r   r   rF   r   &test.test_warnings.data.import_warningru   rv   r   __file__)r6   r`   tests      r    test_stacklevel_importz WarnTests.test_stacklevel_import  s    EFDKK( 	:"11;;( :+,((2=  Q+  19:	: 	:: :	: 	:s$   "CAB<+C<C	CCc                     t        | j                        5  t        j                  d| j                        5 }| j                  j	                  d       t        j                  ddt        j                         | j                  |d   j                  t               t        j                  dd	       | j                  |d   j                  t               | j                  |d
   j                  |d   j                         t        j                  dd	       | j                  |d   j                  t               t        j                  dd	       | j                  |d   j                  t               t        j                  dd	       | j                  |d   j                  t               t        j                  dd	       | j                  d|d   j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NTrq   r   	inner_apir   )r   warnings_moduler   zpackage apir   zpackage api 1r{   zpackage api 0r   zpackage api -99iprefix02r   r-   )r!   r   r   rF   r   r   r   r   r   ru   r   r   packagerm   r_   s     r    test_skip_file_prefixesz!WarnTests.test_skip_file_prefixes  s   DKK( 	:"11;;( :+,((2 ((#(5(>(>@   2:%%mB  2:  22@%%o!D  2:%%o!D  2:%%&7CH  2: %%jQ?j!B%..9-:	: 	:: :	: 	:s#   "HF/G8'H8H	=HHc                    t        | j                        5  t        j                  j                  }| j                  t              5   |dg        d d d        | j                  t              5   |dd       d d d        | j                  t              5   |dd       d d d        d d d        y # 1 sw Y   bxY w# 1 sw Y   FxY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Nr   )skip_file_prefixes)s   bytesza sequence of strs)r!   r   r   r   r@   r^   r   )r6   r@   s     r    #test_skip_file_prefixes_type_errorsz-WarnTests.test_skip_file_prefixes_type_errors  s    DKK( 	E ))..D""9- 3Ur23""9- <U{;<""9- EU/CDE	E 	E3 3< <E E	E 	EsS   0CB2C.B>9CC
!C2B;	7C>C	C
C	CCc                    d}t        d|d      }t        j                  d      5 }| j                  j	                  dt
               t        |       d d d        | j                  d   j                  |       y # 1 sw Y   )xY w)	Nz<warnings-test>z3import warnings
warnings.warn('hello', UserWarning)execT)rr   r   r[   r   )	compiler   rF   r   r   r]   r   ru   r   )r6   r   codeobjr`   s       r    test_exec_filenamezWarnTests.test_exec_filename  s{    $ A"F, --T: 	aKK$$X$DM	 	11	 	s   -A;;Bc                 
   t        j                  d| j                        5 }| j                  j                          | j                  j	                  dt
               dg}t        j                  s|j                  d       |D ]Y  }	 t        j                  |       | j                  j                  dt
        |d       | j                  |d	   j                  |       [ 	 d d d        y # t        $ r Y qw xY w# 1 sw Y   y xY w)
NTrq   r   r[   u   nonasciié€u   surrogater   r{   r   )r   rF   r   rE   rD   r]   r   is_emscriptenr   r   fsencodeUnicodeEncodeErrorrA   ru   r   )r6   r`   	filenamesr   s       r    %test_warn_explicit_non_ascii_filenamez/WarnTests.test_warn_explicit_non_ascii_filename  s    --T{{$ 	;'(KK%%'KK&&x+&F-.I((
   !23% ;KK) ))&+xK  2:;	; 	; * 	; 	;s1   A%C9C*AC9*	C63C95C66C99Dc           	      8   | j                  t        | j                  j                  d t        d d        | j                  t        | j                  j                  d d d d       | j                  t        t
        f| j                  j                  d t        d dd       y )Nr{   r   registry)r^   r   r   rA   r]   r   r   r   s    r    test_warn_explicit_type_errorsz(WarnTests.test_warn_explicit_type_errors"  s     	)T[[%>%> +tT	; 	)T[[%>%> $a	1 	9n5 KK55 '4R 	 	Ar)   c                      G d dt               }| j                  t              5  | j                  j	                   |              d d d        y # 1 sw Y   y xY w)Nc                       e Zd ZdZd Zy)-WarnTests.test_bad_str.<locals>.BadStrWarningz-Warning with a bad format string for __str__.c                     dddiz  S )NzA bad formatted string %(err)errzthere is no %(err)sr(   r   s    r    __str__z5WarnTests.test_bad_str.<locals>.BadStrWarning.__str__7  s    7!678 9r)   N)r%   r&   r'   r:   r  r(   r)   r    BadStrWarningr  5  s
    ?9r)   r  )r   r^   r   r   r@   )r6   r  s     r    test_bad_strzWarnTests.test_bad_str1  sG    	9G 	9 z* 	.KK]_-	. 	. 	.s   !AAc                     G d dt               } G d d      }| j                  t              5 }| j                  j	                  dd       d d d        | j                  dt        j                               | j                  t              5 }| j                  j	                  d|       d d d        | j                  dt        |j                               | j                  t              5 }| j                  j	                  d |              d d d        | j                  dt        |j                               t        j                  | j                        5  | j                  j                          | j                  j                  d	       | j                  |      5 }| j                  j	                  d
|       d d d        | j                  d
t        |j                               | j                  t              5 }| j                  j	                  d
d        d d d        | j                  d
t        |j                               | j                  |      5 }| j                  j	                  d
|       d d d        | j!                  |j                  t                d d d        y # 1 sw Y   axY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   rxY w# 1 sw Y   y xY w)Nc                       e Zd Zy)6WarnTests.test_warning_classes.<locals>.MyWarningClassNr$   r(   r)   r    MyWarningClassr  ?      r)   r  c                       e Zd Zy):WarnTests.test_warning_classes.<locals>.NonWarningSubclassNr$   r(   r)   r    NonWarningSubclassr  B  r  r)   r  zbad warning categoryr   z)category must be a Warning subclass, not rY   r   zgood warning category)r   r^   r   r   r@   rm   r   	exceptionr   rF   rE   rD   assertWarnsru   warningr]   assertIsInstance)r6   r  r  cms       r    test_warning_classeszWarnTests.test_warning_classes>  sy   	W 		 	 y) 	9RKK3R8	9A",,'	) y) 	IRKK35GH	IA",,'	) y) 	GRKK3^5EF	GA",,'	) --T[[A 	7KK%%'KK&&y1!!.1 JR  !8.IJ4c"**oF!!+. @"  !8$?@4c"**oF!!.1 JR  !8.IJ!!"**g6	7 	7!	9 	9
	I 	I	G 	GJ J@ @J J	7 	7sy   J+J8-"KAK7#K AK7K>K7K+:(K7+J58KKK	K7K(	$K7+K4	0K77L N)r%   r&   r'   r:   r   r   r   r   r   r   r   r   r  r  r  r  r(   r)   r    r   r     sD    <;	K	5+6	::4E2;(A.%7r)   r   c                       e Zd ZeZd Zy)
CWarnTestsc                     | j                  t        | j                         | j                  t	        | j                  j
                  d             y N__code__)assertIsNotr   r   assertFalser1   r@   r   s    r    test_acceleratedzCWarnTests.test_acceleratedj  s6    *DKK8!1!1:>?r)   N)r%   r&   r'   rO   r   r&  r(   r)   r    r   r   e  s    F@r)   r   c                       e Zd ZeZd Zy)PyWarnTestsc                     | j                  t        | j                         | j                  t	        | j                  j
                  d             y r"  )r$  r   r   rG   r1   r@   r   s    r    test_pure_pythonzPyWarnTests.test_pure_pythons  s4    *DKK8 0 0*=>r)   N)r%   r&   r'   rT   r   r*  r(   r)   r    r(  r(  n  s    F?r)   r(  c                       e Zd Zd Zd Zy)WCmdLineTestsc                    t        j                  | j                        5  | j                  | j                  j                  | j                  j
                  d       | j                  | j                  j                  | j                  j
                  d       | j                  | j                  j                  | j                  j
                  d       | j                  | j                  j                        5  | j                  j                  d       d d d        | j                  | j                  j                        5  | j                  j                  d       d d d        | j                  | j                  j                        5  | j                  j                  d       d d d        | j                  | j                  j                  d      5  | j                  j                  d	       d d d        | j                  j                  d
       | j                  t        | j                  j                  d       d d d        y # 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   y xY w)NrY   z1:2:3:4:5:6zbogus::Warningzignore:2::4:-5zignore::123zignore::123abczignore::===u   Wärningu   ignore::Wärningzerror::Warning::0r   )	r   rF   r   r^   _OptionError
_setoptionassertRaisesRegexr]   r@   r   s    r    test_improper_inputz!WCmdLineTests.test_improper_inputz  s    --T[[A 	Qdkk66"kk44mEdkk66"kk446FHdkk66"kk446FH""4;;#;#;< 6&&}56""4;;#;#;< 9&&'789""4;;#;#;< 6&&}56''(@(@*M ;&&'9:;KK""#67k4;;+;+;=OP!	Q 	Q6 69 96 6; ;	Q 	Qsm   CI88I-I8I-I8
I &.I8I,0AI8I	I8I	I8 I)	%I8,I5	1I88Jc                    t        j                  | j                        5  | j                  j                  d       | j	                  | j                  j
                        5  | j                  j                  d       d d d        | j	                  | j                  j
                        5  | j                  j                  d       d d d        | j                  j                  d       | j	                  t              5  | j                  j                  dt               d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   *xY w# 1 sw Y   y xY w)NrY   zignore::Warningzignore::TestWarningz ignore::test.test_warnings.bogusz%error::test.test_warnings.TestWarningztest warning)r   rF   r   r/  r^   r.  r#   r@   r   s    r    test_import_from_modulez%WCmdLineTests.test_import_from_module  s   --T[[A 	>KK""#45""4;;#;#;< >&&'<=>""4;;#;#;< K&&'IJKKK""#JK"";/ >  =>	> 	>> >K K> >	> 	>sT   AE"D1>-E+D=8E?!E	 E1D:	6E=E	E	E	EEN)r%   r&   r'   r1  r3  r(   r)   r    r,  r,  x  s    Q*	>r)   r,  c                       e Zd ZeZy)CWCmdLineTestsNrN   r(   r)   r    r5  r5    rP   r)   r5  c                       e Zd ZeZd Zd Zy)PyWCmdLineTestsc                 J    t        ddd      \  }}}| j                  d|       y )Nz-Wxxx-cpasss0   Invalid -W option ignored: invalid action: 'xxx')r	   rm   r6   rcoutr  s       r    test_improper_optionz$PyWCmdLineTests.test_improper_option  s'     (v>CI3Or)   c                     t        ddd      \  }}}| j                  |j                                | j                  d|       y )Nz-Wir9  z?import sys; sys.modules['warnings'].warn('foo', RuntimeWarning)s   RuntimeWarning)r	   r%  stripassertNotInr;  s       r    test_warnings_bootstrapz'PyWCmdLineTests.test_warnings_bootstrap  sC     (tMOC 	%*C0r)   N)r%   r&   r'   rT   r   r>  rB  r(   r)   r    r7  r7    s    FP1r)   r7  c                       e Zd ZdZeZd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zej"                  d        Zej"                  d        Zej"                  d        Zy)_WarningsTestsz'Tests specific to the _warnings module.c                 x   t        j                  | j                        5 }| j                  j                  ddt        dd       | j                  t        | j                  j                  d       | j                  `| j                  t        | j                  j                  d       d d d        y # 1 sw Y   y xY w)NrY   rZ   r   r   r   )	r   rF   r   rD   r   r^   r]   r@   r   r_   s     r    test_filterz_WarningsTests.test_filter  s    --T[[A 	4QKK&&wGRCk4;;+;+; 24#k4;;+;+; 24	4 	4 	4s   BB00B9c                    t        d      }	 | j                  j                  }i at	        j
                  d| j                        5 }| j                  j                          | j                  j                  dt                | j                  j                  |t         dd       | j                  |d   j                  |       |d d = | j                  j                  |t         dd       | j                  t        |      d	       i | j                  _        i a| j                  j                  d       | j                  |d   j                  j                  |j                         |d d = | j                  `i a| j                  j                  |t         dd       | j                  t        |      d	       d d d        || j                  _        y # 1 sw Y   xY w# | j                  _        w xY w)
Nzonceregistry testTrq   r   r[   filer   r   r   )r]   r   onceregistryr   r   rF   rE   rD   rA   ru   rh   rv   r@   r   )r6   rh   original_registryr`   s       r    test_onceregistryz _WarningsTests.test_onceregistry  s    12	9 $ 8 8"$"11;;( ,+,))+**6K*H))';K  28aD))';K  Q++-(&(#  !45  2!3!3W\\BaDKK,&(#))';K  Q+',* (9DKK$+, ,* (9DKK$s$   9G E0G6G GG G/c                    t        d      }| j                  j                  }	 t        j                  d| j                        5 }| j                  j                          i }| j                  j                  |t         dd|       | j                  |d   j                  |       | j                  t        |      d       | j                  t        |      d	       | j                  d
|       |d d = | j                  `i }i }| j                  j                  |t         dd|       | j                  |d   j                  |       | j                  t        |      d       | j                  t        |      d	       |d d = d| j                  _        i }i }| j                  j                  |t         dd|       | j                  t        |      d       d d d        || j                  _        y # 1 sw Y   xY w# || j                  _        w xY w)Nzdefaultaction testTrq   z<test>r   r  r   r{   r   rt   +   rs   ,   r   )r]   r   defaultactionr   rF   rE   rA   ru   rh   rv   rm   )r6   rh   originalr`   r  r   s         r    test_default_actionz"_WarningsTests.test_default_action  s   23;;,,	1"11;;( ,+,))+))';"5= * ?  28  Q+  X2i2aDKK-&(#))';"5= * ?  28  Q+  X2aD,4)&(#))';"5= * ?  Q+9,< )1DKK%=, ,< )1DKK%s$   !G9 FG-G9 -G62G9 9Hc                    d}t        j                  | j                        5  | j                  j                  dt               | j                  `t        j                  d      5 }| j                  j                  |       |j                         }d d d        d d d        | j                  |       y # 1 sw Y   $xY w# 1 sw Y   (xY w)Nzdel showwarning testrY   r   r[   rn   )r   rF   r   rD   r]   rB   r   captured_outputr@   rl   rm   )r6   r   streamresults       r    test_showwarning_missingz'_WarningsTests.test_showwarning_missing  s    %--T[[A 	+KK&&x+&F'((2 +f  &*+	+ 	dF#+ +	+ 	+s$   AC&,B5C5B>	:CC
c                    d}t        j                  | j                        5  | j                  j                  dt               | j                  j
                  }	 | j                  `t        j                  d      5 }| j                  j                  |       |j                         }d d d        || j                  _        	 d d d        | j                  |       y # 1 sw Y   6xY w# || j                  _        w xY w# 1 sw Y   >xY w)Nzdel _showwarnmsg testrY   r   r[   rn   )r   rF   r   rD   r]   _showwarnmsgr   rS  r@   rl   rm   )r6   r   showrT  rU  s        r    test_showwarnmsg_missingz'_WarningsTests.test_showwarnmsg_missing  s    &--T[[A 
	0KK&&x+&F;;++D0KK,,,X6 /&KK$$T*#__.F/ ,0(
	0 	dF#/ / ,0(
	0 
	0s;   8D !C*=,C)C*1D C'	#C**C==D  D	c                    t        j                  | j                        5  | j                  j                  dt               t
        | j                  _        t        j                  d      5  | j                  j                  d       d d d        d| j                  _        | j                  t        | j                  j                  d       d d d        y # 1 sw Y   NxY w# 1 sw Y   y xY w)NrY   r   r[   stdoutzWarning!   )r   rF   r   rD   r]   printrB   r   rS  r@   r^   r   r   s    r    test_showwarning_not_callablez,_WarningsTests.test_showwarning_not_callable!  s    --T[[A 	GKK&&x+&F&+DKK#((2 -  ,-&(DKK#i)9)9:F	G 	G- -	G 	Gs%   AC"-C	AC"C	C""C+c                    d}t        j                  | j                        5  | j                  j                  dt               | j                  `t        j                  d      5 }t        j                  |       |j                         }d d d        d d d        | j                  j                  d      dd|z         |j                  dd	      \  }}t        j                  j!                  t        j"                        d
   dz   }|j%                  dd      }|\  }}	}
}t'        |	      }	| j                  ||       | j                  |
dt        j(                  z          | j                  |d|z          dt+        j,                  ||	      j/                         z   dz   }|sJ | j                  ||       y # 1 sw Y   .xY w# 1 sw Y   3xY w)Nztest show_warningrY   r   r[   rn   
r   zToo many newlines in %rr{   r   .py:r    z  )r   rF   r   rD   r]   rB   r   rS  r   r   rl   ru   countsplitr   r   splitextr   rsplitintr%   	linecachegetliner@  )r6   r   rT  rU  
first_linesecond_lineexpected_filefirst_line_partsr   linewarning_classrh   expected_lines                r    test_show_warning_outputz'_WarningsTests.test_show_warning_output*  s   "--T[[A 	+KK&&x+&F'((2 +f##D)*+	+ 	d+Q6?	A"(,,tQ"7
K(()?)?@CeK%,,S!4-=*dM74y-k.B.B(BC#*-y00t<BBDDtK}m4+ +	+ 	+s$   AG&&F8G8G	=GGc                 f   t               }|d   }	 t        j                  d| j                        }|5 }| j                  j	                  dt
               d |d<   t        j                  dt
               | j                  t        |             d d d        ||d<   y # 1 sw Y   xY w# ||d<   w xY w)Nr   Trq   r   r[   r   )	r0   r   rF   r   rD   r]   r@   rG   rv   )r6   globals_dictoldfilecatchr`   s        r    test_filename_nonez!_WarningsTests.test_filename_noneA  s    yz*		/%44D<@KKIE (!**8k*J+/Z(!&&v{;A'	( (/L$( ( (/L$s#   #B) ABB) B&"B) )B0c                     t        dd      \  }}}| j                  |d       | j                  d|       | j                  d|       y )Nr9  zjimport sys; sys.stderr = None; import warnings; warnings.simplefilter('always'); warnings.warn('Warning!')r)   s   Warning!s   Error)r	   ru   rA  r6   r<  r\  rn   s       r    test_stderr_nonez_WarningsTests.test_stderr_noneP  sL    -d()FF 	%f-6*r)   c                    d }| j                   }t        j                  |      5  |j                  dt               t        j                         5 }|j                  dt        dd |d      d	d
       d d d        | j                  dj                                |j                  }	 |`
t        j                         5 }|j                  dt        dd |dg      d	d
       d d d        | j                  d|j                                ||_
        	 d d d        y # 1 sw Y   xY w# 1 sw Y   FxY w# ||_
        w xY w# 1 sw Y   y xY w)Nc                 *      G  fdd      } |       S )Nc                       e Zd Z fdZy)I_WarningsTests.test_issue31285.<locals>.get_bad_loader.<locals>.BadLoaderc                 6     G fddt               } |d      S )Nc                       e Zd Z fdZy)g_WarningsTests.test_issue31285.<locals>.get_bad_loader.<locals>.BadLoader.get_source.<locals>.BadSourcec                     S re   r(   )r6   splitlines_ret_vals    r    
splitlineszr_WarningsTests.test_issue31285.<locals>.get_bad_loader.<locals>.BadLoader.get_source.<locals>.BadSource.splitlinesa  s	    #55r)   N)r%   r&   r'   r  r  s   r    	BadSourcer  `  s    6r)   r  spam)r   )r6   fullnamer  r  s      r    
get_sourcezT_WarningsTests.test_issue31285.<locals>.get_bad_loader.<locals>.BadLoader.get_source_  s    6C 6 %V,,r)   N)r%   r&   r'   r  r  s   r    	BadLoaderr  ^  s    -r)   r  r(   )r  r  s   ` r    get_bad_loaderz6_WarningsTests.test_issue31285.<locals>.get_bad_loader]  s    - - ;r)   rY   r   r[   foobarr{   r   foobar)
__loader__r%   r   zUserWarning: fooeggszUserWarning: eggs)r   r   rF   rD   r]   r   rk   rA   rm   rl   rX  )r6   r  wmodrn   rY  s        r    test_issue31285z_WarningsTests.test_issue31285Y  sF   	 {{--T: 	)	K@((* ;f"";q2@2D08$: # ;;
 MM,foo.?@$$D	)%,,. ?&&&UA6DbT6J4<(> ' ??
 16??3DE$(!)	) 	); ;? ? %)!)	) 	)sS   ,E$D64E+D7%D+&(D7ED(	$E+D4	0D77	E  EEc           
      t   | j                   }t        j                  |      5  |j                  d       t	        j
                  |dd       5  | j                  t              5  |j                  dt        ddd        d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrY   r   rI  r  r  r{   r  )
r   r   rF   rD   r   	swap_attrr^   r   rA   r   r6   r  s     r    test_issue31411z_WarningsTests.test_issue31411}  s     {{--T: 	P'""4> P&&y1 P&&ugua$&OPP	P 	PP PP P	P 	Ps;   )B.B""B=B"B.BB""B+	'B..B7c           	         | j                   }t        j                  |      5  d d t        d dfg|_        | j                  t              5  |j                  dt        dd       d d d        g |_        t        j                  |dd       5  | j                  t              5  |j                  dt        dd       d d d        d d d        d d d        y # 1 sw Y   oxY w# 1 sw Y   &xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)NrY   r   r  r  r{   rO  )
r   r   rF   r   r   r^   r   rA   r   r  r  s     r    test_issue31416z_WarningsTests.test_issue31416  s     {{--T: 	=!4$:;DL""9- =""5'5!<= DL""4$? =""9-=""5'5!<= =	= 	== == = = =	= 	=sS   'C5
C#&C5	C)C8C) C5C	C5C&"C))C2	.C55C>c                    t        j                  | j                        5  | j                  j                  dt               t        j                  t               dd      5  t        j                  t               dd       5  | j                  t        | j                  j                  d       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrY   rZ   r[   r%   s   foor   r  )
r   rF   r   rD   r]   r   	swap_itemr0   r^   r@   r   s    r    test_issue31566z_WarningsTests.test_issue31566  s     --T[[A 	HKK&&w&E""79j&A H""79j$?H!!+t{{/?/?GH H	H 	HH H H H	H 	Hs<   AC" C,C.C6CCCC	CC(N)r%   r&   r'   r:   rO   r   rF  rK  rQ  rV  rZ  r_  rs  rx  r{  r  r   cpython_onlyr  r  r  r(   r)   r    rD  rD    s    1F49<#1J	$$ G5./+")H P P = = H Hr)   rD  c                   "    e Zd ZdZd Zd Zd Zy)WarningsDisplayTestsziTest the displaying of warnings and the ability to overload functions
    related to displaying warnings.c           
         d}t         }t        j                  j                  t        j
                        d   dz   }d}t        j                  ||      j                         }d}||||j                  ||fz  }| j                  || j                  j                  ||||             |dz  }||||j                  ||fz  }| j                  || j                  j                  |||||             y )Nr   r   rb     z%s:%s: %s: %s
  %s
z for the win!)r   r   r   rg  r   r   rj  rk  r@  r%   ru   r   rC   )r6   rh   r\   	file_nameline_num	file_lineformatexpects           r    test_formatwarningz'WarningsDisplayTests.test_formatwarning  s    GG$$]%;%;<Q?%G	%%i:@@B	(9h0A0A7%' '!:!:708)X"O 	P 	_$	9h0A0A7%' '!:!:7$,i9"N 	Or)   c                 p   t         j                  j                  t        j                        d   dz   }d}t        j                  ||      j                         }d}t        }t               }| j                  j                  ||||      }| j                  j                  |||||       | j                  |j                         |       |dz  }| j                  j                  |||||      }t               }| j                  j                  ||||||       | j                  ||j                                y )Nr   rb  r   r   zfor the win!)r   r   rg  r   r   rj  rk  r@  r   r   r   rC   rB   ru   rl   )r6   r  r  expected_file_linerh   r\   file_objectr  s           r    test_showwarningz%WarningsDisplayTests.test_showwarning  s   GG$$]%;%;<Q?%G	&..y(CIIKj**7Hi,469h +	---/8n,**7Hi,46HJj9h +-?	A!5!5!78r)   c           	         d }t         j                  j                  t        j                        d   dz   }d}t        j                  ||      j                         }d}t        }t               }d| d| d| d	| d
| z   }t        j                  | j                  d|      5  | j                  j                  ||||||       | j                  |j                         |       d d d        y # 1 sw Y   y xY w)Nc           
      $    d|  d| d| d| d| 
S )Nm=:c=:f=:l=:t=r(   )rh   r\   r   linenor   s        r    myformatwarningzIWarningsDisplayTests.test_formatwarning_override.<locals>.myformatwarning  s'    yH:S
#fXSOOr)   r   rb  r   r   r  r  r  r  r  rC   )r   r   rg  r   r   rj  rk  r@  r   r   r   r  r   rB   ru   rl   )	r6   r  r  r  r  rh   r\   r  expecteds	            r    test_formatwarning_overridez0WarningsDisplayTests.test_formatwarning_override  s    	P GG$$]%;%;<Q?%G	%%i:@@B	jyH:S3xjI$%t{{O_M 	?KK##GXy($/<[113X>	? 	? 	?s   $AC..C7N)r%   r&   r'   r:   r  r  r  r(   r)   r    r  r    s    'O$9*?r)   r  c                       e Zd ZeZy)CWarningsDisplayTestsNrN   r(   r)   r    r  r    rP   r)   r  c                       e Zd ZeZd Zy)PyWarningsDisplayTestsc           	         | j                  t        j                  t        j                         t	        t        j                  dd      5 }|j                  t        j                  d             d d d        d }t        j                  j                  t        j                        } |dt        j                        }t        j                  d| d      j                         }| j                  ||        |dd	d
t        j                        }t        j                  d| d| d| d      j                         }| j                  ||       y # 1 sw Y   xY w)Nr`   utf-8)encodingz
                def func():
                    f = open(__file__, "rb")
                    # Emit ResourceWarning
                    f = None

                func()
            c                      t        | ddi}|j                  j                  dd      }dj                  |j	                               }t        j                  dd|      }|S )NPYTHONIOENCODINGr  replacera  z<.*>z<...>)r	   r  decodejoinr  resub)r   resrn   s      r    runz4PyWarningsDisplayTests.test_tracemalloc.<locals>.run  sU    "DC7CCWW^^GY7FYYv0023F VVFGV4FMr)   -Wdz
            z:5: ResourceWarning: unclosed file <...>
              f = None
            ResourceWarning: Enable tracemalloc to get the object allocation traceback
        z-Xztracemalloc=2z:5: ResourceWarning: unclosed file <...>
              f = None
            Object allocated at (most recent call last):
              File "z7", lineno 7
                func()
              File "z=", lineno 3
                f = open(__file__, "rb")
        )
addCleanupr   unlinkTESTFNopenwritetextwrapdedentr   r   abspathr@  ru   )r6   fpr  r   rn   r  s         r    test_tracemallocz'PyWarningsDisplayTests.test_tracemalloc  sA   	(()*:*:;)""C': 	bHHX__ &  		 77??9#3#34UI,,-?? (J 	$  UW	 	
 	* UD/93C3CD?? (J  J J 	$  UW 	 	*Q	 	s   %EEN)r%   r&   r'   rT   r   r  r(   r)   r    r  r    s    F++r)   r  c                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
CatchWarningTestszTest catch_warnings().c                 $   | j                   }|j                  }|j                  }|j                  |d      5  t	               x|_        |_        d d d        | j                  |j                  |       | j                  |j                  |       |j                  |d      5  t	               x|_        |_        d d d        | j                  |j                  |       | j                  |j                  |       y # 1 sw Y   xY w# 1 sw Y   NxY wNTr   F)r   r   rB   rF   objectr   )r6   r  orig_filtersorig_showwarnings       r    test_catch_warnings_restorez-CatchWarningTests.test_catch_warnings_restore  s    {{||++  T : 	7.4h6DL4+	7dllL1d&&(89  U ; 	7.4h6DL4+	7dllL1d&&(89	7 	7
	7 	7s   C:"D:DDc                 d   | j                   }|j                  |d      5 }| j                  |g        | j                  t	        |      t
               |j                  d       |j                  d       | j                  t        |d   j                        d       |j                  d       | j                  t        |d   j                        d       | j                  t        |d   j                        d       | j                  t        |d   j                        d       |d d = | j                  |g        d d d        |j                  }|j                  |d	      5 }| j                  |       | j                  |j                  |       d d d        y # 1 sw Y   _xY w# 1 sw Y   y xY w)
NTr   r   r  r   r  r   r{   F)r   rF   ru   r   typerw   r   r@   r   rh   rB   assertIsNone)r6   r  r`   r  s       r    test_catch_warnings_recordingz/CatchWarningTests.test_catch_warnings_recording)  sh   {{  T : 	$aQ#MM$q'4(h'IIeS2/7IIeS2/7S1.6S1.6!Q#	$  ++  U ; 	>qa MM$**,<=	> 	>	$ 	$	> 	>s   DF#.F&F#&F/c                    | j                   }|j                  |d      }| j                  t        |j                         |5  | j                  t        |j
                         d d d        |j                  |d      }| j                  t        |j                         |5  | j                  t        |j
                         d d d        y # 1 sw Y   hxY w# 1 sw Y   y xY wr  )r   rF   r^   RuntimeError__exit__	__enter__)r6   r  r   s      r    !test_catch_warnings_reentry_guardz3CatchWarningTests.test_catch_warnings_reentry_guard>  s    {{tD9,

3 	9lAKK8	9 tE:,

3 	9lAKK8	9 	9	9 	9
	9 	9s   !C
 !C
CCc                    | j                   }|j                  }|j                  }|j                  |      5 }| j	                  |       | j                  |j                  |       | j                  |j                  |       d d d        | j                  |j                  |       |t        j                  d   u r|j                         5 }| j	                  |       | j                  |j                  |       | j                  |j                  |       d d d        | j                  |j                  |       y y # 1 sw Y   xY w# 1 sw Y   3xY w)NrY   r   )	r   r   rB   rF   r  r   r$  r   r2   )r6   r  r  r  r`   s        r    test_catch_warnings_defaultsz.CatchWarningTests.test_catch_warnings_defaultsK  s   {{||++   - 	9a MM$**,<=T\\<8	9 	dllL13;;z**$$& =!!!!$d..0@A  |<= MM$,,5 +	9 	9= =s   A
D:
A
E:EEc                 B   d}| j                   }g d	fd	}t        j                  |d|      5  |j                  |d      5 }| j	                  |j
                  |       |j                  d       |j                  |       d d d        | j                  |j
                  |       d d d        | j                  t              d|       | j                  |d   j                  j                  d   |       | j                  g        y # 1 sw Y   xY w# 1 sw Y   pxY w)
NThis is a warningc                 (    j                  |        y re   r   rh   r\   r   r  rH  rp  my_logs         r    	my_loggerzLCatchWarningTests.test_record_override_showwarning_before.<locals>.my_loggerd      MM'"r)   rB   Tr   r   r{   r   NN)r   r   r  rF   r$  rB   r   r@   r   ru   rv   rh   r   r6   r   r  r  logr  s        @r    'test_record_override_showwarning_beforez9CatchWarningTests.test_record_override_showwarning_before]  s     #{{	#
 t]I> 	7$$D$>  #  !1!19=!!(+		$	  MM$**I6	7 	S1c*Q,,Q/6$   	7 	7s#   D?D	$D	D	DDc                 t   d}| j                   }g dfd	}|j                  |d      5 }|j                  d       ||_        |j	                  |       d d d        | j                  t              d       | j                  d   j                  d   |       | j                  g        y # 1 sw Y   ZxY w)	Nr  c                 (    j                  |        y re   r   r  s         r    r  zLCatchWarningTests.test_record_override_showwarning_inside.<locals>.my_logger}  r  r)   Tr   r   r{   r   r  )r   rF   r   rB   r@   ru   rv   r   r  s        @r    'test_record_override_showwarning_insidez9CatchWarningTests.test_record_override_showwarning_insidev  s     #{{	#   T : 	ch'(DIIdO	
 	Va0*D1b!	 	s   *B..B7c                 r   | j                   }|t        j                  d   ur| j                  d       t	        j
                  d      5 }| j                  |j                  g        |j                  d       |j                  d       | j                  t        |j                        d       |j                  d       | j                  t        |j                        d       | j                  t        |j                  d   j                        d       | j                  t        |j                  d	   j                        d       |j                          | j                  |j                  g        d d d        t	        j
                         5  	 d d d        t	        j
                  dt        f      5  |j                  d       d d d        | j                  t              5  t	        j
                  d
t         f      5  	 d d d        d d d        | j                  t              5  t	        j
                  dt         f      5  |j                  d       d 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# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   NxY w# 1 sw Y   y xY w)Nr   z,module to test is not loaded warnings moduleFquietr   r  r  r   r{   r   )r   r   r2   skipTestr   check_warningsru   r   r   r@   r   rh   resetr]   r^   AssertionErrorRuntimeWarning)r6   r  r`   s      r    test_check_warningsz%CatchWarningTests.test_check_warnings  s%   {{s{{:..MMHI++%8 
	-AQZZ,h'IIeS^U3IIeS^U3SA!6!67?SA!6!67?GGIQZZ,
	- ++- 		 ++UK,@A 	IIe	 ~. 	 //^0DE 	 ~. 	! //0GH !		% !	! 	!-
	- 
	-	 		 	 	 	
! !	! 	!sm   	D*I%I14I=#J?J	J&J-J!J-%I.1I:=J	J	JJ!J*	&J--J6N)r%   r&   r'   r:   r  r  r  r  r  r  r  r(   r)   r    r  r    s(     :>*96$%2"(!r)   r  c                       e Zd ZeZy)CCatchWarningTestsNrN   r(   r)   r    r  r    rP   r)   r  c                       e Zd ZeZy)PyCatchWarningTestsNrS   r(   r)   r    r  r    rU   r)   r  c                       e Zd Zd Zd Zd Zd Zd Z ej                   e
j                         dk7  d      d        Zy	)
EnvironmentVariableTestsc                 N    t        dddd      \  }}}| j                  |d       y )Nr9  2import sys; sys.stdout.write(str(sys.warnoptions))ignore::DeprecationWarningr   PYTHONWARNINGSPYTHONDEVMODEs   ['ignore::DeprecationWarning']r	   ru   rz  s       r    test_single_warningz,EnvironmentVariableTests.test_single_warning  s1    -d@7FF 	!BCr)   c                 N    t        dddd      \  }}}| j                  |d       y )Nr9  r  z1ignore::DeprecationWarning,ignore::UnicodeWarningr   r  8   ['ignore::DeprecationWarning', 'ignore::UnicodeWarning']r  rz  s       r    test_comma_separated_warningsz6EnvironmentVariableTests.test_comma_separated_warnings  s4    -d@NFF 	G	Ir)   c                 P    t        ddddd      \  }}}| j                  |d       y )Nz-Wignore::UnicodeWarningr9  r  r  r   r  r  r  rz  s       r    test_envvar_and_command_linez5EnvironmentVariableTests.test_envvar_and_command_line  s7    -.H$@7FF 	G	Ir)   c                     t        ddddd      \  }}}| j                  |d       | j                  |j                         g d       y )	Nz-Werror::DeprecationWarningr9  zjimport sys, warnings; sys.stdout.write(str(sys.warnoptions)); warnings.warn('Message', DeprecationWarning)zdefault::DeprecationWarningr   r  s<   ['default::DeprecationWarning', 'error::DeprecationWarning'])s"   Traceback (most recent call last):s&     File "<string>", line 1, in <module>s   DeprecationWarning: Message)r
   ru   r  rz  s       r    (test_conflicting_envvar_and_command_linezAEnvironmentVariableTests.test_conflicting_envvar_and_command_line  sX    23PRV;8	FF
 	K	M**,-	.r)   c           	         | j                   t        u }t        j                  rg }nN|rt	        j
                  d      }nd}dd t        |dfdd t        d dfdd t        d dfdd t        d dfdd t        d dfg}|D cg c]  }t        |      j                          }}|rd}nd}|dz  }t        d|d	
      \  }}}	|j                         D 
cg c]  }
|
j                          }}
d | _        | j!                  ||       y c c}w c c}
w )N__main__r   r   rs   zPimport sys; sys.modules.pop('warnings', None); sys.modules['_warnings'] = None; r   z5import warnings; [print(f) for f in warnings.filters]r9  T)
__isolated)r   rT   r   Py_DEBUGr  r   DeprecationWarningPendingDeprecationWarningImportWarningResourceWarningr   encoder	   r  r@  maxDiffru   )r6   pure_python_apiexpected_default_filtersmain_module_filterri   expected_outputcoder<  r\  rn   rp  stdout_liness               r    !test_default_filter_configurationz:EnvironmentVariableTests.test_default_filter_configuration  s   ++4')$%'ZZ
%;"%/"D"46H!L4!3T1=4!:D!D4a84$:($ 5MMq3q6==?MMeDDGG-dDTJFF171B1B1DE

EE7 N Fs   8 C=
Dasciiz%requires non-ascii filesystemencodingc                     dt         j                  z   }t        ddd|d      \  }}}| j                  |t	        |g      j                                y )Nzignore:DeprecationWarningr9  r  r  r   )r  r  r  )r   FS_NONASCIIr	   ru   r   r  )r6   r  r<  r\  rn   s        r    test_nonasciiz&EnvironmentVariableTests.test_nonascii  sV     3Y5J5JJ-d@$)	FF
 	n%5!6!=!=!?@r)   N)r%   r&   r'   r	  r  r  r  r!  r-   
skipUnlessr   getfilesystemencodingr%  r(   r)   r    r  r    sY    DII.8> X2224?@BABAr)   r  c                       e Zd ZeZy)CEnvironmentVariableTestsNrN   r(   r)   r    r)  r)     rP   r)   r)  c                       e Zd ZeZy)PyEnvironmentVariableTestsNrS   r(   r)   r    r+  r+    rU   r)   r+  c                        e Zd ZdZeZd Zd Zy)_DeprecatedTestzTest _deprecated().c                    d}g d}|D ]q  }d|d    d|d    }|t         f}| j                  |      5  t        j                  |d	      5  | j                  j                  d
||       d d d        d d d        s d}d}t        j                  |t         fd	      5  | 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   y xY w)Nr      r   finalr   ))r      )r   r0  )r   r   )r   r2  z.*test_warnings.*r   z\.r{   removeFr  test_warningsr4  _version)r   r0  r   alphar   z.*test_warnings.*3\.11r   r0  )r  subTestr   r  r   _deprecated)r6   rt   r   r4  r   filters         r    test_warningz_DeprecatedTest.test_warning  s   (2 	>F&vaykF1I;?C,,FV, >$33F%H >KK++OF5< , >>> >	> )'++S2D,EUS 	6KK##OG-4 $ 6	6 	6> >> >	6 	6s/   CC+CCCCC	C'c                    d}g d}|D ]Y  }| j                  |      5  | j                  t              5  | j                  j	                  d||       d d d        d d d        [ dD ]`  }ddd	|d	f}| j                  |
      5  | j                  t              5  | j                  j	                  dd|       d d d        d d d        b y # 1 sw Y   yxY w# 1 sw Y   xY w# 1 sw Y   ,xY w# 1 sw Y   xY w)Nr/  ))r   r   )r   r2  )r   
   r3  r5  r6  )beta	candidater1  r   r0  r   )releaselevelr9  )r:  r^   r  r   r;  )r6   rt   r   r4  levels        r    test_RuntimeErrorz!_DeprecatedTest.test_RuntimeError  s   () 	>FV, >&&|4 >KK++OF5< , >>> >	>
 4 	>E"a*G51 >&&|4 >KK++OG5< , >>> >	>> >> >> >> >sF   CCCC/C#8C/CCC 	#C,(C//C8	N)r%   r&   r'   r:   r   r   r=  rD  r(   r)   r    r-  r-    s    F6">r)   r-  c                       e Zd Zd Zy)BootstrapTestc           	          t        j                         5 }t        j                  d      5  t        dd|       t        dddd|       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N	encodingsr9  r:  )
PYTHONPATHz-Wr   )r   temp_cwdr	   )r6   cwds     r    test_issue_8766zBootstrapTest.test_issue_87660  so     ! 	KS)*<*<[*I 	KT6c: T64cJ	K 	K 	K 	K 	K 	Ks"   A'A
A'A$	 A''A0N)r%   r&   r'   rL  r(   r)   r    rF  rF  .  s    	Kr)   rF  c                       e Zd Zd Zd Zy)FinalizationTestc                     d}t        d|      \  }}}| j                  |j                         j                         d       y )Nzk
import warnings
warn = warnings.warn

class A:
    def __del__(self):
        warn("test")

a=A()
        r9  z<string>:7: UserWarning: test)r	   ru   r  rstrip)r6   r  r<  r=  r  s        r    test_finalizationz"FinalizationTest.test_finalization=  s?    	 (d3C,,.8	:r)   c                    d}dt         z  }t        dd|      \  }}}| j                  |j                  |      t	        |             dt         z  }t        dd|      \  }}}| j                  |j                  |      t	        |             y )Ns&   sys:1: ResourceWarning: unclosed file zf = open(%a)r  r9  zimport warnings; f = open(%a))r   r	   rG   
startswithr"  )r6   r  r  r<  r=  r  s         r    test_late_resource_warningz+FinalizationTest.test_late_resource_warningN  s     = ('tT:Cx0%*= /9'tT:Cx0%*=r)   N)r%   r&   r'   rQ  rT  r(   r)   r    rN  rN  <  s    :">r)   rN  c                  |    t         j                  j                          t        j                  j                          y re   )rT   rI  r   rO   r(   r)   r    setUpModulerV  `  s&    ""$!!#r)   r  )>
contextlibr   rj  r   ior   r  r   r  r-   r   r   test.supportr   r   r   test.support.script_helperr	   r
   test.test_warnings.datar   r   r   r   r   import_fresh_modulerT   rO   r!   r   r#   r+   r=   TestCaserM   rR   rW   r   r   r   r   r(  r,  r5  r7  rD  r  r  r  r  r  r  r  r)  r+  r-  rF  rN  rV  tearDownModuler%   mainr(   r)   r    <module>r`     s   %  	  	 
    & " ( N 2 ? $ 0m//
9DG.]..z6A]D
 * *0	' 	) )8-X -nh&7&7 ~x'8'8 e5( e5N	; 1 1 K!2!2 N7 N7`@H-- @?)X.. ? >H  >F]H$5$5 1mX%6%6 1(lHXx00 lH^=?8 =?@0(2C2C .+183D3D .+bQ! Q!f*H,=,= +X->-> NAx NA` 8(:K:K !98;L;L $>h 1 1 $>NKH%% K!>x(( !>H$ zHMMO r)   