
P'^c           @@  s   d  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
 d d l m Z e   Z d g Z d e f d	     YZ d
 S(   sf   
    celery.backends.database.session
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    SQLAlchemy sessions.

i    (   t   absolute_import(   t   register_after_fork(   t   create_engine(   t   declarative_base(   t   sessionmaker(   t   NullPoolt   SessionManagerc           B@  sA   e  Z d    Z d   Z d   Z e d  Z d   Z d   Z RS(   c         C@  s8   i  |  _  i  |  _ t |  _ t |  _ t |  |  j  d  S(   N(   t   _enginest	   _sessionst   Falset   forkedt   preparedR   t   _after_fork(   t   self(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/backends/database/session.pyt   __init__   s
    				c         C@  s   t  |  _ d  S(   N(   t   TrueR
   (   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/backends/database/session.pyR      s    c         K@  se   |  j  rJ y |  j | SWqa t k
 rF t | |  } |  j | <| SXn t | d <t | |  Sd  S(   Nt	   poolclass(   R
   R   t   KeyErrorR   R   (   R   t   dburit   kwargst   engine(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/backends/database/session.pyt
   get_engine"   s    	
c         K@  sq   |  j  | |  } |  j rZ | s0 | |  j k rI t d |  |  j | <n  | |  j | f S| t d |  f Sd  S(   Nt   bind(   R   R
   R   R   (   R   R   t   short_lived_sessionsR   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/backends/database/session.pyt   create_session-   s    	c         C@  s)   |  j  s% t j j |  t |  _  n  d  S(   N(   R   t   ResultModelBaset   metadatat
   create_allR   (   R   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/backends/database/session.pyt   prepare_models6   s    	c         K@  s,   |  j  | |  \ } } |  j |  |   S(   N(   R   R   (   R   R   R   R   t   session(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/backends/database/session.pyt   session_factory;   s    (	   t   __name__t
   __module__R   R   R   R	   R   R   R   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/backends/database/session.pyR      s   					N(   t   __doc__t
   __future__R    t   billiard.utilR   t
   sqlalchemyR   t   sqlalchemy.ext.declarativeR   t   sqlalchemy.ormR   t   sqlalchemy.poolR   R   t   __all__t   objectR   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/backends/database/session.pyt   <module>   s   		