HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/test_warnings/__pycache__/__init__.cpython-310.pyc
o

�i~��@s�ddlmZddlZddlZddlmZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZddlmZddlmZmZdd	lmZddlZe
jd
dgd�Ze
jd
dgd
�Zeed�Zedd��ZGdd�de�ZGdd�d�Z Gdd�de �Z!Gdd�de!e	j"�Z#Gdd�de!e	j"�Z$Gdd�de �Z%Gdd�de%e	j"�Z&Gdd �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(e �Z+Gd)d*�d*e+e	j"�Z,Gd+d,�d,e+e	j"�Z-Gd-d.�d.e e	j"�Z.Gd/d0�d0e �Z/Gd1d2�d2e/e	j"�Z0Gd3d4�d4e/e	j"�Z1Gd5d6�d6e �Z2Gd7d8�d8e2e	j"�Z3Gd9d:�d:e2e	j"�Z4Gd;d<�d<e �Z5Gd=d>�d>e5e	j"�Z6Gd?d@�d@e5e	j"�Z7GdAdB�dBe	j"�Z8GdCdD�dDe	j"�Z9dEdF�Z:e:Z;e<dGk�rie	�=�dSdS)H�)�contextmanagerN)�StringIO)�support)�
import_helper)�	os_helper)�warnings_helper)�assert_python_ok�assert_python_failure��
stacklevel�warnings�	_warnings)Zblocked)ZfreshZgettotalrefcountc	cs��ttfD]}z|j��WqtyYqwzt��Wn	ty'Ynwtj}|j}z|dd�|_|�d�|t_dVW|t_||_dS|t_||_w)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�8/usr/local/lib/python3.10/test/test_warnings/__init__.py�warnings_states.���

�rc@�eZdZdS)�TestWarningN��__name__�
__module__�__qualname__rrrrr4�rcs,eZdZdZ�fdd�Z�fdd�Z�ZS)�BaseTestz'Basic bookkeeping required for testing.cs`tjj|_dt�vrt�d=ttd�rt`ttd�rt`|j	tj
d<|j	tj_tt|��
�dS)Nrr)�unittest�caser�old_unittest_module�globals�hasattrrrrr�modules�superr#�setUp��self��	__class__rrr+<s




zBaseTest.setUpcs&ttjd<|jtj_tt|��	�dS)Nr)
rrr)r&r$r%rr*r#�tearDownr,r.rrr0Os

zBaseTest.tearDown)rr r!�__doc__r+r0�
__classcell__rrr.rr#8sr#c@�eZdZdZdd�ZdS)�PublicAPITestszGEnsures that the correct values are exposed in the
    public API.
    cCs6|�t|jd��gd�}|�t|jj�t|��dS)N�__all__)�warn�
