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

��g�z�@s�ddlZddlmZddlZddlZddlmZdZe�e�Z	Gdd�dej
�ZGdd�dej
�ZGd	d
�d
ej
�Z
Gdd�dej
�Zed
kr�e��dS)�N)�mock)�utilszv^<(?P<class>.*?) object at (?P<address>.*?)\[(?P<extras>(set|unset|locked|unlocked)(, value:\d)?(, waiters:\d+)?)\]>\Zcs�eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Z�ZS)!�	LockTestscst���|��|_dS)N)�super�setUp�
new_test_loop�loop)�self)�	__class__��8/usr/local/lib/python3.7/test/test_asyncio/test_locks.pyrs
zLockTests.setUpcCsDt��}tj|d�}|�|j|�tj|jd�}|�|j|j�dS)N)r)r�Mock�asyncio�Lock�assertIs�_loopr)r	r�lockrrr�test_ctor_loops
zLockTests.test_ctor_loopcCs(t�|j�t��}|�|j|j�dS)N)r�set_event_looprrrr)r	rrrr�test_ctor_noloop!szLockTests.test_ctor_noloopcs�tj�jd����t���d����t�t����tj��fdd��}�j�	|����t���d����t�t����dS)N)rz[unlocked]>c	3s$��t���EdHWdQRXdS)N)�assertWarns�DeprecationWarningr)rr	rr�acquire_lock+sz)LockTests.test_repr.<locals>.acquire_lockz	[locked]>)
rrr�
assertTrue�repr�endswith�RGX_REPR�match�	coroutine�run_until_complete)r	rr)rr	r�	test_repr&szLockTests.test_reprcsbtj�jd��tj��fdd��}�j�|��}��|����������������dS)N)rc	3s ��t���EdHSQRXdS)N)rrr)rr	rrr7sz)LockTests.test_lock.<locals>.acquire_lock)	rrrrrr�locked�release�assertFalse)r	r�resr)rr	r�	test_lock4s
zLockTests.test_lockcs�t�������tj�d�tj�d�tj�d�tj�d�g}tj��fdd��}x(|D] }��||����	|�
��qXWdS)N)rc
3s�tjd�d�EdH��|�����t��f|EdH�B}��|d���|���tjd�d�EdH��|���WdQRX��|���WdQRXdS)Ng{�G�z�?)r)rZsleepr#r!rrrr)r�_lock)rr	rr�testNsz3LockTests.test_lock_by_with_statement.<locals>.test)r�new_event_looprr�	Condition�	Semaphore�BoundedSemaphorerrr#r!)r	Z
primitivesr'Z	primitiver)rr	r�test_lock_by_with_statementDs




