Your IP : 3.138.113.59


Current Path : /lib64/python3.6/asyncio/__pycache__/
Upload File :
Current File : //lib64/python3.6/asyncio/__pycache__/locks.cpython-36.opt-2.pyc

3


 \�<�@s�dddddgZddlZddlmZdd	lmZdd
lmZddlmZGdd
�d
�ZGdd�d�Z	Gdd�de	�Z
Gdd�d�ZGdd�de	�ZGdd�de	�Z
Gdd�de
�ZdS)�Lock�Event�	Condition�	Semaphore�BoundedSemaphore�N�)�compat)�events)�futures)�	coroutinec@s$eZdZdd�Zdd�Zdd�ZdS)�_ContextManagercCs
||_dS)N)�_lock)�self�lock�r�%/usr/lib64/python3.6/asyncio/locks.py�__init__sz_ContextManager.__init__cCsdS)Nr)rrrr�	__enter__sz_ContextManager.__enter__cGsz|jj�Wdd|_XdS)N)r
�release)r�argsrrr�__exit__$sz_ContextManager.__exit__N)�__name__�
__module__�__qualname__rrrrrrrr
src@sNeZdZdd�Zdd�Zedd��ZejrJdd�Z	ed	d
��Z
edd��Zd
S)�_ContextManagerMixincCstd��dS)Nz9"yield from" should be used as context manager expression)�RuntimeError)rrrrr,sz_ContextManagerMixin.__enter__cGsdS)Nr)rrrrrr0sz_ContextManagerMixin.__exit__ccs|j�EdHt|�S)N)�acquirer)rrrr�__iter__5sz_ContextManagerMixin.__iter__ccs|j�EdHt|�S)N)rr)rrrr�	__await__Hsz_ContextManagerMixin.__await__ccs|j�EdHdS)N)r)rrrr�
__aenter__Msz_ContextManagerMixin.__aenter__cCs|j�dS)N)r)r�exc_type�exc�tbrrr�	__aexit__Tsz_ContextManagerMixin.__aexit__N)rrrrrrrrZPY35rrr#rrrrr+srcsNeZdZdd�dd�Z�fdd�Zdd�Zed	d
��Zdd�Zd
d�Z	�Z
S)rN)�loopcCs.tj�|_d|_|dk	r ||_n
tj�|_dS)NF)�collections�deque�_waiters�_locked�_loopr	�get_event_loop)rr$rrrr�s

z
Lock.__init__csDt�j�}|jrdnd}|jr0dj|t|j��}dj|dd�|�S)N�locked�unlockedz
{},waiters:{}z	<{} [{}]>r���)�super�__repr__r(r'�format�len)r�res�extra)�	__class__rrr/�s

z
Lock.__repr__cCs|jS)N)r()rrrrr+�szLock.lockedccs�|jr&tdd�|jD��r&d|_dS|jj�}|jj|�y"z|EdHWd|jj|�XWn&tjk
r�|js~|j	��YnXd|_dS)Ncss|]}|j�VqdS)N)�	cancelled)�.0�wrrr�	<genexpr>�szLock.acquire.<locals>.<genexpr>T)
r(�allr'r)�
create_future�append�remover
�CancelledError�_wake_up_first)r�futrrrr�s
zLock.acquirecCs"|jrd|_|j�ntd��dS)NFzLock is not acquired.)r(r>r)rrrrr�s
zLock.releasecCs>ytt|j��}Wntk
r&dSX|j�s:|jd�dS)NT)�next�iterr'�
StopIteration�done�
set_result)rr?rrrr>�szLock._wake_up_first)rrrrr/r+rrrr>�
__classcell__rr)r4rrYs6csNeZdZdd�dd�Z�fdd�Zdd�Zd	d
�Zdd�Zed
d��Z	�Z
S)rN)r$cCs.tj�|_d|_|dk	r ||_n
tj�|_dS)NF)r%r&r'�_valuer)r	r*)rr$rrrr�s

zEvent.__init__csDt�j�}|jrdnd}|jr0dj|t|j��}dj|dd�|�S)N�setZunsetz
{},waiters:{}z	<{} [{}]>rr-)r.r/rFr'r0r1)rr2r3)r4rrr/�s