warn_explicit�showwarning�
formatwarning�filterwarningsr�
resetwarnings�catch_warnings)�
assertTruer(rZassertSetEqual�setr5)r-Z
target_apirrr�test_module_all_attributeZs
�z(PublicAPITests.test_module_all_attributeN)rr r!r1r?rrrrr4Tsr4c@�eZdZeZdS)�CPublicAPITestsN�rr r!�
c_warningsrrrrrrAb�rAc@r@)�PyPublicAPITestsN�rr r!�py_warningsrrrrrrEerDrEc@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.cCs`tj|jd��}|j��|jjdtd�|�t|jjd�Wd�dS1s)wYdS)N�r�error��category�FilterTests.test_error)rr<rr;r:�UserWarning�assertRaisesr6�r-�wrrr�
test_errorls
�"�rMc	s�tj�jd��L}�j��d���fdd�}t���}|�Wd�n1s(wY|��}��d|���d|��jjdt	d���
t	|�Wd�dS1sVwYdS)	NrI�%FilterTests.test_ignore_after_defaultc��j��t�dS�N�rr6rNr��messager-rr�fw�z/FilterTests.test_error_after_default.<locals>.fz2UserWarning: FilterTests.test_ignore_after_defaultz&self.module.warn(message, UserWarning)rJrK)rr<rr;r�captured_stderr�getvalue�assertInr:rNrO)r-rQrY�stderrrrWr�test_error_after_defaultss"

���"�z$FilterTests.test_error_after_defaultcCs�tjd|jd��.}|j��|jjdtd�|j�dt�|�t|�d�|�t	t
�dg�Wd�dS1s9wYdS)NT��recordr�ignorerK�FilterTests.test_ignorer�version)rr<rr;r:rNr6�assertEqual�len�listrrPrrr�test_ignore�s�
"�rccs�tjd�jd��0}�j��d���fdd�}|��jjdtd�|�|���t|�d�Wd�dS1s;wYdS)	NTr`rScrTrUrVrrWrrrY�rZz0FilterTests.test_ignore_after_default.<locals>.frbrK�)rr<rr;r:rNrerf�r-rQrYrrWr�test_ignore_after_default�s�
"�rScs�tjd�jd��M}�j���jjdtd�d���fdd�}|���t|�d���|d	jj	d
��|���t|�d���|d	jj	d
��Wd�dS1sXwYdS)NTr`�alwaysrK�FilterTests.test_alwayscrTrUrVrrWrrrY�rZz"FilterTests.test_always.<locals>.fri���r�)
rr<rr;r:rNrerfrX�argsrjrrWr�test_always�s�
"�rmcstjd�jd��o}�j��d���fdd�}|���t|�d���|djjd��|���t|�d��jjd	t	d
�|���t|�d���|djjd��|���t|�d���|djjd��Wd�dS1szwYdS)
NTr`z$FilterTests.test_always_after_ignorecrTrUrVrrWrrrY�rZz0FilterTests.test_always_after_default.<locals>.frirnrrlrKro�)
rr<rr;rerfrXrpr:rNrjrrWr�test_always_after_default�s(�
"�z%FilterTests.test_always_after_defaultcCs�tjd|jd��K}|j��|jjdtd�td�}td�D],}|j�|t�|dkr:|�|dj	|�|dd�=q|d	krG|�t
|�d�qtd
��Wd�dS1sVwYdS)NTr`�defaultrK�FilterTests.test_defaultrorrnrizloop variant unhandled)rr<rr;r:rN�ranger6rerXrf�
ValueError)r-rQrX�xrrr�test_default�s"�
�"�rucCs�tjd|jd��>}|j��|jjdtd�td�}|j�|t�|�|dj|�|dd�=|j�|t�|�t	|�d�Wd�dS1sIwYdS)NTr`rrK�FilterTests.test_modulernr)
rr<rr;r:rNr6rerXrf�r-rQrXrrr�test_module�s�

"�rzcCs�tjd|jd��S}|j��|jjdtd�td�}|j�|tdd�|�|dj|�|dd�=|j�|tdd	�|�t	|�d
�|j�|tdd�|�t	|�d
�Wd�dS1s^wYdS)NTr`rrK�FilterTests.test_once�__init__.py�*rn�
rztest_warnings2.py)
rr<rr;r:rNr7rerXrfr{rrr�	test_once�s*�
�
��"�r}c	Cs�tjd|jd��^}|j�dt�|jjdtdddd�|�t|�d�|�t	��|jjdtdddd�Wd�n1s>wY|�t|�d�|jjdtddid�|�t|�d	�Wd�dS1siwYdS)
NTr`rl�msg�filenamer��module_globalsriro)
rr<rrrNr7rerfrO�	TypeErrorrPrrr�test_module_globals�s(�����"�zFilterTests.test_module_globalscCsbtj|jd�� }|j��|jjdtd�|�t|jjdt�Wd�dS1s*wYdS)NrIrJrK�FilterTests.test_inheritance)	rr<rr;r:�WarningrOrNr6rPrrr�test_inheritances
�"�r�c	Cs�tjd|jd��D}|j��|jjdtd�|jjdtdd�|dd�=z	|j�dt�Wnty;|�d�Ynw|�t	|�d	�Wd�dS1sOwYdS)
NTr`rbrKrJ)rL�append�FilterTests.test_orderingz!order handling for actions failedr)
rr<rr;r:rNr6ZfailrerfrPrrr�
test_orderings"�

�
�"�r�cCs@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�Wd�dS1s�wYdS)NTr`rJ�r�convert to errorzhandle normallyrnrbzfiltered outzhex*zhex/octznonmatching text)rr<rr:r�rOrNr6r;re�strrX�assertIsrLZassertNotEqual)r-rQ�textrrr�test_filterwarningss.�

"�zFilterTests.test_filterwarningscCs�tjd|jd��B}|j�dt�|j�ddt�|�t|jjd�|�t|jjd�|j�d�|�|g�|j�d�|�|g�Wd�dS1sMwYdS)	NTr`rbrJ�matchzmatch prefixzsuffix matchzsomething completely different)	rr<rrrNr:rOr6rerPrrr�test_message_matching0s�"�z!FilterTests.test_message_matchingcs�G�fdd�d���fdd�td�D��tjd|jd��#}�|j_|j�td�dd	d
�|�t|dj	�d�Wd�dS1sBwYdS)Nc�eZdZ�fdd�ZdS)z.FilterTests.test_mutate_filter_list.<locals>.Xcsg�dd�<dSrUr)r-�a��Lrrr�>sz4FilterTests.test_mutate_filter_list.<locals>.X.matchN)rr r!r�rr�rr�X=�r�csg|]}d��t��df�qS)rtr)rN)�.0�i)r�rr�
<listcomp>Asz7FilterTests.test_mutate_filter_list.<locals>.<listcomp>roTr`�bzf.pyrrn)
rvrr<rrr7rNrer�rXrPr)r�r�r�test_mutate_filter_list<s�"�z#FilterTests.test_mutate_filter_listcC�tj|jd��H|j��|jjdtd�|�t|jj�d�|jjdtd�|jjdtd�|�t|jj�dd�|�|jjdddd	�Wd�dS1sRwYdS)
NrIrJrKrirbroz(filterwarnings inserted duplicate filterrz>filterwarnings did not promote filter to the beginning of list)	rr<rr;r:rNrerfrr,rrr�%test_filterwarnings_duplicate_filtersH�
��"�z1FilterTests.test_filterwarnings_duplicate_filterscCr�)
NrIrJrKrirbro�&simplefilter inserted duplicate filterrz<simplefilter did not promote filter to the beginning of list)	rr<rr;rrNrerfrr,rrr�#test_simplefilter_duplicate_filtersYr�z/FilterTests.test_simplefilter_duplicate_filterscCs�tj|jdd��@}|j��|j�d�|jjddd�|jjddd�|jjdtd�|�t|jj	�dd	�|�t|�d
d�Wd�dS1sKwYdS)NT�rrarbrJ�r��test_append_duplicaterKror�rz+appended duplicate changed order of filters)
rr<rr;rr6rNrerfrrPrrrr�is �
��"�z!FilterTests.test_append_duplicateN)rr r!r1rRr_rhrkrqrsryr|r�r�r�r�r�r�r�r�r�r�rrrrrHhs(	
rHc@r@)�CFilterTestsNrBrrrrr�xrDr�c@r@)�
PyFilterTestsNrFrrrrr�{rDr�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().cCs�tjd|jd��4}|j�d�td�D] }d|}|j�|�|�t|dj�|�|�	|dj
t�qWd�dS1s?wYdS)NTr`r�zmulti %drn)rr<rrrvr6rer�rXr�rLrN)r-rQr�r�rrr�test_message�s��"�zWarnTests.test_messagec	CsztddfD]5}tjd|jd��#}|j�d�|j�|�|�t|dj�tt	|���Wd�n1s5wYqdS)NrTr`rrn)
r�rr<rrr6rer�rXrN)r-�obrQrrr�test_warn_nonstandard_types�s� ���z%WarnTests.test_warn_nonstandard_typesc	Cs�t|j��Mtjd|jd��,}t�d�|�tj�	|dj
�d�t�d�|�tj�	|dj
�d�Wd�n1s=wYWd�dSWd�dS1sUwYdS)NTr`Zspam1rn�
stacklevel.pyZspam2�rrrr<r�innerre�os�path�basenamer�ZouterrPrrr�
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�Wd�n1s�wYWd�dSWd�dS1s�wYdS)NTr`Zspam3rir
rnr�Zspam4Zspam5ror~Zspam6zspam6.5rrZspam7i'rr�rPrrr�test_stacklevel�sB���������"�zWarnTests.test_stacklevelc	Cs�t�d�t|j��Dtjd|jd��#}|j�d�ddl}|�t	|�d�|�|dj
t�Wd�n1s9wYWd�dSWd�dS1sQwYdS)Nz&test.test_warnings.data.import_warningTr`rlrri)rZunloadrrrr<rZ&test.test_warnings.data.import_warningrerfr��__file__)r-rQ�testrrr�test_stacklevel_import�s
���"�z WarnTests.test_stacklevel_importcCsjd}td|d�}tjdd��}|jjdtd�t|�Wd�n1s%wY|�|dj|�dS)	Nz<warnings-test>z3import warnings
warnings.warn('hello', UserWarning)�execT)rarlrKr)	�compilerr<rrrNr�rer�)r-r�ZcodeobjrQrrr�test_exec_filename�s�
�zWarnTests.test_exec_filenamec
Cs�tjd|jd��>}|j��|jjdtd�dD]%}zt�|�Wn	ty*Yqw|j�	dt|d�|�
|dj|�qWd�dS1sIwYdS)	NTr`rlrK)u
nonasciié€usurrogate�r�rirn)rr<rr;r:rNr��fsencode�UnicodeEncodeErrorr7rer�)r-rQr�rrr�%test_warn_explicit_non_ascii_filename�s �
��"�z/WarnTests.test_warn_explicit_non_ascii_filenamec	CsT|�t|jjdtdd�|�t|jjdddd�|jttf|jjdtdddd�dS)Nrir��registry)rOr�rr7rNrr�r,rrr�test_warn_explicit_type_errors�s��


