ó
P'—^c           @@  s'  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l m Z m Z d  d l m Z d  d l	 m
 Z
 d  d l m Z d  d l m Z e j d  d k  rÀ e e d	 ƒ rÀ d  d
 l m Z n d  d
 l m Z d d g Z d Z d „  Z d d „ Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   i    (   t   absolute_importN(   t   cached_propertyt   symbol_by_name(   t   datetime(   t   import_module(   t   signals(   t   FixupWarningi   t   pypy_version_info(   t   StringIOt   DjangoFixupt   fixupss   Environment variable DJANGO_SETTINGS_MODULE is defined
but Django is not installed.  Will not apply Django fixups!
c         C@  s8   y t  j |  j ƒ  ƒ Wn t t t f k
 r3 n Xd  S(   N(   t   ost   closet   filenot   AttributeErrort   OSErrort	   TypeError(   t   fh(    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyt   _maybe_close_fd   s    t   DJANGO_SETTINGS_MODULEc         C@  s{   t  j j | ƒ } | rw d |  j j ƒ  k rw y d d  l } Wn$ t k
 rc t j t	 t
 ƒ ƒ qw Xt |  ƒ j ƒ  Sn  d  S(   Nt   djangoi    (   R   t   environt   gett
   loader_clst   lowerR   t   ImportErrort   warningst   warnR   t   ERR_NOT_INSTALLEDR	   t   install(   t   appt   envt   SETTINGS_MODULER   (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyR
   $   s    c           B@  sq   e  Z d  „  Z d „  Z e d „  ƒ Z d „  Z d „  Z e d „ Z	 e d „ Z
 e d „  ƒ Z e d „  ƒ Z RS(	   c         C@  s#   | |  _  |  j  j ƒ  d  |  _ d  S(   N(   R   t   set_defaultt   Nonet   _worker_fixup(   t   selfR   (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyt   __init__1   s    	c         C@  sd   t  j j t j ƒ  ƒ |  j |  j j _ |  j |  j j _ t	 j
 j |  j ƒ t	 j j |  j ƒ |  S(   N(   t   syst   patht   appendR   t   getcwdt   nowR   t   loadert   mail_adminsR   t   import_modulest   connectt   on_import_modulest   worker_initt   on_worker_init(   R$   (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyR   6   s    c         C@  s+   |  j  d  k r$ t |  j ƒ |  _  n  |  j  S(   N(   R#   R"   t   DjangoWorkerFixupR   (   R$   (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyt   worker_fixupA   s    c         K@  s   |  j  j ƒ  d  S(   N(   R3   t   validate_models(   R$   t   kwargs(    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyR/   G   s    c         K@  s   |  j  j ƒ  d  S(   N(   R3   R   (   R$   R5   (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyR1   K   s    c         C@  s   | r t  j ƒ  S|  j ƒ  S(   N(   R   t   utcnowt   _now(   R$   t   utc(    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyR*   N   s    c         K@  s   |  j  | | d | ƒS(   Nt   fail_silently(   t   _mail_admins(   R$   t   subjectt   bodyR9   R5   (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyR,   Q   s    c         C@  s
   t  d ƒ S(   Ns   django.core.mail:mail_admins(   R   (   R$   (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyR:   T   s    c         C@  s0   y t  d ƒ SWn t t f k
 r+ t j SXd  S(   Ns   django.utils.timezone:now(   R   R   R   R   R*   (   R$   (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyR7   X   s    (   t   __name__t
   __module__R%   R   R   R3   R/   R1   t   FalseR*   R,   R:   R7   (    (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyR	   /   s   				R2   c           B@  sh   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z RS(   i    c         C@  s»  | |  _  |  j  j j d d  ƒ |  _ t d ƒ |  _ t d ƒ |  _ t d ƒ |  _	 t d ƒ } y( d d  l
 } | j | j | j f } Wn t k
 rž d } n Xy( d d  l } | j | j | j f } Wn t k
 rà d	 } n Xy( d d  l } | j | j | j f } Wn t k
 r"d
 } n Xy( d d  l }	 |	 j |	 j |	 j f }
 Wn t k
 rdd }
 n Xy t d ƒ |  _ Wn  t t f k
 ršd  |  _ n X| f | | | |
 |  _ d  S(   Nt   CELERY_DB_REUSE_MAXs	   django.dbs   django.core.caches   django.conf:settingss   django.db:DatabaseErrori    s   django.db:close_old_connections(    (    (    (    (   R   t   confR   R"   t   db_reuse_maxR   t   _dbt   _cacheR   t	   _settingst   MySQLdbt   DatabaseErrort   InterfaceErrort   OperationalErrorR   t   psycopg2t   sqlite3t	   cx_Oraclet   _close_old_connectionsR   t   database_errors(   R$   R   RG   t   mysqlt   _my_database_errorst   pgt   _pg_database_errorsRK   t   _lite_database_errorst   oraclet   _oracle_database_errors(    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyR%   c   sR    	



c   	      C@  s$  d d  l  } y | j } Wn t k
 r, n X| ƒ  t ƒ  } y d d l m } Wn™ t k
 rì d d l m } | ƒ  } y8 d d l m	 } | t
 j ƒ | _ | t
 j ƒ | _ Wn* t k
 rÞ t
 j t
 j | _ | _ n X| j ƒ  n4 X| | d  ƒ } | r t d j | j ƒ  ƒ ƒ ‚ n  d  S(   Ni    (   t   get_validation_errors(   t   BaseCommand(   t   OutputWrappers/   One or more Django models did not validate:
{0}(   R   t   setupR   R   t!   django.core.management.validationRV   R   t   django.core.management.baseRW   RX   R&   t   stdoutt   stderrt   checkR"   t   RuntimeErrort   formatt   getvalue(	   R$   R   t   django_setupt   sRV   RW   t   cmdRX   t
   num_errors(    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyR4   —   s0    		c         C@  sw   t  j j |  j ƒ t  j j |  j ƒ t  j j |  j ƒ t  j j |  j	 ƒ t  j
 j |  j ƒ |  j ƒ  |  j ƒ  |  S(   N(   R   t   beat_embedded_initR.   t   close_databaset   worker_readyt   on_worker_readyt   task_prerunt   on_task_prerunt   task_postrunt   on_task_postrunt   worker_process_initt   on_worker_process_initt   close_cache(   R$   (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyR   µ   s    

c         K@  s¼   t  j j d ƒ r |  j ƒ  n  y@ x9 |  j j j ƒ  D]% } | r5 | j r5 t | j ƒ q5 q5 WWnB t	 k
 r£ |  j j r¤ |  j j j r¤ t |  j j j ƒ q¤ n X|  j
 ƒ  |  j ƒ  d  S(   Nt   FORKED_BY_MULTIPROCESSING(   R   R   R   R4   RC   t   connectionst   allt
   connectionR   R   t   _close_databaseRp   (   R$   R5   t   c(    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyRo   ¿   s    

c         K@  s&   t  | j d t ƒ s" |  j ƒ  n  d S(   s   Called before every task.t   is_eagerN(   t   getattrt   requestR?   Rg   (   R$   t   senderR5   (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyRk   Ù   s    c         K@  s0   t  | j d t ƒ s, |  j ƒ  |  j ƒ  n  d  S(   NRw   (   Rx   Ry   R?   Rg   Rp   (   R$   Rz   R5   (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyRm   Þ   s    
c         K@  se   |  j  r |  j  ƒ  S|  j s& |  j ƒ  S|  j |  j d k rR d |  _ |  j ƒ  n  |  j d 7_ d  S(   Ni   i    i   (   RM   RB   Ru   t   _db_recycles(   R$   R5   (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyRg   å   s    	
	
	c         C@  sÖ   y, g  |  j  j j ƒ  D] } | j ^ q } WnD t k
 rr t |  j  d ƒ r` |  j  j g } qs |  j  j g } n Xx\ | D]T } y | ƒ  Wqz |  j k
 rÍ } t	 | ƒ } d | k rÎ d | k rÎ ‚  qÎ qz Xqz Wd  S(   Nt   close_old_connectionst   closeds   not connected(
   RC   Rr   Rs   R   R   t   hasattrR|   t   close_connectionRN   t   str(   R$   t   connt   funsR   t   exct   str_exc(    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyRu   ï   s    ,c         C@  s2   y |  j  j j ƒ  Wn t t f k
 r- n Xd  S(   N(   RD   t   cacheR   R   R   (   R$   (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyRp     s    c         K@  s    |  j  j r t j d ƒ n  d  S(   Ns_   Using settings.DEBUG leads to a memory leak, never use this setting in production environments!(   RE   t   DEBUGR   R   (   R$   R5   (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyRi     s    (   R=   R>   R{   R%   R4   R   Ro   Rk   Rm   Rg   Ru   Rp   Ri   (    (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyR2   `   s   	4		
				
		(   t
   __future__R    R   R&   R   t   kombu.utilsR   R   R   t	   importlibR   t   celeryR   t   celery.exceptionsR   t   version_infoR~   R   t   iot   __all__R   R   R
   t   objectR	   R2   (    (    (    s6   /tmp/pip-unpacked-wheel-gV1wwp/celery/fixups/django.pyt   <module>   s"   #	1