HEX
Server: LiteSpeed
System: Linux server.nevid-deploma.com 4.18.0-553.111.1.lve.el8.x86_64 #1 SMP Fri Mar 13 13:42:17 UTC 2026 x86_64
User: smilepac (1037)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/cppython/lib/python3.8/test/test_warnings/__pycache__/__init__.cpython-38.pyc
U

1D�gX��@s�ddlmZddlZddlZddlmZddlZddlZddlZddl	Z	ddl
mZddlm
Z
mZddlmZddlZejddgd	�Zejddgd
�Zeed�Zedd
��ZGdd�de�ZGdd�d�ZGdd�de�ZGdd�dee	j�ZGdd�dee	j�Z Gdd�de�Z!Gdd�de!e	j�Z"Gdd�de!e	j�Z#Gdd�de�Z$Gd d!�d!e$e	j�Z%Gd"d#�d#e$e	j�Z&Gd$d%�d%e�Z'Gd&d'�d'e'e	j�Z(Gd(d)�d)e'e	j�Z)Gd*d+�d+ee	j�Z*Gd,d-�d-e�Z+Gd.d/�d/e+e	j�Z,Gd0d1�d1e+e	j�Z-Gd2d3�d3e�Z.Gd4d5�d5e.e	j�Z/Gd6d7�d7e.e	j�Z0Gd8d9�d9e�Z1Gd:d;�d;e1e	j�Z2Gd<d=�d=e1e	j�Z3Gd>d?�d?e	j�Z4Gd@dA�dAe	j�Z5dBdC�Z6e6Z7e8dDk�r�e	�9�dS)E�)�contextmanagerN)�StringIO)�support)�assert_python_ok�assert_python_failure��
stacklevel�warnings�	_warnings)Zblocked)ZfreshZgettotalrefcountc	cs�ttfD](}z|j��Wqtk
r.YqXqzt��Wntk
rRYnXtj}|j}z(|dd�|_|�d�|t_dVW5|t_||_XdS)z8Use a specific warnings implementation in warning_tests.N�once)	�sys�
warning_tests�__warningregistry__�clear�AttributeError�	NameErrorr	�filters�simplefilter)�moduleZto_clear�original_warningsZoriginal_filters�r�:/opt/cppython/lib/python3.8/test/test_warnings/__init__.py�warnings_states$

rc@seZdZdS)�TestWarningN��__name__�
__module__�__qualname__rrrrr.srcs,eZdZdZ�fdd�Z�fdd�Z�ZS)�BaseTestz'Basic bookkeeping required for testing.cs`tjj|_dt�krt�d=ttd�r*t`ttd�r8t`|j	tj
d<|j	tj_tt|��
�dS)Nrr	)�unittest�caser	�old_unittest_module�globals�hasattrr
rrr�modules�superr�setUp��self��	__class__rrr&6s




zBaseTest.setUpcs&ttjd<|jtj_tt|��	�dS)Nr	)
rrr$r!rr r	r%r�tearDownr'r)rrr+Is

zBaseTest.tearDown)rrr�__doc__r&r+�
__classcell__rrr)rr2src@seZdZdZdd�ZdS)�PublicAPITestszGEnsures that the correct values are exposed in the
    public API.
    cCsB|�t|jd��dddddddd	g}|�t|jj�t|��dS)
