<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
a
    XC?hM;                     @   s   d Z ddlZddlZddlmZ ddlm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)
exceptionsc                   @   s   e Zd Zdd Zdd ZdS )_ContextManagerMixinc                    s   |   I d H  d S N)acquireself r   2/opt/alt/python39/lib64/python3.9/asyncio/locks.py
__aenter__   s    z_ContextManagerMixin.__aenter__c                    s   |    d S r   )release)r   exc_typeexctbr   r   r   	__aexit__   s    z_ContextManagerMixin.__aexit__N)__name__
__module____qualname__r   r   r   r   r   r   r
      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 u 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.   
stacklevel)_waiters_lockedr   get_event_loop_loopwarningswarnDeprecationWarningr   r   r   r   r   __init__M   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__r"   r!   lenr   resZextra	__class__r   r   r2   X   s
    
zLock.__repr__c                 C   s   | j S r   )r"   r   r   r   r   r+   _   s    zLock.lockedc              	      s   | j s.| jd u s$tdd | jD r.d| _ dS | jd u rBt | _| j }| j| z.z|I d H  W | j| n| j| 0 W n$ t	j
y   | j s|    Y n0 d| _ dS )Nc                 s   s   | ]}|  V  qd S r   )	cancelled).0wr   r   r   	<genexpr>j       zLock.acquire.<locals>.<genexpr>T)r"   r!   allcollectionsdequer$   create_futureappendremover	   CancelledError_wake_up_firstr   futr   r   r   r   c   s&    


 zLock.acquirec                 C   s"   | j rd| _ |   ntdd S )NFzLock is not acquired.)r"   rD   RuntimeErrorr   r   r   r   r      s    
zLock.releasec                 C   sH   | j s
d S ztt| j }W n ty0   Y d S 0 | sD|d d S NT)r!   nextiterStopIterationdone
set_resultrE   r   r   r   rD      s    zLock._wake_up_first)
r   r   r   r)   r2   r+   r   r   rD   __classcell__r   r   r6   r   r      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   Nr   c                C   s>   t  | _d| _|d u r$t | _n|| _tjdt	dd d S r   )
r>   r?   r!   _valuer   r#   r$   r%   r&   r'   r(   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/   r0   )r1   r2   rO   r!   r3   r4   r6   r   r   r2      s
    
zEvent.__repr__c                 C   s   | j S r   rO   r   r   r   r   is_set   s    zEvent.is_setc                 C   s.   | j s*d| _ | jD ]}| s|d qd S rH   )rO   r!   rL   rM   rE   r   r   r   rP      s
    
z	Event.setc                 C   s
   d| _ d S )NFrQ   r   r   r   r   clear   s    zEvent.clearc              	      sP   | j r
dS | j }| j| z|I d H  W | j| dS | j| 0 d S rH   )rO   r$   r@   r!   rA   rB   rE   r   r   r   wait   s    

z
Event.wait)
r   r   r   r)   r2   rR   rP   rS   rT   rN   r   r   r6   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   Nr   c                C   s~   |d u rt  | _n|| _tjdtdd |d u r>t|d}n|j| jurRtd|| _|j	| _	|j
| _
|j| _t | _d S )Nr   r   r   r   z"loop argument must agree with lock)r   r#   r$   r%   r&   r'   r   
ValueError_lockr+   r   r   r>   r?   r!   )r   lockr   r   r   r   r)      s    zCondition.__init__c                    sN   t   }|  rdnd}| jr4| dt| j }d|dd  d| dS r*   )r1   r2   r+   r!   r3   r4   r6   r   r   r2     s
    
zCondition.__repr__c                    s.  |   std|   z| j }| j| z^|I d H  W | j| W d}z|  I d H  W qW qP t	j
y~   d}Y qP0 qP|rt	j
dS | j| 0 W d}z|  I d H  W qW q t	j
y   d}Y q0 q|rt	j
nHd}z|  I d H  W qW q t	j
y   d}Y q0 q|r(t	j
0 d S )Nzcannot wait on un-acquired lockFT)r+   rG   r   r$   r@   r!   rA   rB   r   r	   rC   )r   rF   r8   r   r   r   rT     sJ    


zCondition.waitc                    s$   | }|s |   I d H  | }q|S r   )rT   )r   Z	predicateresultr   r   r   wait_for4  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+   rG   r!   rL   rM   )r   nidxrF   r   r   r   notifyA  s    
zCondition.notifyc                 C   s   |  t| j d S r   )r\   r3   r!   r   r   r   r   
notify_allY  s    zCondition.notify_all)N)r   )
r   r   r   r)   r2   rT   rY   r\   r]   rN   r   r   r6   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   Nr   c                C   sT   |dk rt d|| _t | _|d u r4t | _n|| _tj	dt
dd d| _d S )Nr   z$Semaphore initial value must be >= 0r   r   r   F)rU   rO   r>   r?   r!   r   r#   r$   r%   r&   r'   _wakeup_scheduledr   valuer   r   r   r   r)   q  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/   r0   )r1   r2   r+   rO   r!   r3   r4   r6   r   r   r2     s
    
zSemaphore.__repr__c                 C   s2   | j r.| j  }| s |d  d| _d S q d S rH   )r!   popleftrL   rM   r^   )r   Zwaiterr   r   r   _wake_up_next  s    

zSemaphore._wake_up_nextc                 C   s
   | j dkS )Nr   rQ   r   r   r   r   r+     s    zSemaphore.lockedc                    sn   | j s| jdkr\| j }| j| z|I d H  d| _ W q  tjyX   |    Y q 0 q |  jd8  _dS )Nr   Fr   T)	r^   rO   r$   r@   r!   rA   r	   rC   rb   rE   r   r   r   r     s    



zSemaphore.acquirec                 C   s   |  j d7  _ |   d S )Nr   )rO   rb   r   r   r   r   r     s    zSemaphore.release)r   )
r   r   r   r)   r2   rb   r+   r   r   rN   r   r   r6   r   r   b  s   r   c                       s0   e Zd Zddd fddZ fddZ  ZS )	r   r   Nr   c                   s.   |rt jdtdd || _t j||d d S )Nr   r   r   r   )r%   r&   r'   _bound_valuer1   r)   r_   r6   r   r   r)     s    zBoundedSemaphore.__init__c                    s"   | j | jkrtdt   d S )Nz(BoundedSemaphore released too many times)rO   rc   rU   r1   r   r   r6   r   r   r     s    zBoundedSemaphore.release)r   )r   r   r   r)   r   rN   r   r   r6   r   r     s   	r   )__all__r>   r%    r   r	   r
   r   r   r   r   r   r   r   r   r   <module>   s    DzQ