zEvent.__repr__cCs|jS)N)rF)rrrr�is_set�szEvent.is_setcCs2|js.d|_x |jD]}|j�s|jd�qWdS)NT)rFr'rCrD)rr?rrrrG�s
z	Event.setcCs
d|_dS)NF)rF)rrrr�clearszEvent.clearccsB|jr
dS|jj�}|jj|�z|EdHdS|jj|�XdS)NT)rFr)r:r'r;r<)rr?rrr�wait
s

z
Event.wait)rrrrr/rHrGrIrrJrErr)r4rr�s	csVeZdZddd�dd�Z�fdd�Zedd��Zed	d
��Zddd
�Zdd�Z	�Z
S)rN)r$cCsp|dk	r||_n
tj�|_|dkr0t|jd�}n|j|jk	rDtd��||_|j|_|j|_|j|_t	j
�|_dS)N)r$z"loop argument must agree with lock)r)r	r*r�
ValueErrorr
r+rrr%r&r')rrr$rrrr+s
zCondition.__init__csFt�j�}|j�rdnd}|jr2dj|t|j��}dj|dd�|�S)Nr+r,z
{},waiters:{}z	<{} [{}]>rr-)r.r/r+r'r0r1)rr2r3)r4rrr/>s

zCondition.__repr__ccs�|j�std��|j�z8|jj�}|jj|�z|EdHdS|jj|�XWdd}x4y|j�EdHPWqXt	j
k
r�d}YqXXqXW|r�t	j
�XdS)Nzcannot wait on un-acquired lockTF)r+rrr)r:r'r;r<rr
r=)rr?r5rrrrJEs&

zCondition.waitccs(|�}x|s"|j�EdH|�}qW|S)N)rJ)rZ	predicate�resultrrr�wait_forks

zCondition.wait_forrcCsL|j�std��d}x2|jD](}||kr*P|j�s|d7}|jd�qWdS)Nz!cannot notify on un-acquired lockrrF)r+rr'rCrD)r�n�idxr?rrr�notifyyszCondition.notifycCs|jt|j��dS)N)rPr1r')rrrr�
notify_all�szCondition.notify_all)N)r)rrrrr/rrJrMrPrQrErr)r4rr!s
&
csPeZdZddd�dd�Z�fdd�Zdd	�Zd
d�Zedd
��Zdd�Z	�Z
S)rrN)r$cCs>|dkrtd��||_tj�|_|dk	r0||_n
tj�|_dS)Nrz$Semaphore initial value must be >= 0)rKrFr%r&r'r)r	r*)r�valuer$rrrr�s
zSemaphore.__init__csNt�j�}|j�rdn
dj|j�}|jr:dj|t|j��}dj|dd�|�S)Nr+zunlocked,value:{}z
{},waiters:{}z	<{} [{}]>rr-)r.r/r+r0rFr'r1)rr2r3)r4rrr/�s
zSemaphore.__repr__cCs0x*|jr*|jj�}|j�s|jd�dSqWdS)N)r'�popleftrCrD)rZwaiterrrr�
_wake_up_next�s


zSemaphore._wake_up_nextcCs
|jdkS)Nr)rF)rrrrr+�szSemaphore.lockedc	cszxf|jdkrf|jj�}|jj|�y|EdHWq|j�|jdkr\|j�r\|j��YqXqW|jd8_dS)NrrT)rFr)r:r'r;Zcancelr5rT)rr?rrrr�s

zSemaphore.acquirecCs|jd7_|j�dS)Nr)rFrT)rrrrr�szSemaphore.release)r)rrrrr/rTr+rrrrErr)r4rr�s
cs0eZdZddd��fdd�Z�fdd�Z�ZS)	rrN)r$cs||_t�j||d�dS)N)r$)�_bound_valuer.r)rrRr$)r4rrr�szBoundedSemaphore.__init__cs"|j|jkrtd��t�j�dS)Nz(BoundedSemaphore released too many times)rFrUrKr.r)r)r4rrr�szBoundedSemaphore.release)r)rrrrrrErr)r4rr�s)�__all__r%�rr	r
Z
coroutinesrrrrrrrrrrrr�<module>s.ByM