
"Ic           @   s-  d  Z  d d k Z y d d k Z Wn  e j
 o e i e =  n Xd d k Z d d k l	 Z	 d d k
 l
 Z l Z d d k l Z d d k l Z d d d	 d
 d d d d d d d d d d d d d g Z e i Z e i Z e i Z e i Z [ e i d d e d d d d e Z d e  f d     YZ! e" a# e" a$ d    Z% d!   Z& e Z' d"   Z( d# e! f d$     YZ) d%   Z* d& e! f d'     YZ+ d(   Z, d) e! f d*     YZ- d+   Z. d, e- f d-     YZ/ d.   Z0 d/ e! f d0     YZ1 d1 a2 d2 d3  Z3 e   a4 h  Z5 h  Z6 d e! f d4     YZ7 d5   Z8 d6 e7 f d7     YZ9 d8 e7 f d9     YZ: d:   Z; d; e7 f d<     YZ< d=   Z= e= Z> d>   Z? e? Z@ d?   ZA d d@ k lB ZB e:   iC ZD y d dA k lE ZF Wn# e j
 o d dB kG lF ZF n XdC   ZH dD   ZI e dE j o eI   n d S(F   s;   Thread module emulating a subset of Java's threading model.iN(   t   wraps(   t   timet   sleep(   t
   format_exc(   t   dequet   activeCountt   active_countt	   Conditiont   currentThreadt   current_threadt	   enumeratet   Eventt   Lockt   RLockt	   Semaphoret   BoundedSemaphoret   Threadt   Timert
   setprofilet   settracet   localt
   stack_sizet   ignoret   categoryt   modulet	   threadingt   messages   sys.exc_cleart   _Verbosec           B   s   e  Z d d   Z d   Z RS(   c         C   s   d  S(   N(    (   t   selft   verbose(    (    s&   /mit/python/lib/python2.6/threading.pyt   __init__J   s    c         G   s   d  S(   N(    (   R   t   args(    (    s&   /mit/python/lib/python2.6/threading.pyt   _noteL   s    N(   t   __name__t
   __module__t   NoneR   R    (    (    (    s&   /mit/python/lib/python2.6/threading.pyR   I   s   c         C   s
   |  a  d  S(   N(   t   _profile_hook(   t   func(    (    s&   /mit/python/lib/python2.6/threading.pyR   T   s    c         C   s
   |  a  d  S(   N(   t   _trace_hook(   R%   (    (    s&   /mit/python/lib/python2.6/threading.pyR   X   s    c          O   s   t  |  |   S(   N(   t   _RLock(   R   t   kwargs(    (    s&   /mit/python/lib/python2.6/threading.pyR   `   s    R'   c           B   s\   e  Z d	 d   Z d   Z d d  Z e Z d   Z d   Z d   Z	 d   Z
 d   Z RS(
   c         C   s2   t  i |  |  t   |  _ d  |  _ d |  _ d  S(   Ni    (   R   R   t   _allocate_lockt   _RLock__blockR#   t   _RLock__ownert   _RLock__count(   R   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR   e   s    	c         C   s-   |  i  } d |  i i | o | i |  i f S(   Ns   <%s(%s, %d)>(   R+   t	   __class__R!   t   nameR,   (   R   t   owner(    (    s&   /mit/python/lib/python2.6/threading.pyt   __repr__k   s
    		i   c         C   sa   t    } |  i | j o |  i d |  _ d S|  i i |  } | o | |  _ d |  _ n | S(   Ni   (   R	   R+   R,   R*   t   acquire(   R   t   blockingt   met   rc(    (    s&   /mit/python/lib/python2.6/threading.pyR1   r   s    			c         C   s\   |  i  t   j	 o t d   n |  i d |  _ } | p d  |  _  |  i i   n d  S(   Ns   cannot release un-aquired locki   (   R+   R	   t   RuntimeErrorR,   R#   R*   t   release(   R   t   count(    (    s&   /mit/python/lib/python2.6/threading.pyR6      s    	c         C   s   |  i    d  S(   N(   R6   (   R   t   tt   vt   tb(    (    s&   /mit/python/lib/python2.6/threading.pyt   __exit__   s    c         C   s/   | \ } } |  i  i   | |  _ | |  _ d  S(   N(   R*   R1   R,   R+   (   R   t   count_ownerR7   R/   (    (    s&   /mit/python/lib/python2.6/threading.pyt   _acquire_restore   s
    		c         C   s;   |  i  } d |  _  |  i } d  |  _ |  i i   | | f S(   Ni    (   R,   R+   R#   R*   R6   (   R   R7   R/   (    (    s&   /mit/python/lib/python2.6/threading.pyt   _release_save   s    				c         C   s   |  i  t   j S(   N(   R+   R	   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt	   _is_owned   s    N(   R!   R"   R#   R   R0   R1   t	   __enter__R6   R;   R=   R>   R?   (    (    (    s&   /mit/python/lib/python2.6/threading.pyR'   c   s   					
c          O   s   t  |  |   S(   N(   t
   _Condition(   R   R(   (    (    s&   /mit/python/lib/python2.6/threading.pyR      s    RA   c           B   st   e  Z d d d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d d  Z
 d d	  Z d
   Z e Z RS(   c         C   s   t  i |  |  | d  j o t   } n | |  _ | i |  _ | i |  _ y | i |  _ Wn t j
 o n Xy | i	 |  _	 Wn t j
 o n Xy | i
 |  _
 Wn t j
 o n Xg  |  _ d  S(   N(   R   R   R#   R   t   _Condition__lockR1   R6   R>   t   AttributeErrorR=   R?   t   _Condition__waiters(   R   t   lockR   (    (    s&   /mit/python/lib/python2.6/threading.pyR      s&    	c         C   s   |  i  i   S(   N(   RB   R@   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR@      s    c         G   s   |  i  i |   S(   N(   RB   R;   (   R   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR;      s    c         C   s   d |  i  t |  i  f S(   Ns   <Condition(%s, %d)>(   RB   t   lenRD   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR0      s    c         C   s   |  i  i   d  S(   N(   RB   R6   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR>      s    c         C   s   |  i  i   d  S(   N(   RB   R1   (   R   t   x(    (    s&   /mit/python/lib/python2.6/threading.pyR=      s    c         C   s-   |  i  i d  o |  i  i   t St Sd  S(   Ni    (   RB   R1   R6   t   Falset   True(   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR?      s    c      	   C   s1  |  i    p t d   n t   } | i   |  i i |  |  i   } z | d  j o | i   n t   | } d } xf t	 o^ | i d  } | o Pn | t   } | d j o Pn t
 | d | d  } t |  q W| p. y |  i i |  Wqt j
 o qXn Wd  |  i |  Xd  S(   Ns   cannot wait on un-aquired lockgMb@?i    i   g?(   R?   R5   R)   R1   RD   t   appendR>   R#   t   _timeRI   t   mint   _sleept   removet
   ValueErrorR=   (   R   t   timeoutt   waitert   saved_statet   endtimet   delayt   gotitt	   remaining(    (    s&   /mit/python/lib/python2.6/threading.pyt   wait   s:    	

 	i   c         C   s   |  i    p t d   n |  i } | |  } | p d  S|  i d |  | | d j o d p d  x? | D]7 } | i   y | i |  Wqm t j
 o qm Xqm Wd  S(   Ns    cannot notify on un-aquired locks"   %s.notify(): notifying %d waiter%si   t   st    (   R?   R5   RD   R    R6   RN   RO   (   R   t   nRD   t   waitersRQ   (    (    s&   /mit/python/lib/python2.6/threading.pyt   notify  s    	
 
c         C   s   |  i  t |  i   d  S(   N(   R\   RF   RD   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt	   notifyAll   s    N(   R!   R"   R#   R   R@   R;   R0   R>   R=   R?   RW   R\   R]   t
   notify_all(    (    (    s&   /mit/python/lib/python2.6/threading.pyRA      s   							*	c          O   s   t  |  |   S(   N(   t
   _Semaphore(   R   R(   (    (    s&   /mit/python/lib/python2.6/threading.pyR   &  s    R_   c           B   s;   e  Z d  d d  Z d  d  Z e Z d   Z d   Z RS(   i   c         C   sL   | d j  o t  d   n t i |  |  t t    |  _ | |  _ d  S(   Ni    s$   semaphore initial value must be >= 0(   RO   R   R   R   R   t   _Semaphore__condt   _Semaphore__value(   R   t   valueR   (    (    s&   /mit/python/lib/python2.6/threading.pyR   -  s
    c         C   sk   t  } |  i i   xD |  i d j o | p Pn |  i i   q W|  i d |  _ t } |  i i   | S(   Ni    i   (   RH   R`   R1   Ra   RW   RI   R6   (   R   R2   R4   (    (    s&   /mit/python/lib/python2.6/threading.pyR1   4  s     c         C   s;   |  i  i   |  i d |  _ |  i  i   |  i  i   d  S(   Ni   (   R`   R1   Ra   R\   R6   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR6   I  s    c         C   s   |  i    d  S(   N(   R6   (   R   R8   R9   R:   (    (    s&   /mit/python/lib/python2.6/threading.pyR;   R  s    N(   R!   R"   R#   R   R1   R@   R6   R;   (    (    (    s&   /mit/python/lib/python2.6/threading.pyR_   )  s
   		c          O   s   t  |  |   S(   N(   t   _BoundedSemaphore(   R   R(   (    (    s&   /mit/python/lib/python2.6/threading.pyR   V  s    Rc   c           B   s&   e  Z d  Z d d d  Z d   Z RS(   s6   Semaphore that checks that # releases is <= # acquiresi   c         C   s    t  i |  | |  | |  _ d  S(   N(   R_   R   t   _initial_value(   R   Rb   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR   [  s    c         C   s-   |  i  |  i j o t d  n t i |   S(   Ns!   Semaphore released too many times(   Ra   Rd   RO   R_   R6   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR6   _  s    N(   R!   R"   t   __doc__R#   R   R6   (    (    (    s&   /mit/python/lib/python2.6/threading.pyRc   Y  s   c          O   s   t  |  |   S(   N(   t   _Event(   R   R(   (    (    s&   /mit/python/lib/python2.6/threading.pyR   e  s    Rf   c           B   sA   e  Z d d   Z d   Z e Z d   Z d   Z d d  Z RS(   c         C   s/   t  i |  |  t t    |  _ t |  _ d  S(   N(   R   R   R   R   t   _Event__condRH   t   _Event__flag(   R   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR   l  s    c         C   s   |  i  S(   N(   Rh   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt   isSetq  s    c         C   s<   |  i  i   z t |  _ |  i  i   Wd  |  i  i   Xd  S(   N(   Rg   R1   RI   Rh   R^   R6   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt   setv  s
    	c         C   s/   |  i  i   z t |  _ Wd  |  i  i   Xd  S(   N(   Rg   R1   RH   Rh   R6   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt   clear~  s    c         C   sD   |  i  i   z" |  i p |  i  i |  n Wd  |  i  i   Xd  S(   N(   Rg   R1   Rh   RW   R6   (   R   RP   (    (    s&   /mit/python/lib/python2.6/threading.pyRW     s
    
N(	   R!   R"   R#   R   Ri   t   is_setRj   Rk   RW   (    (    (    s&   /mit/python/lib/python2.6/threading.pyRf   h  s   			i    s	   Thread-%dc         C   s   t  d a  |  t  S(   Ni   (   t   _counter(   t   template(    (    s&   /mit/python/lib/python2.6/threading.pyt   _newname  s    
c           B   s  e  Z e Z e i Z e i Z d d d d d d d   Z
 d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d d	  Z e d
    Z e i d    Z e d    Z d   Z e Z e d    Z e i d    Z d   Z d   Z d   Z d   Z RS(   c         C   s   t  i |  |  | d  j o
 h  } n | |  _ t | p t    |  _ | |  _ | |  _ |  i	   |  _
 d  |  _ t   |  _ t |  _ t t    |  _ t |  _ t i |  _ d  S(   N(   R   R   R#   t   _Thread__targett   strRo   t   _Thread__namet   _Thread__argst   _Thread__kwargst   _set_daemont   _Thread__daemonict   _Thread__identR   t   _Thread__startedRH   t   _Thread__stoppedR   R   t   _Thread__blockRI   t   _Thread__initializedt   _syst   stderrt   _Thread__stderr(   R   t   groupt   targetR.   R   R(   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR     s    
						c         C   s
   t    i S(   N(   R	   t   daemon(   R   (    (    s&   /mit/python/lib/python2.6/threading.pyRu     s    c         C   s   d } |  i  i   o
 d } n |  i o
 d } n |  i o | d 7} n |  i d  j	 o | d |  i 7} n d |  i i |  i | f S(   Nt   initialt   startedt   stoppeds    daemons    %ss   <%s(%s, %s)>(	   Rx   Rl   Ry   Rv   Rw   R#   R-   R!   Rr   (   R   t   status(    (    s&   /mit/python/lib/python2.6/threading.pyR0     s    



c         C   sy   |  i  p t d   n |  i i   o t d   n t i   |  t |  <t i   t |  i	 d  |  i i
   d  S(   Ns   thread.__init__() not calleds   thread already started(    (   R{   R5   Rx   Rl   t   _active_limbo_lockR1   t   _limboR6   t   _start_new_threadt   _Thread__bootstrapRW   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt   start  s    



c         C   sB   z( |  i  o |  i  |  i |  i   n Wd  |  `  |  ` |  ` Xd  S(   N(   Rp   Rs   Rt   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt   run  s    
c         C   s;   y |  i    Wn& |  i o t d  j o d  S  n Xd  S(   N(   t   _Thread__bootstrap_innerRv   R|   R#   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt   __bootstrap  s    c         C   s  zt    |  _ |  i i   t i   |  t |  i <t |  =t i   t	 o! |  i
 d |   t i t	  n t o! |  i
 d |   t i t  n zy |  i   Wn t j
 o n t o$ t i i d |  i t   f  q|  i   \ } } } z |  i d |  i d IJ|  i d IJxD | o< |  i d | i i i | i | i i i f IJ| i } q(W|  i d | | f IJWd  ~ ~ ~ Xn XWd  |  i   XWd  t i i   z& |  i    y t t    =Wn n XWd  QXXd  S(	   Ns(   %s.__bootstrap(): registering trace hooks*   %s.__bootstrap(): registering profile hooks   Exception in thread %s:
%s
s   Exception in thread s2    (most likely raised during interpreter shutdown):s"   Traceback (most recent call last):s     File "%s", line %s, in %ss   %s: %s(!   t
   _get_identRw   Rx   Rj   R   R1   t   _activeR   R6   R&   R    R|   R   R$   R   R   t
   SystemExitR}   t   writeR.   t   _format_exct   _Thread__exc_infoR~   t   tb_framet   f_codet   co_filenamet	   tb_linenot   co_namet   tb_nextt   _Thread__exc_clearR;   R@   t   _Thread__stop(   R   t   exc_typet	   exc_valuet   exc_tb(    (    s&   /mit/python/lib/python2.6/threading.pyt   __bootstrap_inner  s^    

 
 
c         C   s4   |  i  i   t |  _ |  i  i   |  i  i   d  S(   N(   Rz   R1   RI   Ry   R^   R6   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt   __stopB  s    	c      	   C   sW   y& t  i i   z t t   =Wd QXWn* t j
 o d t i j o   qS n Xd S(   sA   Remove current thread from the dict of currently running threads.Nt   dummy_threading(   R   R;   R@   R   R   t   KeyErrorR|   t   modules(   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt   __deleteH  s    c         C   s   |  i  p t d   n |  i i   p t d   n |  t   j o t d   n |  i i   z | d  j o# xn |  i p |  i i	   qz WnO t
   | } x> |  i p3 | t
   } | d j o Pn |  i i	 |  q WWd  |  i i   Xd  S(   Ns   Thread.__init__() not calleds'   cannot join thread before it is starteds   cannot join current threadi    (   R{   R5   Rx   Rl   R	   Rz   R1   R#   Ry   RW   RK   R6   (   R   RP   t   deadlineRT   (    (    s&   /mit/python/lib/python2.6/threading.pyt   joink  s,    
 
 
c         C   s   |  i  S(   N(   Rr   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR.     s    c         C   s   t  |  |  _ d  S(   N(   Rq   Rr   (   R   R.   (    (    s&   /mit/python/lib/python2.6/threading.pyR.     s    c         C   s   |  i  S(   N(   Rw   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt   ident  s    c         C   s   |  i  i   o |  i S(   N(   Rx   Rl   Ry   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt   isAlive  s    c         C   s   |  i  S(   N(   Rv   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR     s    c         C   sG   |  i  p t d   n |  i i   o t d   n | |  _ d  S(   Ns   Thread.__init__() not calleds)   cannot set daemon status of active thread(   R{   R5   Rx   Rl   Rv   (   R   t   daemonic(    (    s&   /mit/python/lib/python2.6/threading.pyR     s
    
c         C   s   |  i  S(   N(   R   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt   isDaemon  s    c         C   s   | |  _  d  S(   N(   R   (   R   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt	   setDaemon  s    c         C   s   |  i  S(   N(   R.   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt   getName  s    c         C   s   | |  _  d  S(   N(   R.   (   R   R.   (    (    s&   /mit/python/lib/python2.6/threading.pyt   setName  s    N(    (   R!   R"   RH   R{   R|   t   exc_infoR   t	   exc_clearR   R#   R   Ru   R0   R   R   R   R   R   t   _Thread__deleteR   t   propertyR.   t   setterR   R   t   is_aliveR   R   R   R   R   (    (    (    s&   /mit/python/lib/python2.6/threading.pyR     s2   										K		#!				c          O   s   t  |  |   S(   N(   t   _Timer(   R   R(   (    (    s&   /mit/python/lib/python2.6/threading.pyR     s    R   c           B   s/   e  Z d  Z g  h  d  Z d   Z d   Z RS(   s   Call a function after a specified number of seconds:

    t = Timer(30.0, f, args=[], kwargs={})
    t.start()
    t.cancel() # stop the timer's action if it's still waiting
    c         C   sA   t  i |   | |  _ | |  _ | |  _ | |  _ t   |  _ d  S(   N(   R   R   t   intervalt   functionR   R(   R   t   finished(   R   R   R   R   R(   (    (    s&   /mit/python/lib/python2.6/threading.pyR     s    				c         C   s   |  i  i   d S(   s(   Stop the timer if it hasn't finished yetN(   R   Rj   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt   cancel  s    c         C   sN   |  i  i |  i  |  i  i   p |  i |  i |  i   n |  i  i   d  S(   N(   R   RW   R   Rl   R   R   R(   Rj   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR     s    (   R!   R"   Re   R   R   R   (    (    (    s&   /mit/python/lib/python2.6/threading.pyR     s   	t   _MainThreadc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   sE   t  i |  d d |  i i   t i   |  t t   <t i   d  S(   NR.   t
   MainThread(	   R   R   Rx   Rj   R   R1   R   R   R6   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR     s
    
c         C   s   t  S(   N(   RH   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyRu     s    c         C   sN   |  i    t   } | o n x | o | i   t   } q! W|  i   d  S(   N(   R   t   _pickSomeNonDaemonThreadR   R   (   R   R8   (    (    s&   /mit/python/lib/python2.6/threading.pyt	   _exitfunc  s    
	 
(   R!   R"   R   Ru   R   (    (    (    s&   /mit/python/lib/python2.6/threading.pyR     s   		c          C   s5   x. t    D]# }  |  i o |  i   o |  Sq
 Wd  S(   N(   R
   R   R   R#   (   R8   (    (    s&   /mit/python/lib/python2.6/threading.pyR     s
    
 	t   _DummyThreadc           B   s&   e  Z d    Z d   Z d d  Z RS(   c         C   sQ   t  i |  d t d  |  ` |  i i   t i   |  t t	   <t i
   d  S(   NR.   s   Dummy-%d(   R   R   Ro   Rz   Rx   Rj   R   R1   R   R   R6   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR     s    
c         C   s   t  S(   N(   RI   (   R   (    (    s&   /mit/python/lib/python2.6/threading.pyRu     s    c         C   s   d  S(   N(    (   R   RP   (    (    s&   /mit/python/lib/python2.6/threading.pyR     s    N(   R!   R"   R   Ru   R#   R   (    (    (    s&   /mit/python/lib/python2.6/threading.pyR     s   		c           C   s-   y t  t   SWn t j
 o t   SXd  S(   N(   R   R   R   R   (    (    (    s&   /mit/python/lib/python2.6/threading.pyR     s    c          C   s.   t  i   t t  t t  }  t  i   |  S(   N(   R   R1   RF   R   R   R6   (   R7   (    (    s&   /mit/python/lib/python2.6/threading.pyR   %  s    

c          C   s.   t  i   t i   t i   }  t  i   |  S(   N(   R   R1   R   t   valuesR   R6   (   t   active(    (    s&   /mit/python/lib/python2.6/threading.pyR
   -  s    

(   R   (   t   _local(   R   c          C   s   t    a h  }  t   } t i i   zr xJ t i   D]< } | | j o  t   } | | _ | |  | <q7 t	 | _
 q7 Wt i   t i   t i |   Wd  QXd  S(   N(   R)   R   R	   R;   R@   R   t
   itervaluesR   Rw   RI   Ry   R   Rk   t   update(   t
   new_activet   currentt   threadR   (    (    s&   /mit/python/lib/python2.6/threading.pyt   _after_forkD  s    		 		

c          C   s  d t  f d     Y}  d t f d     Y} d t f d     Y} d } d } d	 } |  |  } g  } xA t |  D]3 } | | |  }	 d
 | d |	 _ | i |	  qs W| | | |  }
 x" | D] }	 |	 i   t d  q W|
 i   x | D] }	 |	 i   q W|
 i   d  S(   Nt   BoundedQueuec           B   s#   e  Z d    Z d   Z d   Z RS(   c         S   sV   t  i |   t   |  _ t |  i  |  _ t |  i  |  _ | |  _ t   |  _	 d  S(   N(
   R   R   R   t   monR   R4   t   wct   limitR   t   queue(   R   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR   l  s    	c         S   s   |  i  i   x; t |  i  |  i j o! |  i d |  |  i i   q W|  i i |  |  i d | t |  i   |  i	 i
   |  i  i   d  S(   Ns   put(%s): queue fulls    put(%s): appended, length now %d(   R   R1   RF   R   R   R    R   RW   RJ   R4   R\   R6   (   R   t   item(    (    s&   /mit/python/lib/python2.6/threading.pyt   putt  s     	c         S   s   |  i  i   x) |  i p |  i d  |  i i   q W|  i i   } |  i d | t |  i   |  i i	   |  i  i
   | S(   Ns   get(): queue emptys   get(): got %s, %d left(   R   R1   R   R    R4   RW   t   popleftRF   R   R\   R6   (   R   R   (    (    s&   /mit/python/lib/python2.6/threading.pyt   get  s     
(   R!   R"   R   R   R   (    (    (    s&   /mit/python/lib/python2.6/threading.pyR   j  s   		t   ProducerThreadc           B   s   e  Z d    Z d   Z RS(   c         S   s)   t  i |  d d | |  _ | |  _ d  S(   NR.   t   Producer(   R   R   R   t   quota(   R   R   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR     s    	c         S   sj   d d k  l  } d } xM | |  i j  o< | d } |  i i d |  i | f  t |   d  q Wd  S(   Ni(   t   randomi    i   s   %s.%dgh㈵>(   R   R   R   R   R.   RM   (   R   R   t   counter(    (    s&   /mit/python/lib/python2.6/threading.pyR     s     
(   R!   R"   R   R   (    (    (    s&   /mit/python/lib/python2.6/threading.pyR     s   	t   ConsumerThreadc           B   s   e  Z d    Z d   Z RS(   c         S   s)   t  i |  d d | |  _ | |  _ d  S(   NR.   t   Consumer(   R   R   R   R7   (   R   R   R7   (    (    s&   /mit/python/lib/python2.6/threading.pyR     s    	c         S   s@   x9 |  i  d j o( |  i i   } | GH|  i  d |  _  q Wd  S(   Ni    i   (   R7   R   R   (   R   R   (    (    s&   /mit/python/lib/python2.6/threading.pyR     s
     (   R!   R"   R   R   (    (    (    s&   /mit/python/lib/python2.6/threading.pyR     s   	i   i   i   s   Producer-%di   gư>(   R   R   t   rangeR.   RJ   R   RM   R   (   R   R   R   t   NPt   QLt   NIt   Qt   Pt   iR8   t   C(    (    s&   /mit/python/lib/python2.6/threading.pyt   _testh  s.       

 t   __main__(J   Re   t   sysR|   R   t   ImportErrorR   R!   t   warningst	   functoolsR    R   RK   R   RM   t	   tracebackR   R   t   collectionsR   t   __all__t   start_new_threadR   t   allocate_lockR)   t	   get_identR   t   errort   ThreadErrort   filterwarningst   DeprecationWarningRH   t   _VERBOSEt   objectR   R#   R$   R&   R   R   R   R   R'   R   RA   R   R_   R   Rc   R   Rf   Rm   Ro   R   R   R   R   R   R   R   R   R   R   R	   R   R   R
   R   R   t	   _shutdownR   R   t   _threading_localR   R   (    (    (    s&   /mit/python/lib/python2.6/threading.pyt   <module>   s   
								K	u	-		&	 !						$	R