
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a|C  ã                   @   sº   d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ ddlmZ G dd	„ d	ƒZ	G d
d„ dƒZ
G dd„ de
ƒZG dd„ dƒZG dd„ de
ƒZG dd„ de
ƒZG dd„ deƒZdS ))ÚLockÚEventÚ	ConditionÚ	SemaphoreÚBoundedSemaphoreé    Né   )Úevents)Úfutures)Ú
exceptions)Ú
coroutinesc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_ContextManagerc                 C   s
   || _ d S ©N)Ú_lock)ÚselfÚlock© r   ú2/opt/alt/python38/lib64/python3.8/asyncio/locks.pyÚ__init__"   s    z_ContextManager.__init__c                 C   s   d S r   r   ©r   r   r   r   Ú	__enter__%   s    z_ContextManager.__enter__c                 G   s   z| j  ¡  W 5 d | _ X d S r   )r   Úrelease©r   Úargsr   r   r   Ú__exit__*   s    z_ContextManager.__exit__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r      s   r   c                   @   sR   e Zd Zdd„ Zdd„ Zejdd„ ƒZej	e_	dd„ Z
d	d
„ Zdd„ Zdd„ ZdS )Ú_ContextManagerMixinc                 C   s   t dƒ‚d S )Nz9"yield from" should be used as context manager expression)ÚRuntimeErrorr   r   r   r   r   2   s    ÿz_ContextManagerMixin.__enter__c                 G   s   d S r   r   r   r   r   r   r   6   s    z_ContextManagerMixin.__exit__c                 c   s&   t jdtdd� |  ¡ E d H  t| ƒS )NzD'with (yield from lock)' is deprecated use 'async with lock' insteadé   ©Ú
stacklevel)ÚwarningsÚwarnÚDeprecationWarningÚacquirer   r   r   r   r   Ú__iter__;   s     þz_ContextManagerMixin.__iter__c                 Ã   s   |   ¡ I d H  t| ƒS r   )r%   r   r   r   r   r   Z__acquire_ctxU   s    z"_ContextManagerMixin.__acquire_ctxc                 C   s   t jdtdd� |  ¡  ¡ S )Nz='with await lock' is deprecated use 'async with lock' insteadr   r    )r"   r#   r$   Ú!_ContextManagerMixin__acquire_ctxÚ	__await__r   r   r   r   r(   Y   s
     þz_ContextManagerMixin.__await__c                 Ã   s   |   ¡ I d H  d S r   )r%   r   r   r   r   Ú
