§
    eŠtj
!  ã                  óh  — d Z ddlmZ ddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lm	Z	 dd
lm
Z
 ddlmZ ddlmZ ddlmZ ddlmZ ej        rddlmZ ddlmZ  e
dedef         ¬¦  «        Zeeee         edef         f         Z	 d2d3d„Zd4d „Zd5d&„Zd6d)„Zd7d,„Zd8d-„Zd9d0„Z d:d1„Z!dS );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.)ÚboundÚsinceÚstrÚargnamesú	List[str]Ú	converterúOptional[Callable[..., Any]]ÚreturnúCallable[[_F], _F]c                ó   ‡ ‡‡— dˆˆˆ fd„}|S )a_  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.

    Úfnr   r   c                óp   •— t          | d¦  «        sg | _        | j                             ‰‰‰f¦  «         | S )NÚ_legacy_signatures)Úhasattrr    Úappend)r   r   r   r   s    €€€úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sqlalchemy/event/legacy.pyÚlegz_legacy_signature.<locals>.leg7   sA   ø€ Ý�rÐ/Ñ0Ô0ð 	'Ø$&ˆBÔ!Ø
Ô×$Ò$ e¨X°yÐ%AÑBÔBÐBØˆ	ó    ©r   r   r   r   © )r   r   r   r$   s   ``` r#   Ú_legacy_signaturer(   '   s4   øøø€ ð ð ð ð ð ð ð ð ð €Jr%   r   c                ó   — d| _         | S )NT)Ú_omit_standard_example)r   s    r#   r*   r*   @   s   € Ø $€BÔØ€Ir%   Údispatch_collectionú_ClsLevelDispatch[_ET]r   Úargspecr   c           
     ó¤  ‡ ‡‡‡‡‡‡	— ‰ j         D ]À\  ŠŠŠ‰d         dk    rdŠ‰dd…         ŠndŠt          ‰¦  «        t          |j        ¦  «        k    rz‰t          |j        ¦  «        u rdd‰ j        ›dd                     ‰ j        ¦  «        ›‰rd	nd
›d�}d‰ j        ›d‰ j        ›d‰›d|›d�	Š	‰�‰rJ ‚dˆˆˆˆ	fd„}ndˆˆ ˆˆˆˆ	fd„}|c S ŒÁ‰S )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 "ú"Úargsr   Úkwr   c                 óH   •— t          j        ‰‰¬¦  «         ‰€J ‚ ‰ ‰| Ž Ž S )N©Úversion)r   Úwarn_deprecated)r7   r8   Úconvr   r   Úwarning_txts     €€€€r#   Úwrap_legz%_wrap_fn_for_legacy.<locals>.wrap_legi   s8   ø€ ÝÔ(¨¸eÐDÑDÔDÐDØÐ+Ð+Ð+Ø˜2˜t˜t T˜{Ð+Ð+r%   c                 ó°   •‡— t          j        ‰	‰¬¦  «         t          t          ‰j        | ¦  «        ¦  «        Šˆfd„‰D ¦   «         }‰r ‰|i |¤ŽS  ‰|Ž S )Nr:   c                ó    •— g | ]
}‰|         ‘ŒS r'   r'   )Ú.0ÚnameÚargdicts     €r#   ú
<listcomp>z9_wrap_fn_for_legacy.<locals>.wrap_leg.<locals>.<listcomp>s   s   ø€ Ð%IÐ%IÐ%I¸ g¨d¤mÐ%IÐ%IÐ%Ir%   )r   r<   ÚdictÚzipÚ	arg_names)
r7   r8   Úargs_from_dictrD   r   r+   r   Úhas_kwr   r>   s
      @€€€€€€r#   r?   z%_wrap_fn_for_legacy.<locals>.wrap_legp   sx   øø€ ÝÔ(¨¸eÐDÑDÔDÐDÝ"¥3Ð':Ô'DÀdÑ#KÔ#KÑLÔL�GØ%IÐ%IÐ%IÐ%IÀÐ%IÑ%IÔ%I�NØð 3Ø!˜r >Ð8°RÐ8Ð8Ð8à!˜r >Ð2Ð2r%   )r7   r   r8   r   r   r   )	Úlegacy_signaturesÚlenr7   ÚboolÚvarkwrC   ÚjoinrH   Úclsname)
r+   r   r-   Úformatted_defr?   r   r=   rJ   r   r>   s
   ``   @@@@@r#   Ú_wrap_fn_for_legacyrR   E   s‡  øøøøøøø€ ð
 "5Ô!Fð 1ð 1Ñˆˆx˜Ø�BŒ<˜6Ò!Ð!ØˆFØ  " ”~ˆHˆHàˆFåˆx‰=Œ=�C ¤Ñ-Ô-Ò-Ð-°&½DØŒMñ=
ô =
ð 3
ð 3
ð 3
ð $Ô(Ð(Ð(Ø—	’	Ð-Ô7Ñ8Ô8Ð8Ø"Ð*��¨Ð*Ð*ðˆMˆMð (Ô/Ð/Ð/Ø'Ô,Ð,Ð,Ø�E�EØ!�M�Mð	ð ð ÐØ!Ð!Ð!�zð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð ˆOˆOˆOøàˆ	r%   ÚtextÚindentc                ól   ‡— d                      ˆfd„|                      d¦  «        D ¦   «         ¦  «        S )Nú
c              3  ó"   •K  — | ]	}‰|z   V — Œ
d S ©Nr'   )rB   ÚlinerT   s     €r#   ú	<genexpr>z_indent.<locals>.<genexpr>   s'   øè è € Ð@Ð@ t�V˜d‘]Ð@Ð@Ð@Ð@Ð@Ð@r%   )rO   Úsplit)rS   rT   s    `r#   Ú_indentr\   ~   s6   ø€ Ø�9Š9Ð@Ð@Ð@Ð@¨t¯zªz¸$Ñ/?Ô/?Ð@Ñ@Ô@Ñ@Ô@Ð@r%   Úsample_targetr   c                ó@  — t          d                     d„ | j        dd…         D ¦   «         ¦  «        d¦  «        }| j        rt	          d„ | j        D ¦   «         ¦  «        }nd }d}||rd|z  nd	|j        | j        rd
nd	d                     | j        ¦  «        ||dœz  }|S )NrV   c              3  ó$   K  — | ]}d d|iz  V — ŒdS )z%(arg)s = kw['%(arg)s']ÚargNr'   )rB   r`   s     r#   rZ   z+_standard_listen_example.<locals>.<genexpr>ˆ   s?   è è € ð 
ð 
àð &¨°¨Ñ4ð
ð 
ð 
ð 
ð 
ð 
r%   r   r   z    c              3  ó"   K  — | ]
\  }}}|V — Œd S rX   r'   )rB   r   r7   r=   s       r#   rZ   z+_standard_listen_example.<locals>.<genexpr>�   s<   è è € ð 
ð 
á!��t˜Tð ð
ð 
ð 
ð 
ð 
ð 
r%   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)r3   r2   r1   )Úcurrent_sinceÚ
event_nameÚhas_kw_argumentsÚnamed_event_argumentsÚexample_kw_argr]   )r\   rO   rH   rK   ÚmaxÚ__name__rJ   )r+   r]   r   rf   rb   rS   s         r#   Ú_standard_listen_exampleri   ‚   sü   € õ
 Ø�	Š	ð 
