ó
P'—^c           @@  s!  d  d l  m Z d  d l Z d  d l m Z m Z m Z m Z d  d l m	 Z	 m
 Z
 d  d l m Z m Z m Z d  d l m Z d  d l m Z d  d l m Z d  d	 l m Z m Z d  d
 l m Z m Z m Z d e f d „  ƒ  YZ d „  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ  d S(   i    (   t   absolute_importN(   t   Hubt   READt   WRITEt   ERR(   t   CLOSEt   RUN(   t   InvalidTaskErrort   WorkerShutdownt   WorkerTerminate(   t   Empty(   t   state(   t   Consumer(   t   asynloopt   synloop(   t   AppCaset   Mockt   body_from_sigt   Xc           B@  sM   e  Z d d d d  „ Z d „  Z d d d d „ Z d „  Z d d d „ Z RS(   c      
   @  sx  t  ƒ  } t d d ƒ t d d ƒ t d d ƒ t d d ƒ | t d d ƒ | t d d ƒ g \ ˆ  _ ˆ  _ ˆ  _ ˆ  _ ˆ  _ ˆ  _ ˆ  _ ˆ  _	 ˆ  _
 t ˆ  j _ ‡  f d †  ˆ  j j _ g  ˆ  j _ i  ˆ  j _ t j f ˆ  j _ | rú | ˆ  j j _ n  i  ˆ  j _ i  ˆ  j _ t ƒ  ˆ  j _ t d d	 ƒ ˆ  j _ t ƒ  g ˆ  j j _ t d d
 ƒ ˆ  j _ d ˆ  j j _ t d d ƒ ˆ  j _ t d d ƒ ˆ  j _ ˆ  j ˆ  _  t  ˆ  j _! t" t ƒ  d t ƒ  d | ƒ} | pØg  | _# | j$ ˆ  j _$ t d d ƒ ˆ  _% ˆ  j _% ˆ  j% | _% t d d ƒ ˆ  _& ˆ  j _& ˆ  j& | _& t d d ƒ ˆ  _' ˆ  j _' ˆ  j' | _' ˆ  j j | _ d  S(   Nt   namet   objt
   connectiont   consumert	   blueprintt   qost   clockc           @  s   ˆ  j  S(   N(   t	   heartbeat(    (   t   self(    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   <lambda>)   t    s	   hub.timers   hub.fire_timersg333333û?s
   hub.pollers   hub.close()t   timert   appt   on_unknown_messaget   on_unknown_taskt   on_invalid_task((   R   R   R   R   R   R   t   hubR   R   R   t   argst   Truet   supports_heartbeatst   get_heartbeat_intervalt   side_effectt	   callbackst
   strategiest   sockett   errort   connection_errorst	   transportt   driver_typet   readerst   writerst   sett   consolidateR   t   _queuet   fire_timerst   return_valuet   pollert   closeR   R   R   t   on_task_messaget   create_task_handlerR    R!   R"   (   R   R   R   R9   t   transport_driver_typeR#   t	   _consumer(    (   R   s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   __init__   sP    	
Ic         @  s   ‡  ‡ f d †  } | ˆ  _  d  S(   Nc          @  s+   t  j ƒ  ˆ  _ t ˆ j _ t  j ƒ  ‚ d  S(   N(   R+   R,   R(   t   FalseR   t   more_to_readt   timeout(   R$   t   kwargs(   t   mockR   (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   firstO   s    (   R(   (   R   RB   RC   (    (   RB   R   s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   timeout_then_errorM   s    i    c         @  s@   ˆ d  k r t ƒ  n ˆ ‰ ‡  ‡ ‡ ‡ f d †  } | ˆ _ ˆ S(   Nc          @  sQ   ˆ s ˆ j  ˆ k rM ˆ j ƒ  t ˆ j _ ˆ  d  k rD t j ƒ  n ˆ  ‚ n  d  S(   N(   t
   call_countR8   R>   R   R?   t   NoneR+   R,   (   R$   RA   (   t   excRB   t   modR   (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyRC   X   s    
(   RF   R   R(   (   R   RB   RH   RG   RC   (    (   RG   RB   RH   R   s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   close_then_errorU   s    	c         O@  s   t  |  j _ d  S(   N(   R   R   R   (   R   R$   RA   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyR8   `   s    c         @  s=   ˆ  d  k r t ƒ  n ˆ  ‰  ‡  ‡ ‡ f d †  } | ˆ  _ ˆ  S(   Nc          @  s'   ˆ s ˆ  j  ˆ k r# ˆ j ƒ  n  d  S(   N(   RE   R8   (   R$   RA   (   RB   RH   R   (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   closingf   s    (   RF   R   R(   (   R   RB   RH   RJ   (    (   RB   RH   R   s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   closerc   s    	N(   t   __name__t
   __module__RF   R=   RD   RI   R8   RK   (    (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyR      s   9		c          O@  s<   t  |  | Ž  } t | j _ t | j Œ  | | j j d f S(   Ni    (   R   R   R   R   R   R$   R   R)   (   R$   RA   t   x(    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   get_task_callbackm   s    t   test_asynloopc           B@  sò   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C@  s+   |  j  j d t ƒ d „  ƒ } | |  _ d  S(   Nt   sharedc         S@  s   |  | S(   N(    (   RN   t   y(    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   addx   s    (   R   t   taskR>   RS   (   R   RS   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   setupv   s    c         C@  sQ   t  |  j d d ƒ\ } } |  j | j j g  | j j D] } | j ^ q7 ƒ d  S(   NR;   t   amqp(   RO   R   t   assertInR   t   drain_eventsR#   t   _readyt   fun(   R   RN   t   _t   p(    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_drain_after_consume}   s    c         C@  sŠ   t  |  j d d ƒ} t d d ƒ | j _ t | j _ t | j	 Œ  | j
 j j ƒ  | j j j ƒ  | j j j d d | j j d ƒ d  S(   NR   i
   R   s   x.hub.call_repeatedly()g       @(   R   R   R   R#   t   call_repeatedlyR   R   R   R   R$   R   t   consumet   assert_called_withR   t   on_readyR   t   heartbeat_check(   R   RN   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_setup_heartbeatƒ   s    c         K@  s`   t  |  j |  \ } } t |  j | ƒ } t ƒ  } t ƒ  } | j j | j <| | | | | f S(   N(   RO   R   R   R   R   R*   RT   (   R   t   sigRA   RN   t   on_taskt   bodyt   messaget   strategy(    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   task_contextŽ   s
    	c         C@  s]   |  j  |  j j d d ƒ ƒ \ } } } } } | | | ƒ | j | | | j | j g  ƒ d  S(   Ni   (   Ri   RS   t   sR`   t   ack_log_errort   reject_log_error(   R   R[   Re   Rf   t   msgRh   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_on_task_received•   s    -c         C@  s{   t  ƒ  t  ƒ  t  ƒ  g } |  j |  j j d d ƒ d | ƒ\ } } } } } | | | ƒ | j | | | j | j | ƒ d  S(   Ni   R9   (   R   Ri   RS   Rj   R`   Rk   Rl   (   R   t   cbsR[   Re   Rf   Rm   Rh   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt.   test_on_task_received_executes_on_task_messageœ   s    -c         C@  s^   |  j  |  j j d d ƒ ƒ \ } } } } } | j d ƒ | | | ƒ | j j | | ƒ d  S(   Ni   RT   (   Ri   RS   Rj   t   popR    R`   (   R   RN   Re   Rf   Rm   Rh   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt!   test_on_task_message_missing_name¦   s    -c         C@  sm   |  j  |  j j d d ƒ ƒ \ } } } } } t |  j j ƒ } | _ | | | ƒ | j j | | | ƒ d  S(   Ni   (   Ri   RS   Rj   t   KeyErrorR   R(   R!   R`   (   R   RN   Re   Rf   Rm   Rh   RG   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_on_task_not_registered¬   s    -c         C@  sd   |  j  |  j j d d ƒ ƒ \ } } } } } t ƒ  } | _ | | | ƒ | j j | | | ƒ d  S(   Ni   (   Ri   RS   Rj   R   R(   R"   R`   (   R   RN   Re   Rf   Rm   Rh   RG   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_on_task_InvalidTaskError²   s    -c         C@  sP   t  |  j ƒ } t t _ z' |  j t ƒ  t | j Œ  Wd  QXWd  t	 t _ Xd  S(   N(
   R   R   R%   R   t   should_terminatet   assertRaisesR	   R   R$   R>   (   R   RN   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_should_terminate¸   s    	c         C@  sb   t  |  j ƒ } t t _ t ƒ  | j j _ z' |  j	 t
 ƒ  t | j Œ  Wd  QXWd  t t _ Xd  S(   N(   R   R   R%   R   Rv   t   MemoryErrorR#   R8   R(   Rw   R	   R   R$   R>   (   R   RN   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt&   test_should_terminate_hub_close_raisesÂ   s    	c         C@  sP   t  |  j ƒ } t t _ z' |  j t ƒ  t | j Œ  Wd  QXWd  t	 t _ Xd  S(   N(
   R   R   R%   R   t   should_stopRw   R   R   R$   R>   (   R   RN   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_should_stopÍ   s    	c         C@  sþ   t  |  j ƒ } d | j _ d | j _ | j j j | j d d ƒ ƒ d g | j j	 _
 t | j Œ  |  j | j j j ƒ t  |  j ƒ } d | j _ d | j _ | j j j | j d d ƒ ƒ t | j Œ  | j j j ƒ  | j j j d t j f ƒ d  S(   Ni   RH   i   i   i   t	   propagate(   R   R   R   t   prevt   valueR#   t   on_tickRS   RK   R   R4   R   R$   t   assertFalset   updatet   calledR`   R5   R+   R,   (   R   RN   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_updates_qosÖ   s    c         C@  s®   t  |  j ƒ } i t ƒ  d 6| j _ d g | j j _ | j | j j j	 ƒ d | j j
 _ | j j } g  | j	 _ |  j t j ƒ  t | j Œ  Wd  QX| j	 j d ƒ d  S(   Ni   i   gÂõ(\¯@@(   R   R   R   R#   R0   R   R4   RI   R7   t   pollR5   R6   Rw   R+   R,   R   R$   R`   (   R   RN   R7   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_poll_emptyç   s    c         C@  sÊ   t  |  j ƒ } t d d ƒ } | j j d | d ƒ | j j j | j t d d ƒ d d ƒƒ | j j } d t	 f g | j
 _ |  j t j ƒ  t | j Œ  Wd  QX| j d ƒ |  j | j
 j ƒ d  S(   NR   t   readeri   t   tickRH   i   (   R   R   R   R#   t
   add_readerR€   RS   RI   R7   R   R…   R6   Rw   R+   R,   R   R$   R`   t
   assertTrueRƒ   (   R   RN   R‡   R7   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_poll_readableó   s    +c         C@  sÓ   t  |  j ƒ } t d d ƒ } | j j d | d ƒ | j j j | j t d d ƒ d ƒ ƒ | j j } d t	 f g | j
 _ t ƒ  | _ |  j t j ƒ  t | j Œ  Wd  QX| j d ƒ |  j | j
 j ƒ d  S(   NR   R‡   i   Rˆ   i   (   R   R   R   R#   R‰   R€   RS   RI   R7   R   R…   R6   R
   R(   Rw   R+   R,   R   R$   R`   RŠ   Rƒ   (   R   RN   R‡   R7   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_poll_readable_raises_Emptyÿ   s    (c         C@  sÇ   t  |  j ƒ } t d d ƒ } | j j d | d ƒ | j j j | j t d d ƒ d ƒ ƒ | j j } d t	 f g | j
 _ |  j t j ƒ  t | j Œ  Wd  QX| j d ƒ |  j | j
 j ƒ d  S(   NR   t   writeri   Rˆ   i   (   R   R   R   R#   t
   add_writerR€   RS   RI   R7   R   R…   R6   Rw   R+   R,   R   R$   R`   RŠ   Rƒ   (   R   RN   R   R7   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_poll_writable  s    (c         C@  sº   t  |  j ƒ } t d d ƒ } | j j d | d ƒ | j j j | j t d d ƒ d ƒ ƒ | j j } d t	 f g | j
 _ |  j t j ƒ  t | j Œ  Wd  QX|  j | j
 j ƒ d  S(   NR   R   i   Rˆ   i   i   (   R   R   R   R#   RŽ   R€   RS   RI   R7   R   R…   R6   Rw   R+   R,   R   R$   RŠ   Rƒ   (   R   RN   R   R7   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt"   test_poll_writable_none_registered  s    (c         C@  s´   t  |  j ƒ } t d d ƒ } | j j d | d ƒ | j j j | j t d d ƒ d ƒ ƒ | j j } d g | j	 _
 |  j t j ƒ  t | j Œ  Wd  QX|  j | j	 j ƒ d  S(   NR   R‡   i   Rˆ   i   i    (   i   i    (   R   R   R   R#   RŽ   R€   RS   RI   R7   R…   R6   Rw   R+   R,   R   R$   RŠ   Rƒ   (   R   RN   R   R7   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_poll_unknown_event#  s    (c         @  s¡   t  |  j ƒ } i t ƒ  d 6| j _ | j j j ‰  ‡  f d †  } | ˆ  _ | j j } d g ˆ  _ |  j	 t
 j ƒ  t | j Œ  Wd  QX|  j | j j ƒ d  S(   Ni   c          @  s   t  j ƒ  ˆ  _ d  S(   N(   R+   R,   R(   (   R$   RA   (   R…   (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   se3  s    i    (   i   i    (   R   R   R   R#   R1   R7   R…   R(   R6   Rw   R+   R,   R   R$   RŠ   Rƒ   (   R   RN   R’   R7   (    (   R…   s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt    test_poll_keep_draining_disabled.  s    	c         C@  sÇ   t  |  j ƒ } t d d ƒ } | j j d | d d ƒ | j j j | j t ƒ  d ƒ ƒ | j j } d t	 f g | j
 _ |  j t j ƒ  t | j Œ  Wd  QX| j d d ƒ |  j | j
 j ƒ d  S(   NR   R   i   i0   i   (   R   R   R   R#   RŽ   R€   RS   RI   R7   R   R…   R6   Rw   R+   R,   R   R$   R`   RŠ   Rƒ   (   R   RN   R   R7   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_poll_err_writable=  s    "c         C@  så   t  |  j ƒ } t d d ƒ | j _ d „  } | ƒ  } | j j d | ƒ | j j j | j t d d ƒ d ƒ ƒ d t	 f g | j j
 j _ |  j t j ƒ  t | j Œ  Wd  QX|  j | j j d k ƒ |  j | j j j ƒ d  S(   NR   s   hub.remove()c           s@  s   d Vd Vd  S(   Ni   i   (    (    (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   GenM  s    i   Rˆ   i   iÿÿÿÿ(   R   R   R   R#   t   removeRŽ   R€   RS   RI   R   R7   R…   R6   Rw   R+   R,   R   R$   RŠ   t   gi_framet   f_lastiR   Rƒ   (   R   RN   R•   t   gen(    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_poll_write_generatorI  s    		(c         C@  sÆ   t  |  j ƒ } d „  } | ƒ  } | j j d | ƒ | j j j | j t d d ƒ d ƒ ƒ d t f g | j j	 j
 _ t d d ƒ | j _ |  j t j ƒ  t | j Œ  Wd  QX|  j | j ƒ d  S(   Nc           s@  s   t  ƒ  ‚ d  Vd  S(   N(   t   StopIteration(    (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyR•   ]  s    	i   R   Rˆ   i   s   hub.remove()(   R   R   R#   RŽ   R€   RS   RI   R   R   R7   R…   R6   R–   Rw   R+   R,   R   R$   t   assertIsNoneR—   (   R   RN   R•   R™   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt!   test_poll_write_generator_stoppedZ  s    		(c         C@  sÖ   t  |  j ƒ } d „  } | ƒ  } | j j d | ƒ t d d ƒ | j _ | j j j | j t d d ƒ d ƒ ƒ d t	 f g | j j
 j _ |  j t ƒ  t | j Œ  Wd  QX|  j | j ƒ | j j j d ƒ d  S(   Nc           s@  s   t  d ƒ ‚ d  Vd  S(   Nt   foo(   t
   ValueError(    (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyR•   l  s    i   R   s   hub.remove()Rˆ   i   (   R   R   R#   RŽ   R   R–   R€   RS   RI   R   R7   R…   R6   Rw   RŸ   R   R$   Rœ   R—   R`   (   R   RN   R•   R™   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt    test_poll_write_generator_raisesi  s    		(c         C@  sÇ   t  |  j ƒ } t d d ƒ } | j j d | d d ƒ | j j j | j t ƒ  d ƒ ƒ | j j } d t	 f g | j
 _ |  j t j ƒ  t | j Œ  Wd  QX| j d d ƒ |  j | j
 j ƒ d  S(   NR   R‡   i   i   i   (   R   R   R   R#   R‰   R€   RS   RI   R7   R   R…   R6   Rw   R+   R,   R   R$   R`   RŠ   Rƒ   (   R   RN   R‡   R7   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_poll_err_readabley  s    "c         C@  sk   t  |  j ƒ } i t ƒ  d 6| j _ | j j } | j | j d t ƒt	 | j
 Œ  |  j | j j ƒ d  S(   Ni   RG   (   R   R   R   R#   R0   R7   RI   R…   RŸ   R   R$   RŠ   Rƒ   (   R   RN   R7   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_poll_raises_ValueError…  s    (   RL   RM   RU   R]   Rc   Ri   Rn   Rp   Rr   Rt   Ru   Rx   Rz   R|   R„   R†   R‹   RŒ   R   R   R‘   R“   R”   Rš   R   R    R¡   R¢   (    (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyRP   t   s4   						
				
																t   test_synloopc           B@  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C@  se   t  |  j ƒ } | j | j j ƒ |  j t j ƒ  t | j	 Œ  Wd  QX|  j
 | j j j d ƒ d  S(   Ni   (   R   R   RD   R   RX   Rw   R+   R,   R   R$   t   assertEqualRE   (   R   RN   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_timeout_ignored  s
    c         C@  sÏ   t  |  j ƒ } d | j _ d | j _ | j | j j ƒ |  j t	 j
 ƒ  t | j Œ  Wd  QX|  j | j j j ƒ d | j _ | j | j j ƒ |  j t	 j
 ƒ  t | j Œ  Wd  QX| j j j ƒ  d  S(   Ni   i   (   R   R   R   R~   R   RD   R   RX   Rw   R+   R,   R   R$   R   R‚   Rƒ   R`   (   R   RN   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   test_updates_qos_when_changed—  s    c         C@  s<   t  |  j ƒ } | j | j j ƒ |  j t | j Œ  ƒ d  S(   N(   R   R   RI   R   RX   Rœ   R   R$   (   R   RN   (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt&   test_ignores_socket_errors_when_closed¦  s    (   RL   RM   R¥   R¦   R§   (    (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyR£   Ž  s   		(!   t
   __future__R    R+   t   kombu.asyncR   R   R   R   t   celery.bootstepsR   R   t   celery.exceptionsR   R   R	   t   celery.fiveR
   t   celery.workerR   t   celery.worker.consumerR   t   celery.worker.loopsR   R   t   celery.tests.caseR   R   R   t   objectR   RO   RP   R£   (    (    (    s@   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_loops.pyt   <module>   s   "\	ÿ 