�z(WarnTests.test_warn_explicit_type_errorscCsNGdd�dt�}|�t��|j�|��Wd�dS1s wYdS)Nc@r3)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)rr r!r1r�rrrr�
BadStrWarning�sr�)r�rOrwrr6)r-r�rrr�test_bad_str�s"�zWarnTests.test_bad_strc	Cs$Gdd�dt�}Gdd�d�}|�t��}|j�dd�Wd�n1s&wY|�dt|j��|�t��}|j�d|�Wd�n1sKwY|�dt|j��|�t��}|j�d|��Wd�n1sqwY|�dt|j��tj	|jd���|j�
�|j�d	�|�|��}|j�d
|�Wd�n1s�wY|�
d
t|j��|�t��}|j�d
d�Wd�n1s�wY|�
d
t|j��|�|��}|j�d
|�Wd�n1s�wY|�|jt�Wd�dS1�swYdS)Nc@r)z6WarnTests.test_warning_classes.<locals>.MyWarningClassNrrrrr�MyWarningClass�r"r�c@r)z:WarnTests.test_warning_classes.<locals>.NonWarningSubclassNrrrrr�NonWarningSubclassr"r�zbad warning categoryr�z)category must be a Warning subclass, not rIrtzgood warning category)r�rOr�rr6r]r��	exceptionrr<r;r:ZassertWarnsre�warningrNZassertIsInstance)r-r�r��cmrrr�test_warning_classes�sH������
���$�zWarnTests.test_warning_classesN)rr r!r1r�r�r�r�r�r�r�r�r�r�rrrrr�s


r�c@�eZdZeZdd�ZdS)�
CWarnTestscC�&|�t|j�|�t|jjd��dS�N�__code__)�assertIsNotrr�assertFalser(r6r,rrr�test_accelerated)�zCWarnTests.test_acceleratedN)rr r!rCrr�rrrrr�$�r�c@r�)�PyWarnTestscCr�r�)r�rrr=r(r6r,rrr�test_pure_python2r�zPyWarnTests.test_pure_pythonN)rr r!rGrr�rrrrr�-r�r�c@�eZdZdd�Zdd�ZdS)�
WCmdLineTestsc	Cs~tj|jd���|�|jj|jjd�|�|jj|jjd�|�|jj|jjd�|�|jj��|j�d�Wd�n1sAwY|�|jj��|j�d�Wd�n1s^wY|�|jj��|j�d�Wd�n1s{wY|�|jjd��|j�d	�Wd�n1s�wY|j�d
�|�t|jjd�Wd�dS1s�wYdS)NrIz1:2:3:4:5:6zbogus::Warningzignore:2::4:-5zignore::123zignore::123abczignore::===uWärninguignore::Wärningzerror::Warning::0r�)	rr<rrO�_OptionError�
_setoptionZassertRaisesRegexrNr6r,rrr�test_improper_input9s2
�
�
�����"�z!WCmdLineTests.test_improper_inputc	Cstj|jd��s|j�d�|�|jj��|j�d�Wd�n1s&wY|�|jj��|j�d�Wd�n1sCwY|j�d�|�t��|j�dt�Wd�n1sewYWd�dSWd�dS1s}wYdS)NrIzignore::Warningzignore::TestWarningz ignore::test.test_warnings.bogusz%error::test.test_warnings.TestWarningztest warning)rr<rr�rOr�rr6r,rrr�test_import_from_moduleNs����"�z%WCmdLineTests.test_import_from_moduleN)rr r!r�r�rrrrr�7sr�c@r@)�CWCmdLineTestsNrBrrrrr�ZrDr�c@s eZdZeZdd�Zdd�ZdS)�PyWCmdLineTestscCs"tddd�\}}}|�d|�dS)Nz-Wxxx�-c�passs0Invalid -W option ignored: invalid action: 'xxx')rr]�r-�rc�outr�rrr�test_improper_optionasz$PyWCmdLineTests.test_improper_optioncCs0tddd�\}}}|�|���|�d|�dS)Nz-Wir�z?import sys; sys.modules['warnings'].warn('foo', RuntimeWarning)sRuntimeWarning)rr��strip�assertNotInr�rrr�test_warnings_bootstraphs

