ó
żb]c           @   sa   d  d l  m Z d   Z d   Z y d d l m Z Wn$ e k
 r\ e   j e    n Xd S(   i   (   t   utilc            s   t  j   f d    } | S(   sË   Decorator, memoize a function in a connection.info stash.

    Only applicable to functions which take no arguments other than a
    connection.  The memo will be stored in ``connection.info[key]``.
    c            sN   | j    } y | j   SWn, t k
 rI |  | |  | j   <} | SXd  S(   N(   t   connectt   infot   KeyError(   t   fnt   selft
   connectiont   val(   t   key(    s5   lib/python2.7/site-packages/sqlalchemy/engine/util.pyt	   decorated   s    (   R    t	   decorator(   R   R	   (    (   R   s5   lib/python2.7/site-packages/sqlalchemy/engine/util.pyt   connection_memoize   s    	c          C   s   d   }  t    S(   Nc         S   sŕ   |  s | r | g Sg  SnÂ t  |   d k rŞ |  d } t | t t f  r | sy t | d d  r} t | d d  r} | S| g SqÜ t | d  r | g S| g g Sn2 t |  d d  rŐ t |  d d  rŐ |  S|  g Sd S(   s  Given arguments from the calling form \*multiparams, \**params,
        return a list of bind parameter structures, usually a list of
        dictionaries.

        In the case of 'raw' execution which accepts positional parameters,
        it may be a list of tuples or lists.

        i   i    t   __iter__t   stript   keysN(   t   lent
   isinstancet   listt   tuplet   hasattr(   t   multiparamst   paramst   zero(    (    s5   lib/python2.7/site-packages/sqlalchemy/engine/util.pyt   _distill_params   s&    


(   t   locals(   R   (    (    s5   lib/python2.7/site-packages/sqlalchemy/engine/util.pyt   py_fallback   s    	+i˙˙˙˙(   R   N(	   t    R    R   R   t   sqlalchemy.cutilsR   t   ImportErrort   globalst   update(    (    (    s5   lib/python2.7/site-packages/sqlalchemy/engine/util.pyt   <module>   s   		/