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.7/test/__pycache__/test_contextlib.cpython-37.opt-2.pyc
B

��g���@sZddlZddlZddlZddlZddlZddlZddlTddlmZddl	Z	Gdd�dej
�ZGdd�dej
�ZGdd	�d	ej
�Z
Gd
d�dej
�ZGdd
�d
ej
�ZGdd�dej
�ZGdd�de�ZGdd�dej
�ZGdd�d�ZGdd�deej
�ZGdd�d�ZGdd�deej
�ZGdd�deej
�ZGdd�dej
�Zed k�rVe��dS)!�N)�*)�supportc@s$eZdZdd�Zdd�Zdd�ZdS)�TestAbstractContextManagercCs*Gdd�dt�}|�}|�|��|�dS)NcseZdZ�fdd�Z�ZS)z;TestAbstractContextManager.test_enter.<locals>.DefaultEntercst�j|�dS)N)�super�__exit__)�self�args)�	__class__��0/usr/local/lib/python3.7/test/test_contextlib.pyrszDTestAbstractContextManager.test_enter.<locals>.DefaultEnter.__exit__)�__name__�
__module__�__qualname__r�
__classcell__r
r
)r	r�DefaultEntersr)�AbstractContextManager�assertIs�	__enter__)rrZmanagerr
r
r�
test_entersz%TestAbstractContextManager.test_enterc	Cs0Gdd�dt�}|�t��|�WdQRXdS)Nc@seZdZdS)zETestAbstractContextManager.test_exit_is_abstract.<locals>.MissingExitN)rr
rr
r
r
r�MissingExitsr)r�assertRaises�	TypeError)rrr
r
r�test_exit_is_abstractsz0TestAbstractContextManager.test_exit_is_abstractcCs�Gdd�d�}|�t|t��Gdd�dt�}|�t|t��Gdd�d|�}|�t|t��Gdd�d|�}|�t|t��dS)	Nc@seZdZdd�Zdd�ZdS)zRTestAbstractContextManager.test_structural_subclassing.<locals>.ManagerFromScratchcSs|S)Nr
)rr
r
rr!sz\TestAbstractContextManager.test_structural_subclassing.<locals>.ManagerFromScratch.__enter__cSsdS)Nr
)r�exc_type�	exc_value�	tracebackr
r
rr#sz[TestAbstractContextManager.test_structural_subclassing.<locals>.ManagerFromScratch.__exit__N)rr
rrrr
r
r
r�ManagerFromScratch srcseZdZ�fdd�Z�ZS)zLTestAbstractContextManager.test_structural_subclassing.<locals>.DefaultEntercst�j|�dS)N)rr)rr)r	r
rr)szUTestAbstractContextManager.test_structural_subclassing.<locals>.DefaultEnter.__exit__)rr
rrrr
r
)r	rr(src@seZdZdZdS)zGTestAbstractContextManager.test_structural_subclassing.<locals>.NoEnterN)rr
rrr
r
r
r�NoEnter.src@seZdZdZdS)zFTestAbstractContextManager.test_structural_subclassing.<locals>.NoExitN)rr
rrr
r
r
r�NoExit3sr)�
assertTrue�
issubclassr�assertFalse)rrrrrr
r
r�test_structural_subclassingsz6TestAbstractContextManager.test_structural_subclassingN)rr
rrrr"r
r
r
rrsrc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Ze
jdd��Ze
jdd��Zdd�Zdd�Zdd�Zdd �Zd!S)"�ContextManagerTestCasec	s`g�t�fdd��}|��*}|��dg�|�|d���|�WdQRX|��dddg�dS)Nc3s��d�dV��d�dS)N��*i�)�appendr
)�stater
r�woohoo=s
z@ContextManagerTestCase.test_contextmanager_plain.<locals>.woohoor$r%i�)�contextmanager�assertEqualr&)rr(�xr
)r'r�test_contextmanager_plain;sz0ContextManagerTestCase.test_contextmanager_plainc
s|g�t�fdd��}|�t��B|��0}|��dg�|�|d���|�t��WdQRXWdQRX|��dddg�dS)Nc	3s&��d�z
dVWd��d�XdS)Nr$r%i�)r&r
)r'r
rr(Js

zBContextManagerTestCase.test_contextmanager_finally.<locals>.woohoor$r%i�)r)r�ZeroDivisionErrorr*r&)rr(r+r
)r'r�test_contextmanager_finallyHs
z2ContextManagerTestCase.test_contextmanager_finallycCs6tdd��}|�}|��|�|�ttd�d��dS)Ncss
dVdS)Nr
r
r
r
r�wheeZszCContextManagerTestCase.test_contextmanager_no_reraise.<locals>.whee�foo)r)rr!rr)rr/�ctxr
r
r�test_contextmanager_no_reraiseYsz5ContextManagerTestCase.test_contextmanager_no_reraisecCs6tdd��}|�}|��|�t|jttd�d�dS)Ncss"y
dVWndVYnXdS)Nr
r
r
r
r�whoocs
zOContextManagerTestCase.test_contextmanager_trap_yield_after_throw.<locals>.whoor0)r)rr�RuntimeErrorrr)rr3r1r
r
r�*test_contextmanager_trap_yield_after_throwbs
zAContextManagerTestCase.test_contextmanager_trap_yield_after_throwc	sjg�t��fdd��}|��2}���dg���|d���|�td��WdQRX���dddg�dS)Nc
3s^��d�y
dVWnDtk
rX}z&��|jd����dddg�Wdd}~XYnXdS)Nr$r%ri�)r&r-rr*)�e)rr'r
rr(qs

zAContextManagerTestCase.test_contextmanager_except.<locals>.woohoor$r%i�)r)r*r&r-)rr(r+r
)rr'r�test_contextmanager_exceptos
z1ContextManagerTestCase.test_contextmanager_exceptc
Cs�td�}tdd��}y2|�td��|��
|�WdQRXWdQRXWn.tk
rt}z|�||�Wdd}~XYnX|�d�dS)N�spamcss
dVdS)Nr
r
r
r
rr(�szJContextManagerTestCase.test_contextmanager_except_stopiter.<locals>.woohoo�
StopIterationzStopIteration was suppressed)r9r)ZassertWarnsRegex�DeprecationWarning�	Exceptionr�fail)r�stop_excr(�exr
r
r�#test_contextmanager_except_stopiter�sz:ContextManagerTestCase.test_contextmanager_except_stopiterc
Cs|d}i}t|||�|d}td�}y|��
|�WdQRXWn.tk
rl}z|�||�Wdd}~XYnX|�d�dS)Nztfrom __future__ import generator_stop
from contextlib import contextmanager
@contextmanager
def woohoo():
    yield
