ó
P'—^c           @@  s~  d  Z  d d l m 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 d d l 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 m Z m Z d d l m Z d d d d d g Z d Z e j d e j  ƒ Z! d „  Z" d e f d „  ƒ  YZ# d e$ f d „  ƒ  YZ% d „  Z& d „  Z' d „  Z( d „  Z) e e d „ Z* d S(   sp   
    celery.app.utils
    ~~~~~~~~~~~~~~~~

    App utilities: Compat settings, bugreport tool, pickling apps.

i    (   t   absolute_importN(   t   Mapping(   t
   ModuleType(   t   maybe_sanitize_url(   t   ConfigurationView(   t   itemst   string_tt   values(   t   pyimplementation(   t   pretty(   t   import_from_cwdt   symbol_by_namet   qualnamei   (   t   findt   Settingst   appstrt	   bugreportt   filter_hidden_settingst   find_appsô   
software -> celery:{celery_v} kombu:{kombu_v} py:{py_v}
            billiard:{billiard_v} {driver_v}
platform -> system:{system} arch:{arch} imp:{py_i}
loader   -> {loader}
settings -> transport:{transport} results:{results}

{human_settings}
s=   API|TOKEN|KEY|SECRET|PASS|PROFANITIES_LIST|SIGNATURE|DATABASEc         C@  s   d j  |  j p d t |  ƒ ƒ S(   s1   String used in __repr__ etc, to id app instances.s   {0}:0x{1:x}t   __main__(   t   formatt   maint   id(   t   app(    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyR   0   s    c           B@  sª   e  Z d  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z d „  Z	 d „  Z
 d d	 „ Z d d
 „ Z d „  Z e e d „ Z e e d „ Z RS(   ss   Celery settings object.

    .. seealso:

        :ref:`configuration` for a full list of configuration keys.

    c         C@  s   |  j  d d ƒ S(   Nt   CELERY_RESULT_BACKENDt   CELERY_BACKEND(   t   first(   t   self(    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyR   >   s    c         C@  s   |  j  d d d ƒ S(   Nt   BROKER_TRANSPORTt   BROKER_BACKENDt   CARROT_BACKEND(   R   (   R   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyR   B   s    	c         C@  s   |  j  S(   s4   Deprecated compat alias to :attr:`BROKER_TRANSPORT`.(   R   (   R   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyR   G   s    c         C@  s"   t  j j d ƒ p! |  j d d ƒ S(   Nt   CELERY_BROKER_URLt
   BROKER_URLt   BROKER_HOST(   t   ost   environt   getR   (   R   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyR    L   s    c         C@  s   |  j  d d ƒ S(   Nt   CELERY_TIMEZONEt	   TIME_ZONE(   R   (   R   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyR%   Q   s    c         C@  s   t  i  |  j d  ƒ S(   s7   Return the current configuration, but without defaults.iÿÿÿÿ(   R   t   _order(   R   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyt   without_defaultsV   s    c         C@  s   | |  j  ƒ  k S(   N(   R(   (   R   t   key(    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyt   value_set_for[   s    t   celeryc         C@  s   t  | | ƒ S(   s®  Search for option by name.

        Will return ``(namespace, key, type)`` tuple, e.g.::

            >>> from proj.celery import app
            >>> app.conf.find_option('disable_rate_limits')
            ('CELERY', 'DISABLE_RATE_LIMITS',
             <Option: type->bool default->False>))

        :param name: Name of option, cannot be partial.
        :keyword namespace: Preferred namespace (``CELERY`` by default).

        (   R   (   R   t   namet	   namespace(    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyt   find_option^   s    c         C@  s   |  j  |  j | | ƒ d  Œ  S(   s5   Shortcut to ``get_by_parts(*find_option(name)[:-1])``iÿÿÿÿ(   t   get_by_partsR.   (   R   R,   R-   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyt   find_value_for_keyn   s    c         G@  s   |  d j  d „  | Dƒ ƒ S(   sÜ   Return the current value for setting specified as a path.

        Example::

            >>> from proj.celery import app
            >>> app.conf.get_by_parts('CELERY', 'DISABLE_RATE_LIMITS')
            False

        t   _c         s@  s   |  ] } | r | Vq d  S(   N(    (   t   .0t   part(    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pys	   <genexpr>|   s    (   t   join(   R   t   parts(    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyR/   r   s    
c         C@  sG   | r t  n d „  } | t d „  t | r0 |  n	 |  j ƒ  ƒ Dƒ ƒ ƒ S(   Nc         S@  s   |  S(   N(    (   t   v(    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyt   <lambda>   t    c         s@  s=   |  ]3 \ } } | j  ƒ  r | j d  ƒ r | | f Vq d S(   R1   N(   t   isuppert
   startswith(   R2   t   kR6   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pys	   <genexpr>   s    	(   R   t   dictR   R(   (   R   t   with_defaultst   censoredt   filt(    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyt   table~   s    	c         C@  s)   d j  d „  t |  j | | ƒ ƒ Dƒ ƒ S(   sL   Return a human readable string showing changes to the
        configuration.s   
c         s@  s3   |  ]) \ } } d  j  | t | d d ƒƒ Vq d S(   s   {0}: {1}t   widthi2   N(   R   R	   (   R2   R)   t   value(    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pys	   <genexpr>Š   s   (   R4   R   R@   (   R   R=   R>   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyt   humanize†   s    (   t   __name__t
   __module__t   __doc__t   propertyR   R   R   R    R%   R(   R*   R.   R0   R/   t   Falset   TrueR@   RC   (    (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyR   5   s   			t
   AppPicklerc           B@  s>   e  Z d  Z d „  Z d „  Z d „  Z d d „ Z d „  Z RS(   s*   Old application pickler/unpickler (< 3.1).c         G@  s5   |  j  | Œ  } |  j | |  } |  j | |  | S(   N(   t   build_kwargst	   constructt   prepare(   R   t   clst   argst   kwargsR   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyt   __call__‘   s    c         K@  s   | j  j | d ƒ d  S(   Nt   changes(   t   conft   update(   R   R   RP   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyRM   —   s    c         G@  s   |  j  | Œ  S(   N(   t   build_standard_kwargs(   R   RO   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyRK   š   s    c         C@  sI   t  d | d | d | d | d | d | d | d | d	 t d
 |	 d |
 ƒ S(   NR   t   loadert   backendt   amqpRR   t   eventst   logt   controlt   set_as_currentt   accept_magic_kwargst   config_source(   R<   RH   (   R   R   RR   RV   RW   RX   RY   RZ   R[   R]   R^   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyRU      s
    c         K@  s
   | |   S(   N(    (   R   RN   RP   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyRL   ¦   s    N(	   RD   RE   RF   RQ   RM   RK   t   NoneRU   RL   (    (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyRJ   Ž   s   			c         G@  s   | ƒ  |  | Œ S(   s   Rebuild app for versions 2.5+(    (   RN   t   picklerRO   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyt   _unpickle_appª   s    c         C@  s   t  | d <|  |   S(   s   Rebuild app for versions 3.1+R\   (   RH   (   RN   RP   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyt   _unpickle_app_v2¯   s    
c         @  s,   d d „ ‰  t  ‡  f d †  t |  ƒ Dƒ ƒ S(   Nt   *i   c         S@  sœ   t  | t ƒ r t | ƒ St  |  t ƒ r˜ t j |  ƒ r; | Sd |  j ƒ  k rs d d l m } | | ƒ j	 d | ƒ S|  j ƒ  d k r˜ t
 | d | ƒSn  | S(   NR    i    (   t
   Connectiont   maskR   R   (   R   R   (   t
   isinstanceR   R   R   t   HIDDEN_SETTINGSt   searcht   uppert   kombuRd   t   as_uriR   (   R)   RB   Re   Rd   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyt   maybe_censor·   s    
c         3@  s*   |  ]  \ } } | ˆ  | | ƒ f Vq d  S(   N(    (   R2   R;   R6   (   Rl   (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pys	   <genexpr>Å   s    s   ********(   R<   R   (   RS   (    (   Rl   s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyR   µ   s    c         C@  s&  d d l  } d d l } d d l } y: |  j ƒ  } d j | j j | j j ƒ  ƒ } | j } Wn t	 k
 r{ d } } n Xt
 j d t j ƒ  d d j d „  t j ƒ  Dƒ ƒ d	 t ƒ  d
 | j d | j d | j d t j ƒ  d | d | d t |  j j pþ d ƒ d |  j j ƒ  d t |  j j ƒ ƒ S(   s=   Return a string containing information useful in bug reports.i    Ns   {0}:{1}R8   t   systemt   archs   , c         s@  s   |  ] } | r | Vq d  S(   N(    (   R2   t   x(    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pys	   <genexpr>Ø   s    t   py_it   celery_vt   kombu_vt
   billiard_vt   py_vt   driver_vt	   transportt   resultst   disabledt   human_settingsRV   (   t   billiardR+   Rj   t
   connectionR   Rv   t   driver_namet   driver_versiont   transport_clst	   Exceptiont   BUGREPORT_INFOt	   _platformRm   R4   t   architectureR   t   VERSION_BANNERt   __version__t   python_versionR   RS   R   RC   R   RV   t	   __class__(   R   Rz   R+   Rj   t   connRu   Rv   (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyR   È   s0    					c         C@  sg  d d l  m } y | |  d | ƒ} Wn t k
 rE | |  ƒ } n Xt | t ƒ rcd |  k rcy( | j } t | t ƒ rˆ t ƒ  ‚ n  WnÐ t k
 r[y( | j } t | t ƒ rÀ t ƒ  ‚ n  Wn t k
 rSt | d d  ƒ ry# t	 d j
 |  ƒ d | d | ƒSWqt k
 rqXn  x- t t | ƒ ƒ D] } t | | ƒ r0| Sq0W‚  q`X| SqcX| Sn  | S(   Ni   (   t   Celeryt   impt   :t   __path__s
   {0}.celeryR   (   t   baseRˆ   t   AttributeErrorRf   R   R   R+   t   getattrR_   R   R   t   ImportErrorR   t   vars(   R   R   R‰   Rˆ   t   symt   foundt   suspect(    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyR   ç   s<    		(+   RF   t
   __future__R    R"   t   platformR   t   ret   collectionsR   t   typesR   t   kombu.utils.urlR   t   celery.datastructuresR   t   celery.fiveR   R   R   t   celery.platformsR   t   celery.utils.textR	   t   celery.utils.importsR
   R   R   t   defaultsR   t   __all__R€   t   compilet
   IGNORECASERg   R   R   t   objectRJ   Ra   Rb   R   R   R   (    (    (    s2   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/utils.pyt   <module>   s6   		Y				