z%LockTests.test_lock_by_with_statementcs~tj|jd��g}|�|j�������fdd�}�fdd�}�fdd�}tj||�|jd�}tj||�|jd�}t�|j�|�	g|���
�t�|j�|�	dg|�t�|j�|�	dg|�tj||�|jd�}��
�t�|j�|�	dd	g|���
�t�|j�|�	dd	d
g|�|�|���|�|���|�|���|�|���|�|���|�|���dS)N)rc�s���IdHr|�d�dS)N�T)�acquire�append)�result)rrr�c1ds
z"LockTests.test_acquire.<locals>.c1c�s���IdHr|�d�dS)N�T)r.r/)r0)rrr�c2is
z"LockTests.test_acquire.<locals>.c2c�s���IdHr|�d�dS)N�T)r.r/)r0)rrr�c3ns
z"LockTests.test_acquire.<locals>.c3r-r2r4)
rrrrrr.�Task�
test_utils�run_briefly�assertEqualr"�doner0)r	r0r1r3r5�t1�t2�t3r)rr�test_acquire^s8zLockTests.test_acquirecCsjtj|jd�}|�|j�|����tj|��|jd�}|j�|j�|�	tj
|jj|�|�|j�dS)N)r)
rrrrrr.r6�	call_soon�cancel�assertRaises�CancelledErrorr#�_waiters)r	rZtaskrrr�test_acquire_cancel�szLockTests.test_acquire_cancelcs.tj|jd���fdd�}tj|jd�}tj|d|�|jd�}t�|j�|�����tj|dd�|jd�}t�|j�|�	t
�j�d�tj|dd�|jd�}t�|j�|�	t
�j�d�|�d�|�
�|��jd	���t�|j�|�����|�|���|�|���|�|���dS)
N)rc�s4���IdHz|dk	r"|IdHWd���XdS)N)r.r")�nameZblocker)rrr�lockit�s
z*LockTests.test_cancel_race.<locals>.lockit�A�Br-�Cr2r)rrrZFuturer6r7r8rr!r9�lenrCZ
set_resultr@�	cancelledr#r:)r	rF�fa�ta�tb�tcr)rr�test_cancel_race�s(
zLockTests.test_cancel_racecstj�jd��d�d����fdd�}���fdd�}��fdd���j�|��}�j�|����j�|��}�j�|��}t��j���|���t��j�t��j����d	����d
�����	�o�|���|�
�t��j���|�	��dS)N)rrc�s"�d7����IdH�d7�dS)Nr-)r.r)�
call_countr�
lock_countrrrF�sz2LockTests.test_cancel_release_race.<locals>.lockitc�s���IdH�j���dS)N)r.rr?r)rr	�triggerrr�lockandtrigger�sz:LockTests.test_cancel_release_race.<locals>.lockandtriggercs������dS)N)r@r"r)rr;rrrS�sz3LockTests.test_cancel_release_race.<locals>.triggerr-r4)rrrZcreate_taskr7r8rr:r9rKr@)r	rFrTZt0r<r=r)rQrrRr	r;rSr�test_cancel_release_race�s(z"LockTests.test_cancel_release_racecCs�tj|jd�}tj|��|jd�}t�|j�|�|���tj|��|jd�}t�|j�|�	t
|j�d�tj|��|jd�}|��|�
�t�|j�|�|���|�|���|�|���dS)N)rr-)rrrr6r.r7r8rr!r9rJrCr"r@r:rK)r	rrMrNrOrrr�test_finished_waiter_cancelled�sz(LockTests.test_finished_waiter_cancelledcCs tj|jd�}|�t|j�dS)N)r)rrrrA�RuntimeErrorr")r	rrrr�test_release_not_acquiredsz#LockTests.test_release_not_acquiredcCsFtj|jd�}|j�|���|�|���|��|�|���dS)N)r)	rrrrr.rr!r"r#)r	rrrr�test_release_no_waiterss
z!LockTests.test_release_no_waitersc	s\tj�jd��tj��fdd��}�j�|���������WdQRX������dS)N)rc	3s ��t���EdHSQRXdS)N)rrr)rr	rrr!sz4LockTests.test_context_manager.<locals>.acquire_lock)rrrrrrr!r#)r	rr)rr	r�test_context_managers
zLockTests.test_context_managerc
s�tj�jd��tj��fdd��}�j�|��}|�������WdQRX��������t	��|�WdQRXWdQRXdS)N)rc	3s ��t���EdHSQRXdS)N)rrr)rr	rrr.sz?LockTests.test_context_manager_cant_reuse.<locals>.acquire_lock)
rrrrrrr!r#rA�AttributeError)r	r�cmr)rr	r�test_context_manager_cant_reuse+sz)LockTests.test_context_manager_cant_reusec
Csrtj|jd�}y|�|�d�WdQRXWn2tk
r^}z|�t|�d�Wdd}~XYnX|�|���dS)N)rz-RuntimeError is not raised in with expressionz9"yield from" should be used as context manager expression)	rrr�failrWr9�strr#r!)r	r�errrrr�test_context_manager_no_yield>sz'LockTests.test_context_manager_no_yield)�__name__�
__module__�__qualname__rrrr r%r,r>rDrPrUrVrXrYrZr]ra�
__classcell__rr)r
rrs 3/0
rcs\eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Z�ZS)�
EventTestscst���|��|_dS)N)rrrr)r	)r
rrrNs
zEventTests.setUpcCsDt��}tj|d�}|�|j|�tj|jd�}|�|j|j�dS)N)r)rr
r�Eventrrr)r	r�evrrrrRs
zEventTests.test_ctor_loopcCs(t�|j�t��}|�|j|j�dS)N)rrrrgrr)r	rhrrrrZszEventTests.test_ctor_noloopcCs�tj|jd�}|�t|��d��t�t|��}|�|�	d�d�|�
�|�t|��d��|�t�t|���|j�t
���|�dt|�k�|�t�t|���dS)N)rz[unset]>�extrasZunsetz[set]>z	waiters:1)rrgrrrrrrr9�group�setrCr/rr
)r	rhrrrrr _szEventTests.test_reprcstj|jd��|�����g}�fdd�}�fdd�}�fdd�}tj||�|jd�}tj||�|jd�}t�|j�|�g|�tj||�|jd�}��	�t�|j�|�dd	d
g|�|�
|���|�|�
��|�
|���|�|�
��|�
|���|�|�
��dS)N)rc�s���IdHr|�d�dS)Nr-)�waitr/)r0)rhrrr1ssz EventTests.test_wait.<locals>.c1c�s���IdHr|�d�dS)Nr2)rlr/)r0)rhrrr3wsz EventTests.test_wait.<locals>.c2c�s���IdHr|�d�dS)Nr4)rlr/)r0)rhrrr5{sz EventTests.test_wait.<locals>.c3r4r-r2)rrgrr#�is_setr6r7r8r9rkrr:ZassertIsNoner0)r	r0r1r3r5r;r<r=r)rhr�	test_waitms(zEventTests.test_waitcCs4tj|jd�}|��|j�|���}|�|�dS)N)r)rrgrrkrrlr)r	rhr$rrr�test_wait_on_set�szEventTests.test_wait_on_setcCsTtj|jd�}tj|��|jd�}|j�|j�|�tj|jj	|�|�
|j�dS)N)r)rrgrr6rlr?r@rArBrr#rC)r	rhrlrrr�test_wait_cancel�szEventTests.test_wait_cancelcCsLtj|jd�}|�|���|��|�|���|��|�|���dS)N)r)rrgrr#rmrkr�clear)r	rhrrr�
test_clear�szEventTests.test_clearcs�tj|jd��g}�fdd�}tj||�|jd�}t�|j�|�g|�������|�	��
��������|�dt�j��t�|j�|�dg|�|�dt�j��|�
|���|�
|���dS)N)rc�s���IdHr|�d�dS)Nr-T)rlr/)r0)rhrrr1�s
z.EventTests.test_clear_with_waiters.<locals>.c1r-r)rrgrr6r7r8r9rkrqr#rmrJrCrr:r0)r	r0r1�tr)rhr�test_clear_with_waiters�s"z"EventTests.test_clear_with_waiters)
rbrcrdrrrr rnrorprrrtrerr)r
rrfLs%

