ó
ÐH/\c           @` s!  d  Z  d d l m Z d d l m Z d d l m Z d d l m Z d d l m	 Z	 d d l
 m
 Z
 d d l m Z e d	 ƒ j e ƒ  d
 <d „  e ƒ  d <e
 j e ƒ  d <d d g Z d e
 f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d „  Z e ƒ  d d l m Z e e ƒ  d ƒ d S(   sz   
A collection of primitives used by the hub, and suitable for
compilation with Cython because of their frequency of use.

i    (   t   absolute_import(   t   division(   t   print_function(   t   ref(   t   get_objects(   t   greenlet(   t   BlockingSwitchOutErrorR   t
   getcurrentc           C` s   d  S(   N(   t   None(    (    (    s:   lib/python2.7/site-packages/gevent/_greenlet_primitives.pyt   <lambda>   s    t   greenlet_initt   _greenlet_switcht   TrackedRawGreenlett   SwitchOutGreenletWithLoopc           B` s   e  Z d  „  Z RS(   c         C` st   t  j |  | | ƒ t ƒ  } t | ƒ |  _ y | j |  _ Wn2 t k
 ro i  |  _ | j rp |  j | _ qp n Xd  S(   N(   R   t   __init__R   t   wreft   spawning_greenlett   spawn_tree_localst   AttributeErrort   parent(   t   selft   functionR   t   current(    (    s:   lib/python2.7/site-packages/gevent/_greenlet_primitives.pyR   $   s    			(   t   __name__t
   __module__R   (    (    (    s:   lib/python2.7/site-packages/gevent/_greenlet_primitives.pyR   "   s   c           B` s   e  Z d  „  Z d „  Z RS(   c         C` s5   t  t ƒ  d d  ƒ } | d  k	 r+ | ƒ  n  t |  ƒ S(   Nt
   switch_out(   t   getattrR   R   R   (   R   R   (    (    s:   lib/python2.7/site-packages/gevent/_greenlet_primitives.pyt   switch<   s    
c         C` s   t  d ƒ ‚ d  S(   Ns?   Impossible to call blocking function in the event loop callback(   R   (   R   (    (    s:   lib/python2.7/site-packages/gevent/_greenlet_primitives.pyR   B   s    (   R   R   R   R   (    (    (    s:   lib/python2.7/site-packages/gevent/_greenlet_primitives.pyR   5   s   	c          C` s<   g  t  ƒ  D]. }  t |  t ƒ r
 t |  d t ƒ r
 |  ^ q
 S(   Nt   greenlet_tree_is_ignored(   R   t
   isinstanceR   R   t   False(   t   x(    (    s:   lib/python2.7/site-packages/gevent/_greenlet_primitives.pyt   get_reachable_greenletsF   s    
c           C` s   t  ƒ  d  S(   N(   R
   (    (    (    s:   lib/python2.7/site-packages/gevent/_greenlet_primitives.pyt   _initT   s    (   t   import_c_accels   gevent.__greenlet_primitivesN(   t   __doc__t
   __future__R    R   R   t   weakrefR   R   t   gcR   R   t   gevent.exceptionsR   t
   __import__R   t   localsR   t   __all__R   R   R    R!   t   gevent._utilR"   t   globals(    (    (    s:   lib/python2.7/site-packages/gevent/_greenlet_primitives.pyt   <module>   s&   			