N�__all__�warn�
warn_explicit�showwarning�
formatwarning�filterwarningsr�
resetwarnings�catch_warnings)�
assertTruer#rZassertSetEqual�setr/)r(Z
target_apirrr�test_module_all_attributeTs��z(PublicAPITests.test_module_all_attributeN)rrrr,r9rrrrr.Nsr.c@seZdZeZdS)�CPublicAPITestsN�rrr�
c_warningsrrrrrr:\sr:c@seZdZeZdS)�PyPublicAPITestsN�rrr�py_warningsrrrrrr=_sr=c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&S)'�FilterTestsz$Testing the filtering functionality.c	CsJtj|jd��2}|j��|jjdtd�|�t|jjd�W5QRXdS)N�r�error��category�FilterTests.test_error)rr6rr5r4�UserWarning�assertRaisesr0�r(�wrrr�
test_errorfs
�rEc
s�tj�jd��x}�j��d���fdd�}t���}|�W5QRX|��}��d|���d|��jjdt	d���
t	|�W5QRXdS)	NrA�%FilterTests.test_ignore_after_defaultcs�j��t�dS�N�rr0rFr��messager(rr�fqsz/FilterTests.test_error_after_default.<locals>.fz2UserWarning: FilterTests.test_ignore_after_defaultz&self.module.warn(message, UserWarning)rBrC)rr6rr5r�captured_stderr�getvalue�assertInr4rFrG)r(rIrP�stderrrrNr�test_error_after_defaultms

��z$FilterTests.test_error_after_defaultc	Csjtjd|jd��P}|j��|jjdtd�|j�dt�|�t|�d�|�t	t
�dg�W5QRXdS)NT��recordr�ignorerC�FilterTests.test_ignorer�version)rr6rr5r4rFr0�assertEqual�len�listrrHrrr�test_ignores�
rYc	sntjd�jd��T}�j��d���fdd�}|��jjdtd�|�|���t|�d�W5QRXdS)	NTrVrKcs�j��t�dSrLrMrrNrrrP�sz0FilterTests.test_ignore_after_default.<locals>.frXrC�)rr6rr5r4rFr[r\�r(rIrPrrNr�test_ignore_after_default�s�
rKc	s�tjd�jd���}�j���jjdtd�d���fdd�}|���t|�d���|d	jj	d
��|���t|�d���|d	jj	d
��W5QRXdS)NTrV�alwaysrC�FilterTests.test_alwayscs�j��t�dSrLrMrrNrrrP�sz"FilterTests.test_always.<locals>.fr_���r�)
rr6rr5r4rFr[r\rO�argsr`rrNr�test_always�s�
rcc	s�tjd�jd���}�j��d���fdd�}|���t|�d���|djjd��|���t|�d��jjd	t	d
�|���t|�d���|djjd��|���t|�d���|djjd��W5QRXdS)
NTrVz$FilterTests.test_always_after_ignorecs�j��t�dSrLrMrrNrrrP�sz0FilterTests.test_always_after_default.<locals>.fr_rdrrbrCre�)
rr6rr5r[r\rOrfr4rFr`rrNr�test_always_after_default�s&�
z%FilterTests.test_always_after_defaultc	Cs�tjd|jd���}|j��|jjdtd�td�}td�D]Z}|j�|t�|dkrt|�|dj	|�|dd�=q<|d	kr�|�t
|�d�q<td
��q<W5QRXdS)NTrV�defaultrC�FilterTests.test_defaultrerrdr_zloop variant unhandled)rr6rr5r4rF�ranger0r[rOr\�
ValueError)r(rIrO�xrrr�test_default�s�
rkc	Cs�tjd|jd��p}|j��|jjdtd�td�}|j�|t�|�|dj|�|dd�=|j�|t�|�t	|�d�W5QRXdS)NTrVrrC�FilterTests.test_modulerdr)
rr6rr5r4rFr0r[rOr\�r(rIrOrrr�test_module�s�

rpc	Cs�tjd|jd���}|j��|jjdtd�td�}|j�|tdd�|�|dj|�|dd�=|j�|tdd	�|�t	|�d
�|j�|tdd�|�t	|�d
�W5QRXdS)NTrVrrC�FilterTests.test_once�__init__.py�*rd�
rztest_warnings2.py)
rr6rr5r4rFr1r[rOr\rqrrr�	test_once�s(�
�
��rsc
Cs�tjd|jd���}|j�dt�|jjdtdddd�|�t|�d�|�t	��|jjdtdddd�W5QRX|�t|�d�|jjdtddid�|�t|�d	�W5QRXdS)
NTrVrb�msg�filenameru��module_globalsr_re)
rr6rrrFr1r[r\rG�	TypeErrorrHrrr�test_module_globals�s$����zFilterTests.test_module_globalsc	CsLtj|jd��4}|j��|jjdtd�|�t|jjdt�W5QRXdS)NrArBrC�FilterTests.test_inheritance)	rr6rr5r4�WarningrGrFr0rHrrr�test_inheritance�s
�r~c	Cs�tjd|jd��~}|j��|jjdtd�|jjdtdd�|dd�=z|j�dt�Wntk
rx|�d�YnX|�t	|�d	�W5QRXdS)
NTrVrXrCrB)rD�append�FilterTests.test_orderingz!order handling for actions failedr)
rr6rr5r4rFr0Zfailr[r\rHrrr�
test_orderings�

�
r�c	Cs,tjd|jd���}|j�ddtdd�|�t|jjd�|j��d}|j�|�|�	t
|dj�|�|�|dj
t�|j�d	dtdd�d
}|j�|�|�t
|dj�|�|j��|j�ddtdd�|�t|jjd�d
}|j�|�|�	t
|dj�|�|�|dj
t�W5QRXdS)NTrVrB�r�convert to errorzhandle normallyrdrXzfiltered outzhex*zhex/octznonmatching text)rr6rr4rrGrFr0r5r[�strrO�assertIsrDZassertNotEqual)r(rI�textrrr�test_filterwarningss,�

zFilterTests.test_filterwarningsc	Cs�tjd|jd��x}|j�dt�|j�ddt�|�t|jjd�|�t|jjd�|j�d�|�|g�|j�d�|�|g�W5QRXdS)	NTrVrXrB�matchzmatch prefixzsuffix matchzsomething completely different)	rr6rrrFr4rGr0r[rHrrr�test_message_matching*s�z!FilterTests.test_message_matchingc	s|G�fdd�d���fdd�td�D��tjd|jd��:}�|j_|j�td�dd	d
�|�t|dj	�d�W5QRXdS)NcseZdZ�fdd�ZdS)z.FilterTests.test_mutate_filter_list.<locals>.Xcsg�dd�<dSrLr)r(�a��Lrrr�8sz4FilterTests.test_mutate_filter_list.<locals>.X.matchN)rrrr�rr�rr�X7sr�csg|]}d��t��df�qS)rjr)rF)�.0�i)r�rr�
<listcomp>;sz7FilterTests.test_mutate_filter_list.<locals>.<listcomp>reTrV�bzf.pyrurd)
rlrr6rrr1rFr[r�rOrHr)r�r�r�test_mutate_filter_list6s�z#FilterTests.test_mutate_filter_listc	Cs�tj|jd���|j��|jjdtd�|�t|jj�d�|jjdtd�|jjdtd�|�t|jj�dd�|�|jjdddd	�W5QRXdS)
NrArBrCr_rXrez(filterwarnings inserted duplicate filterrz>filterwarnings did not promote filter to the beginning of list)	rr6rr5r4rFr[r\rr'rrr�%test_filterwarnings_duplicate_filtersBs 

��z1FilterTests.test_filterwarnings_duplicate_filtersc	Cs�tj|jd���|j��|jjdtd�|�t|jj�d�|jjdtd�|jjdtd�|�t|jj�dd�|�|jjdddd	�W5QRXdS)
NrArBrCr_rXre�&simplefilter inserted duplicate filterrz<simplefilter did not promote filter to the beginning of list)	rr6rr5rrFr[r\rr'rrr�#test_simplefilter_duplicate_filtersSs 

��z/FilterTests.test_simplefilter_duplicate_filtersc	Cs�tj|jdd��t}|j��|j�d�|jjddd�|jjddd�|jjdtd�|�t|jj	�dd	�|�t|�d
d�W5QRXdS)NT�rrWrXrB�r��test_append_duplicaterCrer�rz+appended duplicate changed order of filters)
rr6rr5rr0rFr[r\rrHrrrr�cs�
��z!FilterTests.test_append_duplicateN)rrrr,rJrUr^rargrirorrrwr}r�r�r�r�r�r�r�r�rrrrr@bs&	
r@c@seZdZeZdS)�CFilterTestsNr;rrrrr�rsr�c@seZdZeZdS)�
PyFilterTestsNr>rrrrr�usr�c@s`eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�	WarnTestsz2Test warnings.warn() and warnings.warn_explicit().c	Csvtjd|jd��\}|j�d�td�D]@}d|}|j�|�|�t|dj�|�|�	|dj
t�q&W5QRXdS)NTrVr�zmulti %drd)rr6rrrlr0r[r�rOr�rDrF)r(rIr�r�rrr�test_message}s�zWarnTests.test_messagec
CsftddfD]V}tjd|jd��<}|j�d�|j�|�|�t|dj�tt	|���W5QRXq
dS)NruTrVrrd)
rrr6rrr0r[r�rOrF)r(�obrIrrr�test_warn_nonstandard_types�s�z%WarnTests.test_warn_nonstandard_typesc
Cs~t|j��jtjd|jd��N}t�d�|�tj�	|dj
�d�t�d�|�tj�	|dj
�d�W5QRXW5QRXdS)NTrVZspam1rd�
stacklevel.pyZspam2�rrrr6r
�innerr[�os�path�basenameryZouterrHrrr�
test_filename�s�
�
�zWarnTests.test_filenamec
Cs(t|j���tjd|jd���}tjddd�|�tj�	|dj
�d�tjddd�|�tj�	|dj
�d�tjd	d
d�|�tj�	|dj
�d�tjdd
d�|�tj�	|dj
�d�tjd
dd�|�tj�	|dj
�d�tjddd�|�tj�	|dj
�d�W5QRXW5QRXdS)NTrVZspam3r_rrdr�Zspam4Zspam5rertZspam6zspam6.5rhZspam7i'rr�rHrrr�test_stacklevel�s:�������zWarnTests.test_stacklevelc
Csvt�d�t|j��Xtjd|jd��<}|j�d�ddl}|�t	|�d�|�|dj
t�W5QRXW5QRXdS)Nz&test.test_warnings.data.import_warningTrVrbrr_)rZunloadrrrr6rZ&test.test_warnings.data.import_warningr[r\ry�__file__)r(rI�testrrr�test_stacklevel_import�s
�z WarnTests.test_stacklevel_importc	CsVd}td|d�}tjdd��}|jjdtd�t|�W5QRX|�|dj|�dS)	Nz<warnings-test>z3import warnings
warnings.warn('hello', UserWarning)�execT)rWrbrCr)	�compilerr6rrrFr�r[ry)r(ryZcodeobjrIrrr�test_exec_filename�s�zWarnTests.test_exec_filenamec
Cs�tjd|jd��v}|j��|jjdtd�dD]P}zt�|�Wntk
rZYq0YnX|j�	dt|d�|�
|dj|�q0W5QRXdS)	NTrVrbrC)u
nonasciié€usurrogate�r�r_rd)rr6rr5r4rFr��fsencode�UnicodeEncodeErrorr1r[ry)r(rIryrrr�%test_warn_explicit_non_ascii_filename�s�

z/WarnTests.test_warn_explicit_non_ascii_filenamec	CsT|�t|jjdtdd�|�t|jjdddd�|jttf|jjdtdddd�dS)Nr_ru��registry)rGr|rr1rFrrr'rrr�test_warn_explicit_type_errors�s(��
�z(WarnTests.test_warn_explicit_type_errorsc	Cs8Gdd�dt�}|�t��|j�|��W5QRXdS)Nc@seZdZdZdd�ZdS)z-WarnTests.test_bad_str.<locals>.BadStrWarningz-Warning with a bad format string for __str__.cSsdddiS)NzA bad formatted string %(err)�errzthere is no %(err)srr'rrr�__str__�s�z5WarnTests.test_bad_str.<locals>.BadStrWarning.__str__N)rrrr,r�rrrr�
BadStrWarning�sr�)rrGrmrr0)r(r�rrr�test_bad_str�szWarnTests.test_bad_strc
Cs�Gdd�dt�}Gdd�d�}|�t��}|j�dd�W5QRX|�dt|j��|�t��}|j�d|�W5QRX|�dt|j��|�t��}|j�d|��W5QRX|�dt|j��tj	|jd���|j�
�|j�d	�|�|��}|j�d
|�W5QRX|�
d
t|j��|�t��}|j�d
d�W5QRX|�
d
t|j��|�|��}|j�d
|�W5QRX|�|jt�W5QRXdS)Nc@seZdZdS)z6WarnTests.test_warning_classes.<locals>.MyWarningClassNrrrrr�MyWarningClass�sr�c@seZdZdS)z:WarnTests.test_warning_classes.<locals>.NonWarningSubclassNrrrrr�NonWarningSubclass�sr�zbad warning categoryr�z)category must be a Warning subclass, not rArjzgood warning category)rrGr|rr0rSr��	exceptionrr6r5r4ZassertWarnsr[�warningrFZassertIsInstance)r(r�r��cmrrr�test_warning_classes�s:���
zWarnTests.test_warning_classesN)rrrr,r�r�r�r�r�r�r�r�r�r�rrrrr�ys


r�c@seZdZeZdd�ZdS)�
CWarnTestscCs&|�t|j�|�t|jjd��dS�N�__code__)�assertIsNotrr�assertFalser#r0r'rrr�test_accelerated#szCWarnTests.test_acceleratedN)rrrr<rr�rrrrr�sr�c@seZdZeZdd�ZdS)�PyWarnTestscCs&|�t|j�|�t|jjd��dSr�)r�rrr7r#r0r'rrr�test_pure_python,szPyWarnTests.test_pure_pythonN)rrrr?rr�rrrrr�'sr�c@seZdZdd�Zdd�ZdS)�
WCmdLineTestsc
Cstj|jd���|�|jj|jjd�|�|jj|jjd�|�|jj|jjd�|�|jj��|j�d�W5QRX|�|jj��|j�d�W5QRX|�|jj��|j�d�W5QRX|�|jjd��|j�d	�W5QRX|j�d
�|�t|jjd�W5QRXdS)NrAz1:2:3:4:5:6zbogus::Warningzignore:2::4:-5zignore::123zignore::123abczignore::===uWärninguignore::Wärningzerror::Warning::0r�)	rr6rrG�_OptionError�
_setoptionZassertRaisesRegexrFr0r'rrr�test_improper_input3s.
�
�
�z!WCmdLineTests.test_improper_inputc
Cs�tj|jd���|j�d�|�|jj��|j�d�W5QRX|�|jj��|j�d�W5QRX|j�d�|�t��|j�dt�W5QRXW5QRXdS)NrAzignore::Warningzignore::TestWarningz ignore::test.test_warnings.bogusz%error::test.test_warnings.TestWarningztest warning)rr6rr�rGr�rr0r'rrr�test_import_from_moduleHsz%WCmdLineTests.test_import_from_moduleN)rrrr�r�rrrrr�1sr�c@seZdZeZdS)�CWCmdLineTestsNr;rrrrr�Tsr�c@s eZdZeZdd�Zdd�ZdS)�PyWCmdLineTestscCs"tddd�\}}}|�d|�dS)Nz-Wxxx�-c�passs0Invalid -W option ignored: invalid action: 'xxx')rrS�r(�rc�outr�rrr�test_improper_option[sz$PyWCmdLineTests.test_improper_optioncCs0tddd�\}}}|�|���|�d|�dS)Nz-Wir�z?import sys; sys.modules['warnings'].warn('foo', RuntimeWarning)sRuntimeWarning)rr��strip�assertNotInr�rrr�test_warnings_bootstrapbs
�
z'PyWCmdLineTests.test_warnings_bootstrapN)rrrr?rr�r�rrrrr�Xsr�c@s�eZdZdZeZdd�Zdd�Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dd�Zdd�Zejdd��Zejdd��Zejdd��ZdS)�_WarningsTestsz'Tests specific to the _warnings module.c	Cs\tj|jd��D}|j�ddtdd�|�t|jjd�|j`|�t|jjd�W5QRXdS)NrArBr�rr�)	rr6rr4rrGrFr0rrHrrr�test_filterrs��z_WarningsTests.test_filterc	Cstd�}z�|jj}iatjd|jd���}|j��|jjdtd�|j�|tdd�|�	|dj
|�|dd�=|j�|tdd�|�	t|�d	�i|j_ia|j�d�|�	|dj
j
|j
�|dd�=|j`ia|j�|tdd�|�	t|�d	�W5QRXW5||j_XdS)
Nzonceregistry testTrVrrC�filerurdr)rFr�onceregistryrrr6r5r4r1r[rOr\r0rf)r(rOZoriginal_registryrIrrr�test_onceregistry|s2�


z _WarningsTests.test_onceregistryc	CsFtd�}|jj}�z$tjd|jd���}|j��i}|jj|tdd|d�|�|dj|�|�t	|�d�|�t	|�d	�|�
d
|�|dd�=|j`i}i}|jj|tdd|d�|�|dj|�|�t	|�d�|�t	|�d	�|dd�=d|j_i}i}|jj|tdd
|d�|�t	|�d�W5QRXW5||j_XdS)Nzdefaultaction testTrVz<test>rur�rdr_rerZ�+rX�,r)rFr�
defaultactionrr6r5r1r[rOr\rS)r(rOZoriginalrIr�rrrr�test_default_action�sF�
�
�
�z"_WarningsTests.test_default_actionc
Csnd}tj|jd��F|jjdtd�|j`t�d��}|j�|�|�	�}W5QRXW5QRX|�
||�dS)Nzdel showwarning testrArbrCrT)rr6rr4rFr2r�captured_outputr0rRrS)r(r��stream�resultrrr�test_showwarning_missing�sz'_WarningsTests.test_showwarning_missingc
Cs�d}tj|jd��^|jjdtd�|jj}z4|j`t�d��}|j�|�|�	�}W5QRXW5||j_XW5QRX|�
||�dS)Nzdel _showwarnmsg testrArbrCrT)rr6rr4rF�_showwarnmsgrr�r0rRrS)r(r��showr�r�rrr�test_showwarnmsg_missing�sz'_WarningsTests.test_showwarnmsg_missingc
Csrtj|jd��Z|jjdtd�t|j_t�d��|j�	d�W5QRXd|j_|�
t|jj	d�W5QRXdS)NrArbrC�stdoutzWarning!�)rr6rr4rF�printr2rr�r0rGr|r'rrr�test_showwarning_not_callable�sz,_WarningsTests.test_showwarning_not_callablec