r(r8zStopIteration was suppressed)�execr9r;rr<)r�code�localsr(r=r>r
r
r�!test_contextmanager_except_pep479�sz8ContextManagerTestCase.test_contextmanager_except_pep479c
Cs�tdd��}y|��
t�WdQRXWnRtk
rx}z4|�t|�t�|�|jdd�|�|j	t�Wdd}~XYnXy|��t
d��WdQRXWnPtk
r�}z2|�t|�t
�|�|jdd�|�|j	�Wdd}~XYnXdS)Nc
ss<y
dVWn,tk
r6}ztd�|�Wdd}~XYnXdS)Nzissue29692:Chained)r;r4)�excr
r
r�test_issue29692�s
zoContextManagerTestCase.test_contextmanager_do_not_unchain_non_stopiteration_exceptions.<locals>.test_issue29692rzissue29692:Chainedzissue29692:Unchained)r)r-r;r�typer4r*r�assertIsInstance�	__cause__r9�assertIsNone)rrEr>r
r
r�?test_contextmanager_do_not_unchain_non_stopiteration_exceptions�s zVContextManagerTestCase.test_contextmanager_do_not_unchain_non_stopiteration_exceptionscCs"dd�}t|dd�dd���}|S)Ncs�fdd�}|S)Ncs&x ���D]\}}t|||�q
W|S)N)�items�setattr)�func�k�v)�kwr
r�decorate�szXContextManagerTestCase._create_contextmanager_attribs.<locals>.attribs.<locals>.decorater
)rPrQr
)rPr�attribs�szFContextManagerTestCase._create_contextmanager_attribs.<locals>.attribs�bar)r0cSsdS)Nr
)r8r
r
r�baz�szBContextManagerTestCase._create_contextmanager_attribs.<locals>.baz)r))rrRrTr
r
r�_create_contextmanager_attribs�sz5ContextManagerTestCase._create_contextmanager_attribscCs(|��}|�|jd�|�|jd�dS)NrTrS)rUr*rr0)rrTr
r
r�test_contextmanager_attribs�sz2ContextManagerTestCase.test_contextmanager_attribscCs|��}|�|jd�dS)NzWhee!)rUr*�__doc__)rrTr
r
r�test_contextmanager_doc_attrib�sz5ContextManagerTestCase.test_contextmanager_doc_attribcCs|��d�}|�|jd�dS)NzWhee!)rUr*rW)rrTr
r
r�*test_instance_docstring_given_cm_docstring�szAContextManagerTestCase.test_instance_docstring_given_cm_docstringc	Cs8tdd��}|ddddd��}|�|d�WdQRXdS)	Ncss||||fVdS)Nr
)rrMr�kwdsr
r
rr(�sz4ContextManagerTestCase.test_keywords.<locals>.woohoo���!�,)rrMrrZ)r[r\r]r^)r)r*)rr(�targetr
r
r�
test_keywords�sz$ContextManagerTestCase.test_keywordsc	s>Gdd�d�}t�fdd��}||�|�d��WdQRXdS)Nc@seZdZdS)z0ContextManagerTestCase.test_nokeepref.<locals>.AN)rr
rr
r
r
r�A�srac3s6t�|�}t�|�}��|����|��dVdS)N)�weakref�refrI)�a�b)rr
rr(�s


z5ContextManagerTestCase.test_nokeepref.<locals>.woohoo)re)r))rrar(r
)rr�test_nokeepref�sz%ContextManagerTestCase.test_nokeeprefc	Csltdd��}|�t��|�WdQRX|�t��|dd�WdQRX|�t��|dd�WdQRXdS)Ncss
dVdS)Nr
)rdrer
r
rr(�sz8ContextManagerTestCase.test_param_errors.<locals>.woohoo��)re)r)rr)rr(r
r
r�test_param_errors�sz(ContextManagerTestCase.test_param_errorscs@d�t��fdd��}|���fdd��������d�dS)Nrc3s*�}�d7�dV�d8����|�dS)Nr$)r*)Zbefore)�depthrr
rr(�s
z5ContextManagerTestCase.test_recursive.<locals>.woohoocs�dkr��dS)N�
r
r
)rj�	recursiver
rrlsz8ContextManagerTestCase.test_recursive.<locals>.recursive)r)r*)rr(r
)rjrlrr�test_recursive�s
	z%ContextManagerTestCase.test_recursiveN)rr
