ó
H`¾Tc           @   s\   d  Z  d d l m Z d
 d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d	 „  Z
 d
 S(   sh   Routines to handle adaption of legacy call signatures,
generation of deprecation notes and docstrings.

i   (   t   utilc            s   ‡  ‡ ‡ f d †  } | S(   Nc            s8   t  |  d ƒ s g  |  _ n  |  j j ˆ  ˆ ˆ f ƒ |  S(   Nt   _legacy_signatures(   t   hasattrR   t   append(   t   fn(   t   sincet   argnamest	   converter(    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/event/legacy.pyt   leg   s    (    (   R   R   R   R   (    (   R   R   R   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/event/legacy.pyt   _legacy_signature   s    c            sÅ   x¾ ˆ j  D]¯ \ } ‰ ‰  ˆ d d k r? t ‰ ˆ d d !‰ n t ‰ t ˆ ƒ t | j ƒ k r
 ˆ t | j ƒ k r
 ˆ  r ˆ sˆ t ‚ ‡  ‡ f d †  } n ‡ ‡ ‡ ‡ f d †  } | Sq
 Wˆ Sd  S(   Niÿÿÿÿs   **kwi    c             s   ˆ ˆ  |  Œ  Œ  S(   N(    (   t   args(   t   convR   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/event/legacy.pyt   wrap_leg'   s    c             sV   t  t ˆ j |  ƒ ƒ } g  ˆ  D] } | | ^ q }  ˆ rH ˆ |  | Ž  Sˆ |  Œ  Sd  S(   N(   t   dictt   zipt	   arg_names(   R
   t   kwt   argdictt   name(   R   t   dispatch_descriptort   has_kwR   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/event/legacy.pyR   *   s
    (   t   legacy_signaturest   Truet   Falset   lenR
   t   boolt   keywordst   AssertionError(   R   R   t   argspecR   R   (    (   R   R   R   R   R   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/event/legacy.pyt   _wrap_fn_for_legacy   s    c            s&   d j  ‡  f d †  |  j d ƒ Dƒ ƒ S(   Ns   
c         3   s   |  ] } ˆ  | Vq d  S(   N(    (   t   .0t   line(   t   indent(    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/event/legacy.pys	   <genexpr>8   s   (   t   joint   split(   t   textR    (    (   R    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/event/legacy.pyt   _indent6   s    c         C   så   t  d j d „  |  j d d !Dƒ ƒ d ƒ } |  j rQ t d „  |  j Dƒ ƒ } n d  } d } t |  j ƒ d k r | d	 7} n  | i | r• d
 | n d d 6| j d 6|  j rµ d n d d 6d j |  j ƒ d 6| d 6| d 6;} | S(   Ns   
c         s   s    |  ] } d  i | d 6Vq d S(   s   %(arg)s = kw['%(arg)s']t   argN(    (   R   R%   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/event/legacy.pys	   <genexpr>@   s   i    i   s       c         s   s   |  ] \ } } } | Vq d  S(   N(    (   R   R   R
   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/event/legacy.pys	   <genexpr>E   s    s  from sqlalchemy import event

# standard decorator style%(current_since)s
@event.listens_for(%(sample_target)s, '%(event_name)s')
def receive_%(event_name)s(%(named_event_arguments)s%(has_kw_arguments)s):
    "listen for the '%(event_name)s' event"

    # ... (event handling logic) ...
i   sð   
# named argument style (new in 0.9)
@event.listens_for(%(sample_target)s, '%(event_name)s', named=True)
def receive_%(event_name)s(**kw):
    "listen for the '%(event_name)s' event"
%(example_kw_arg)s

    # ... (event handling logic) ...
s    (arguments as of %s)t    t   current_sincet
   event_names   , **kwt   has_kw_argumentss   , t   named_event_argumentst   example_kw_argt   sample_target(	   R$   R!   R   R   t   maxt   NoneR   t   __name__R   (   R   R,   R   R+   R'   R#   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/event/legacy.pyt   _standard_listen_example=   s*    				
	
c         C   ss   d } xf |  j  D][ \ } } } | d i | d 6| j d 6|  j rH d n d d 6d j | ƒ d 6| d	 67} q W| S(
   NR&   sý   
# legacy calling style (pre-%(since)s)
@event.listens_for(%(sample_target)s, '%(event_name)s')
def receive_%(event_name)s(%(named_event_arguments)s%(has_kw_arguments)s):
    "listen for the '%(event_name)s' event"

    # ... (event handling logic) ...
R   R(   s    **kwR)   s   , R*   R,   (   R   R/   R   R!   (   R   R,   R   R#   R   R
   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/event/legacy.pyt   _legacy_listen_examplesk   s    
c         C   sX   |  j  d \ } } } d i | d 6|  j d 6d j |  j ƒ d 6|  j rO d n d d	 6S(
   Ni    s#  
.. versionchanged:: %(since)s
    The ``%(event_name)s`` event now accepts the 
    arguments ``%(named_event_arguments)s%(has_kw_arguments)s``.
    Listener functions which accept the previous argument 
    signature(s) listed above will be automatically 
    adapted to the new signature.R   R(   s   , R*   s   , **kwR&   R)   (   R   R/   R!   R   R   (   R   R   R
   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/event/legacy.pyt   _version_signature_changes€   s    
c         C   sˆ   d } t  | d d ƒ } | t t |  | | ƒ d ƒ } |  j rr | t t |  | | ƒ d ƒ 7} | t |  ƒ 7} n  t j | j | d ƒ S(	   Ns@   .. container:: event_signatures

     Example argument forms::

t   _target_class_doct   objt    i   i   s           s           (	   t   getattrR$   R0   R   R1   R2   R    t   inject_docstring_textt   __doc__(   R   t   parent_dispatch_clsR   t   headerR,   R#   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/event/legacy.pyt   _augment_fn_docs‘   s     
	
N(   R8   R&   R    R.   R	   R   R$   R0   R1   R2   R;   (    (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/event/legacy.pyt   <module>   s   				.		