
mKc           @   s6  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@   ZB d dA k lC ZC e:   iD ZE y d dB k lF ZG Wn# e j
 o d dC kH lG ZG n XdD   ZI dE   ZJ e dF j o eJ   n d S(G   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  j o
 t } n | |  _ d  S(   N(   t   Nonet   _VERBOSEt   _Verbose__verbose(   t   selft   verbose(    (    s   /usr/lib/python2.6/threading.pyt   __init__;   s    
c         G   sB   |  i  o4 | | } d t   i | f } t i i |  n d  S(   Ns   %s: %s
(   R   R	   t   namet   _syst   stderrt   write(   R   t   formatt   args(    (    s   /usr/lib/python2.6/threading.pyt   _note@   s
    

N(   t   __name__t
   __module__R   R!   R(   (    (    (    s   /usr/lib/python2.6/threading.pyR   9   s   c         C   s
   |  a  d  S(   N(   t   _profile_hook(   t   func(    (    s   /usr/lib/python2.6/threading.pyR   T   s    c         C   s
   |  a  d  S(   N(   t   _trace_hook(   R,   (    (    s   /usr/lib/python2.6/threading.pyR   X   s    c          O   s   t  |  |   S(   N(   t   _RLock(   R'   t   kwargs(    (    s   /usr/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   /usr/lib/python2.6/threading.pyR!   e   s    	c         C   sJ   |  i  } y t | i } Wn t j
 o n Xd |  i i | |  i f S(   Ns   <%s owner=%r count=%d>(   R2   t   _activeR"   t   KeyErrort	   __class__R)   R3   (   R   t   owner(    (    s   /usr/lib/python2.6/threading.pyt   __repr__k   s    	i   c         C   s   t    } |  i | j o( |  i d |  _ |  i d |  |  d S|  i i |  } | o) | |  _ d |  _ |  i d |  |  n |  i d |  |  | S(   Ni   s!   %s.acquire(%s): recursive successs   %s.acquire(%s): initial successs   %s.acquire(%s): failure(   t
   _get_identR2   R3   R(   R1   t   acquire(   R   t   blockingt   met   rc(    (    s   /usr/lib/python2.6/threading.pyR:   t   s    			c         C   s|   |  i  t   j o t d   n |  i d |  _ } | p* d  |  _  |  i i   |  i d |   n |  i d |   d  S(   Ns   cannot release un-acquired locki   s   %s.release(): final releases   %s.release(): non-final release(   R2   R9   t   RuntimeErrorR3   R   R1   t   releaseR(   (   R   t   count(    (    s   /usr/lib/python2.6/threading.pyR?      s    	c         C   s   |  i    d  S(   N(   R?   (   R   t   tt   vt   tb(    (    s   /usr/lib/python2.6/threading.pyt   __exit__   s    c         C   s?   | \ } } |  i  i   | |  _ | |  _ |  i d |   d  S(   Ns   %s._acquire_restore()(   R1   R:   R3   R2   R(   (   R   t   count_ownerR@   R7   (    (    s   /usr/lib/python2.6/threading.pyt   _acquire_restore   s
    		c         C   sK   |  i  d |   |  i } d |  _ |  i } d  |  _ |  i i   | | f S(   Ns   %s._release_save()i    (   R(   R3   R2   R   R1   R?   (   R   R@   R7   (    (    s   /usr/lib/python2.6/threading.pyt   _release_save   s    				c         C   s   |  i  t   j S(   N(   R2   R9   (   R   (    (    s   /usr/lib/python2.6/threading.pyt	   _is_owned   s    N(   R)   R*   R   R!   R8   R:   t	   __enter__R?   RD   RF   RG   RH   (    (    (    s   /usr/lib/python2.6/threading.pyR.   c   s   						
c          O   s   t  |  |   S(   N(   t
   _Condition(   R'   R/   (    (    s   /usr/lib/python2.6/threading.pyR      s    RJ   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__lockR:   R?   RG   t   AttributeErrorRF   RH   t   _Condition__waiters(   R   t   lockR    (    (    s   /usr/lib/python2.6/threading.pyR!      s&    	c         C   s   |  i  i   S(   N(   RK   RI   (   R   (    (    s   /usr/lib/python2.6/threading.pyRI      s    c         G   s   |  i  i |   S(   N(   RK   RD   (   R   R'   (    (    s   /usr/lib/python2.6/threading.pyRD      s    c         C   s   d |  i  t |  i  f S(   Ns   <Condition(%s, %d)>(   RK   t   lenRM   (   R   (    (    s   /usr/lib/python2.6/threading.pyR8      s    c         C   s   |  i  i   d  S(   N(   RK   R?   (   R   (    (    s   /usr/lib/python2.6/threading.pyRG      s    c         C   s   |  i  i   d  S(   N(   RK   R:   (   R   t   x(    (    s   /usr/lib/python2.6/threading.pyRF      s    c         C   s-   |  i  i d  o |  i  i   t St Sd  S(   Ni    (   RK   R:   R?   t   Falset   True(   R   (    (    s   /usr/lib/python2.6/threading.pyRH      s    c      	   C   sg  |  i    p t d   n t   } | i   |  i i |  |  i   } z| d  j o | i   |  i d |   n t	   | } d } xf t
 o^ | i d  } | o Pn | t	   } | d j o Pn t | d | d  } t |  q W| pA |  i d |  |  y |  i i |  WqQt j
 o qQXn |  i d |  |  Wd  |  i |  Xd  S(	   Ns   cannot wait on un-acquired locks   %s.wait(): got itgMb@?i    i   g?s   %s.wait(%s): timed outs   %s.wait(%s): got it(   RH   R>   R0   R:   RM   t   appendRG   R   R(   t   _timeRR   t   mint   _sleept   removet
   ValueErrorRF   (   R   t   timeoutt   waitert   saved_statet   endtimet   delayt   gotitt	   remaining(    (    s   /usr/lib/python2.6/threading.pyt   wait   s<    	

 	i   c         C   s   |  i    p t d   n |  i } | |  } | p |  i d |   d  S|  i d |  | | d j o d p d  x? | D]7 } | i   y | i |  Wq} t j
 o q} Xq} Wd  S(   Ns!   cannot notify on un-acquired locks   %s.notify(): no waiterss"   %s.notify(): notifying %d waiter%si   t   st    (   RH   R>   RM   R(   R?   RW   RX   (   R   t   nRM   t   waitersRZ   (    (    s   /usr/lib/python2.6/threading.pyt   notify  s     	
 
c         C   s   |  i  t |  i   d  S(   N(   Re   RO   RM   (   R   (    (    s   /usr/lib/python2.6/threading.pyt	   notifyAll"  s    N(   R)   R*   R   R!   RI   RD   R8   RG   RF   RH   R`   Re   Rf   t
   notify_all(    (    (    s   /usr/lib/python2.6/threading.pyRJ      s   							*	c          O   s   t  |  |   S(   N(   t
   _Semaphore(   R'   R/   (    (    s   /usr/lib/python2.6/threading.pyR   (  s    Rh   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(   RX   R   R!   R   R   t   _Semaphore__condt   _Semaphore__value(   R   t   valueR    (    (    s   /usr/lib/python2.6/threading.pyR!   /  s
    c         C   s   t  } |  i i   xs |  i d j o6 | p Pn |  i d |  | |  i  |  i i   q W|  i d |  _ |  i d |  |  i  t } |  i i   | S(   Ni    s)   %s.acquire(%s): blocked waiting, value=%si   s   %s.acquire: success, value=%s(   RQ   Ri   R:   Rj   R(   R`   RR   R?   (   R   R;   R=   (    (    s   /usr/lib/python2.6/threading.pyR:   6  s     		c         C   sQ   |  i  i   |  i d |  _ |  i d |  |  i  |  i  i   |  i  i   d  S(   Ni   s   %s.release: success, value=%s(   Ri   R:   Rj   R(   Re   R?   (   R   (    (    s   /usr/lib/python2.6/threading.pyR?   K  s    	c         C   s   |  i    d  S(   N(   R?   (   R   RA   RB   RC   (    (    s   /usr/lib/python2.6/threading.pyRD   T  s    N(   R)   R*   R   R!   R:   RI   R?   RD   (    (    (    s   /usr/lib/python2.6/threading.pyRh   +  s
   		c          O   s   t  |  |   S(   N(   t   _BoundedSemaphore(   R'   R/   (    (    s   /usr/lib/python2.6/threading.pyR   X  s    Rl   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(   Rh   R!   t   _initial_value(   R   Rk   R    (    (    s   /usr/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(   Rj   Rm   RX   Rh   R?   (   R   (    (    s   /usr/lib/python2.6/threading.pyR?   a  s    N(   R)   R*   t   __doc__R   R!   R?   (    (    (    s   /usr/lib/python2.6/threading.pyRl   [  s   c          O   s   t  |  |   S(   N(   t   _Event(   R'   R/   (    (    s   /usr/lib/python2.6/threading.pyR   g  s    Ro   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__condRQ   t   _Event__flag(   R   R    (    (    s   /usr/lib/python2.6/threading.pyR!   n  s    c         C   s   |  i  S(   N(   Rq   (   R   (    (    s   /usr/lib/python2.6/threading.pyt   isSets  s    c         C   s<   |  i  i   z t |  _ |  i  i   Wd  |  i  i   Xd  S(   N(   Rp   R:   RR   Rq   Rg   R?   (   R   (    (    s   /usr/lib/python2.6/threading.pyt   setx  s
    	c         C   s/   |  i  i   z t |  _ Wd  |  i  i   Xd  S(   N(   Rp   R:   RQ   Rq   R?   (   R   (    (    s   /usr/lib/python2.6/threading.pyt   clear  s    c         C   sD   |  i  i   z" |  i p |  i  i |  n Wd  |  i  i   Xd  S(   N(   Rp   R:   Rq   R`   R?   (   R   RY   (    (    s   /usr/lib/python2.6/threading.pyR`     s
    
N(	   R)   R*   R   R!   Rr   t   is_setRs   Rt   R`   (    (    (    s   /usr/lib/python2.6/threading.pyRo   j  s   			i    s	   Thread-%dc         C   s   t  d a  |  t  S(   Ni   (   t   _counter(   t   template(    (    s   /usr/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	   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   | d  j p
 t d  t i |  |  | d  j o
 h  } n | |  _ t | p t    |  _ | |  _ | |  _	 |  i
   |  _ d  |  _ t   |  _ t |  _ t t    |  _ t |  _ t i |  _ d  S(   Ns#   group argument must be None for now(   R   t   AssertionErrorR   R!   t   _Thread__targett   strRx   t   _Thread__namet   _Thread__argst   _Thread__kwargst   _set_daemont   _Thread__daemonict   _Thread__identR   t   _Thread__startedRQ   t   _Thread__stoppedR   R   t   _Thread__blockRR   t   _Thread__initializedR#   R$   t   _Thread__stderr(   R   t   groupt   targetR"   R'   R/   R    (    (    s   /usr/lib/python2.6/threading.pyR!     s    
						c         C   s
   t    i S(   N(   R	   t   daemon(   R   (    (    s   /usr/lib/python2.6/threading.pyR     s    c         C   s   |  i  p
 t d  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(   Ns    Thread.__init__() was not calledt   initialt   startedt   stoppeds    daemons    %ss   <%s(%s, %s)>(   R   Ry   R   Ru   R   R   R   R   R6   R)   R|   (   R   t   status(    (    s   /usr/lib/python2.6/threading.pyR8     s    



c         C   s   |  i  p t d   n |  i i   o t d   n |  i d |   t i   |  t |  <t i   y t	 |  i
 d  Wn5 t j
 o) t i i   z t |  =Wd  QX  n X|  i i   d  S(   Ns   thread.__init__() not calleds   thread already starteds   %s.start(): starting thread(    (   R   R>   R   Ru   R(   t   _active_limbo_lockR:   t   _limboR?   t   _start_new_threadt   _Thread__bootstrapt	   ExceptionRD   RI   R`   (   R   (    (    s   /usr/lib/python2.6/threading.pyt   start  s    



c         C   sB   z( |  i  o |  i  |  i |  i   n Wd  |  `  |  ` |  ` Xd  S(   N(   Rz   R}   R~   (   R   (    (    s   /usr/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_innerR   R#   R   (   R   (    (    s   /usr/lib/python2.6/threading.pyt   __bootstrap  s    c         C   s   t    |  _ d  S(   N(   R9   R   (   R   (    (    s   /usr/lib/python2.6/threading.pyt
   _set_ident  s    c         C   s%  z|  i    |  i i   t i   |  t |  i <t |  =t i   |  i	 d |   t
 o! |  i	 d |   t i t
  n t o! |  i	 d |   t i t  n z2y |  i   Wnt j
 o |  i	 d |   n |  i	 d |   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 } qVW|  i d | | f IJWd  ~ ~ ~ Xn X|  i	 d |   Wd  |  i   XWd  t i i   z& |  i    y t t!   =Wn n XWd  QXXd  S(   Ns    %s.__bootstrap(): thread starteds(   %s.__bootstrap(): registering trace hooks*   %s.__bootstrap(): registering profile hooks#   %s.__bootstrap(): raised SystemExits%   %s.__bootstrap(): unhandled exceptions   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: %ss   %s.__bootstrap(): normal return("   R   R   Rs   R   R:   R4   R   R   R?   R(   R-   R#   R   R+   R   R   t
   SystemExitR$   R%   R"   t   _format_exct   _Thread__exc_infoR   t   tb_framet   f_codet   co_filenamet	   tb_linenot   co_namet   tb_nextt   _Thread__exc_clearRD   RI   t   _Thread__stopR9   (   R   t   exc_typet	   exc_valuet   exc_tb(    (    s   /usr/lib/python2.6/threading.pyt   __bootstrap_inner  sb    


 
 
c         C   s4   |  i  i   t |  _ |  i  i   |  i  i   d  S(   N(   R   R:   RR   R   Rg   R?   (   R   (    (    s   /usr/lib/python2.6/threading.pyt   __stopL  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   RD   RI   R4   R9   R5   R#   t   modules(   R   (    (    s   /usr/lib/python2.6/threading.pyt   __deleteR  s    c         C   sL  |  i  p t d   n |  i i   p t d   n |  t   j o t d   n |  i p |  i d |   n |  i i   z | d  j o3 x |  i p |  i i
   q W|  i d |   no t   | } x^ |  i pC | t   } | d j o |  i d |   Pn |  i i
 |  q W|  i d |   Wd  |  i i   Xd  S(   Ns   Thread.__init__() not calleds'   cannot join thread before it is starteds   cannot join current threads%   %s.join(): waiting until thread stopss   %s.join(): thread stoppedi    s   %s.join(): timed out(   R   R>   R   Ru   R	   R   R(   R   R:   R   R`   RT   R?   (   R   RY   t   deadlineR]   (    (    s   /usr/lib/python2.6/threading.pyt   joinu  s2    

 
 
c         C   s   |  i  p
 t d  |  i S(   Ns   Thread.__init__() not called(   R   Ry   R|   (   R   (    (    s   /usr/lib/python2.6/threading.pyR"     s    c         C   s'   |  i  p
 t d  t |  |  _ d  S(   Ns   Thread.__init__() not called(   R   Ry   R{   R|   (   R   R"   (    (    s   /usr/lib/python2.6/threading.pyR"     s    c         C   s   |  i  p
 t d  |  i S(   Ns   Thread.__init__() not called(   R   Ry   R   (   R   (    (    s   /usr/lib/python2.6/threading.pyt   ident  s    c         C   s,   |  i  p
 t d  |  i i   o |  i S(   Ns   Thread.__init__() not called(   R   Ry   R   Ru   R   (   R   (    (    s   /usr/lib/python2.6/threading.pyt   isAlive  s    c         C   s   |  i  p
 t d  |  i S(   Ns   Thread.__init__() not called(   R   Ry   R   (   R   (    (    s   /usr/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   R>   R   Ru   R   (   R   t   daemonic(    (    s   /usr/lib/python2.6/threading.pyR     s
    
c         C   s   |  i  S(   N(   R   (   R   (    (    s   /usr/lib/python2.6/threading.pyt   isDaemon  s    c         C   s   | |  _  d  S(   N(   R   (   R   R   (    (    s   /usr/lib/python2.6/threading.pyt	   setDaemon  s    c         C   s   |  i  S(   N(   R"   (   R   (    (    s   /usr/lib/python2.6/threading.pyt   getName  s    c         C   s   | |  _  d  S(   N(   R"   (   R   R"   (    (    s   /usr/lib/python2.6/threading.pyt   setName  s    N(    (    R)   R*   RQ   R   R#   t   exc_infoR   t	   exc_clearR   R   R!   R   R8   R   R   R   R   R   R   t   _Thread__deleteR   t   propertyR"   t   setterR   R   t   is_aliveR   R   R   R   R   (    (    (    s   /usr/lib/python2.6/threading.pyR     s4   											K		#!				c          O   s   t  |  |   S(   N(   t   _Timer(   R'   R/   (    (    s   /usr/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   /usr/lib/python2.6/threading.pyR!     s    				c         C   s   |  i  i   d S(   s(   Stop the timer if it hasn't finished yetN(   R   Rs   (   R   (    (    s   /usr/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   R`   R   Ru   R   R'   R/   Rs   (   R   (    (    s   /usr/lib/python2.6/threading.pyR     s    (   R)   R*   Rn   R!   R   R   (    (    (    s   /usr/lib/python2.6/threading.pyR     s   	t   _MainThreadc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   sO   t  i |  d d |  i i   |  i   t i   |  t t   <t i	   d  S(   NR"   t
   MainThread(
   R   R!   R   Rs   R   R   R:   R4   R9   R?   (   R   (    (    s   /usr/lib/python2.6/threading.pyR!     s    

c         C   s   t  S(   N(   RQ   (   R   (    (    s   /usr/lib/python2.6/threading.pyR     s    c         C   sn   |  i    t   } | o |  i d |   n x | o | i   t   } q1 W|  i d |   |  i   d  S(   Ns   %s: waiting for other threadss   %s: exiting(   R   t   _pickSomeNonDaemonThreadR(   R   R   (   R   RA   (    (    s   /usr/lib/python2.6/threading.pyt	   _exitfunc  s    
	 
(   R)   R*   R!   R   R   (    (    (    s   /usr/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   (   RA   (    (    s   /usr/lib/python2.6/threading.pyR      s
    
 	t   _DummyThreadc           B   s&   e  Z d    Z d   Z d d  Z RS(   c         C   s[   t  i |  d t d  |  ` |  i i   |  i   t i   |  t	 t
   <t i   d  S(   NR"   s   Dummy-%d(   R   R!   Rx   R   R   Rs   R   R   R:   R4   R9   R?   (   R   (    (    s   /usr/lib/python2.6/threading.pyR!     s    

c         C   s   t  S(   N(   RR   (   R   (    (    s   /usr/lib/python2.6/threading.pyR     s    c         C   s   t  p
 t d  d  S(   Ns   cannot join a dummy thread(   RQ   Ry   (   R   RY   (    (    s   /usr/lib/python2.6/threading.pyR   "  s    N(   R)   R*   R!   R   R   R   (    (    (    s   /usr/lib/python2.6/threading.pyR     s   		c           C   s-   y t  t   SWn t j
 o t   SXd  S(   N(   R4   R9   R5   R   (    (    (    s   /usr/lib/python2.6/threading.pyR   (  s    c          C   s.   t  i   t t  t t  }  t  i   |  S(   N(   R   R:   RO   R4   R   R?   (   R@   (    (    s   /usr/lib/python2.6/threading.pyR   1  s    

c           C   s   t  i   t i   S(   N(   R4   t   valuesR   (    (    (    s   /usr/lib/python2.6/threading.pyt
   _enumerate9  s    c          C   s.   t  i   t i   t i   }  t  i   |  S(   N(   R   R:   R4   R   R   R?   (   t   active(    (    s   /usr/lib/python2.6/threading.pyR
   =  s    

(   R   (   t   _local(   R   c          C   s   t    a h  }  t   } t i i   z xJ t i   D]< } | | j o  t   } | | _ | |  | <q7 t	 | _
 q7 Wt i   t i   t i |   t t  d j p t  Wd  QXd  S(   Ni   (   R0   R   R	   RD   RI   R4   t
   itervaluesR9   R   RR   R   R   Rt   t   updateRO   Ry   (   t
   new_activet   currentt   threadR   (    (    s   /usr/lib/python2.6/threading.pyt   _after_forkT  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   R=   t   wct   limitR   t   queue(   R   R   (    (    s   /usr/lib/python2.6/threading.pyR!   |  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   R:   RO   R   R   R(   R   R`   RS   R=   Re   R?   (   R   t   item(    (    s   /usr/lib/python2.6/threading.pyt   put  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   R:   R   R(   R=   R`   t   popleftRO   R   Re   R?   (   R   R   (    (    s   /usr/lib/python2.6/threading.pyt   get  s     
(   R)   R*   R!   R   R   (    (    (    s   /usr/lib/python2.6/threading.pyR   z  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   /usr/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"   RV   (   R   R   t   counter(    (    s   /usr/lib/python2.6/threading.pyR     s     
(   R)   R*   R!   R   (    (    (    s   /usr/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   R@   (   R   R   R@   (    (    s   /usr/lib/python2.6/threading.pyR!     s    	c         S   s@   x9 |  i  d j o( |  i i   } | GH|  i  d |  _  q Wd  S(   Ni    i   (   R@   R   R   (   R   R   (    (    s   /usr/lib/python2.6/threading.pyR     s
     (   R)   R*   R!   R   (    (    (    s   /usr/lib/python2.6/threading.pyR     s   	i   i   i   s   Producer-%di   gư>(   R   R   t   rangeR"   RS   R   RV   R   (   R   R   R   t   NPt   QLt   NIt   Qt   Pt   iRA   t   C(    (    s   /usr/lib/python2.6/threading.pyt   _testx  s.       

 t   __main__(K   Rn   t   sysR#   R   t   ImportErrorR   R)   t   warningst	   functoolsR    R   RT   R   RV   t	   tracebackR   R   t   collectionsR   t   __all__t   start_new_threadR   t   allocate_lockR0   t	   get_identR9   t   errort   ThreadErrort   filterwarningst   DeprecationWarningRQ   R   t   objectR   R   R+   R-   R   R   R   R   R.   R   RJ   R   Rh   R   Rl   R   Ro   Rv   Rx   R   R4   R   R   R   R   R   R   R   R   R	   R   R   R   R
   R   R   t	   _shutdownR   R   t   _threading_localR   R   (    (    (    s   /usr/lib/python2.6/threading.pyt   <module>   s   
								M	u	-		&	 )							$	R