ð 
à*Ô4°Q°q°SÔ9ð
ñ 
ô 
ñ 	
ô 	
ð 	ñô €Nð Ô,ð Ýð 
ð 
à%8Ô%Jð
ñ 
ô 
ñ 
ô 
ˆˆð
 ˆð	3ð 	ð 	à7DÐLÐ# mÑ3Ð3È"à”kØ(;Ô(BÐJ˜H˜HÈØ!%§¢Ð+>Ô+HÑ!IÔ!IØ(Ø&ð	ð 	ñ 	€Dð €Kr%   c           	     ó„   — d}| j         D ]5\  }}}|d||j        | j        rdndd                     |¦  «        |dœz  z  }Œ6|S )Nr3   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 **kwr1   )r   rc   rd   re   r]   )rK   rh   rJ   rO   )r+   r]   r   rS   r   r7   r=   s          r#   Ú_legacy_listen_examplesrk   «   sr   € ð
 €DØ0ÔBð 
ð 
Ñˆˆt�TØð7ð Ø œkà2Ô9ÐA�G�G¸rà)-¯ª°4©¬Ø!.ðð ññ	
ˆˆð$ €Kr%   Úparent_dispatch_clsúType[_HasEventsDispatch[_ET]]c                ó®   ‡ ‡— ‰j         d         \  }}}d|‰ j        ‰j        d                     ˆˆ fd„‰j        D ¦   «         ¦  «        ‰j        rdnddœz  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.r1   c              3  ó>   •K  — | ]}d ‰j         ‰j        |dœz  V — ŒdS )z6:paramref:`.%(clsname)s.%(event_name)s.%(param_name)s`)rP   rc   Ú
param_nameN)rh   rC   )rB   rp   r+   rl   s     €€r#   rZ   z-_version_signature_changes.<locals>.<genexpr>×   sX   øè è € ð /ð /ð ð Ià2Ô;Ø"5Ô":Ø",ðð ñð/ð /ð /ð /ð /ð /r%   r2   r3   )r   rP   rc   re   rd   )rK   rh   rC   rO   rH   rJ   )rl   r+   r   r7   r=   s   ``   r#   Ú_version_signature_changesrq   Ç   s—   øø€ ð ,Ô=¸aÔ@Ñ€Eˆ4�ð	+ð Ø*Ô3Ø-Ô2Ø%)§Y¢Yð /ð /ð /ð /ð /ð #6Ô"?ð/ñ /ô /ñ &ô &ð -@Ô,FÐ N  ÈBð
ð 
ñ	
ðr%   c                ó\  — t          |dd¦  «        r|j        sJ ‚|j        S d}t          |dd¦  «        }|t          t          | ||¦  «        d¦  «        z   }| j        r5|t          t          | ||¦  «        d¦  «        z  }|t          || ¦  «        z  }t          j        |j        |d¦  «        S )Nr*   Fz@.. container:: event_signatures

     Example argument forms::