__aenter__`   s    z_ContextManagerMixin.__aenter__c                 Ã   s   |   ¡  d S r   )r   )r   Úexc_typeÚexcÚtbr   r   r   Ú	__aexit__f   s    z_ContextManagerMixin.__aexit__N)r   r   r   r   r   ÚtypesÚ	coroutiner&   r   Z_is_coroutiner'   r(   r)   r-   r   r   r   r   r   1   s   
r   c                       sJ   e Zd Zddœdd„Z‡ fdd„Zdd„ Zd	d
„ Zdd„ Zdd„ Z‡  Z	S )r   N©Úloopc                C   s:   d | _ d| _|d kr t ¡ | _n|| _tjdtdd� d S ©NFú[The loop argument is deprecated since Python 3.8, and scheduled for removal in Python 3.10.r   r    )Ú_waitersÚ_lockedr   Úget_event_loopÚ_loopr"   r#   r$   ©r   r1   r   r   r   r       s     þzLock.__init__c                    sL   t ƒ  ¡ }| jrdnd}| jr2|› dt| jƒ› �}d|dd… › d|› d�S ©	NÚlockedZunlockedú
, waiters:ú<r   éÿÿÿÿú [ú]>)ÚsuperÚ__repr__r5   r4   Úlen©r   ÚresZextra©Ú	__class__r   r   rA   «   s
    
zLock.__repr__c                 C   s   | j S r   )r5   r   r   r   r   r:   ²   s    zLock.lockedc              	   Ã   s¬   | j s.| jd ks$tdd„ | jD ƒƒr.d| _ dS | jd krBt ¡ | _| j ¡ }| j |¡ z"z|I d H  W 5 | j |¡ X W n& t	j
k
r    | j sš|  ¡  ‚ Y nX d| _ dS )Nc                 s   s   | ]}|  ¡ V  qd S r   )Ú	cancelled)Ú.0Úwr   r   r   Ú	<genexpr>½   s     zLock.acquire.<locals>.<genexpr>T)r5   r4   ÚallÚcollectionsÚdequer7   Úcreate_futureÚappendÚremover
   ÚCancelledErrorÚ_wake_up_first©r   Úfutr   r   r   r%   ¶   s&    ÿ


zLock.acquirec                 C   s"   | j rd| _ |  ¡  ntdƒ‚d S )NFzLock is not acquired.)r5   rR   r   r   r   r   r   r   Ö   s    
zLock.releasec                 C   sJ   | j s
d S ztt| j ƒƒ}W n tk
r2   Y d S X | ¡ sF| d¡ d S ©NT)r4   ÚnextÚiterÚStopIterationÚdoneÚ
set_resultrS   r   r   r   rR   ç   s    zLock._wake_up_first)
r   r   r   r   rA   r:   r%   r   rR   Ú__classcell__r   r   rE   r   r   j   s   6 r   c                       sJ   e Zd Zddœdd„Z‡ fdd„Zdd„ Zd	d
„ Zdd„ Zdd„ Z‡  Z	S )r   Nr0   c                C   s>   t  ¡ | _d| _|d kr$t ¡ | _n|| _tjdt	dd� d S r2   )
rL   rM   r4   Ú_valuer   r6   r7   r"   r#   r$   r8   r   r   r   r      s    
 þzEvent.__init__c                    sL   t ƒ  ¡ }| jrdnd}| jr2|› dt| jƒ› �}d|dd… › d|› d�S )	NÚsetZunsetr;   r<   r   r=   r>   r?   )r@   rA   r\   r4   rB   rC   rE   r   r   rA     s
    
zEvent.__repr__c                 C   s   | j S r   ©r\   r   r   r   r   Úis_set  s    zEvent.is_setc                 C   s.   | j s*d| _ | jD ]}| ¡ s| d¡ qd S rU   )r\   r4   rY   rZ   rS   r   r   r   r]     s
    
z	Event.setc                 C   s
   d| _ d S )NFr^   r   r   r   r   Úclear"  s    zEvent.clearc              	   Ã   sF   | j r
dS | j ¡ }| j |¡ z|I d H  W ¢dS | j |¡ X d S rU   )r\   r7   rN   r4   rO   rP   rS   r   r   r   Úwait(  s    

z
Event.wait)
r   r   r   r   rA   r_   r]   r`   ra   r[   r   r   rE   r   r   ÷   s   	r   c                       sN   e Zd Zdddœdd„Z‡ fdd„Zdd„ Zd	d
„ Zddd„Zdd„ Z‡  Z	S )r   Nr0   c                C   s~   |d krt  ¡ | _n|| _tjdtdd� |d kr>t|d�}n|j| jk	rRtdƒ‚|| _|j	| _	|j
| _
|j| _t ¡ | _d S )Nr3   r   r    r0   z"loop argument must agree with lock)r   r6   r7   r"   r#   r$   r   Ú
ValueErrorr   r:   r%   r   rL   rM   r4   )r   r   r1   r   r   r   r   E  s      þzCondition.__init__c                    sN   t ƒ  ¡ }|  ¡ rdnd}| jr4|› dt| jƒ› �}d|dd… › d|› d�S r9   )r@   rA   r:   r4   rB   rC   rE   r   r   rA   [  s
    
zCondition.__repr__c                 Ã   s¢   |   ¡ stdƒ‚|  ¡  z@| j ¡ }| j 	|¡ z|I d H  W ¢W ¢dS | j 
|¡ X W 5 d}z|  ¡ I d H  W q’W q^ tjk
rŽ   d}Y q^X q^|rœtj‚X d S )Nzcannot wait on un-acquired lockFT)r:   r   r   r%   r
   rQ   r7   rN   r4   rO   rP   )r   rG   rT   r   r   r   ra   b  s$    

