
    ؄_                     B    d Z ddlmZ ddZd Zd Zd Zd Zd	 Zd
 Z	dS )zhRoutines to handle adaption of legacy call signatures,
generation of deprecation notes and docstrings.

   )utilNc                       fd}|S )Nc                 p    t          | d          sg | _        | j                            f           | S )N_legacy_signatures)hasattrr   append)fnargnames	convertersinces    \/var/www/book.euthymeo.com/html/venv/lib/python3.11/site-packages/sqlalchemy/event/legacy.pylegz_legacy_signature.<locals>.leg   sA    r/00 	'$&B!
$$eXy%ABBB	     )r   r
   r   r   s   ``` r   _legacy_signaturer      s/           Jr   c                 
     j         D ]u\  }d         dk    rddd         ndt                    t          |j                  k    r/t          |j                  u rrrJ fd}n fd}|c S vS )Nz**kwT    Fc                        |   S Nr   )argsconvr	   s    r   wrap_legz%_wrap_fn_for_legacy.<locals>.wrap_leg)   s    2ttT{++r   c                      t          t          j        |                     fdD             } r | i |S  |  S )Nc                      g | ]
}|         S r   r   ).0nameargdicts     r   
<listcomp>z9_wrap_fn_for_legacy.<locals>.wrap_leg.<locals>.<listcomp>0   s    ???dGDM???r   )dictzip	arg_names)r   kwr   r
   dispatch_collectionr	   has_kws     @r   r   z%_wrap_fn_for_legacy.<locals>.wrap_leg.   s^    "3':'Dd#K#KLLG????h???D )!r42.!r4y(r   )legacy_signatureslenr   boolvarkw)r$   r	   argspecr   r   r
   r   r%   s   ``   @@@r   _wrap_fn_for_legacyr+      s    !4!F  xB<6!!F"~HHFx==C----&DM=
 =
 3
 3
  )!!!!, , , , , , ,
) ) ) ) ) ) ) ) OOO	r   c                 l    d                     fd|                     d          D                       S )N
c              3   "   K   | ]	}|z   V  
d S r   r   )r   lineindents     r   	<genexpr>z_indent.<locals>.<genexpr><   s'      @@tVd]@@@@@@r   )joinsplit)textr0   s    `r   _indentr5   ;   s6    99@@@@tzz$/?/?@@@@@@r   c                 z   t          d                    d | j        dd         D                       d          }| j        rt	          d | j        D                       }nd }d}t          | j                  dk    r|d	z  }||rd
|z  nd|j        | j        rdndd                    | j                  ||dz  }|S )Nr-   c              3   $   K   | ]}d d|iz  V  dS )z%(arg)s = kw['%(arg)s']argNr   )r   r8   s     r   r1   z+_standard_listen_example.<locals>.<genexpr>A   s?       
 
 &4
 
 
 
 
 
r   r   r   z    c              3   "   K   | ]
\  }}}|V  d S r   r   )r   r   r   r   s       r   r1   z+_standard_listen_example.<locals>.<genexpr>H   s<       
 
!tT 
 
 
 
 
 
r   a  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) ...
   z
# 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) ...
z (arguments as of %s) , **kw, )current_since
event_namehas_kw_argumentsnamed_event_argumentsexample_kw_argsample_target)r5   r2   r"   r&   maxr'   __name__r%   )r$   rC   r	   rB   r>   r4   s         r   _standard_listen_examplerF   ?   s%   		 
 
*4QqS9
 
 
 	
 	
 	 N ,  
 
%8%J
 
 
 
 

 	3 	 ())A--7	
 	0=@@k(;(BJHH!%+>+H!I!I(&	 	 	D Kr   c           	          d}| j         D ]5\  }}}|d||j        | j        rdndd                    |          |dz  z  }6|S )Nr;   a&  
# DEPRECATED calling style (pre-%(since)s, will be removed in a future release)
@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) ...
z **kwr=   )r   r?   r@   rA   rC   )r&   rE   r%   r2   )r$   rC   r	   r4   r   r   r   s          r   _legacy_listen_examplesrH   p   ss    D0B 
 
tT7  k&-%GG)-4!. 	
$ Kr   c                     |j         d         \  }}}d|| j        |j        d                    |j                  |j        rdnddz  S )Nr   a>  
.. deprecated:: %(since)s
    The :class:`.%(clsname)s.%(event_name)s` event now accepts the 
    arguments ``%(named_event_arguments)s%(has_kw_arguments)s``.
    Support for listener functions which accept the previous 
    argument signature(s) listed above as "deprecated" will be 
    removed in a future release.r=   r<   r;   )r   clsnamer?   rA   r@   )r&   rE   r   r2   r"   r%   )parent_dispatch_clsr$   r   r   r   s        r   _version_signature_changesrL      sb    +=a@E4	+ *3-2%)YY/B/L%M%M,?,F NB
 
	
r   c                    d}t          |dd          }|t          t          | ||          d          z   }| j        r5|t          t	          | ||          d          z  }|t          ||           z  }t          j        |j        |d          S )Nz@.. container:: event_signatures

     Example argument forms::

_target_class_docobjz           )	getattrr5   rF   r&   rH   rL   r   inject_docstring_text__doc__)r$   rK   r	   headerrC   r4   s         r   _augment_fn_docsrU      s    	  /1DeLLMG !4mRHH  D , 
#$7KK
 
 	

 	*!4
 
 	
 %bj$:::r   r   )
rS   r;   r   r   r+   r5   rF   rH   rL   rU   r   r   r   <module>rV      s    
           BA A A. . .b  0  &; ; ; ; ;r   