ó
    Ñ]j	!  ã                  óÂ  • 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    €€€ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sqlalchemy/event/legacy.pyÚlegÚ_legacy_signature.<locals>.leg6   s9   ø€ Ü�rÐ/×0Ñ0Ø$&ˆBÔ!Ø
×Ñ×$Ñ$ e¨X°yÐ%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$ )Néÿÿÿÿz**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ØÑ+Ð+Ð+Ù™t T˜{Ð+Ð+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Ñ'DÀdÓ#KÓL�GÙ@HÓ%IÂ¸¨d¤mÁ�NÐ%IÞÙ! >Ð8°RÑ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Ø�M‰Mó=
õ 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   øé € Ð@Ò/? t�V˜d–]Ò/?ùs   ƒ)rH   Úsplit)ÚtextrS   s    `r   Ú_indentrX   }   s!   ø€ Ø�9‰9Ô@¨t¯z©z¸$Ô/?Ó@Ó@Ð@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Ú9ùs   ‚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õ Ú%Jùs   ‚zôfrom 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Ñ4°Q°qÑ9ó
ó 	
ð 	ó€Nð ×,×,Üñ 
à%8×%JÒ%Jó
ó 
‰ð
 ˆð	3ð 	ð 	æ7DÐ# mÒ3È"à—k‘kØ(;×(B×(B™HÈØ!%§¡Ð+>×+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ð Ø Ÿk™kà2×9×9‘G¸rà)-¯©°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Ø%)§Y¡Yõ /ð #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Ø�z�zÐˆzØ�z‰zÐð	ð ô Ð/Ð1DÀeÓL€MØ”GÜ Ð!4ÀRÓHØóñ €Dð ×,×,Ø”Ü#Ð$7ÈÓKØó
ñ 	
ˆð
 	Ô*Øó
ñ 	
ˆô ×%Ò% b§j¡j°$¸Ó:Ð: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¡)¨X°c¸3°hÑ-?Ð?Ñ@Ð ð /3ðØðàðð ,ðð õ	ô2ð
6Ø/ð6àð6ð ð6ð ô	6ôrAð&Ø/ð&àð&ð 	ð&ð 	ô	&ðRØ/ðàðð 	ðð 	ô	ð8Ø6ðà/ðð 	ôð<;Ø/ð;à6ð;ð 	ð;ð 	õ	;r!   