rfcs�eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Z�ZS))�ConditionTestscst���|��|_dS)N)rrrr)r	)r
rrr�s
zConditionTests.setUpcCsDt��}tj|d�}|�|j|�tj|jd�}|�|j|j�dS)N)r)rr
rr)rrr)r	r�condrrrr�s
zConditionTests.test_ctor_loopcCs(t�|j�t��}|�|j|j�dS)N)rrrr)rr)r	rvrrrr�szConditionTests.test_ctor_noloopcs�tj|jd��g}�fdd�}�fdd�}�fdd�}tj||�|jd�}tj||�|jd�}tj||�|jd�}t�|j�|�g|�|�����|�	|j�
��������t�|j�|�g|�|�	������
�t�|j�|�dg|�|�	������d	�t�|j�|�dg|�|�	������
�t�|j�|�dd	g|�|�	������
�t�|j�|�dd	d
g|�|�	����|�	|���|�	|���|�	|���|�	|���|�	|���|�	|���dS)N)rc�s*���IdH���IdHr&|�d�dS)Nr-T)r.rlr/)r0)rvrrr1�s
z$ConditionTests.test_wait.<locals>.c1c�s*���IdH���IdHr&|�d�dS)Nr2T)r.rlr/)r0)rvrrr3�s
z$ConditionTests.test_wait.<locals>.c2c�s*���IdH���IdHr&|�d�dS)Nr4T)r.rlr/)r0)rvrrr5�s
z$ConditionTests.test_wait.<locals>.c3r-r2r4)rr)rr6r7r8r9r#r!rrr.�notifyr"r:r0)r	r0r1r3r5r;r<r=r)rvrrn�sL
zConditionTests.test_waitcCsrtj|jd�}|j�|���tj|��|jd�}|j�|j�|�	tj
|jj|�|�|j�|�
|���dS)N)r)rr)rrr.r6rlr?r@rArBr#rCrr!)r	rvrlrrrrpszConditionTests.test_wait_cancelcCs�tj|jd�}|j�|���|�|���tj|��|jd�}t	�
|j�|�|���|j�|���|�|���|��|j�
|j�|j�
|j�y|j�|�Wntjk
r�YnX|�|���dS)N)r)rr)rrr.rr!r6rlr7r8r#rwr?r@r"rB)r	rvZ	wait_taskrrr�test_wait_cancel_contested(s z)ConditionTests.test_wait_cancel_contestedcs�tj|jd��d���fdd�}tj|�|jd�}t�|j�|j��������t�|j�|�	�t�|j���
�t�|j�|�|���|���dS)N)rFc
�s4�4IdH�d����IdHWdQIdHRXdS)NT)rlr)rv�waitedrr�wait_on_condFszBConditionTests.test_wait_cancel_after_notify.<locals>.wait_on_cond)
rr)rZ
ensure_futurer7r8rr.rwr@r"rrK)r	rz�waiterr)rvryr�test_wait_cancel_after_notifyAsz,ConditionTests.test_wait_cancel_after_notifycCs(tj|jd�}|�t|jj|���dS)N)r)rr)rrArWrrl)r	rvrrr�test_wait_unacquiredZsz#ConditionTests.test_wait_unacquiredcs�tj|jd��d��fdd��g}��fdd�}tj||�|jd�}t�|j�|�g|�|j�������	���
�t�|j�|�g|�d�|j�������	���
�t�|j�|�dg|�|�|���|�|�
��dS)	N)rFcs�S)Nrr)�presultrr�	predicatedsz/ConditionTests.test_wait_for.<locals>.predicatec�s4���IdH����IdHr0|�d����dS)Nr-T)r.�wait_forr/r")r0)rvrrrr1is

