Ñò
$8Zc           @   sž  d  d d d d d g Z  d d k Z d d k Z d d k Z d d k l Z l Z d d k Z d d	 k	 l
 Z
 d d
 k l Z l Z l Z d d k l Z l Z y d d k l Z Wn+ e j
 o e d d d d ƒ ‚ n Xe d ƒ \ Z Z e i i Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d  e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   t   Lockt   RLockt	   Semaphoret   BoundedSemaphoret	   Conditiont   EventiÿÿÿÿN(   t   timet   sleep(   t   current_process(   t   Finalizet   register_after_forkt   debug(   t   assert_spawningt   Popen(   t   SemLocks*   This platform lacks a functioning sem_opens(    implementation, therefore, the requireds+    synchronization primitives needed will nots    function, see issue 3770.i   R   c           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   se   t  i | | | ƒ } |  _ t d | i ƒ |  i ƒ  t i d j o d „  } t |  | ƒ n d  S(   Ns   created semlock with handle %st   win32c         S   s   |  i  i ƒ  d  S(   N(   t   _semlockt   _after_fork(   t   obj(    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR   6   s    (	   t   _multiprocessingR   R   R   t   handlet   _make_methodst   syst   platformR
   (   t   selft   kindt   valuet   maxvaluet   slR   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyt   __init__0   s    
	c         C   s@   |  i  i |  _ |  i  i |  _ |  i  i |  _ |  i  i |  _ d  S(   N(   R   t   acquiret   releaset	   __enter__t   __exit__(   R   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR   :   s    c         C   s2   t  |  ƒ |  i } t i | i ƒ | i | i f S(   N(   R   R   R   t   duplicate_for_childR   R   R   (   R   R   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyt   __getstate__@   s    
	c         C   s5   t  i i | Œ  |  _ t d | d ƒ |  i ƒ  d  S(   Ns    recreated blocker with handle %ri    (   R   R   t   _rebuildR   R   R   (   R   t   state(    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyt   __setstate__E   s    (   t   __name__t
   __module__R   R   R#   R&   (    (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR   .   s   	
		c           B   s&   e  Z d  d „ Z d „  Z d „  Z RS(   i   c         C   s   t  i |  t | t ƒ d  S(   N(   R   R   t	   SEMAPHOREt   SEM_VALUE_MAX(   R   R   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR   P   s    c         C   s   |  i  i ƒ  S(   N(   R   t
   _get_value(   R   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyt	   get_valueS   s    c         C   s7   y |  i  i ƒ  } Wn t j
 o d } n Xd | S(   Nt   unknowns   <Semaphore(value=%s)>(   R   R+   t	   Exception(   R   R   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyt   __repr__V   s
    (   R'   R(   R   R,   R/   (    (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR   N   s   	c           B   s   e  Z d  d „ Z d „  Z RS(   i   c         C   s   t  i |  t | | ƒ d  S(   N(   R   R   R)   (   R   R   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR   c   s    c         C   sC   y |  i  i ƒ  } Wn t j
 o d } n Xd | |  i  i f S(   NR-   s)   <BoundedSemaphore(value=%s, maxvalue=%s)>(   R   R+   R.   R   (   R   R   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR/   f   s    (   R'   R(   R   R/   (    (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR   a   s   c           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   t  i |  t d d ƒ d  S(   Ni   (   R   R   R)   (   R   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR   t   s    c         C   s¿   y› |  i  i ƒ  oA t ƒ  i } t i ƒ  i d j o | d t i ƒ  i 7} qš nG |  i  i ƒ  d j o
 d } n' |  i  i ƒ  d j o
 d } n d } Wn t j
 o d } n Xd	 | S(
   Nt
   MainThreadt   |i   t   Nonei    t   SomeOtherThreadt   SomeOtherProcessR-   s   <Lock(owner=%s)>(	   R   t   _is_mineR   t   namet	   threadingt   current_threadR+   t   _countR.   (   R   R6   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR/   w   s    


(   R'   R(   R   R/   (    (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR    r   s   	c           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   t  i |  t d d ƒ d  S(   Ni   (   R   R   t   RECURSIVE_MUTEX(   R   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR      s    c         C   sì   y¼ |  i  i ƒ  oP t ƒ  i } t i ƒ  i d j o | d t i ƒ  i 7} n |  i  i ƒ  } nY |  i  i ƒ  d j o d \ } } n3 |  i  i ƒ  d j o d \ } } n d \ } } Wn t j
 o d \ } } n Xd
 | | f S(   NR0   R1   i   R2   i    R3   t   nonzeroR4   R-   s   <RLock(%s, %s)>(   s   Nonei    (   s   SomeOtherThreadR;   (   s   SomeOtherProcessR;   (   s   unknowns   unknown(	   R   R5   R   R6   R7   R8   R9   R+   R.   (   R   R6   t   count(    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR/      s    (   R'   R(   R   R/   (    (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR   ‹   s   	c           B   sV   e  Z d d  „ Z d „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z	 d „  Z
 RS(	   c         C   sN   | p t  ƒ  |  _ t d ƒ |  _ t d ƒ |  _ t d ƒ |  _ |  i ƒ  d  S(   Ni    (   R   t   _lockR   t   _sleeping_countt   _woken_countt   _wait_semaphoreR   (   R   t   lock(    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR   §   s
    c         C   s&   t  |  ƒ |  i |  i |  i |  i f S(   N(   R   R=   R>   R?   R@   (   R   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR#   ®   s    
c         C   s,   | \ |  _  |  _ |  _ |  _ |  i ƒ  d  S(   N(   R=   R>   R?   R@   R   (   R   R%   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR&   ³   s    c         C   s@   |  i  i |  _ |  i  i |  _ |  i  i |  _ |  i  i |  _ d  S(   N(   R=   R   R   R    R!   (   R   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR   ¸   s    c         C   sS   y& |  i  i i ƒ  |  i i i ƒ  } Wn t j
 o d } n Xd |  i | f S(   Nt   unkowns   <Condition(%s, %s)>(   R>   R   R+   R?   R.   R=   (   R   t   num_waiters(    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR/   ¾   s    c         C   s°   |  i  i i ƒ  p
 t d ‚ |  i i ƒ  |  i  i i ƒ  } x! t | ƒ D] } |  i  i ƒ  qI Wz |  i i	 t
 | ƒ Wd  |  i i ƒ  x! t | ƒ D] } |  i  i	 ƒ  q” WXd  S(   Ns,   must acquire() condition before using wait()(   R=   R   R5   t   AssertionErrorR>   R   R9   t   xrangeR@   R   t   TrueR?   (   R   t   timeoutR<   t   i(    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyt   waitÆ   s      c         C   s¸   |  i  i i ƒ  p
 t d ‚ |  i i t ƒ p t ‚ x8 |  i i t ƒ o$ |  i i t ƒ } | p t ‚ q; W|  i i t ƒ o. |  i i	 ƒ  |  i i ƒ  |  i i t ƒ n d  S(   Ns   lock is not owned(
   R=   R   R5   RD   R@   R   t   FalseR?   R>   R   (   R   t   res(    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyt   notifyÝ   s     c         C   sù   |  i  i i ƒ  p
 t d ‚ |  i i t ƒ p t ‚ x8 |  i i t ƒ o$ |  i i t ƒ } | p t ‚ q; Wd } x/ |  i i t ƒ o |  i i	 ƒ  | d 7} q| W| oC x! t
 | ƒ D] } |  i i ƒ  q¿ Wx |  i i t ƒ o qÙ Wn d  S(   Ns   lock is not ownedi    i   (   R=   R   R5   RD   R@   R   RJ   R?   R>   R   RE   (   R   RK   t   sleepersRH   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyt
   notify_allî   s$        N(   R'   R(   R2   R   R#   R&   R   R/   RI   RL   RN   (    (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR   ¥   s   					c           B   s8   e  Z d  „  Z d „  Z d „  Z d „  Z d d „ Z RS(   c         C   s%   t  t ƒ  ƒ |  _ t d ƒ |  _ d  S(   Ni    (   R   R    t   _condR   t   _flag(   R   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR     s    c         C   sO   |  i  i ƒ  z- |  i i t ƒ o |  i i ƒ  t St SWd  |  i  i ƒ  Xd  S(   N(   RO   R   RP   RJ   R   RF   (   R   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyt   is_set  s    c         C   sP   |  i  i ƒ  z. |  i i t ƒ |  i i ƒ  |  i  i ƒ  Wd  |  i  i ƒ  Xd  S(   N(   RO   R   RP   RJ   R   RN   (   R   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyt   set  s    c         C   s6   |  i  i ƒ  z |  i i t ƒ Wd  |  i  i ƒ  Xd  S(   N(   RO   R   RP   RJ   R   (   R   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyt   clear"  s    c         C   sZ   |  i  i ƒ  z8 |  i i t ƒ o |  i i ƒ  n |  i  i | ƒ Wd  |  i  i ƒ  Xd  S(   N(   RO   R   RP   RJ   R   RI   (   R   RG   (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyRI   )  s    N(   R'   R(   R   RQ   RR   RS   R2   RI   (    (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyR   	  s
   		
			(   t   __all__R7   t   osR   R   t   _timeR   t   _sleepR   t   multiprocessing.processR   t   multiprocessing.utilR	   R
   R   t   multiprocessing.forkingR   R   R   t   ImportErrort   rangeR:   R)   R*   t   objectR   R   R    R   R   R   (    (    (    s1   /usr/lib/python2.6/multiprocessing/synchronize.pyt   <module>
   s.    d