Csd}tj|jd��D|jjdtd�|j`t�d��}t�	|�|�
�}W5QRXW5QRX|�|�d�dd|�|�
dd	�\}}tj�tj�d
d}|�dd
�}|\}}	}
}t|	�}	|�||�|�|
dtj�|�|d|�dt�||	���d}|�s
t�|�||�dS)Nztest show_warningrArbrCrT�
rezToo many newlines in %rr_r�.py�:rh� z  )rr6rr4rFr2rr�r
r�rRr[�count�splitr�r��splitextr��rsplit�intr�	linecache�getliner��AssertionError)
r(r�r�r�Z
first_lineZsecond_lineZ
expected_fileZfirst_line_partsr��lineZ
warning_classrOZ
expected_linerrr�test_show_warning_output�s*
�
z'_WarningsTests.test_show_warning_outputc	Cstt�}|d}zVtjd|jd�}|�8}|jjdtd�d|d<t�dt�|�t|��W5QRXW5||d<XdS)Nr�TrVrbrCr�)	r"rr6rr4rFr0r7r\)r(Zglobals_dictZoldfileZcatchrIrrr�test_filename_none�s�z!_WarningsTests.test_filename_nonecCs8tdd�\}}}|�|d�|�d|�|�d|�dS)Nr�zjimport sys; sys.stderr = None; import warnings; warnings.simplefilter('always'); warnings.warn('Warning!')�sWarning!sError)rr[r��r(r�r�rTrrr�test_stderr_none	s�
z_WarningsTests.test_stderr_nonec
Cs�dd�}|j}tj|d���|jdtd�t���$}|jdtdd|d	�d
d�d�W5QRX|�d
|�	��|j
}zL|`
t���&}|jdtdd|d	g�d
d�d�W5QRX|�d|�	��W5||_
XW5QRXdS)NcsG�fdd�d�}|�S)NcseZdZ�fdd�ZdS)zI_WarningsTests.test_issue31285.<locals>.get_bad_loader.<locals>.BadLoadercsG�fdd�dt�}|d�S)NcseZdZ�fdd�ZdS)zg_WarningsTests.test_issue31285.<locals>.get_bad_loader.<locals>.BadLoader.get_source.<locals>.BadSourcecs�SrLrr'��splitlines_ret_valrr�
splitlinesszr_WarningsTests.test_issue31285.<locals>.get_bad_loader.<locals>.BadLoader.get_source.<locals>.BadSource.splitlinesN)rrrrrr�rr�	BadSourcesrZspam)r�)r(�fullnamerr�rr�
get_sourceszT_WarningsTests.test_issue31285.<locals>.get_bad_loader.<locals>.BadLoader.get_sourceN)rrrrrr�rr�	BadLoadersrr)r�rrr�r�get_bad_loadersz6_WarningsTests.test_issue31285.<locals>.get_bad_loaderrArjrC�foo�barr_ruZfoobar)�
__loader__rrzzUserWarning: fooZeggszUserWarning: eggs)rrr6r4rFrrQr1rSrRr�)r(r�wmodrTr�rrr�test_issue31285s<	
��
��z_WarningsTests.test_issue31285cCsp|j}tj|d��T|�d�t�|dd��0|�t��|jdt	dddd�W5QRXW5QRXW5QRXdS)NrArr�rrr_r�)
rrr6r4r�	swap_attrrGr|r1r�r(r	rrr�test_issue314116s
z_WarningsTests.test_issue31411cCs�|j}tj|d���ddtddfg|_|�t��|�dtdd�W5QRXg|_t�	|dd��,|�t��|�dtdd�W5QRXW5QRXW5QRXdS)NrArrrr_r�)
rrr6rrrGr|r1rrrrrr�test_issue31416As�z_WarningsTests.test_issue31416cCsxtj|jd��`|jjdtd�t�t�dd��4t�t�dd��|�t|jj	d�W5QRXW5QRXW5QRXdS)NrArBrCrsfoor�r)
rr6rr4rFrZ	swap_itemr"rGr0r'rrr�test_issue31566Ps�z_WarningsTests.test_issue31566N)rrrr,r<rr�r�r�r�r�r�r�r�r�r
rZcpython_onlyr
rrrrrrr�ls$
%		$


r�c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�WarningsDisplayTestsziTest the displaying of warnings and the ability to overload functions
    related to displaying warnings.c
Cs�d}t}tj�tj�dd}d}t�||���}d}||||j	||f}|�
||j�||||��|d7}||||j	||f}|�
||j�|||||��dS)Nrxrr�rhz%s:%s: %s: %s
  %s
z
 for the win!)
rr�r�r�r
r�r�r�r�rr[rr3)r(rOrD�	file_name�line_num�	file_line�format�expectrrr�test_formatwarning`s0����z'WarningsDisplayTests.test_formatwarningcCs�tj�tj�dd}d}t�||���}d}t}t	�}|j
�||||�}|j
�|||||�|�
|��|�|d7}|j
�|||||�}t	�}|j
�||||||�|�
||���dS)Nrr�rhrxzfor the win!)r�r�r�r
r�r�r�r�rrrr3r2r[rR)r(rrZexpected_file_linerOrD�file_objectrrrr�test_showwarningrs0����z%WarningsDisplayTests.test_showwarningc		Cs�dd�}tj�tj�dd}d}t�||���}d}t}t	�}d|�d|�d	|�d
|��d|��}t
�|jd|��,|j�
||||||�|�|��|�W5QRXdS)
Nc
Ss"d|�d|�d|�d|�d|��
S)N�m=�:c=�:f=�:l=�:t=r)rOrDry�linenor�rrr�myformatwarning�szIWarningsDisplayTests.test_formatwarning_override.<locals>.myformatwarningrr�rhrxrrrrrr3)r�r�r�r
r�r�r�r�rrrrrr2r[rR)	r(rrrrrOrDr�expectedrrr�test_formatwarning_override�s ��z0WarningsDisplayTests.test_formatwarning_overrideN)rrrr,rrr!rrrrr[src@seZdZeZdS)�CWarningsDisplayTestsNr;rrrrr"�sr"c@seZdZeZdd�ZdS)�PyWarningsDisplayTestsc	Cs�|�tjtj�ttjd��}|�t�d��W5QRXdd�}|dtj�}t�d�}|jtjd��	�}|�
||�|ddd	tj�}t�d
�}|jtjd��	�}|�
||�dS)NrIz�
                def func():
                    f = open(__file__)
                    # Emit ResourceWarning
                    f = None

                func()
            cWs6t|�}|j�dd�}d�|���}t�dd|�}|S)N�ascii�replacer�z<.*>z<...>)rr��decode�joinr�re�sub)rf�resrTrrr�run�s
