
P'^c            @@  s  d  d l  m Z y- d  d l Z e j d  d l m Z m Z Wn3 e k
 rr d  d l Z d  d l	 m Z m Z n Xd  d l
 Z
 d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l 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 d  d l m Z y d  d	 l m  Z  Wn e! k
 rd  d l  Z  n Xd  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, d  d l- m. Z. d  d l/ m0 Z0 m1 Z1 d  d l2 m3 Z3 m4 Z4 d  d l5 m6 Z6 m7 Z7 m8 Z8 m9 Z9 m: Z: m; Z; m< Z< d  d l= m> Z> d  d l? m@ Z@ d d d d d d d d d d d d  d! d" d# d$ d% d& d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 g  ZA e  jB ZB e  jC ZC e  jD ZD e  jE ZE e  jF ZF e jG d  d5 k ZH d6 ZI d7 ZJ d8 ZK d9 ZL d: ZM i
 eN d; 6eN d< 6d= d> 6d= d? 6d= d@ 6e% d= dA d= f dB 6eO dC 6dD dE 6eN dF 6i e jP jQ dG  pdH dI 6e jP jQ dJ  pdK dL 6e jP jQ dM  pdN dO 6e jP jQ dP  pdQ dQ 6e jP jQ dR  dS 6e jP jQ dT  dU 6dV 6ZR dW eS f dX     YZT dY e* e, jU  f dZ     YZV d d d eN eV d[  ZX d e  jY f d\     YZY d] eY f d^     YZZ d_   Z[ d`   Z\ eH rda   Z] n	 db   Z] dc eS f dd     YZ^ de   Z_ df eS f dg     YZ` dh   Za di e` f dj     YZb d e jc f dk     YZd dl   Ze d ed f dm     YZf dn   Zg e e jh do   Zi dp   Zj e dq  Zk dr   Zl ds   Zm dt   Zn du   Z dv   Zo dw   Zp e dx    Zq e dy    Zr dz   Zs d{   Zt e d d|   Zu e eu e d}  Zv e eu e d~  Zw e d    Zx e d    Zy e d    Zz e d    Z{ e eY d   Z| e e6 d d   Z} d   Z~ e d    Z d   Z d   Z eO d  Z e d    Z d S(   i    (   t   absolute_importN(   t	   safe_reprt   unorderable_list_difference(   t   contextmanager(   t   deepcopy(   t   datetimet	   timedelta(   t   partialt   wraps(   t
   ModuleType(   t   mock(   t   SkipTest(   t   Queue(   t   NullHandler(   t   nestedt   symbol_by_name(   t   Celery(   t   current_app(   t   CacheBackendt   DummyClient(   t   CDeprecationWarningt   CPendingDeprecationWarning(   t
   WhateverIOt   builtinst   itemst   reraiset   string_tt   valuest	   open_fqdn(   t   noop(   t   qualnamet   Caset   AppCaset   Mockt	   MagicMockt   ANYt   patcht   callt   sentinelt   skip_unless_modulet   wrap_loggert   with_environt   sleepdeprivedt   skip_if_environt   todot   skipt   skip_ift   skip_unlesst   mask_modulest   override_stdoutst   mock_modulet   replace_module_valuet   sys_platformt   reset_modulest   patch_modulest   mock_contextt	   mock_opent
   patch_manyt   assert_signal_calledt   skip_if_pypyt   skip_if_jythont   body_from_sigt   restore_loggingi   sJ   {name} (subclass of AppCase) redefines private "setUp", should be: "setup"sP   {name} (subclass of AppCase) redefines private "tearDown", should be: "teardown"s-   Test {0} did not disable LoggingProxy for {1}s.   Test {0} Modified the level of the root loggers.   Test {0} Modified handlers for the root loggert   CELERYD_HIJACK_ROOT_LOGGERt   CELERY_SEND_TASK_ERROR_EMAILSt
   testceleryt   CELERY_DEFAULT_QUEUEt   CELERY_DEFAULT_EXCHANGEt   CELERY_DEFAULT_ROUTING_KEYt   routing_keyt   CELERY_QUEUESt   CELERY_ENABLE_UTCt   UTCt   CELERY_TIMEZONEt   CELERYD_LOG_COLORt
   MONGO_HOSTt	   localhostt   hostt
   MONGO_PORTii  t   portt   MONGO_DBt   celery_unittestst   databaset   MONGO_TASKMETA_COLLECTIONt   taskmeta_collectiont
   MONGO_USERt   usert   MONGO_PASSWORDt   passwordt   CELERY_MONGODB_BACKEND_SETTINGSt   Trapc           B@  s   e  Z d    Z RS(   c         C@  s   t  d   d  S(   Ns   Test depends on current_app(   t   RuntimeError(   t   selft   name(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   __getattr__s   s    (   t   __name__t
   __module__R^   (    (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyRZ   q   s   t   UnitLoggingc           B@  s   e  Z d    Z RS(   c         O@  s&   t  t |   j | |   t |  _ d  S(   N(   t   superRa   t   __init__t   Truet   already_setup(   R\   t   argst   kwargs(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyRc   y   s    (   R_   R`   Rc   (    (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyRa   w   s   c         K@  sP   t  |  p d d | p d d | p$ d d | d | | } | j t t   | S(   Ns   celery.testst   brokers	   memory://t   backends   cache+memory://t   set_as_currentt   log(   R   t   add_defaultsR   t   CELERY_TEST_CONFIG(   R]   Rh   Ri   Rj   Rk   Rg   t   app(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   UnitApp~   s    	c           B@  s   e  Z d    Z RS(   c         O@  sb   | j  d d   p i  } t t |   j | |   x* t |  D] \ } } t |  | |  q> Wd  S(   Nt   attrs(   t   popt   NoneRb   R!   Rc   R   t   setattr(   R\   Rf   Rg   Rp   t	   attr_namet
   attr_value(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyRc      s    (   R_   R`   Rc   (    (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR!      s   t   _ContextMockc           B@  s    e  Z d  Z d   Z d   Z RS(   s   Dummy class implementing __enter__ and __exit__
    as the with statement requires these to be implemented
    in the class, not just the instance.c         C@  s   d  S(   N(    (   R\   (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt	   __enter__   s    c         G@  s   d  S(   N(    (   R\   t   exc_info(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   __exit__   s    (   R_   R`   t   __doc__Rw   Ry   (    (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyRv      s   	c          O@  sQ   t  |  |   } | j t    d  | j t    d  | | j _ d  | j _ | S(   NRw   Ry   (   Rv   t   attach_mockRw   t   return_valueRr   Ry   (   Rf   Rg   t   obj(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   ContextMock   s    c         @  s"   t        f d    } | S(   Nc          @  s      |  |  S(   N(    (   t   fargst   fkwargs(   t   ft   o(    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt
   bound_meth   s    (   R   (   R   R   R   (    (   R   R   s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   _bind   s    c         C@  s   |  S(   N(    (   t   meth(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   _get_class_fun   s    c         C@  s   |  j  S(   N(   t   __func__(   R   (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR      s    t   MockCallbacksc           B@  s   e  Z d    Z RS(   c         O@  s   t  d |  j  } t |  j  | | |  x{ t t |    D]g \ } } | d k r> t j |  st t j |  r t	 | |  | j
 |  _ q | j | |  q> q> W| S(   NR]   t   __dict__t   __weakref__t   __new__Rc   (   R   R   R   Rc   (   R!   R_   R   Rc   R   t   varst   inspectt   ismethodt
   isfunctionR   R^   t   side_effectt   __setattr__(   t   clsRf   Rg   t   rt   keyt   value(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR      s    (   R_   R`   R   (    (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR      s   c         @  s     f d   } | S(   Nc         @  s"   t        f d    } | S(   Nc          @  sE   y t  j   Wn$ t k
 r7 t d  f   n X  |  |   S(   Ns   Does not have %s(   t	   importlibt   import_modulet   ImportErrorR   (   Rf   Rg   (   t   funt   module(    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   __inner   s
    (   R   (   R   R   (   R   (   R   s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   _inner   s    	(    (   R   R   (    (   R   s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR'      s    t   _AssertRaisesBaseContextc           B@  s   e  Z d d d   Z RS(   c         C@  sL   | |  _  | j |  _ d  |  _ t | t  r? t j |  } n  | |  _ d  S(   N(	   t   expectedt   failureExceptionRr   t   obj_namet
   isinstanceR   t   ret   compilet   expected_regex(   R\   R   t	   test_caset   callable_objR   (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyRc      s    		N(   R_   R`   Rr   Rc   (    (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR      s   c         C@  sa   t  |   t j } } y t |  } Wn t k
 r: t SX| | k	 o\ d | k p\ d | k Sd  S(   NR^   t   __getattribute__(   t   typet   typesR	   R   t	   TypeErrorRd   (   t   mR   t   modtypet	   variables(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   _is_magic_module   s    t   _AssertWarnsContextc           B@  s    e  Z d  Z d   Z d   Z RS(   sB   A context manager used to implement TestCase.assertWarns* methods.c         C@  s   t  j   xn t t t j   D]W } | r  t |  r  y t j | d  Wn t	 k
 r` qw Xt j
 | d i   q  q  Wt  j d t  |  _ |  j j   |  _  t  j d |  j  |  S(   Nt   __warningregistry__t   recordt   always(   t   warningst   resetwarningst   listR   t   syst   modulesR   t   objectR   t   AttributeErrorR   t   catch_warningsRd   t   warnings_managerRw   t   simplefilterR   (   R\   t   v(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyRw      s    
c         C@  sl  |  j  j | | |  | d  k	 r& d  Sy |  j j } Wn  t k
 rX t |  j  } n Xd  } x |  j D] } | j } t	 | |  j  s qi n  | d  k r | } n  |  j
 d  k	 r |  j
 j t |   r qi n  | |  _ | j |  _ | j |  _ d  SW| d  k	 r-|  j d |  j
 j t |  f   n  |  j rU|  j d | |  j f   n |  j d |   d  S(   Ns   %r does not match %rs   %s not triggered by %ss   %s not triggered(   R   Ry   Rr   R   R_   R   t   strR   t   messageR   R   t   searcht   warningt   filenamet   linenoR   t   patternR   (   R\   t   exc_typet	   exc_valuet   tbt   exc_namet   first_matchingR   t   w(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyRy     s:    				(   R_   R`   Rz   Rw   Ry   (    (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR      s   	c           B@  sP   e  Z d    Z d   Z e d    Z e d    Z d d  Z d d  Z	 RS(   c         C@  s   t  | |  d   S(   N(   R   Rr   (   R\   t   expected_warning(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   assertWarns6  s    c         C@  s   t  | |  d  |  S(   N(   R   Rr   (   R\   R   R   (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   assertWarnsRegex9  s    	c         c@  s"   |  j  t d  
 d  VWd  QXd  S(   Ns   scheduled for removal(   R   R   (   R\   (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   assertDeprecated=  s    	
c         c@  s"   |  j  t d  
 d  VWd  QXd  S(   Ns   scheduled for deprecation(   R   R   (   R\   (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   assertPendingDeprecationC  s    	
c   	      C@  s  g  g  } } xy t  |  D]k \ } } | | k rB | j |  q | | | k r | j d t |  t |  t | |  f  q q W| p | s d  Sd } | r d d j t t |   } n  | r | r | d 7} n  | d d j |  7} n  |  j |  j | |   d  S(   Ns   %s, expected: %s, actual: %st    s   Missing: %st   ,s   ; s   Mismatched values: %s(   R   t   appendR   t   joint   mapt   failt   _formatMessage(	   R\   R   t   actualt   msgt   missingt
   mismatchedR   R   t   standard_msg(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   assertDictContainsSubsetI  s&    	c   
      C@  s   d  } } y t |  } t |  } Wn> t k
 rf t |  } t |  } t | |  \ } } n X|  j | | d | Sg  } | r | j d t |  f  n  | r | j d t |  f  n  | r d j |  }	 |  j	 |  j
 | |	   n  d  S(   NR   s   Expected, but missing:
    %ss   Unexpected, but present:
    %ss   
(   Rr   t   sortedR   R   R   t   assertSequenceEqualR   R   R   R   R   (
   R\   t   expected_seqt
   actual_seqR   R   t
   unexpectedR   R   t   errorst   standardMsg(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   assertItemsEqualc  s(    
N(
   R_   R`   R   R   R   R   R   Rr   R   R   (    (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR   4  s   		c         @  s>   t  j    r t   _ n t      f d    } | Sd  S(   Nc         @  s   |  j  j     |  | |  S(   N(   Rn   t   set_current(   R\   Rf   Rg   (   R   (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR     s    (   R   t   isclasst   Falset	   containedR   (   R   R   (    (   R   s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   depends_on_current_app  s    c           B@  s_   e  Z e Z d    Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d   Z RS(	   c         O@  s   t  t |   j | |   |  j j j d  rO t t j d t	 |      n  |  j j j d  r t t
 j d t	 |      n  d  S(   Nt   setUpR]   t   tearDown(   Rb   R    Rc   t	   __class__R   t   getR[   t   CASE_REDEFINES_SETUPt   formatR   t   CASE_REDEFINES_TEARDOWN(   R\   Rf   Rg   (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyRc     s    c         O@  s   t  | |   S(   N(   Ro   (   R\   Rf   Rg   (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR     s    c         @  s2  t  t j    |  _ d d l m } d d l m } d   | _ | _ t   |  _	 | j
 |  _ t     | j |  _ | j    d t f   f d     Y} |   | _ |  j d t  |  _ |  j s |  j j   n  t j   } | j |  _ | j |  _ | j t  y |  j   Wn |  j     n Xd  S(   Ni    (   t   _state(   t   resultc           S@  s   t  S(   N(   R   (    (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   <lambda>  R   t   NonTLSc           @  s   e  Z   Z RS(    (   R_   R`   R   (    (   t   trap(    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR     s   Rj   (   R   t	   threadingt	   enumeratet   _threads_at_setupt   celeryR   R   t   task_join_will_blockR   t   _current_appt   default_appt   _default_appRZ   t   _tlst	   _prev_tlst   set_default_appR   R   R   Rn   R   R   t   loggingt	   getLoggert   levelt   _AppCase__rootlevelt   handlerst   _AppCase__roothandlerst   _set_task_join_will_blockt   setupt   _teardown_app(   R\   R   R   R   t   root(    (   R   s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR     s.    		
c         C@  s  d d l  m } t j s t  t j s. t  t j s= t  t j sL t  |  j   } t	 t j | t
 f  s t	 t j | t
 f  r t t j | d    n  t	 t j | t
 f  s t	 t j | t
 f  r t t j | d    n  |  j j j d  } | d  k	 rVt	 | t  rVt	 | j t  rC| j j j   n  | j j   qVn  d d l m } | j t  | j |  j  |  j | _ |  j  | j _! |  j |  j  k	 r|  j j"   n  d  |  _ |  j# |  j$ t% t& j'     d  S(   Ni    (   t   LoggingProxyt   stdoutt   stderrRi   (   R   ((   t   celery.utils.logR  R   R  t   AssertionErrorR  t
   __stdout__t
   __stderr__t   _get_test_nameR   R!   R[   t   CASE_LOG_REDIRECT_EFFECTR   Rn   R   R   Rr   R   t   clientR   t   cachet   cleart   _cacheR   R   R  R   R   R   R   R   R   R   t   closet   assertEqualR   R   R   R   (   R\   R  t   thisRi   R   (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR	    s8    	c         C@  s   d j  |  j j |  j g  S(   Nt   .(   R   R   R_   t   _testMethodName(   R\   (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR    s    c         C@  s*   z |  j    Wd  |  j   X|  j   d  S(   N(   t   teardownR	  t   assert_no_logging_side_effect(   R\   (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR     s    c         C@  sp   |  j    } t j   } | j |  j k rB t t j |    n  | j |  j	 k rl t t
 j |    n  d  S(   N(   R  R  R  R  R  R[   t   CASE_LOG_LEVEL_EFFECTR   R  R  t   CASE_LOG_HANDLER_EFFECT(   R\   R  R
  (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR    s    c         C@  s   d  S(   N(    (   R\   (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR    s    c         C@  s   d  S(   N(    (   R\   (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR    s    (   R_   R`   Rd   R   Rc   R   R   R	  R  R   R  R  R  (    (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR      s   				 				c         C@  s)   g  |  j  D] } t | t  s
 | ^ q
 S(   N(   R  R   R   (   t   loggert   h(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   get_handlers  s    c         c@  sJ   t  |   } t   } t j |  } | g |  _ z	 | VWd  | |  _ Xd  S(   N(   R#  R   R  t   StreamHandlerR  (   R!  t   loglevelt   old_handlerst   siot
   siohandler(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR(     s    		c         @  s      f d   } | S(   Nc         @  s%   t         f d    } | S(   Nc          @  sK   t  j j    }  t  j   <z  |  |   SWd  | p< d t  j   <Xd  S(   NR   (   t   ost   environR   (   Rf   Rg   t   prev_val(   t   env_namet	   env_valueR   (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   _patch_environ  s
    (   R   (   R   R.  (   R,  R-  (   R   s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   _envpatched  s    !	(    (   R,  R-  R/  (    (   R,  R-  s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR)     s    c         @  s     f d   } | S(   Nc         @  s"   t        f d    } | S(   Nc          @  s4    j  } t  _  z   |  |   SWd  |  _  Xd  S(   N(   t   sleepR   (   Rf   Rg   t	   old_sleep(   R   R   (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   __sleepdeprived  s
    		(   R   (   R   R2  (   R   (   R   s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   _sleepdeprived  s    	(    (   R   R3  (    (   R   s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR*     s    c         @  s     f d   } | S(   Nc         @  s"   t        f d    } | S(   Nc          @  s;   t  j j    r. t d  j   f   n   |  |   S(   Ns   SKIP %s: %s set
(   R)  R*  R   R   R_   (   Rf   Rg   (   t   env_var_nameR   (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   _skips_if_environ)  s    (   R   (   R   R5  (   R4  (   R   s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt
   _wrap_test'  s    (    (   R4  R6  (    (   R4  s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR+   %  s    c         @  s      f d   } | S(   Nc         @  s"   t  |      f d    } | S(   Nc          @  s   t  d    f   d  S(   Ns   %s: %s(   R   (   Rf   Rg   (   t   reasont   sign(    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   _skipped_test9  s    (   R   (   R   R9  (   R7  R8  (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR6  7  s    (    (   R7  R8  R6  (    (   R7  R8  s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt
   _skip_test5  s    c         C@  s   t  |  d  S(   s   TODO test decorator.t   TODO(   R:  (   R7  (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR,   A  s    c         C@  s   t  |  d  S(   s   Skip test decorator.t   SKIP(   R:  (   R7  (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR-   F  s    c         @  s      f d   } | S(   s(   Skip test if predicate is :const:`True`.c         @  s     r t    |   p |  S(   N(   R-   (   R   (   t	   predicateR7  (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR   N  s    (    (   R=  R7  R   (    (   R=  R7  s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR.   K  s    c         C@  s   t  |  |  S(   s)   Skip test if predicate is :const:`False`.(   R.   (   R=  R7  (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR/   T  s    c          '@  s>   t  j     f d   } | t  _ z	 t VWd  t  _ Xd S(   sg  Ban some modules from being importable inside the context

    For example:

        >>> with mask_modules('sys'):
        ...     try:
        ...         import sys
        ...     except ImportError:
        ...         print('sys not found')
        sys not found

        >>> import sys  # noqa
        >>> sys.version
        (2, 5, 2, 'final', 0)

    c         @  s3   |    k r t  d |    n  |  | |  Sd  S(   Ns   No module named %s(   R   (   R]   Rf   Rg   (   t   modnamest
   realimport(    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   myimpp  s    N(   R   t
   __import__Rd   (   R>  R@  (    (   R>  R?  s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR0   [  s    			c          c@  s   t  j t  j }  } t  j t  j } } t   t   } } | t  _ t  _ | t  _ t  _ z | | f VWd |  t  _ | t  _ | t  _ | t  _ Xd S(   s9   Override `sys.stdout` and `sys.stderr` with `WhateverIO`.N(   R   R  R  R  R  R   (   t   prev_outt   prev_errt	   prev_routt	   prev_rerrt   mystdoutt   mystderr(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR1   }  s    			c         @  s   t       f d    } | S(   Nc          @  s!   t       |  |   SWd  QXd  S(   N(   R1   (   Rf   Rg   (   R   (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   disable  s    
(   R   (   R   RH  (    (   R   s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   disable_stdouts  s    c         @  s(   t  j        f d   } | S(   Nc         @  s(   t          f d    } | S(   Nc          @  sH   t     } t     z   |  |   SWd  t   |  Xd  S(   N(   t   getattrRs   (   Rf   Rg   t   prev(   R   t   mockedR   R]   (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt	   __patched  s
    (   R   (   R   RM  (   RL  R   R]   (   R   s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   _patch  s    $(   R   R   (   R   R]   RL  RN  (    (   RL  R   R]   s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt
   _old_patch  s    c         c@  s   t  |  |  } t |  | d   } | r: t |  | |  n% y t |  |  Wn t k
 r^ n Xz	 d  VWd  | d  k	 r t |  | |  n  | s y t |  |  Wq t k
 r q Xn  Xd  S(   N(   t   hasattrRJ  Rr   Rs   t   delattrR   (   R   R]   R   t   has_prevRK  (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR3     s"    	t   pypy_version_infot   python_implementationc         c@  s-   t  j |  } t  _ z	 d  VWd  | t  _ Xd  S(   N(   R   t   platform(   R   RK  (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR4     s    	c          g@  s7   t  d   |  D  } z	 d  VWd  t j j |  Xd  S(   Nc         s@  s6   |  ], } | t  j k r | t  j j |  f Vq d  S(   N(   R   R   Rq   (   t   .0t   k(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pys	   <genexpr>  s    (   t   dictR   R   t   update(   R   RK  (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR5     s    	c          g@  s   i  } x7 |  D]/ } t  j j |  | | <t |  t  j | <q Wz	 d  VWd  xI t |  D]; \ } } | d  k r t  j j | d   qY | t  j | <qY WXd  S(   N(   R   R   R   R	   R   Rr   Rq   (   R   RK  t   modR]   (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR6     s    	c       	   g@  s   i  } d t  f d     Y} g  } x[ |  D]S } y t j | | | <Wn t k
 rW n X| |  } t j | <| j |  q) Wz	 | VWd  xY |  D]Q } y | | t j | <Wq t k
 r y t j | =Wq t k
 r q Xq Xq WXd  S(   Nt
   MockModulec           B@  s   e  Z d    Z RS(   c         S@  s#   t  |  | t    t j |  |  S(   N(   Rs   R!   R	   R   (   R\   t   attr(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR^     s    (   R_   R`   R^   (    (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR[    s   (   R	   R   R   t   KeyErrorR   (   t   namesRK  R[  t   modsR]   RZ  (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR2     s(    	c         c@  sd   t    } |  _ |   | _ |   | _ d   } | | j _ | | j _ z	 | VWd  | j   Xd  S(   Nc          W@  s-   |  d r) t  |  d |  d |  d  n  d  S(   Ni    i   i   (   R   (   t   x(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   on_exit  s    
(   R!   R|   Rw   Ry   R   t   reset(   R
   t   typt   contextRa  (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR7     s    		c      
   c@  sm   t  t  [ } t |  F } | d  k	 r9 | | j _ n  |    } | j _ t   | _ | VWd  QXWd  QXd  S(   N(	   R$   R   R7   Rr   Rw   R   R|   R!   Ry   (   Rc  R   t   open_Rd  t   val(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR8     s    c          G@  s#   t  g  |  D] } t |  ^ q
   S(   N(   R   R$   (   t   targetst   target(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR9   #  s    c         k@  sS   t    } t |  } |  j |  z	 | VWd  |  j |  X| j d |  |  d  S(   Nt   signal(   R!   R   t   connectt
   disconnectt   assert_called_with(   Ri  R   t   handlert   call_handler(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR:   '  s    		c         @  s   t       f d    } | S(   Nc          @  s.   t  t d d   r! t d   n    |  |   S(   NRS  s   does not work on PyPy(   RJ  R   Rr   R   (   Rf   Rg   (   R   (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR   5  s    (   R   (   R   R   (    (   R   s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR;   3  s    c         @  s   t       f d    } | S(   Nc          @  s.   t  j j d  r! t d   n    |  |   S(   Nt   javas   does not work on Jython(   R   RU  t
   startswithR   (   Rf   Rg   (   R   (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR   ?  s    (   R   (   R   R   (    (   R   s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR<   =  s    c   	      C@  s  | j    | j j d d   } | j j d d   } | j j d d   } | rk |  j   t d |  } n | j j d d   } | r t | t  r | j   } n  | j j d d   } | r t | t	 j
  r |  j   t d |  } n  | rt | t  r| j   } n  i	 | j d 6| j d 6| j d	 6| j d
 6| rag  | D] } t |  ^ qIn d  d 6| rg  | D] } t |  ^ qun d  d 6| d 6| d 6| d 6S(   Nt   linkt
   link_errort	   countdownt   secondst   etat   expirest   taskt   idRf   Rg   t	   callbackst   errbackst   utc(   t   freezet   optionsRq   Rr   t   nowR   R   R   t	   isoformatt   numberst   RealRw  Rx  Rf   Rg   RX  (	   Rn   t   sigR{  Ry  Rz  Rs  Ru  Rv  t   s(    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR=   G  s0    




,,c          c@  s~   t  j t  j t  j t  j f }  t j   } | j } | j } z	 d  VWd  |  \ t  _ t  _ t  _ t  _ | | _ | | j (Xd  S(   N(	   R   R  R  R  R  R  R  R  R  (   t   outsR
  R  R  (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyR>   d  s    				(   t
   __future__R    t   unittestR-   t   unittest.utilR   R   R   t	   unittest2t   unittest2.utilR   R   R  R  R)  RU  R   R   R   t   timeR   R   t
   contextlibR   t   copyR   R   R   t	   functoolsR   R   R	   R
   R   t   noseR   t   kombuR   t	   kombu.logR   t   kombu.utilsR   R   R   R   t
   celery.appR   t   celery.backends.cacheR   R   t   celery.exceptionsR   R   t   celery.fiveR   R   R   R   R   R   R   t   celery.utils.functionalR   t   celery.utils.importsR   t   __all__R$   R%   R&   R"   R#   t   version_infot   PY3R   R   R  R  R   R   Rd   R*  R   Rm   R   RZ   t   log_clsRa   Rr   Ro   R!   Rv   R~   R   R   R   R'   R   R   R   t   TestCaseR   R   R    R#  t   ERRORR(   R)   R*   R+   R:  R,   R.   R/   R0   R1   RI  RO  R3   t   pypy_versiont   platform_pyimpR4   R5   R6   R2   R7   R8   R9   R:   R;   R<   R=   R>   (    (    (    s3   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/case.pyt   <module>   s  4														<K	g									"					
		
	