Ú_target_class_docÚobjz        r   )	ÚgetattrÚ__doc__r\   ri   rK   rk   rq   r   Úinject_docstring_text)r+   rl   r   Úheaderr]   rS   s         r#   Ú_augment_fn_docsry   å   sä   € õ
 ˆrÐ+¨UÑ3Ô3ð ØŒzÐÐˆzØŒzÐð	ð õ Ð/Ð1DÀeÑLÔL€MØ•GÝ Ð!4°mÀRÑHÔHØñô ñ €Dð Ô,ð 
Ø•Ý#Ð$7¸ÈÑKÔKØñ
ô 
ñ 	
ˆð
 	Õ*ØÐ!4ñ
ô 
ñ 	
ˆõ Ô% b¤j°$¸Ñ:Ô:Ð:r%   rX   )r   r   r   r   r   r   r   r   r&   )r+   r,   r   r   r-   r   r   r   )rS   r   rT   r   r   r   )r+   r,   r]   r   r   r   r   r   )r+   r,   r]   r   r   r   r   r   )rl   rm   r+   r,   r   r   )r+   r,   rl   rm   r   r   r   r   )"rv   Ú
__future__r   Útypingr   r   r   r   r   r	   r
   Úregistryr   r   r3   r   Úutil.compatr   ÚTYPE_CHECKINGÚattrr   Úbaser   r   r   Ú_LegacySignatureTyper(   r*   rR   r\   ri   rk   rq   ry   r'   r%   r#   ú<module>r‚      s  ððð ð
 #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %à	Ôð )Ø'Ð'Ð'Ð'Ð'Ð'Ø(Ð(Ð(Ð(Ð(Ð(ð €WˆT˜ # s (Ô+Ð,Ñ,Ô,€à˜S $ s¤)¨X°c¸3°hÔ-?Ð?Ô@Ð ð /3ðð ð ð ð ð2ð ð ð ð
6ð 6ð 6ð 6ðrAð Að Að Að&ð &ð &ð &ðRð ð ð ð8ð ð ð ð<;ð ;ð ;ð ;ð ;ð ;r%   