�z'PyWCmdLineTests.test_warnings_bootstrapN)rr r!rGrr�r�rrrrr�^sr�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.cCsrtj|jd��(}|j�ddtdd�|�t|jjd�|j`|�t|jjd�Wd�dS1s2wYdS)NrIrJr�rr�)	rr<rr:r�rOrNr6rrPrrr�test_filterxs��"�z_WarningsTests.test_filtercCs:td�}z�|jj}iatjd|jd��o}|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	�Wd�n1s�wYW||j_dSW||j_dS||j_w)
Nzonceregistry testTr`rrK�filerrnr)rNr�onceregistryrrr<r;r:r7rerXrfr6rp)r-rXZoriginal_registryrQrrr�test_onceregistry�s8�


��z _WarningsTests.test_onceregistrycCsjtd�}|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�Wd�n1s�wYW||j_dSW||j_dS||j_w)Nzdefaultaction testTr`z<test>rr�rnrirord�+rb�,r)rNr�
defaultactionrr<r;r7rerXrfr])r-rXZoriginalrQr�rrrr�test_default_action�sL�
�
�
���z"_WarningsTests.test_default_actionc	Cs�d}tj|jd��2|jjdtd�|j`t�d��}|j�|�|�	�}Wd�n1s/wYWd�n1s>wY|�
||�dS)Nzdel showwarning testrIrlrKr^)rr<rr:rNr8r�captured_outputr6r\r])r-r��stream�resultrrr�test_showwarning_missing�s
���z'_WarningsTests.test_showwarning_missingc	Cs�d}tj|jd��B|jjdtd�|jj}z(|j`t�d��}|j�|�|�	�}Wd�n1s4wYW||j_n||j_wWd�n1sNwY|�
||�dS)Nzdel _showwarnmsg testrIrlrKr^)rr<rr:rN�_showwarnmsgrr�r6r\r])r-r��showr�r�rrr�test_showwarnmsg_missing�s
���z'_WarningsTests.test_showwarnmsg_missingc	Cs�tj|jd��=|jjdtd�t|j_t�d��|j�	d�Wd�n1s*wYd|j_|�
t|jj	d�Wd�dS1sGwYdS)NrIrlrK�stdoutzWarning!�)rr<rr:rN�printr8rr�r6rOr�r,rrr�test_showwarning_not_callable�s�"�z,_WarningsTests.test_showwarning_not_callablec
	Cs@d}tj|jd��1|jjdtd�|j`t�d��}t�	|�|�
�}Wd�n1s.wYWd�n1s=wY|�|�d�dd|�|�
dd	�\}}tj�tj�d
d}|�dd
�}|\}}	}
}t|	�}	|�||�|�|
dtj�|�|d|�dt�||	���d}|s�J�|�||�dS)Nztest show_warningrIrlrKr^�
rozToo many newlines in %rrir�.py�:rr� z  )rr<rr:rNr8rr�rr�r\re�count�splitr�r��splitextr��rsplit�intr�	linecache�getliner�)
r-r�r�r�Z
first_lineZsecond_lineZ
expected_fileZfirst_line_partsr��lineZ
warning_classrXZ
expected_linerrr�test_show_warning_output�s0

����z'_WarningsTests.test_show_warning_outputc	Cs�t�}|d}zAtjd|jd�}|�!}|jjdtd�d|d<t�dt�|�t|��Wd�n1s6wYW||d<dSW||d<dS||d<w)Nr�Tr`rlrKr�)	r'rr<rr:rNr6r=rf)r-Zglobals_dictZoldfileZcatchrQrrr�test_filename_nones���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)rrer��r-r�r�r^rrr�test_stderr_nones
�z_WarningsTests.test_stderr_nonec
Csdd�}|j}tj|d��v|jdtd�t���}|jdtdd|d	�d
d�d�Wd�n1s3wY|�d
|�	��|j
}z3|`
t���}|jdtdd|d	g�d
d�d�Wd�n1sewY|�d|�	��W||_
n||_
wWd�dS1s�wYdS)NcsG�fdd�d�}|�S)Ncr�)zI_WarningsTests.test_issue31285.<locals>.get_bad_loader.<locals>.BadLoadercsG�fdd�dt�}|d�S)Ncr�)zg_WarningsTests.test_issue31285.<locals>.get_bad_loader.<locals>.BadLoader.get_source.<locals>.BadSourcecs�SrUrr,��splitlines_ret_valrr�
splitlines szr_WarningsTests.test_issue31285.<locals>.get_bad_loader.<locals>.BadLoader.get_source.<locals>.BadSource.splitlinesN)rr r!rrrrr�	BadSourcer�rZspam)r�)r-�fullnamerrrr�
get_sourceszT_WarningsTests.test_issue31285.<locals>.get_bad_loader.<locals>.BadLoader.get_sourceN)rr r!rrrrr�	BadLoaderr�rr)rrrrr�get_bad_loadersz6_WarningsTests.test_issue31285.<locals>.get_bad_loaderrIrtrK�foo�barrirZfoobar)�
__loader__rr�zUserWarning: fooZeggszUserWarning: eggs)rrr<r:rNrr[r7r]r\r�)r-r�wmodr^r�rrr�test_issue31285s6	
���
���"�z_WarningsTests.test_issue31285c
Cs�|j}tj|d��L|�d�t�|dd��'|�t��|jdt	dddd�Wd�n1s1wYWd�n1s@wYWd�dSWd�dS1sXwYdS)NrIrr�rrrir�)
rrr<r:r�	swap_attrrOr�r7r��r-rrrr�test_issue31411<s
����"�z_WarningsTests.test_issue31411c
Cs|j}tj|d��nddtddfg|_|�t��|�dtdd�Wd�n1s+wYg|_t�	|dd��%|�t��|�dtdd�Wd�n1sSwYWd�n1sbwYWd�dSWd�dS1szwYdS)NrIrrrrir�)
rrr<r�rrOr�r7rrrrrr�test_issue31416Gs"�����"�z_WarningsTests.test_issue31416c
Cs�tj|jd��R|jjdtd�t�t�dd��)t�t�dd��|�t|jj	d�Wd�n1s5wYWd�n1sDwYWd�dSWd�dS1s\wYdS)NrIrJrKrsfoor�r)
rr<rr:rNrZ	swap_itemr'rOr6r,rrr�test_issue31566Vs����"�z_WarningsTests.test_issue31566N)rr r!r1rCrr�r�r�r�r�r�rrrrrZcpython_onlyrr r!rrrrr�rs&
%		$


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)Nr�rrrrz%s:%s: %s: %s
  %s
z
 for the win!)
r�r�r�rrr�rr	r�rrerr9)r-rXrL�	file_name�line_num�	file_line�format�expectrrr�test_formatwarningfs&���
�z'WarningsDisplayTests.test_formatwarningcCs�tj�tj�dd}d}t�||���}d}t}t	�}|j
�||||�}|j
�|||||�|�
|��|�|d7}|j
�|||||�}t	�}|j
�||||||�|�
||���dS)Nrrrrr�zfor the win!)r�r�rrr�rr	r�r�rrr9r8rer\)r-r#r$Zexpected_file_linerXrL�file_objectr'rrr�test_showwarningxs,����z%WarningsDisplayTests.test_showwarningc		Cs�dd�}tj�tj�dd}d}t�||���}d}t}t	�}d|�d|�d	|�d
|��d|��}t
�|jd|��|j�
||||||�|�|��|�Wd�dS1sZwYdS)
Nc
Ss"d|�d|�d|�d|�d|��
S)N�m=�:c=�:f=�:l=�:t=r)rXrLr��linenor�rrr�myformatwarning�s"zIWarningsDisplayTests.test_formatwarning_override.<locals>.myformatwarningrrrrr�r+r,r-r.r/r9)r�r�rrr�rr	r�r�rrrrr8rer\)	r-r1r#r$r%rXrLr)�expectedrrr�test_formatwarning_override�s ��"�z0WarningsDisplayTests.test_formatwarning_overrideN)rr r!r1r(r*r3rrrrr"as
r"c@r@)�CWarningsDisplayTestsNrBrrrrr4�rDr4c@r�)�PyWarningsDisplayTestsc	Cs�|�tjtj�ttjddd��}|�t�d��Wd�n1s#wYdd�}tj	�
tj�}|dtj�}t�d|�d	����}|�||�|dd
dtj�}t�d|�d|�d
|�d����}|�||�dS)NrQ�utf-8)�encodingz�
                def func():
                    f = open(__file__, "rb")
                    # Emit ResourceWarning
                    f = None

                func()
            cWs<t|ddi�}|j�dd�}d�|���}t�dd|�}|S)N�PYTHONIOENCODINGr6�replacer�z<.*>z<...>)rr��decode�joinr�re�sub)rp�resr^rrr�run�s
z4PyWarningsDisplayTests.test_tracemalloc.<locals>.run�-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")
        )
Z
addCleanupr�unlinkZTESTFN�open�write�textwrap�dedentr�r��abspathr�re)r-�fpr?r�r^r2rrr�test_tracemalloc�s0�

������	z'PyWarningsDisplayTests.test_tracemallocN)rr r!rGrrHrrrrr5�sr5c@sHeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�CatchWarningTestszTest catch_warnings().cCs�|j}|j}|j}|j|dd��t�|_|_Wd�n1s"wY|�|j|�|�|j|�|j|dd��t�|_|_Wd�n1sNwY|�|j|�|�|j|�dS�NTr�F)rrr8r<�objectr�)r-r�orig_filters�orig_showwarningrrr�test_catch_warnings_restore�s��z-CatchWarningTests.test_catch_warnings_restorecCs.|j}|j|dd��\}|�|g�|�t|�t�|�d�|�d�|�t|dj	�d�|�d�|�t|dj	�d�|�t|dj	�d�|�t|dj	�d�|dd�=|�|g�Wd�n1siwY|j
}|j|d	d��}|�|�|�|j
|�Wd�dS1s�wYdS)
NTr�rlrrnrrriF)rr<rer��typergrr6r�rXr8�assertIsNone)r-rrQrMrrr�test_catch_warnings_recording�s&



�

"�z/CatchWarningTests.test_catch_warnings_recordingcCs�|j}|j|dd�}|�t|j�|�|�t|j�Wd�n1s%wY|j|dd�}|�t|j�|�|�t|j�Wd�dS1sMwYdSrJ)rr<rO�RuntimeError�__exit__�	__enter__)r-rrxrrr�!test_catch_warnings_reentry_guard�s�"�z3CatchWarningTests.test_catch_warnings_reentry_guardcCs�|j}|j}|j}|j|d��}|�|�|�|j|�|�|j|�Wd�n1s-wY|�|j|�|tjdurp|���}|�|�|�|j|�|�|j|�Wd�n1sbwY|�|j|�dSdS)NrIr)	rrr8r<rPr�r�rr))r-rrLrMrQrrr�test_catch_warnings_defaults
s"
�

��z.CatchWarningTests.test_catch_warnings_defaultsc	s�d}|j}g�d
�fdd�	}t�|d|��7|j|dd��}|�|j|�|�d�|�|�Wd�n1s9wY|�|j|�Wd�n1sOwY|�	t
|�d|�|�	|d	jjd	|�|�	�g�dS)N�This is a warningc���|�dSrUr��rXrLr�r0r�r
�Zmy_logrr�	my_logger#�zLCatchWarningTests.test_record_override_showwarning_before.<locals>.my_loggerr8Tr�rlrir�NN)
rrrr<r�r8rr6r�rerfrXrp�r-r�rr[�logrrZr�'test_record_override_showwarning_befores
��	z9CatchWarningTests.test_record_override_showwarning_beforecs�d}|j}g�d	�fdd�	}|j|dd��}|�d�||_|�|�Wd�n1s-wY|�t��d��|��djd|�|�|g�dS)
NrWcrXrUr�rYrZrrr[<r\zLCatchWarningTests.test_record_override_showwarning_inside.<locals>.my_loggerTr�rlrirr])rr<rr8r6rerfrpr^rrZr�'test_record_override_showwarning_inside5s
�z9CatchWarningTests.test_record_override_showwarning_insidec	Cs|j}|tjdur|�d�tjdd��S}|�|jg�|�d�|�	d�|�t
|j�d�|�	d�|�t
|j�d�|�t
|jdj�d�|�t
|jd	j�d�|��|�|jg�Wd�n1skwYt���Wd�n1swYt�dt
f��
|�	d�Wd�n1s�wY|�t��t�d
tf��Wd�n1s�wYWd�n1s�wY|�t��-t�dtf��
|�	d�Wd�n1s�wYWd�dSWd�dS1�swYdS)Nrz,module to test is not loaded warnings moduleF)�quietrlrrrrir�)rrr)ZskipTestrZcheck_warningsrerrr6r�rX�resetrNrO�AssertionError�RuntimeWarning)r-rrQrrr�test_check_warningsIsD



�
�������$�z%CatchWarningTests.test_check_warningsN)rr r!r1rNrQrUrVr`rarfrrrrrI�s
rIc@r@)�CCatchWarningTestsNrBrrrrrghrDrgc@r@)�PyCatchWarningTestsNrFrrrrrhkrDrhc@sPeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Ze�	e
��dkd�d
d��ZdS)�EnvironmentVariableTestscC�&tddddd�\}}}|�|d�dS)Nr��2import sys; sys.stdout.write(str(sys.warnoptions))�ignore::DeprecationWarningr���PYTHONWARNINGS�
PYTHONDEVMODEs['ignore::DeprecationWarning']�rrerrrr�test_single_warningqs�z,EnvironmentVariableTests.test_single_warningcCrj)Nr�rkz1ignore::DeprecationWarning,ignore::UnicodeWarningr�rm�8['ignore::DeprecationWarning', 'ignore::UnicodeWarning']rprrrr�test_comma_separated_warningsxs��z6EnvironmentVariableTests.test_comma_separated_warningscCs(tdddddd�\}}}|�|d�dS)Nz-Wignore::UnicodeWarningr�rkrlr�rmrrrprrrr�test_envvar_and_command_line�s��z5EnvironmentVariableTests.test_envvar_and_command_linecCs<tdddddd�\}}}|�|d�|�|��gd��dS)	Nz-Werror::DeprecationWarningr�zjimport sys, warnings; sys.stdout.write(str(sys.warnoptions)); warnings.warn('Message', DeprecationWarning)zdefault::DeprecationWarningr�rms<['default::DeprecationWarning', 'error::DeprecationWarning'])s"Traceback (most recent call last):s&  File "<string>", line 1, in <module>sDeprecationWarning: Message)r	rerrrrr�(test_conflicting_envvar_and_command_line�s��
�zAEnvironmentVariableTests.test_conflicting_envvar_and_command_linec
	Cs�|jtu}tr