rr,r.r2r5r7r?rCrJrUrVr�requires_docstringsrXrYr`rfrirmr
r
r
rr#9s 
	

r#c@s*eZdZejdd��Zdd�Zdd�ZdS)�ClosingTestCasecCs tj}td�}|�|j|�dS)N)�closingrWr*)r�cm_docstring�objr
r
r�test_instance_docssz"ClosingTestCase.test_instance_docsc	sZg�G�fdd�d�}|�}|��g�t|��}|�||�WdQRX|��dg�dS)NcseZdZ�fdd�ZdS)z'ClosingTestCase.test_closing.<locals>.Ccs��d�dS)Nr$)r&)r)r'r
r�closesz-ClosingTestCase.test_closing.<locals>.C.closeN)rr
rrtr
)r'r
r�Csrur$)r*rp)rrur+�yr
)r'r�test_closings
zClosingTestCase.test_closingc
sxg�G�fdd�d�}|�}|��g�|�t��.t|��}|�||�ddWdQRXWdQRX|��dg�dS)NcseZdZ�fdd�ZdS)z-ClosingTestCase.test_closing_error.<locals>.Ccs��d�dS)Nr$)r&)r)r'r
rrt%sz3ClosingTestCase.test_closing_error.<locals>.C.closeN)rr
rrtr
)r'r
rru$srur$r)r*rr-rp)rrur+rvr
)r'r�test_closing_error"s
z"ClosingTestCase.test_closing_errorN)rr
rrrnrsrwrxr
r
r
rrosroc@seZdZdd�ZdS)�NullcontextTestCasec	Cs8Gdd�d�}|�}t|��}|�||�WdQRXdS)Nc@seZdZdS)z/NullcontextTestCase.test_nullcontext.<locals>.CN)rr
rr
r
r
rru2sru)�nullcontextr)rru�cZc_inr
r
r�test_nullcontext1s
z$NullcontextTestCase.test_nullcontextN)rr
rr|r
r
r
rry0sryc@seZdZdd�ZdS)�FileContextTestCasec
Cs�t��}z�d}t|d��}|�|j�|�d�WdQRX|�|j�d}|�t��@t|d��*}|�|j�|�	|�
�d�ddWdQRXWdQRX|�|j�Wdt�|�XdS)N�wzBooh
�rr$r)
�tempfileZmktemp�openr!�closed�writerrr-r*�readr�unlink)rZtfn�fr
r
r�testWithOpen;sz FileContextTestCase.testWithOpenN)rr
rr�r
r
r
rr}9sr}c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�LockContextTestCasec
Cs~|�|��|�|�|��WdQRX|�|��|�t��*|�|�|��ddWdQRXWdQRX|�|��dS)Nr$r)r!rrr-)r�lock�lockedr
r
r�boilerPlateOszLockContextTestCase.boilerPlatecCst��}|�||j�dS)N)�	threadingZLockr�r�)rr�r
r
r�testWithLockZsz LockContextTestCase.testWithLockcCst��}|�||j�dS)N)r��RLockr��	_is_owned)rr�r
r
r�
testWithRLock^sz!LockContextTestCase.testWithRLockcs$t����fdd�}|��|�dS)Ncs���S)N)r�r
)r�r
rr�dsz5LockContextTestCase.testWithCondition.<locals>.locked)r�Z	Conditionr�)rr�r
)r�r�testWithConditionbsz%LockContextTestCase.testWithConditioncs$t����fdd�}|��|�dS)Ncs��d�r���dSdSdS)NFT)�acquire�releaser
)r�r
rr�js
z5LockContextTestCase.testWithSemaphore.<locals>.locked)r�Z	Semaphorer�)rr�r
)r�r�testWithSemaphorehsz%LockContextTestCase.testWithSemaphorecs$t����fdd�}|��|�dS)Ncs��d�r���dSdSdS)NFT)r�r�r
)r�r
rr�ts
z<LockContextTestCase.testWithBoundedSemaphore.<locals>.locked)r�ZBoundedSemaphorer�)rr�r
)r�r�testWithBoundedSemaphorersz,LockContextTestCase.testWithBoundedSemaphoreN)	rr
rr�r�r�r�r�r�r
r
r
rr�Ms
r�c@s(eZdZdZdZdZdd�Zdd�ZdS)�	mycontextFNcCs
d|_|S)NT)�started)rr
r
rr�szmycontext.__enter__cGs||_|jS)N)rD�catch)rrDr
r
rr�szmycontext.__exit__)rr
rr�rDr�rrr
r
r
rr�}s
r�c@sbeZdZejdd��Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�ZdS)�TestContextDecoratorcCstj}t�}|�|j|�dS)N)r�rWr*)rrqrrr
r
rrs�sz'TestContextDecorator.test_instance_docsc	Cs@t�}|�}|�||�|�|j�WdQRX|�|jd�dS)N)NNN)r�rrr�r*rD)r�context�resultr
r
r�test_contextdecorator�s
z*TestContextDecorator.test_contextdecoratorc
Cs�t�}|�td��|�td��WdQRXWdQRX|�|j�|�|jdt�t�}d|_|�td��WdQRX|�|j�|�|jdt�dS)Nr0rT)r��assertRaisesRegex�	NameError�assertIsNotNonerDrr�)rr�r
r
r�$test_contextdecorator_with_exception�sz9TestContextDecorator.test_contextdecorator_with_exceptioncs0t�����fdd��}|����jd�dS)Ncs���j����j�dS)N)rIrDrr�r
)r�rr
r�test�sz1TestContextDecorator.test_decorator.<locals>.test)NNN)r�r*rD)rr�r
)r�rr�test_decorator�sz#TestContextDecorator.test_decoratorc	sXt�����fdd��}��td��|�WdQRX���j����jdt�dS)Ncs$���j����j�td��dS)Nr0)rIrDrr�r�r
)r�rr
rr��sz@TestContextDecorator.test_decorator_with_exception.<locals>.testr0r)r�r�r�r�rDr)rr�r
)r�rr�test_decorator_with_exception�sz2TestContextDecorator.test_decorator_with_exceptioncs�t��G�fdd�dt�}|�}|�dd�|�|jd�|�|jd�|�|jd�|�}|�ddd�|�|jd�|�|jd�|�|jd�|�}|jddd�|�|jd�|�|jd�dS)	NcseZdZ�ddd��ZdS)z9TestContextDecorator.test_decorating_method.<locals>.TestNcSs||_||_||_dS)N)rdrer{)rrdrer{r
r
r�method�sz@TestContextDecorator.test_decorating_method.<locals>.Test.method)N)rr
rr�r
)r�r
r�Test�sr�r$�rdrer{)rdre)r��objectr�r*rdrer{)rr�r�r
)r�r�test_decorating_method�s 	z+TestContextDecorator.test_decorating_methodc
Cs<Gdd�dt�}|�t��|��WdQRXWdQRXdS)Nc@seZdZdd�Zdd�ZdS)z7TestContextDecorator.test_typo_enter.<locals>.mycontextcSsdS)Nr
)rr
r
r�	__unter__�szATestContextDecorator.test_typo_enter.<locals>.mycontext.__unter__cWsdS)Nr
)rrDr
r
rr�sz@TestContextDecorator.test_typo_enter.<locals>.mycontext.__exit__N)rr
rr�rr
r
r
rr��sr�)�ContextDecoratorr�AttributeError)rr�r
r
r�test_typo_enter�sz$TestContextDecorator.test_typo_enterc
Cs<Gdd�dt�}|�t��|��WdQRXWdQRXdS)Nc@seZdZdd�Zdd�ZdS)z6TestContextDecorator.test_typo_exit.<locals>.mycontextcSsdS)Nr
)rr
r
rr�sz@TestContextDecorator.test_typo_exit.<locals>.mycontext.__enter__cWsdS)Nr
)rrDr
r
r�__uxit__�sz?TestContextDecorator.test_typo_exit.<locals>.mycontext.__uxit__N)rr
rrr�r
r
r
rr��sr�)r�rr�)rr�r
r
r�test_typo_exit�sz#TestContextDecorator.test_typo_exitcsRGdd�dt�}Gdd�d|t�}|�����fdd��}|����jd�dS)Nc@s$eZdZdZdZdd�Zdd�ZdS)zHTestContextDecorator.test_contextdecorator_as_mixin.<locals>.somecontextFNcSs
d|_|S)NT)r�)rr
r
rrszRTestContextDecorator.test_contextdecorator_as_mixin.<locals>.somecontext.__enter__cWs
||_dS)N)rD)rrDr
r
rrszQTestContextDecorator.test_contextdecorator_as_mixin.<locals>.somecontext.__exit__)rr
rr�rDrrr
r
r
r�somecontextsr�c@seZdZdS)zFTestContextDecorator.test_contextdecorator_as_mixin.<locals>.mycontextN)rr
rr
r
r
rr�sr�cs���j����j�dS)N)rIrDrr�r
)r�rr
rr�szATestContextDecorator.test_contextdecorator_as_mixin.<locals>.test)NNN)r�r�r*rD)rr�r�r�r
)r�rr�test_contextdecorator_as_mixin�sz3TestContextDecorator.test_contextdecorator_as_mixincsft�fdd��}g�|d���fdd��}|d����dddg�g�|d����dddg�dS)	Nc3s��|�dV��d�dS)Ni�)r&)rv)r'r
rr(s
zETestContextDecorator.test_contextmanager_as_decorator.<locals>.woohoor$cs���dg���|�dS)Nr$)r*r&)r+)rr'r
rr�szCTestContextDecorator.test_contextmanager_as_decorator.<locals>.testZ	somethingi�zsomething else)r)r*)rr(r�r
)rr'r� test_contextmanager_as_decoratorsz5TestContextDecorator.test_contextmanager_as_decoratorN)rr
rrrnrsr�r�r�r�r�r�r�r�r�r
r
r
rr��s	r�c@s�eZdZdZejdd��Zdd�Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�ZdS)(�TestBaseExitStackNcCs"|jj}|��}|�|j|�dS)N)�
exit_stackrWr*)rrqrrr
r
rrs/sz$TestBaseExitStack.test_instance_docsc	Cs|���WdQRXdS)N)r�)rr
r
r�test_no_resources6s
z#TestBaseExitStack.test_no_resourcescs�difdifdifdtdd�fdtdd�fdtdd�fdtddd�fg}g��fd	d
�}|����}xpt|�D]d\}}|r�|r�|j|f|�|�}n4|r�|j|f|��}n|r�|j|f|�}n
|�|�}|�||�qlWxH|jD]>}|�|dj|�|�|dj|j�|�	|dj
|j
�q�WWdQRX|��|�g�|���Z}|�t
��|jdd�WdQRX|�t
��|jjdd�WdQRX|j|dd
�WdQRX|��dddifg�dS)Nr
)r$)r$r�r$)Zexamplerg�)r�callbackcs��||f�dS)N)r&)rrZ)r�r
r�_exitEsz.TestBaseExitStack.test_callback.<locals>._exit)�argr�)r�r�r�)�dictr��reversedr�r�_exit_callbacks�__wrapped__ZassertNotEqualrrIrWr*rr)rZexpectedr��stackrrZr��wrapperr
)r�r�
test_callback:s@

"
zTestBaseExitStack.test_callbackc	s*t���fdd�}dd�}�fdd�}Gdd�dt�}�����}|�|���|jd	d
|�||�}|�|���|jd	d
j|�|�|���|jd	d
|�||�}|�|���|jd	d
j|�|�|���|jd	d
|�|�|���|jd	d
|�d
dWdQRXdS)Ncs��|��dS)N)r)rrD�exc_tb)�
exc_raisedrr
r�_expect_excdsz0TestBaseExitStack.test_push.<locals>._expect_exccWsdS)NTr
)�exc_detailsr
r
r�
_suppress_excfsz2TestBaseExitStack.test_push.<locals>._suppress_exccs"��|���|���|�dS)N)rI)rrDr�)rr
r�
_expect_okhs

z/TestBaseExitStack.test_push.<locals>._expect_okc@s$eZdZdd�Zdd�Zdd�ZdS)z+TestBaseExitStack.test_push.<locals>.ExitCMcSs
||_dS)N)�	check_exc)rr�r
r
r�__init__msz4TestBaseExitStack.test_push.<locals>.ExitCM.__init__cSs|�d�dS)NzShould not be called!)r<)rr
r
rrosz5TestBaseExitStack.test_push.<locals>.ExitCM.__enter__cWs|j|�dS)N)r�)rr�r
r
rrqsz4TestBaseExitStack.test_push.<locals>.ExitCM.__exit__N)rr
rr�rrr
r
r
r�ExitCMlsr����r$r)r-r�r��pushrr��__self__)rr�r�r�r�r��cmr
)r�rr�	test_pushbs*






zTestBaseExitStack.test_pushc	s�G�fdd�dt�}g�|�}|���N}|j�fdd��}|�|�|�|�|�|jddj|���d�WdQRX|�	�dddd	g�dS)
Ncs$eZdZ�fdd�Z�fdd�ZdS)z4TestBaseExitStack.test_enter_context.<locals>.TestCMcs��d�dS)Nr$)r&)r)r�r
rr�sz>TestBaseExitStack.test_enter_context.<locals>.TestCM.__enter__cs��d�dS)Nrg)r&)rr�)r�r
rr�sz=TestBaseExitStack.test_enter_context.<locals>.TestCM.__exit__N)rr
rrrr
)r�r
r�TestCM�sr�cs��d�dS)Nr�)r&r
)r�r
rr��sz3TestBaseExitStack.test_enter_context.<locals>._exitr�r$r�rgr�)
r�r�r�r��
enter_contextrr�r�r&r*)rr�r�r�r�r
)r�r�test_enter_context�s


z$TestBaseExitStack.test_enter_contextc	sZg�|���4}|j�fdd��}|�|�|����d�WdQRX|��ddg�dS)Ncs��d�dS)Nr$)r&r
)r�r
rr��sz+TestBaseExitStack.test_close.<locals>._exitr�r$)r�r�r�rtr&r*)rr�r�r
)r�r�
test_close�s

zTestBaseExitStack.test_closec	sng�|���4}|j�fdd��}|�|�|��}��d�WdQRX��d�|��|��dddg�dS)Ncs��d�dS)Nrg)r&r
)r�r
rr��sz-TestBaseExitStack.test_pop_all.<locals>._exitr$r�rg)r�r�r��pop_allr&rtr*)rr�r��	new_stackr
)r�r�test_pop_all�s


zTestBaseExitStack.test_pop_allc
CsD|�t��0|���}|�dd��ddWdQRXWdQRXdS)NcWsdS)NFr
)rDr
r
r�<lambda>��z3TestBaseExitStack.test_exit_raise.<locals>.<lambda>r$r)rr-r�r�)rr�r
r
r�test_exit_raise�s
z!TestBaseExitStack.test_exit_raisec	Cs.|���}|�dd��ddWdQRXdS)NcWsdS)NTr
)rDr
r
rr��r�z6TestBaseExitStack.test_exit_suppress.<locals>.<lambda>r$r)r�r�)rr�r
r
r�test_exit_suppress�s
z$TestBaseExitStack.test_exit_suppresscCs
Gdd�d�}Gdd�d�}Gdd�d�}y\|t��J|tt��4|��"|t��ddWdQRXWdQRXWdQRXWdQRXWnPtk
r�}z2|�|jt�|�|jjt�|�|jjj�Wdd}~XYnX|�d	�|jd}|�|t�|�|jt	�dS)
Nc@s$eZdZdd�Zdd�Zdd�ZdS)zJTestBaseExitStack.test_exit_exception_chaining_reference.<locals>.RaiseExccSs
||_dS)N)rD)rrDr
r
rr��szSTestBaseExitStack.test_exit_exception_chaining_reference.<locals>.RaiseExc.__init__cSs|S)Nr
)rr
r
rr�szTTestBaseExitStack.test_exit_exception_chaining_reference.<locals>.RaiseExc.__enter__cWs
|j�dS)N)rD)rr�r
r
rr�szSTestBaseExitStack.test_exit_exception_chaining_reference.<locals>.RaiseExc.__exit__N)rr
rr�rrr
r
r
r�RaiseExc�sr�c@s$eZdZdd�Zdd�Zdd�ZdS)zUTestBaseExitStack.test_exit_exception_chaining_reference.<locals>.RaiseExcWithContextcSs||_||_dS)N)�outer�inner)rr�r�r
r
rr��sz^TestBaseExitStack.test_exit_exception_chaining_reference.<locals>.RaiseExcWithContext.__init__cSs|S)Nr
)rr
r
rr�sz_TestBaseExitStack.test_exit_exception_chaining_reference.<locals>.RaiseExcWithContext.__enter__cWs"y
|j�Wn|j�YnXdS)N)r�r�)rr�r
r
rr�s
z^TestBaseExitStack.test_exit_exception_chaining_reference.<locals>.RaiseExcWithContext.__exit__N)rr
rr�rrr
r
r
r�RaiseExcWithContext�sr�c@seZdZdd�Zdd�ZdS)zMTestBaseExitStack.test_exit_exception_chaining_reference.<locals>.SuppressExccSs|S)Nr
)rr
r
rr�szWTestBaseExitStack.test_exit_exception_chaining_reference.<locals>.SuppressExc.__enter__cWs|t|�_dS)NT)rF�
saved_details)rr�r
r
rr�s
zVTestBaseExitStack.test_exit_exception_chaining_reference.<locals>.SuppressExc.__exit__N)rr
rrrr
r
r
r�SuppressExc�sr�r$rz0Expected IndexError, but no exception was raised)
�
IndexError�KeyErrorr��
ValueErrorrG�__context__rIr<r�r-)rr�r�r�rD�	inner_excr
r
r�&test_exit_exception_chaining_reference�s"

4"

z8TestBaseExitStack.test_exit_exception_chaining_referencec
s�dd�}d��fdd�}yZ|���H}|�|t�|�|t�|�|t�|�|�|�|t�ddWdQRXWnPtk
r�}z2|�|jt�|�|jjt�|�	|jjj�Wdd}~XYnX|�
d��d}|�|t�|�|jt�dS)NcSs|�dS)Nr
)rDr
r
r�	raise_exc�szATestBaseExitStack.test_exit_exception_chaining.<locals>.raise_exccs|�dS)NTr
)r�)r�r
r�suppress_exc�szDTestBaseExitStack.test_exit_exception_chaining.<locals>.suppress_excr$rz0Expected IndexError, but no exception was raised)r�r�r�r�r�r�r�rGr�rIr<r-)rr�r�r�rDr�r
)r�r�test_exit_exception_chaining�s&

"
z.TestBaseExitStack.test_exit_exception_chainingc
Cs�dd�}dd�}y2|��� }|�dd��|�|t�WdQRXWn.tk
rp}z|�|t�Wdd}~XYnX|�d�y:|���(}|�|t�|�|�|�|t�WdQRXWn.tk
r�}z|�|t�Wdd}~XYnX|�d�dS)	NcSs|�dS)Nr
)rDr
r
rr�szHTestBaseExitStack.test_exit_exception_non_suppressing.<locals>.raise_exccWsdS)NTr
)r�r
r
rr�szKTestBaseExitStack.test_exit_exception_non_suppressing.<locals>.suppress_exccSsdS)Nr
r
r
r
rr�r�zGTestBaseExitStack.test_exit_exception_non_suppressing.<locals>.<lambda>z0Expected IndexError, but no exception was raisedz.Expected KeyError, but no exception was raised)r�r�r�r;rGr<r�r�)rr�r�r�rDr
r
r�#test_exit_exception_non_suppressing	s"



z5TestBaseExitStack.test_exit_exception_non_suppressingc
Cs�tdd��}td�}td�}td�}td�}yF|���4}|�||��|�||��|�||��|�WdQRXWnptk
r�}zR|�||�|�|j|�|�|jj|�|�|jjj|�|�|jjjj�Wdd}~XYnXdS)Ncssz
dVWd|�XdS)Nr
)rDr
r
r�gets_the_context_right&s
zZTestBaseExitStack.test_exit_exception_with_correct_context.<locals>.gets_the_context_rightr$r�rgr�)r)r;r�r�rr�rI)rr��exc1�exc2�exc3�exc4r�rDr
r
r�(test_exit_exception_with_correct_context$s$
z:TestBaseExitStack.test_exit_exception_with_correct_contextc	
Cs�dd�}td�}td�}td�}td�}td�}y8|���&}|�|||�|�|||�|�WdQRXWn�tk
r�}zh|�||�|�|j|�|�|jj|�|�|jjj|�|�|jjjj|�|�|jjjjj�Wdd}~XYnXdS)NcSsz|�Wd|�XdS)Nr
)r�Z	outer_excr
r
r�raise_nestedFszQTestBaseExitStack.test_exit_exception_with_existing_context.<locals>.raise_nestedr$r�rgr�rh)r;r�r�rr�rI)	rr�r�r�r�r�Zexc5r�rDr
r
r�)test_exit_exception_with_existing_contextCs(
z;TestBaseExitStack.test_exit_exception_with_existing_contextc
Csddd�}y*|���}|�|�ddWdQRXWn,tk
r^}z|�d�Wdd}~XYnXdS)NcWsdS)NTr
)r�r
r
rr�`szDTestBaseExitStack.test_body_exception_suppress.<locals>.suppress_excr$rz%Expected no exception, got IndexError)r�r�r�r<)rr�r�rDr
r
r�test_body_exception_suppress_s