z4PyWarningsDisplayTests.test_tracemalloc.<locals>.run�-Wdz�
            {fname}:5: ResourceWarning: unclosed file <...>
              f = None
            ResourceWarning: Enable tracemalloc to get the object allocation traceback
        )Zfnamez-Xz
tracemalloc=2a
            {fname}:5: ResourceWarning: unclosed file <...>
              f = None
            Object allocated at (most recent call last):
              File "{fname}", lineno 7
                func()
              File "{fname}", lineno 3
                f = open(__file__)
        )Z
addCleanupr�unlinkZTESTFN�open�write�textwrap�dedentrr�r[)r(�fpr+rTr rrr�test_tracemalloc�s	


	z'PyWarningsDisplayTests.test_tracemallocN)rrrr?rr3rrrrr#�sr#c@sHeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�CatchWarningTestszTest catch_warnings().c	Cs�|j}|j}|j}|j|dd��t�|_|_W5QRX|�|j|�|�|j|�|j|dd��t�|_|_W5QRX|�|j|�|�|j|�dS�NTr�F)rrr2r6�objectr�)r(r	�orig_filters�orig_showwarningrrr�test_catch_warnings_restore�sz-CatchWarningTests.test_catch_warnings_restorec	Cs|j}|j|dd���}|�|g�|�t|�t�|�d�|�d�|�t|dj	�d�|�d�|�t|dj	�d�|�t|dj	�d�|�t|dj	�d�|dd�=|�|g�W5QRX|j
}|j|d	d��}|�|�|�|j
|�W5QRXdS)
NTr�rbrrdrrr_F)rr6r[r��typer]rr0r�rOr2�assertIsNone)r(r	rIr8rrr�test_catch_warnings_recording�s"




z/CatchWarningTests.test_catch_warnings_recordingc	Cs~|j}|j|dd�}|�t|j�|�|�t|j�W5QRX|j|dd�}|�t|j�|�|�t|j�W5QRXdSr5)rr6rG�RuntimeError�__exit__�	__enter__)r(r	rnrrr�!test_catch_warnings_reentry_guard�sz3CatchWarningTests.test_catch_warnings_reentry_guardc	Cs�|j}|j}|j}|j|d��,}|�|�|�|j|�|�|j|�W5QRX|�|j|�|tjdkr�|���,}|�|�|�|j|�|�|j|�W5QRX|�|j|�dS)NrAr	)	rrr2r6r;r�r�rr$)r(r	r7r8rIrrr�test_catch_warnings_defaultss


z.CatchWarningTests.test_catch_warnings_defaultsc
s�d}|j}g�d
�fdd�	}t�|d|��P|j|dd��(}|�|j|�|�d�|�|�W5QRX|�|j|�W5QRX|�	t
|�d|�|�	|d	jjd	|�|�	�g�dS)N�This is a warningcs��|�dSrLr��rOrDryrr�r��Zmy_logrr�	my_loggerszLCatchWarningTests.test_record_override_showwarning_before.<locals>.my_loggerr2Tr�rbr_r)NN)
rrrr6r�r2rr0r�r[r\rOrf�r(r�r	rE�logrrDr�'test_record_override_showwarning_befores
z9CatchWarningTests.test_record_override_showwarning_beforec	s�d}|j}g�d	�fdd�	}|j|dd�� }|�d�||_|�|�W5QRX|�t��d��|��djd|�|�|g�dS)
NrBcs��|�dSrLr�rCrDrrrE7szLCatchWarningTests.test_record_override_showwarning_inside.<locals>.my_loggerTr�rbr_r)NN)rr6rr2r0r[r\rfrFrrDr�'test_record_override_showwarning_inside0s
z9CatchWarningTests.test_record_override_showwarning_insidec
Csr|j}|tjdk	r|�d�tjdd���}|�|jg�|�d�|�	d�|�t
|j�d�|�	d�|�t
|j�d�|�t
|jdj�d�|�t
|jd	j�d�|��|�|jg�W5QRXt���W5QRXt�dt
f��|�	d�W5QRX|�t�� t�d
tf��W5QRXW5QRX|�t��*t�dtf��|�	d�W5QRXW5QRXdS)Nr	z,module to test is not loaded warnings moduleF)�quietrbrrrr_r�)rrr$ZskipTestrZcheck_warningsr[r	rr0r�rO�resetrFrGr��RuntimeWarning)r(r	rIrrr�test_check_warningsDs0





z%CatchWarningTests.test_check_warningsN)rrrr,r9r<r@rArHrIrMrrrrr4�s
r4c@seZdZeZdS)�CCatchWarningTestsNr;rrrrrNcsrNc@seZdZeZdS)�PyCatchWarningTestsNr>rrrrrOfsrOc@sPeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Ze�	e
��dkd�d
d��ZdS)�EnvironmentVariableTestscCs&tddddd�\}}}|�|d�dS)Nr��2import sys; sys.stdout.write(str(sys.warnoptions))�ignore::DeprecationWarningr���PYTHONWARNINGS�
PYTHONDEVMODEs['ignore::DeprecationWarning']�rr[r�rrr�test_single_warningls�z,EnvironmentVariableTests.test_single_warningcCs&tddddd�\}}}|�|d�dS)Nr�rQz1ignore::DeprecationWarning,ignore::UnicodeWarningr�rS�8['ignore::DeprecationWarning', 'ignore::UnicodeWarning']rVr�rrr�test_comma_separated_warningsss��z6EnvironmentVariableTests.test_comma_separated_warningscCs(tdddddd�\}}}|�|d�dS)Nz-Wignore::UnicodeWarningr�rQrRr�rSrXrVr�rrr�test_envvar_and_command_line{s��z5EnvironmentVariableTests.test_envvar_and_command_linecCs>tdddddd�\}}}|�|d�|�|��dd	d
g�dS)Nz-Werror::DeprecationWarningr�zjimport sys, warnings; sys.stdout.write(str(sys.warnoptions)); warnings.warn('Message', DeprecationWarning)zdefault::DeprecationWarningr�rSs<['default::DeprecationWarning', 'error::DeprecationWarning']s"Traceback (most recent call last):s&  File "<string>", line 1, in <module>sDeprecationWarning: Message)rr[rr�rrr�(test_conflicting_envvar_and_command_line�s��
��zAEnvironmentVariableTests.test_conflicting_envvar_and_command_linec
	Cs�|jtk}trg}nT|r$t�d�}nd}ddt|dfddtddfddtddfddtddfddtddfg}dd�|D�}|r�d}nd}|d	7}t	d
