
    `?i	!                       S r SSKJr  SSKrSSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SS	KJ	r	  SS
KJ
r
  SSKJr  SSKJr  SSKJr  SSKJr  \R$                  (       a  SSKJr  SSKJr  \
" S\S\4   S9r\\\\   \S\4   4   r S       SS jjrS S jr        S!S jrS"S jr        S#S jr        S$S jr      S%S jr         S&S jr!g)'zhRoutines to handle adaption of legacy call signatures,
generation of deprecation notes and docstrings.

    )annotationsN)Any)Callable)List)Optional)Tuple)Type)TypeVar   )_ET)_ListenerFnType   )util)FullArgSpec)_ClsLevelDispatch)_HasEventsDispatch_F.)boundc                    ^ ^^ SUUU 4S jjnU$ )aG  legacy sig decorator


:param since: string version for deprecation warning
:param argnames: list of strings, which is *all* arguments that the legacy
 version accepted, including arguments that are still there
:param converter: lambda that will accept tuple of this full arg signature
 and return tuple of new arg signature.

c                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    [/var/www/html/livechat/backend/venv/lib/python3.13/site-packages/sqlalchemy/event/legacy.pyleg_legacy_signature.<locals>.leg6   s9    r/00$&B!
$$eXy%AB	    r   r   returnr    )r   r   r   r   s   ``` r   _legacy_signaturer%   &   s       Jr!   c                    SU l         U $ )NT)_omit_standard_example)r   s    r   r'   r'   ?   s     $BIr!   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b  T(       a   eSUUUU	4S jjnUs  $ SUU UUUU	4S jjnUs  $    T$ )Nz**kwTr   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                 H   > [         R                  " TTS9  Tc   eT" T" U 6 6 $ N)version)r   warn_deprecated)argskwconvr   r   warning_txts     r   wrap_leg%_wrap_fn_for_legacy.<locals>.wrap_legh   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 r2   )r   r4   dictzip	arg_names)r5   r6   argdictnameargs_from_dictr   dispatch_collectionr   has_kwr   r8   s        r   r9   r:   o   se    ((eD"3':'D'Dd#KLG@H%IdmN%I!>8R88!>22	 &Js   A)r5   r   r6   r   r#   r   )	legacy_signatureslenr5   boolvarkwr@   joinr>   clsname)
rB   r   argspecformatted_defr9   r   r7   rC   r   r8   s
   ``   @@@@@r   _wrap_fn_for_legacyrL   D   s    
 "5!F!FxB<6!F"~HFx=C--&DMM=
 3
 $((		-778"*M (//',,!	  !!z, ,  O3 3 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>~   s     @/?tVd]/?s   )rH   split)textrS   s    `r   _indentrX   }   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$ )NrN   c              3  0   #    U  H  nS SU0-  v   M     g7f)z%(arg)s = kw['%(arg)s']argNr$   )rQ   r[   s     r   rT   +_standard_listen_example.<locals>.<genexpr>   s       
9 &49s   r   r   z    c              3  ,   #    U  H
  u  pnUv   M     g 7frP   r$   )rQ   r   r5   r7   s       r   rT   r\      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)rX   rH   r>   rD   max__name__rC   )rB   rc   r   rb   r^   rW   s         r   _standard_listen_examplerf      s    
 		 
*44Qq9
 	
 	N ,, 
%8%J%J
 

 	3 	 	7D#m3"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   r_   r`   ra   rc   )rD   re   rC   rH   )rB   rc   r   rW   r   r5   r7   s          r   _legacy_listen_examplesrh      sf    
 D0BBT7  kk299Gr)-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`)rI   r_   
param_nameN)re   r@   )rQ   rk   rB   parent_dispatch_clss     r   rT   -_version_signature_changes.<locals>.<genexpr>   s>      / #@J I2;;"5":":", #@s   *-r,   r-   )r   rI   r_   ra   r`   )rD   re   r@   rH   r>   rC   )rl   rB   r   r5   r7   s   ``   r   _version_signature_changesrn      sv     ,==a@E	+ *33-22%)YY / #6"?"?/ & -@,F,FB
	
r!   c                h   [        USS5      (       a  UR                  (       d   eUR                  $ 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      $ )Nr'   Fz@.. container:: event_signatures

     Example argument forms::

_target_class_docobjz        r   )	getattr__doc__rX   rf   rD   rh   rn   r   inject_docstring_text)rB   rl   r   headerrc   rW   s         r   _augment_fn_docsrv      s    
 r+U33zzzzz	  /1DeLMG !4RH D ,,#$7K
 	

 	*
 	
 %%bjj$::r!   rP   )r   strr   z	List[str]r   zOptional[Callable[..., Any]]r#   zCallable[[_F], _F]r"   )rB   _ClsLevelDispatch[_ET]r   r   rJ   r   r#   r   )rW   rw   rS   rw   r#   rw   )rB   rx   rc   r   r   r   r#   rw   )rB   rx   rc   rw   r   r   r#   rw   )rl   Type[_HasEventsDispatch[_ET]]rB   rx   r#   rw   )rB   rx   rl   ry   r   r   r#   rw   )"rs   
__future__r   typingr   r   r   r   r   r	   r
   registryr   r   r-   r   util.compatr   TYPE_CHECKINGattrr   baser   r   rw   _LegacySignatureTyper%   r'   rL   rX   rf   rh   rn   rv   r$   r!   r   <module>r      sv   #          %  %	'( T#s(+,S$s)Xc3h-??@  /3 , 	2
6/66 6 	6rA&/&& 	& 		&R/ 	 		86/ 	<;/;6; 	; 		;r!   