z.TestBaseExitStack.test_body_exception_suppressc	CsB|���0}|�dd��|�dd��|�dd��WdQRXdS)NcWsdS)NTr
)rDr
r
rr�kr�zITestBaseExitStack.test_exit_exception_chaining_suppress.<locals>.<lambda>cWsddS)Nr$rr
)rDr
r
rr�lr�cWsidS)Nr$r
)rDr
r
rr�mr�)r�r�)rr�r
r
r�%test_exit_exception_chaining_suppressis
z7TestBaseExitStack.test_exit_exception_chaining_suppressc	Cs4|���"}xtd�D]}|�t�qWWdQRXdS)Ni')r��ranger��int)rr��ir
r
r�test_excessive_nestingos
z(TestBaseExitStack.test_excessive_nestingcCsZGdd�dt�}|�}t�|_|��}|�t|j|�|�|�|�|jdd|�dS)Nc@seZdZdS)z7TestBaseExitStack.test_instance_bypass.<locals>.ExampleN)rr
rr
r
r
r�Examplevsr�r�r$)	r�rr�rr�r�r�rr�)rr�r�r�r
r
r�test_instance_bypassus
z&TestBaseExitStack.test_instance_bypassc
s�Gdd�dt��Gdd�dt�}t�fdd��}tdd��}|����:}|���&}|�|��|�|��|d	��WdQRXWdQRX|j}|�|��|�|j|�|�	|jj�|�	|jj
�|�|j
|j�dS)
Nc@seZdZdS)zITestBaseExitStack.test_dont_reraise_RuntimeError.<locals>.UniqueExceptionN)rr
rr
r
r
r�UniqueException�sr�c@seZdZdS)zLTestBaseExitStack.test_dont_reraise_RuntimeError.<locals>.UniqueRuntimeErrorN)rr
rr
r
r
r�UniqueRuntimeError�sr�c
3s<y
dVWn,tk
r6}z�d�|�Wdd}~XYnXdS)Nr$z
new exception)r;)rD)r�r
r�second�s
z@TestBaseExitStack.test_dont_reraise_RuntimeError.<locals>.secondc
ss6y
dVWn&tk
r0}z|�Wdd}~XYnXdS)Nr$)r;)rDr
r
r�first�s
z?TestBaseExitStack.test_dont_reraise_RuntimeError.<locals>.firstzplease no infinite loop.)r;r4r)rr�r�Z	exceptionrGr�rIrHr)rr�r�r�Zerr_ctxZes_ctxrDr
)r�r�test_dont_reraise_RuntimeError~s	
z0TestBaseExitStack.test_dont_reraise_RuntimeError)rr
rr�rrnrsr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
r
r
rr�,s(("
0
	r�c@seZdZeZdS)�
TestExitStackN)rr
r�	ExitStackr�r
r
r
rr��sr�c@sJeZdZdZdZejdd��Zdd�Zdd�Z	dd	�Z
d
d�Zdd
�ZdS)�TestRedirectStreamNcCs$|jj}|�d�}|�|j|�dS)N)�redirect_streamrWr*)rrqrrr
r
rrs�s
z%TestRedirectStream.test_instance_docscCs.tt|j�}|�d�|�tt|j�|�dS)N)�getattr�sys�orig_streamrr)r�orig_stdoutr
r
r�test_no_redirect_in_init�s
z+TestRedirectStream.test_no_redirect_in_initc	Csrt��}d}tt|j�}|�|��t|tt|j�d�WdQRX|�tt|j�|�|���	�}|�
||�dS)Nz<Consider an API like help(), which prints directly to stdout)�file)�io�StringIOrrrr�printr�getvalue�stripr*)rr��msgr�sr
r
r�test_redirect_to_string_io�sz-TestRedirectStream.test_redirect_to_string_ioc	Cs.t��}|�|��}|�||�WdQRXdS)N)rr	rr)rr��enter_resultr
r
r�test_enter_result_is_target�sz.TestRedirectStream.test_enter_result_is_targetc	Cs�t��}|�|�}tt|j�}|�tddtt|j�d�WdQRX|�tdtt|j�d�WdQRX|�tt|j�|�|��}|�	|d�dS)N�Hello� )�endrzWorld!)rz
Hello World!
)
rr	rrrrr
rrr*)rr��
write_to_frrr
r
r�test_cm_is_reusable�s
 z&TestRedirectStream.test_cm_is_reusablec