zCondition.waitc                 Ã   s$   |ƒ }|s |   ¡ I d H  |ƒ }q|S r   )ra   )r   Z	predicateÚresultr   r   r   Úwait_for‡  s
    zCondition.wait_forr   c                 C   sJ   |   ¡ stdƒ‚d}| jD ]*}||kr* qF| ¡ s|d7 }| d¡ qd S )Nz!cannot notify on un-acquired lockr   r   F)r:   r   r4   rY   rZ   )r   ÚnÚidxrT   r   r   r   Únotify”  s    
zCondition.notifyc                 C   s   |   t| jƒ¡ d S r   )rg   rB   r4   r   r   r   r   Ú
notify_all¬  s    zCondition.notify_all)N)r   )
r   r   r   r   rA   ra   rd   rg   rh   r[   r   r   rE   r   r   ;  s   
%
r   c                       sL   e Zd Zdddœdd„Z‡ fdd„Zdd	„ Zd
d„ Zdd„ Zdd„ Z‡  Z	S )r   r   Nr0   c                C   sN   |dk rt dƒ‚|| _t ¡ | _|d kr4t ¡ | _n|| _tj	dt
dd� d S )Nr   z$Semaphore initial value must be >= 0r3   r   r    )rb   r\   rL   rM   r4   r   r6   r7   r"   r#   r$   ©r   Úvaluer1   r   r   r   r   Ä  s    
 þzSemaphore.__init__c                    sV   t ƒ  ¡ }|  ¡ rdn
d| j› �}| jr<|› dt| jƒ› �}d|dd… › d|› d�S )	Nr:   zunlocked, value:r;   r<   r   r=   r>   r?   )r@   rA   r:   r\   r4   rB   rC   rE   r   r   rA   Ñ  s
    
zSemaphore.__repr__c                 C   s,   | j r(| j  ¡ }| ¡ s | d ¡ d S q d S r   )r4   ÚpopleftrY   rZ   )r   Zwaiterr   r   r   Ú_wake_up_nextØ  s
    

zSemaphore._wake_up_nextc                 C   s
   | j dkS )Nr   r^   r   r   r   r   r:   ß  s    zSemaphore.lockedc                 Ã   st   | j dkrb| j ¡ }| j |¡ z|I d H  W q    | ¡  | j dkrX| ¡ sX|  ¡  ‚ Y q X q |  j d8  _ dS )Nr   r   T)r\   r7   rN   r4   rO   ZcancelrG   rl   rS   r   r   r   r%   ã  s    	


zSemaphore.acquirec                 C   s   |  j d7  _ |  ¡  d S )Nr   )r\   rl   r   r   r   r   r   ú  s    zSemaphore.release)r   )
r   r   r   r   rA   rl   r:   r%   r   r[   r   r   rE   r   r   µ  s   r   c                       s0   e Zd Zdddœ‡ fdd„Z‡ fdd„Z‡  ZS )	r   r   Nr0   c                   s.   |rt jdtdd� || _tƒ j||d� d S )Nr3   r   r    r0   )r"   r#   r$   Ú_bound_valuer@   r   ri   rE   r   r   r   
  s     þzBoundedSemaphore.__init__c                    s"   | j | jkrtdƒ‚tƒ  ¡  d S )Nz(BoundedSemaphore released too many times)r\   rm   rb   r@   r   r   rE   r   r   r     s    zBoundedSemaphore.release)r   )r   r   r   r   r   r[   r   r   rE   r   r     s   	r   )Ú__all__rL   r.   r"   Ú r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Ú<module>   s   "9 DzN