§
    WøÁi#   ã                  ó6  — 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 ej        rd
dlmZ d
dlmZ eeee         eedef                  f         Z	 d.d/d„Zd0d"„Zd1d%„Zd2d(„Zd3d)„Zd4d,„Zd5d-„ZdS )6zhRoutines to handle adaption of legacy call signatures,
generation of deprecation notes and docstrings.

é    )ÚannotationsN)ÚAny)ÚCallable)ÚList)ÚOptional)ÚTuple)ÚTypeé   )Ú_ET)Ú_ListenerFnTypeé   )Úutil)ÚFullArgSpec)Ú_ClsLevelDispatch)Ú_HasEventsDispatch.ÚsinceÚstrÚargnamesú	List[str]Ú	converterúOptional[Callable[..., Any]]Úreturnú2Callable[[Callable[..., Any]], Callable[..., Any]]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.

    ÚfnúCallable[..., Any]r   c                óp   •— t          | d¦  «        sg | _        | j                             ‰‰‰f¦  «         | S )NÚ_legacy_signatures)Úhasattrr   Úappend)r   r   r   r   s    €€€úa/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/sqlalchemy/event/legacy.pyÚlegz_legacy_signature.<locals>.leg3   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#   Údispatch_collectionú_ClsLevelDispatch[_ET]r   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)r2   r3   Úconvr   r   Úwarning_txts     €€€€r!   Úwrap_legz%_wrap_fn_for_legacy.<locals>.wrap_leg`   s8   ø€ ÝÔ(¨¸eÐDÑDÔDÐDØÐ+Ð+Ð+Ø˜2˜t˜t T˜{Ð+Ð+r#   c                 ó°   •‡— t          j        ‰	‰¬¦  «         t          t          ‰j        | ¦  «        ¦  «        Šˆfd„‰D ¦   «         }‰r ‰|i |¤ŽS  ‰|Ž S )Nr5   c                ó    •— g | ]
}‰|         ‘ŒS r$   r$   )Ú.0ÚnameÚargdicts     €r!   ú
<listcomp>z9_wrap_fn_for_legacy.<locals>.wrap_leg.<locals>.<listcomp>j   s   ø€ Ð%IÐ%IÐ%I¸ g¨d¤mÐ%IÐ%IÐ%Ir#   )r   r7   ÚdictÚzipÚ	arg_names)
r2   r3   Úargs_from_dictr?   r   r&   r   Úhas_kwr   r9   s
      @€€€€€€r!   r:   z%_wrap_fn_for_legacy.<locals>.wrap_legg   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#   )r2   r   r3   r   r   r   )	Úlegacy_signaturesÚlenr2   ÚboolÚvarkwr>   ÚjoinrC   Úclsname)
r&   r   r(   Úformatted_defr:   r   r8   rE   r   r9   s
   ``   @@@@@r!   Ú_wrap_fn_for_legacyrM   <   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$   )r=   ÚlinerO   s     €r!   ú	<genexpr>z_indent.<locals>.<genexpr>v   s'   øè è € Ð@Ð@ t�V˜d‘]Ð@Ð@Ð@Ð@Ð@Ð@r#   )rJ   Úsplit)rN   rO   s    `r!   Ú_indentrW   u   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 )NrQ   c              3  ó$   K  — | ]}d d|iz  V — ŒdS )z%(arg)s = kw['%(arg)s']ÚargNr$   )r=   r[   s     r!   rU   z+_standard_listen_example.<locals>.<genexpr>   s?   è è € ð 
ð 
àð &¨°¨Ñ4ð
ð 
ð 
ð 
ð 
ð 
r#   r   r   z    c              3  ó"   K  — | ]
\  }}}|V — Œd S rS   r$   )r=   r   r2   r8   s       r!   rU   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)r.   r-   r,   )Úcurrent_sinceÚ
event_nameÚhas_kw_argumentsÚnamed_event_argumentsÚexample_kw_argrX   )rW   rJ   rC   rF   ÚmaxÚ__name__rE   )r&   rX   r   ra   r]   rN   s         r!   Ú_standard_listen_examplerd   y   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 )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_   r`   rX   )rF   rc   rE   rJ   )r&   rX   r   rN   r   r2   r8   s          r!   Ú_legacy_listen_examplesrf   ¢   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.r,   c              3  ó>   •K  — | ]}d ‰j         ‰j        |dœz  V — ŒdS )z6:paramref:`.%(clsname)s.%(event_name)s.%(param_name)s`)rK   r^   Ú
param_nameN)rc   r>   )r=   rk   r&   rg   s     €€r!   rU   z-_version_signature_changes.<locals>.<genexpr>Î   sX   øè è € ð /ð /ð ð Ià2Ô;Ø"5Ô":Ø",ðð ñð/ð /ð /ð /ð /ð /r#   r-   r.   )r   rK   r^   r`   r_   )rF   rc   r>   rJ   rC   rE   )rg   r&   r   r2   r8   s   ``   r!   Ú_version_signature_changesrl   ¾   s—   øø€ ð ,Ô=¸aÔ@Ñ€Eˆ4�ð	+ð Ø*Ô3Ø-Ô2Ø%)§Y¢Yð /ð /ð /ð /ð /ð #6Ô"?ð/ñ /ô /ñ &ô &ð -@Ô,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        r
   )	ÚgetattrrW   rd   rF   rf   rl   r   Úinject_docstring_textÚ__doc__)r&   rg   r   ÚheaderrX   rN   s         r!   Ú_augment_fn_docsrt   Ü   s¸   € ð	ð õ Ð/Ð1DÀeÑLÔL€MØ•GÝ Ð!4°mÀRÑHÔHØñô ñ €Dð Ô,ð 
Ø•Ý#Ð$7¸ÈÑKÔKØñ
ô 
ñ 	
ˆð
 	Õ*ØÐ!4ñ
ô 
ñ 	
ˆõ Ô% b¤j°$¸Ñ:Ô:Ð:r#   rS   )r   r   r   r   r   r   r   r   )r&   r'   r   r   r(   r   r   r   )rN   r   rO   r   r   r   )r&   r'   rX   r   r   r   r   r   )r&   r'   rX   r   r   r   r   r   )rg   rh   r&   r'   r   r   )r&   r'   rg   rh   r   r   r   r   )rr   Ú
__future__r   Útypingr   r   r   r   r   r	   Úregistryr   r   r.   r   Úutil.compatr   ÚTYPE_CHECKINGÚattrr   Úbaser   r   Ú_LegacySignatureTyper%   rM   rW   rd   rf   rl   rt   r$   r#   r!   ú<module>r}      sÛ  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %à	Ôð )Ø'Ð'Ð'Ð'Ð'Ð'Ø(Ð(Ð(Ð(Ð(Ð(ð ˜S $ s¤)¨X°h¸sÀC¸xÔ6HÔ-IÐIÔJÐ ð /3ðð ð ð ð ð26ð 6ð 6ð 6ðrAð Að Að Að&ð &ð &ð &ðRð ð ð ð8ð ð ð ð<;ð ;ð ;ð ;ð ;ð ;r#   