Cs�t��}|�|�}tt|j�}|�@tddtt|j�d�|�tdtt|j�d�WdQRXWdQRX|�tt|j�|�|��}|�	|d�dS)Nrr)rrzWorld!)rz
Hello World!
)
rr	rrrrr
rrr*)rr�rrrr
r
r�test_cm_is_reentrant�s
(z'TestRedirectStream.test_cm_is_reentrant)
rr
rrrrrnrsrrrrrr
r
r
rr�s
rc@seZdZeZdZdS)�TestRedirectStdout�stdoutN)rr
r�redirect_stdoutrrr
r
r
rr�src@seZdZeZdZdS)�TestRedirectStderr�stderrN)rr
r�redirect_stderrrrr
r
r
rr�src@sZeZdZejdd��Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dS)�TestSuppresscCstj}t�}|�|j|�dS)N)�suppressrWr*)rrqrrr
r
rrs�szTestSuppress.test_instance_docsc	Cs"tt��}|�|�WdQRXdS)N)rr�rI)rrr
r
r�test_no_result_from_enter�s
z&TestSuppress.test_no_result_from_enterc	Cs*tt��|�tdd�d�WdQRXdS)Nr�rh� )rr�r*�pow)rr
r
r�test_no_exception�s
zTestSuppress.test_no_exceptionc	Cs tt��td�WdQRXdS)Nrh)rr�len)rr
r
r�test_exact_exception�s
z!TestSuppress.test_exact_exceptionc	Cs tt��ddWdQRXdS)Nr�2)r�LookupError)rr
r
r�test_exception_hierarchy�s
z%TestSuppress.test_exception_hierarchyc
Cs6|�t��"tt��ddWdQRXWdQRXdS)Nr$r)rr-rr)rr
r
r�test_other_exceptions
z!TestSuppress.test_other_exceptionc
Cs4|�t�� t��ddWdQRXWdQRXdS)Nr$r)rr-r)rr
r
r�test_no_argsszTestSuppress.test_no_argsc	Cs@ttt��ddWdQRXttt��td�WdQRXdS)Nr$rrh)rr-rr$)rr
r
r�test_multiple_exception_args
sz)TestSuppress.test_multiple_exception_argsc
Csrtt�}|�WdQRX|�td�WdQRX|�*|�td�WdQRXd}ddWdQRX|�|�dS)NrhTr$r)rr;r$r)rZignore_exceptionsZouter_continuedr
r
rrs
z!TestSuppress.test_cm_is_reentrantN)rr
rrrnrsr r#r%r(r)r*r+rr
r
r
rr�sr�__main__)Zasynciorrr�r�Zunittest�
contextlibr�rrbZTestCaserr#roryr}r�r�r�r�r�r�rrrrr�mainr
r
r
r�<module>s8+V"	0!w96