z(ConditionTests.test_wait_for.<locals>.c1Tr-)rr)rr6r7r8r9rr.rwr"rr:r0)r	r0r1rsr)rvrr~r�
test_wait_for`s*zConditionTests.test_wait_forcCsVtj|jd�}|j�|�dd���}|�dddg|�|�t|jj|�dd���dS)N)rcSs
dddgS)Nr-r2r4rrrrr�<lambda>��z9ConditionTests.test_wait_for_unacquired.<locals>.<lambda>r-r2r4cSsdS)NFrrrrrr��r�)rr)rrr�r9rArW)r	rvr$rrr�test_wait_for_unacquired�sz'ConditionTests.test_wait_for_unacquiredcshtj|jd��g}�fdd�}�fdd�}�fdd�}tj||�|jd�}tj||�|jd�}tj||�|jd�}t�|j�|�g|�|j�������	d���
�t�|j�|�dg|�|j�������	d���	d	���
�t�|j�|�dd
dg|�|�|���|�|�
��|�|���|�|�
��|�|���|�|�
��dS)N)rc�s2���IdH���IdHr.|�d����dS)Nr-T)r.rlr/r")r0)rvrrr1�s

z&ConditionTests.test_notify.<locals>.c1c�s2���IdH���IdHr.|�d����dS)Nr2T)r.rlr/r")r0)rvrrr3�s

z&ConditionTests.test_notify.<locals>.c2c�s2���IdH���IdHr.|�d����dS)Nr4T)r.rlr/r")r0)rvrrr5�s

z&ConditionTests.test_notify.<locals>.c3r-ir2r4)rr)rr6r7r8r9rr.rwr"rr:r0)r	r0r1r3r5r;r<r=r)rvr�test_notify�s6


zConditionTests.test_notifycs�tj|jd��g}�fdd�}�fdd�}tj||�|jd�}tj||�|jd�}t�|j�|�g|�|j�������	���
�t�|j�|�ddg|�|�|���|�|�
��|�|���|�|�
��dS)N)rc�s2���IdH���IdHr.|�d����dS)Nr-T)r.rlr/r")r0)rvrrr1�s

z*ConditionTests.test_notify_all.<locals>.c1c�s2���IdH���IdHr.|�d����dS)Nr2T)r.rlr/r")r0)rvrrr3�s

z*ConditionTests.test_notify_all.<locals>.c2r-r2)rr)rr6r7r8r9rr.�
notify_allr"rr:r0)r	r0r1r3r;r<r)rvr�test_notify_all�s"zConditionTests.test_notify_allcCs tj|jd�}|�t|j�dS)N)r)rr)rrArWrw)r	rvrrr�test_notify_unacquired�sz%ConditionTests.test_notify_unacquiredcCs tj|jd�}|�t|j�dS)N)r)rr)rrArWr�)r	rvrrr�test_notify_all_unacquired�sz)ConditionTests.test_notify_all_unacquiredcCs�tj|jd�}|�dt|�k�|�t�t|���|j�|���|�dt|�k�|j	�
t���|�dt|�k�|�t�t|���|j	�
t���|�dt|�k�|�t�t|���dS)N)rZunlockedr!z	waiters:1z	waiters:2)
rr)rrrrrrr.rCr/rr
)r	rvrrrr �szConditionTests.test_reprc	s\tj�jd��tj��fdd��}�j�|���������WdQRX������dS)N)rc	3s ��t���EdHSQRXdS)N)rrr)rvr	rr�acquire_condsz9ConditionTests.test_context_manager.<locals>.acquire_cond)rr)rrrrr!r#)r	r�r)rvr	rrZs
z#ConditionTests.test_context_managerc
Csrtj|jd�}y|�|�d�WdQRXWn2tk
r^}z|�t|�d�Wdd}~XYnX|�|���dS)N)rz-RuntimeError is not raised in with expressionz9"yield from" should be used as context manager expression)	rr)rr^rWr9r_r#r!)r	rvr`rrrrasz,ConditionTests.test_context_manager_no_yieldcCs@tj|jd�}tj||jd�}|�|j|�|�|j|j�dS)N)r)rrrr)rr&r)r	rrvrrr�test_explicit_locksz!ConditionTests.test_explicit_lockc	CsJ|��}|�|j�tj|jd�}|�t��tj||d�WdQRXdS)N)r)	r�
addCleanup�closerrrrA�
ValueErrorr))r	rrrrr�test_ambiguous_loops"s
z#ConditionTests.test_ambiguous_loopscs2t������j���fdd�}��|��dS)Nc
�s`tj�d�}|4IdH�8��tj�� tj|��d�d�IdHWdQRXWdQIdHRXdS)N)rg�?)Ztimeoutr)rr)rA�TimeoutErrorr�rl)Z	condition)rr	rr�task_timeout.s
z:ConditionTests.test_timeout_in_block.<locals>.task_timeout)rr(r�r�r)r	r�r)rr	r�test_timeout_in_block*sz$ConditionTests.test_timeout_in_block)rbrcrdrrrrnrprxr|r}r�r�r�r�r�r�r rZrar�r�r�rerr)r
rru�s(?%4$

rucs�eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Z�ZS)�SemaphoreTestscst���|��|_dS)N)rrrr)r	)r
rrr:s
zSemaphoreTests.setUpcCsDt��}tj|d�}|�|j|�tj|jd�}|�|j|j�dS)N)r)rr
rr*rrr)r	r�semrrrr>s
zSemaphoreTests.test_ctor_loopcCs(t�|j�t��}|�|j|j�dS)N)rrrr*rr)r	r�rrrrFszSemaphoreTests.test_ctor_noloopcCs"tjd|jd�}|�|���dS)Nr)r)rr*rrr!)r	r�rrr�test_initial_value_zeroKsz&SemaphoreTests.test_initial_value_zerocCs�tj|jd�}|�t|��d��|�t�t|���|j�|�	��|�t|��d��|�dt|�k�|�t�t|���|j
�t�
��|�dt|�k�|�t�t|���|j
�t�
��|�dt|�k�|�t�t|���dS)N)rz[unlocked, value:1]>z	[locked]>�waitersz	waiters:1z	waiters:2)rr*rrrrrrrr.rCr/rr
)r	r�rrrr OszSemaphoreTests.test_reprcs�tj�jd����d�j�tj��fdd��}�j�|��}��|���������d�j���	���
������d�j�dS)N)rr-c	3s ��t���EdHSQRXdS)N)rrr)r	r�rrresz3SemaphoreTests.test_semaphore.<locals>.acquire_lockr)rr*rr9�_valuerrrr!r"r#)r	rr$r)r	r�r�test_semaphoreas
zSemaphoreTests.test_semaphorecCs|�ttjd�dS)N���)rAr�rr*)r	rrr�test_semaphore_valuetsz#SemaphoreTests.test_semaphore_valuecs�tjd|jd��g}|�|j������|�|j������|������fdd�}�fdd�}�fdd�}�fd	d
�}tj||�|jd�}tj||�|jd�}tj||�|jd�}t	�
|j�|�dg|�|�����|�dt�j
��|�d
�j�tj||�|jd�}	������|�d�j�t	�
|j�|�d
�j�|�dt|��|�����|�dt�j
��|�d
�j�|�|���|�|���|||	g}
dd�|
D�}|�dt|�����|j�tj|
��dS)Nr4)rc�s���IdH|�d�dS)Nr-T)r.r/)r0)r�rrr1s
z'SemaphoreTests.test_acquire.<locals>.c1c�s���IdH|�d�dS)Nr2T)r.r/)r0)r�rrr3�s
z'SemaphoreTests.test_acquire.<locals>.c2c�s���IdH|�d�dS)Nr4T)r.r/)r0)r�rrr5�s
z'SemaphoreTests.test_acquire.<locals>.c3c�s���IdH|�d�dS)N�T)r.r/)r0)r�rr�c4�s
z'SemaphoreTests.test_acquire.<locals>.c4r-r2rcSs g|]}|��r|��r|�qSr)r:r0)�.0rsrrr�
<listcomp>�sz/SemaphoreTests.test_acquire.<locals>.<listcomp>)rr*rrrr.r#r!r6r7r8r9rJrCr�r"r:r0Zgather)r	r0r1r3r5r�r;r<r=�t4Z
race_tasksZ
done_tasksr)r�rr>wsD
zSemaphoreTests.test_acquirecCsztj|jd�}|j�|���tj|��|jd�}|j�|j�|�tj	|jj|�|�
|jprtdd�|jD���dS)N)rcss|]}|��VqdS)N)r:)r�r{rrr�	<genexpr>�sz5SemaphoreTests.test_acquire_cancel.<locals>.<genexpr>)
rr*rrr.r6r?r@rArBrrC�all)r	r�r.rrrrD�sz"SemaphoreTests.test_acquire_cancelcCs�tjd|jd�}tj|��|jd�}tj|��|jd�}tj|��|jd�}tj|��|jd�}t�|j�|��|��|��t�|j�t	dd�||gD��}|�
|d�|��|��t�|j�dS)Nr)�valuer)rcss|]}|��VqdS)N)r:)r�rsrrrr��szCSemaphoreTests.test_acquire_cancel_before_awoken.<locals>.<genexpr>r-)rr*rr6r.r7r8r"r@�sumr9)r	r�r;r<r=r�Znum_donerrr�!test_acquire_cancel_before_awoken�sz0SemaphoreTests.test_acquire_cancel_before_awokencCsrtjd|jd�}tj|��|jd�}tj|��|jd�}t�|j�|��|��t�|j�|�	|�
��dS)Nr)r�r)r)rr*rr6r.r7r8r"r@rr!)r	r�r;r<rrr�test_acquire_hang�sz SemaphoreTests.test_acquire_hangcCs tj|jd�}|�t|j�dS)N)r)rr+rrAr�r")r	r�rrrrX�sz(SemaphoreTests.test_release_not_acquiredcCsFtj|jd�}|j�|���|�|���|��|�|���dS)N)r)	rr*rrr.rr!r"r#)r	r�rrrrY�s
z&SemaphoreTests.test_release_no_waitersc
s�tjd�jd��tj��fdd��}�j�|���J��������d�j��j�|�����	����WdQRXWdQRX��d�j�dS)Nr2)rc	3s ��t���EdHSQRXdS)N)rrr)r	r�rrr�sz9SemaphoreTests.test_context_manager.<locals>.acquire_lockr-)
rr*rrrr#r!r9r�r)r	rr)r	r�rrZ�s"z#SemaphoreTests.test_context_managerc
Csttjd|jd�}y|�|�d�WdQRXWn2tk
r`}z|�t|�d�Wdd}~XYnX|�d|j�dS)Nr2)rz-RuntimeError is not raised in with expressionz9"yield from" should be used as context manager expression)rr*rr^rWr9r_r�)r	r�r`rrrrasz,SemaphoreTests.test_context_manager_no_yield)rbrcrdrrrr�r r�r�r>rDr�r�rXrYrZrarerr)r
rr�8s=r��__main__)Zunittestr�rerZtest.test_asynciorr7ZSTR_RGX_REPR�compilerZTestCaserrfrur�rb�mainrrrr�<module>s"
;~pY