|dd�\}}}d
d�|�
�D�}	d|_|�|	|�dS)N�__main__rjrrXcSsg|]}t|����qSr)r��encode)r�rPrrrr��szNEnvironmentVariableTests.test_default_filter_configuration.<locals>.<listcomp>zPimport sys; sys.modules.pop('warnings', None); sys.modules['_warnings'] = None; r�z5import warnings; [print(f) for f in warnings.filters]r�T)Z
__isolatedcSsg|]}|���qSr)r�)r�r�rrrr��s)
rr?�Py_DEBUGr(r��DeprecationWarning�PendingDeprecationWarning�
ImportWarning�ResourceWarningrrZmaxDiffr[)
r(Zpure_python_apiZexpected_default_filtersZmain_module_filterZexpected_output�coder�r�rTZstdout_linesrrr�!test_default_filter_configuration�s*
�z:EnvironmentVariableTests.test_default_filter_configurationr$z%requires non-ascii filesystemencodingcCs@dtjp
d}tddd|dd�\}}}|�|t|g����dS)Nzignore:DeprecationWarningr�r�rQzutf-8)ZPYTHONIOENCODINGrTrU)rZFS_NONASCIIrr[r�r])r(rTr�r�rTrrr�
test_nonascii�s�z&EnvironmentVariableTests.test_nonasciiN)
rrrrWrYrZr[rdrZ
skipUnlessr�getfilesystemencodingrerrrrrPjs
�rPc@seZdZeZdS)�CEnvironmentVariableTestsNr;rrrrrg�srgc@seZdZeZdS)�PyEnvironmentVariableTestsNr>rrrrrh�srhc@seZdZdd�ZdS)�
BootstrapTestc
CsNt���<}t�d��&tdd|d�tdddd|d�W5QRXW5QRXdS)N�	encodingsr�r�)Z
PYTHONPATHz-Wrb)rZtemp_cwdr)r(�cwdrrr�test_issue_8766�szBootstrapTest.test_issue_8766N)rrrrlrrrrri�sric@s"eZdZejdd��Zdd�ZdS)�FinalizationTestcCs(d}td|�\}}}|�|��d�dS)Nzk
import warnings
warn = warnings.warn

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

a=A()
        r�z<string>:7: UserWarning: test)rr[r&)r(rcr�r�r�rrr�test_finalization�s
z"FinalizationTest.test_finalizationcCshd}dt}tdd|�\}}}|�|�|�t|��dt}tdd|�\}}}|�|�|�t|��dS)Ns&sys:1: ResourceWarning: unclosed file zf = open(%a)r,r�zimport warnings; f = open(%a))r�rr7�
startswithr$)r(r rcr�r�r�rrr�test_late_resource_warning�sz+FinalizationTest.test_late_resource_warningN)rrrrZrequires_type_collectingrnrprrrrrm�s
rmcCstj��tj��dSrL)r?r�rr<rrrr�setUpModule�s
rqr\):�
contextlibrr�r��iorr(rr0rr�rZtest.support.script_helperrrZtest.test_warnings.datarr
r	rZimport_fresh_moduler?r<r#r^rrrrr.ZTestCaser:r=r@r�r�r�r�r�r�r�r�r�rr"r#r4rNrOrPrgrhrirmrqZtearDownModuler�mainrrrr�<module>sf

&	
#p@2P
$