<!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>

]:                 @   s   d  d d d d g 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 Gd d   d  Z Gd d   d  Z	 Gd d    d  e	  Z
 Gd d   d  Z Gd d   d e	  Z Gd d   d e	  Z Gd d   d e  Z d S)LockEvent	Condition	SemaphoreBoundedSemaphore    N   )compat)events)futures)	coroutinec               @   s4   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   */opt/alt/python35/lib64/python3.5/locks.py__init__   s    z_ContextManager.__init__c             C   s   d  S)Nr   )r   r   r   r   	__enter__   s    z_ContextManager.__enter__c             G   s"   z |  j  j   Wd  d  |  _  Xd  S)N)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               @   ss   e  Z d  Z d d   Z d d   Z e d d    Z e j ro d d   Z	 e d	 d
    Z
 e d d    Z d S)_ContextManagerMixinc             C   s   t  d   d  S)Nz9"yield from" should be used as context manager expression)RuntimeError)r   r   r   r   r   ,   s    z_ContextManagerMixin.__enter__c             G   s   d  S)Nr   )r   r   r   r   r   r   0   s    z_ContextManagerMixin.__exit__c             c   s   |  j    Ed  Ht |   S)N)acquirer   )r   r   r   r   __iter__5   s    z_ContextManagerMixin.__iter__c             c   s   |  j    Ed  Ht |   S)N)r   r   )r   r   r   r   	__await__H   s    z_ContextManagerMixin.__await__c             c   s   |  j    Ed  Hd  S)N)r   )r   r   r   r   
__aenter__M   s    z_ContextManagerMixin.__aenter__c             C   s   |  j    d  S)N)r   )r   exc_typeexctbr   r   r   	__aexit__T   s    z_ContextManagerMixin.__aexit__N)r   r   r   r   r   r   r   r   ZPY35r   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 e d	 d
    Z d d   Z d d   Z	   S)r   loopNc            C   sC   t  j   |  _ d |  _ | d  k	 r0 | |  _ n t j   |  _ d  S)NF)collectionsdeque_waiters_locked_loopr	   get_event_loop)r   r$   r   r   r   r      s
    	zLock.__init__c                sb   t    j   } |  j r d n d } |  j rH d j | t |  j   } d j | d d  |  S)Nlockedunlockedz{},waiters:{}z	<{} [{}]>r   )super__repr__r(   r'   formatlen)r   resextra)	__class__r   r   r/      s
    	zLock.__repr__c             C   s   |  j  S)N)r(   )r   r   r   r   r+      s    zLock.lockedc             c   s   |  j  r3 t d d   |  j D  r3 d |  _  d S|  j j   } |  j j |  zL y | Ed  Hd |  _  d SWn+ t j k
 r |  j  s |  j     Yn XWd  |  j j	 |  Xd  S)Nc             s   s   |  ] } | j    Vq d  S)N)	cancelled).0wr   r   r   	<genexpr>   s    zLock.acquire.<locals>.<genexpr>T)
r(   allr'   r)   create_futureappendr
   CancelledError_wake_up_firstremove)r   futr   r   r   r      s    &				
zLock.acquirec             C   s/   |  j  r d |  _  |  j   n t d   d  S)NFzLock is not acquired.)r(   r=   r   )r   r   r   r   r      s    		zLock.releasec             C   s2   x+ |  j  D]  } | j   s
 | j d  Pq
 Wd  S)NT)r'   done
set_result)r   r?   r   r   r   r=      s    zLock._wake_up_first)
r   r   r   r   r/   r+   r   r   r   r=   r   r   )r4   r   r   Y   s   6c                   sj   e  Z d  Z d d d d  Z   f d d   Z d d   Z d	 d
   Z d d   Z e d d    Z	   S)r   r$   Nc            C   sC   t  j   |  _ d |  _ | d  k	 r0 | |  _ n t j   |  _ d  S)NF)r%   r&   r'   _valuer)   r	   r*   )r   r$   r   r   r   r      s
    	zEvent.__init__c                sb   t    j   } |  j r d n d } |  j rH d j | t |  j   } d j | d d  |  S)NsetZunsetz{},waiters:{}z	<{} [{}]>r   r-   )r.   r/   rB   r'   r0   r1   )r   r2   r3   )r4   r   r   r/      s
    	zEvent.__repr__c             C   s   |  j  S)N)rB   )r   r   r   r   is_set   s    zEvent.is_setc             C   sC   |  j  s? d |  _  x* |  j D] } | j   s | j d  q Wd  S)NT)rB   r'   r@   rA   )r   r?   r   r   r   rC      s
    		z	Event.setc             C   s   d |  _  d  S)NF)rB   )r   r   r   r   clear   s    zEvent.clearc             c   sU   |  j  r d S|  j j   } |  j j |  z | Ed  Hd SWd  |  j j |  Xd  S)NT)rB   r)   r:   r'   r;   r>   )r   r?   r   r   r   wait  s    		z
