σ
P'^c           @@  sn  d  Z  d d l m Z d d l Z d d l m Z d d l m Z d d l m	 Z
 m Z m Z m Z m Z m Z d d l m Z d d	 l m Z m Z d
 d d d d d d d d d d d d g Z e d    Z d a e j j d  pν d Z e j Z e j Z  d d  Z! d d  Z" d d  Z# d   Z$ d   Z% e j j d  rTe$   n e%   e Z& d    Z' d S(!   s9   
    celery.app
    ~~~~~~~~~~

    Celery Application.

i    (   t   absolute_importN(   t   Proxy(   t   _state(   t   get_current_appt   get_current_taskt   connect_on_app_finalizet   set_default_appt   _get_active_appst   _task_stack(   t   gen_task_namei   (   t   Celeryt
   AppPicklerR
   R   t   default_appt   app_or_defaultt	   bugreportt   enable_tracet   disable_tracet   shared_taskR   t   current_appt   current_taskt   push_current_taskt   pop_current_taskc           C@  s   t  j S(   N(   R   R   (    (    (    s5   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/__init__.pyt   <lambda>   t    t   CELERY_LOADERt   defaultc         C@  s   |  p t    j   S(   N(   R   R   (   t   app(    (    s5   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/__init__.pyR   7   s    c         C@  s   |  d  k r t j   S|  S(   N(   t   NoneR   R   (   R   (    (    s5   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/__init__.pyt   _app_or_default;   s    
c         C@  s   d d l  m } d d l m } |  d  k r t t j d d   rW d GH|   t j j S|   j	 d k rx t
 d   n  d GH|   t j S|  S(	   Ni    (   t   print_stack(   t   current_processR   s   -- RETURNING TO CURRENT APP --t   MainProcesss   DEFAULT APPs   -- RETURNING TO DEFAULT APP --(   t	   tracebackR   t   billiardR   R   t   getattrR   t   _tlsR   t   _namet	   ExceptionR   (   R   R   R   (    (    s5   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/__init__.pyt   _app_or_default_traceA   s    
c           C@  s
   t  a d  S(   N(   R&   R   (    (    (    s5   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/__init__.pyR   Q   s    c           C@  s
   t  a d  S(   N(   R   R   (    (    (    s5   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/__init__.pyR   V   s    t   CELERY_TRACE_APPc          O@  sL   d   } t  |   d k r? t |  d  r? | |   |  d  S| |  |   S(   s  Create shared tasks (decorator).
    Will return a proxy that always takes the task from the current apps
    task registry.

    This can be used by library authors to create tasks that will work
    for any app environment.

    Example:

        >>> from celery import Celery, shared_task
        >>> @shared_task
        ... def add(x, y):
        ...     return x + y

        >>> app1 = Celery(broker='amqp://')
        >>> add.app is app1
        True

        >>> app2 = Celery(broker='redis://')
        >>> add.app is app2

    c          @  s     f d   } | S(   Nc         @  s    j  d   t    f d    x= t   D]2 } | j r/ | j  | j     Wd  QXq/ q/ W   f d   } t |  S(   Nt   namec         @  s   |  j      S(   N(   t   _task_from_fun(   R   (   t   funt   options(    s5   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/__init__.pyR      R   c          @  s,   t    }  |  j  p* t |    j   j  S(   N(   R   t   tasksR	   t   __name__t
   __module__(   R   (   R*   R(   (    s5   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/__init__.pyt   task_by_cons   s    	(   t   getR   R   t	   finalizedt   _finalize_mutexR)   R   (   R*   R   R/   (   R+   (   R*   R(   s5   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/__init__.pyt   __inner|   s    	
(    (   R+   R3   (    (   R+   s5   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/__init__.pyt   create_shared_taskz   s    i   i    (   t   lent   callable(   t   argst   kwargsR4   (    (    s5   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/__init__.pyR   b   s    	"((   t   __doc__t
   __future__R    t   ost   celery.localR   t   celeryR   t   celery._stateR   R   R   R   R   R   R   R   t   celery.utilsR	   t   baseR
   R   t   __all__R   R   R   t   environR0   t   default_loadert   pushR   t   popR   R   R   R&   R   R   t   AppR   (    (    (    s5   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/__init__.pyt   <module>   s4   .					
