
    -h                     B    S r SSKJr  SS jrS rS rS rS rS	 rS
 r	g)zhRoutines to handle adaption of legacy call signatures,
generation of deprecation notes and docstrings.

   )utilNc                    ^ ^^ UUU 4S jnU$ )Nc                 t   > [        U S5      (       d  / U l        U R                  R                  TTT45        U $ )N_legacy_signatures)hasattrr   append)fnargnames	convertersinces    lC:\Users\ROHAN GUPTA\OneDrive\Desktop\mathbuddy-assessment\venv\Lib\site-packages\sqlalchemy/event/legacy.pyleg_legacy_signature.<locals>.leg   s9    r/00$&B!
$$eXy%AB	     )r   r
   r   r   s   ``` r   _legacy_signaturer      s     Jr   c           
        ^ ^^^^^^	 T R                    H  u  mmmTS   S:X  a  SmTSS mOSm[        T5      [        UR                  5      :X  d  M>  T[        UR                  5      L d  MX  ST R
                  < SSR                  T R                  5      < T(       a  S	OS
< S3nST R                  < ST R
                  < ST< SU< S3	m	T(       a  T(       a   eUUUU	4S jnUs  $ UU UUUU	4S jnUs  $    T$ )Nz**kwT    Fzdef (, , **kw )z The argument signature for the ".z+" event listener has changed as of version zl, and conversion for the old argument signature will be removed in a future release.  The new signature is ""c                  >   > [         R                  " TTS9  T" T" U 6 6 $ N)version)r   warn_deprecated)argsconvr	   r   warning_txts    r   wrap_leg%_wrap_fn_for_legacy.<locals>.wrap_leg;   s"    ((eDtT{++r   c                     > [         R                  " T	TS9  [        [        TR                  U 5      5      nT Vs/ s H  o2U   PM	     n nT(       a  T" U 0 UD6$ T" U 6 $ s  snf r   )r   r    dictzip	arg_names)
r!   kwargdictnamer
   dispatch_collectionr	   has_kwr   r#   s
       r   r$   r%   A   sb    ((eD"3':'D'Dd#KLG6>?hdDMhD?!42.!4y(	 @s   A)	legacy_signatureslenr!   boolvarkwr,   joinr)   clsname)
r-   r	   argspecformatted_defr$   r
   r"   r.   r   r#   s
   ``   @@@@@r   _wrap_fn_for_legacyr7      s    !4!F!FxB<6!F"~HFx=C--&DMM=
 3

 $((		-778"*M (//',,!	  !!z, , O) ) O_ "Gb 	r   c                 X   ^ SR                  U4S jU R                  S5       5       5      $ )N
c              3   .   >#    U  H
  nTU-   v   M     g 7fNr   ).0lineindents     r   	<genexpr>_indent.<locals>.<genexpr>P   s     @/?tVd]/?s   )r3   split)textr>   s    `r   _indentrC   O   s!    99@tzz$/?@@@r   c                 d   [        SR                  S U R                  SS  5       5      S5      nU R                  (       a  [	        S U R                   5       5      nOS nSnUU(       a  SU-  OS	UR
                  U R                  (       a  S
OS	SR                  U R                  5      UUS.-  nU$ )Nr9   c              3   0   #    U  H  nS SU0-  v   M     g7f)z%(arg)s = kw['%(arg)s']argNr   )r<   rF   s     r   r?   +_standard_listen_example.<locals>.<genexpr>U   s       
9 &49s   r   r   z    c              3   ,   #    U  H
  u  pnUv   M     g 7fr;   r   )r<   r   r!   r"   s       r   r?   rG   \   s      
%J!T %Js   zfrom sqlalchemy import event


@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 (arguments as of %s)r   r   r   )current_since
event_namehas_kw_argumentsnamed_event_argumentsexample_kw_argsample_target)rC   r3   r)   r/   max__name__r.   )r-   rN   r	   rM   rI   rB   s         r   _standard_listen_examplerQ   S   s    		 
*44Qq9
 	
 	N ,, 
%8%J%J
 

 	3 	 	 1=@kk(;(B(BH!%+>+H+H!I(&	 	D Kr   c           	          SnU R                    H@  u  pEnUSUUR                  U R                  (       a  SOSSR                  U5      US.-  -  nMB     U$ )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   rJ   rK   rL   rN   )r/   rP   r.   r3   )r-   rN   r	   rB   r   r!   r"   s          r   _legacy_listen_examplesrS   x   sh    D0BBT7  kk&-- %,)-4!.	
 C& Kr   c                    ^ ^ TR                   S   u  p#nSUT R                  TR                  SR                  UU 4S jTR                   5       5      TR
                  (       a  SOSS.-  $ )Nr   a=  
.. versionchanged:: %(since)s
    The :meth:`.%(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   c              3   ^   >#    U  H"  nS TR                   TR                  US.-  v   M$     g7f)z6:paramref:`.%(clsname)s.%(event_name)s.%(param_name)s`)r4   rJ   
param_nameN)rP   r,   )r<   rV   r-   parent_dispatch_clss     r   r?   -_version_signature_changes.<locals>.<genexpr>   s>      / #@J I2;;"5":":", #@s   *-r   r   )r   r4   rJ   rL   rK   )r/   rP   r,   r3   r)   r.   )rW   r-   r   r!   r"   s   ``   r   _version_signature_changesrY      st    +==a@E	+ *33-22%)YY / #6"?"?/ & -@,F,FB
	
r   c                    Sn[        USS5      nU[        [        XU5      S5      -   nU R                  (       a'  U[        [	        XU5      S5      -  nU[        X5      -  n[        R                  " UR                  US5      $ )Nz@.. container:: event_signatures

     Example argument forms::

_target_class_docobjz           )	getattrrC   rQ   r/   rS   rY   r   inject_docstring_text__doc__)r-   rW   r	   headerrN   rB   s         r   _augment_fn_docsrb      s    	  /1DeLMG !4RH D ,,#$7K
 	

 	*
 	
 %%bjj$::r   r;   )
r`   r   r   r   r7   rC   rQ   rS   rY   rb   r   r   r   <module>rc      s5   
 2jA"J06;r   