Event.wait)
r   r   r   r   r/   rD   rC   rE   r   rF   r   r   )r4   r   r      s   	c                   sv   e  Z d  Z d d d d d Z   f d d   Z e d d    Z e d	 d
    Z d d d  Z d d   Z	   S)r   Nr$   c            C   s   | d  k	 r | |  _  n t j   |  _  | d  k rH t d |  j   } n | j  |  j  k	 rf t d   | |  _ | j |  _ | j |  _ | j |  _ t	 j
   |  _ d  S)Nr$   z"loop argument must agree with lock)r)   r	   r*   r   
ValueErrorr   r+   r   r   r%   r&   r'   )r   r   r$   r   r   r   r     s    	zCondition.__init__c                se   t    j   } |  j   r! d n d } |  j rK d j | t |  j   } d j | d d  |  S)Nr+   r,   z{},waiters:{}z	<{} [{}]>r   r-   )r.   r/   r+   r'   r0   r1   )r   r2   r3   )r4   r   r   r/   2  s
    	zCondition.__repr__c             c   s   |  j    s t d   |  j   zH |  j j   } |  j j |  z | Ed  Hd SWd  |  j j |  XWd  x0 y |  j   Ed  HPWqp t	 j
 k
 r Yqp Xqp WXd  S)Nzcannot wait on un-acquired lockT)r+   r   r   r)   r:   r'   r;   r>   r   r
   r<   )r   r?   r   r   r   rF   9  s     
	zCondition.waitc             c   s2   |   } x" | s- |  j    Ed  H|   } q W| S)N)rF   )r   	predicateresultr   r   r   wait_for[  s
    		zCondition.wait_forr   c             C   sf   |  j    s t d   d } xA |  j D]6 } | | k r; P| j   s( | d 7} | j d  q( Wd  S)Nz!cannot notify on un-acquired lockr   r   F)r+   r   r'   r@   rA   )r   nidxr?   r   r   r   notifyi  s    
zCondition.notifyc             C   s   |  j  t |  j   d  S)N)rM   r1   r'   )r   r   r   r   
notify_all  s    zCondition.notify_all)
r   r   r   r   r/   r   rF   rJ   rM   rN   r   r   )r4   r   r     s   
"c                   sm   e  Z d  Z d d d d d Z   f d d   Z d d	   Z d
 d   Z e d d    Z d d   Z	   S)r   r   r$   Nc            C   s[   | d k  r t  d   | |  _ t j   |  _ | d  k	 rH | |  _ n t j   |  _ d  S)Nr   z$Semaphore initial value must be >= 0)rG   rB   r%   r&   r'   r)   r	   r*   )r   valuer$   r   r   r   r     s    	zSemaphore.__init__c                sq   t    j   } |  j   r! d n d j |  j  } |  j rW d j | t |  j   } d j | d d  |  S)Nr+   zunlocked,value:{}z{},waiters:{}z	<{} [{}]>r   r-   )r.   r/   r+   r0   rB   r'   r1   )r   r2   r3   )r4   r   r   r/     s    	zSemaphore.__repr__c             C   s@   x9 |  j  r; |  j  j   } | j   s | j d   d  Sq Wd  S)N)r'   popleftr@   rA   )r   waiterr   r   r   _wake_up_next  s
    zSemaphore._wake_up_nextc             C   s   |  j  d k S)Nr   )rB   )r   r   r   r   r+     s    zSemaphore.lockedc          	   c   s   x} |  j  d k r |  j j   } |  j j |  y | Ed  HWq | j   |  j  d k rt | j   rt |  j     Yq Xq W|  j  d 8_  d S)Nr   r   T)rB   r)   r:   r'   r;   cancelr5   rR   )r   r?   r   r   r   r     s    


zSemaphore.acquirec             C   s   |  j  d 7_  |  j   d  S)Nr   )rB   rR   )r   r   r   r   r     s    zSemaphore.release)
r   r   r   r   r/   rR   r+   r   r   r   r   r   )r4   r   r     s   
c                   s=   e  Z d  Z d d d   f d d Z   f d d   Z   S)r   r   r$   Nc               s#   | |  _  t   j | d | d  S)Nr$   )_bound_valuer.   r   )r   rO   r$   )r4   r   r   r     s    	zBoundedSemaphore.__init__c                s/   |  j  |  j k r t d   t   j   d  S)Nz(BoundedSemaphore released too many times)rB   rT   rG   r.   r   )r   )r4   r   r   r     s    zBoundedSemaphore.release)r   r   r   r   r   r   r   )r4   r   r     s   )__all__r%    r   r	   r
   Z
coroutinesr   r   r   r   r   r   r   r   r   r   r   r   <module>   s   .zBuM