g}n*|rt�d�}nd}ddt|dfddtddfddtddfddtddfddtddfg}dd�|D�}|r@d}nd}|d	7}t	d
|dd�\}}}d
d�|�
�D�}	d|_|�|	|�dS)N�__main__rtrrbcSsg|]}t|����qSr)r��encode)r�rYrrrr��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)
rrG�Py_DEBUGr<r��DeprecationWarning�PendingDeprecationWarning�
ImportWarning�ResourceWarningrrZmaxDiffre)
r-Zpure_python_apiZexpected_default_filtersZmain_module_filterZexpected_output�coder�r�r^Zstdout_linesrrr�!test_default_filter_configuration�s*
�z:EnvironmentVariableTests.test_default_filter_configuration�asciiz%requires non-ascii filesystemencodingcCs<dtj}tddd|dd�\}}}|�|t|g����dS)Nzignore:DeprecationWarningr�rkr6r�)r8rnro)rZFS_NONASCIIrrer�rw)r-rnr�r�r^rrr�
test_nonascii�s
�z&EnvironmentVariableTests.test_nonasciiN)
rr r!rqrsrtrur~r$Z
skipUnlessr�getfilesystemencodingr�rrrrrios
�ric@r@)�CEnvironmentVariableTestsNrBrrrrr��rDr�c@r@)�PyEnvironmentVariableTestsNrFrrrrr��rDr�c@seZdZdd�ZdS)�
BootstrapTestc	Cs�t���6}t�d��tdd|d�tdddd|d�Wd�n1s%wYWd�dSWd�dS1s=wYdS)N�	encodingsr�r�)Z
PYTHONPATHz-Wrl)rZtemp_cwdr)r-�cwdrrr�test_issue_8766�sP�zBootstrapTest.test_issue_8766N)rr r!r�rrrrr��sr�c@r�)�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)rrer:�rstrip)r-r}r�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�rr=�
startswithr)r-r2r}r�r�r�rrr�test_late_resource_warning�sz+FinalizationTest.test_late_resource_warningN)rr r!r�r�rrrrr��sr�cCstj��tj��dSrU)rGr�rrCrrrr�setUpModule�s
r�rv)>�
contextlibrrr��iorr<rrDr$r�rZtest.supportrrrZtest.support.script_helperrr	Ztest.test_warnings.datarrrrZimport_fresh_modulerGrCr(rxrr�rr#r4ZTestCaserArErHr�r�r�r�r�r�r�r�r�r"r4r5rIrgrhrir�r�r�r�r�ZtearDownModuler�mainrrrr�<module>sx��

&	
#p@1P
$
