Ë
    V.j!  ã                  ó€  — 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	 	 	 	 	 	 	 	 dd„Zdd„Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 d d„Z	 	 	 	 	 	 	 	 d!d„Zy)"zhRoutines 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.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.

    c                ój   •— t        | d«      sg | _        | j                  j                  ‰‰‰f«       | S )NÚ_legacy_signatures)Úhasattrr   Úappend)ÚfnÚargnamesÚ	converterÚsinces    €€€úYC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\sqlalchemy/event/legacy.pyÚlegz_legacy_signature.<locals>.leg3   s6   ø€ Ü�rÐ/Ô0Ø$&ˆBÔ!Ø
×Ñ×$Ñ$ e¨X°yÐ%AÔBØˆ	ó    )r   úCallable[..., Any]Úreturnr   © )r   r   r   r   s   ``` r   Ú_legacy_signaturer!   #   s   ú€ ÷ ð €Jr   c           
     óÂ  ‡ ‡‡‡‡‡‡	— ‰ j                   D ]È  \  ŠŠŠ‰d   dk(  rdŠ‰dd ŠndŠt        ‰«      t        |j                  «      k(  sŒ;‰t        |j                  «      u sŒSd‰ j
                  ›ddj                  ‰ j                  «      ›‰rd	nd
›d�}d‰ j                  ›d‰ j
                  ›d‰›d|›d�	Š	‰�‰rJ ‚dˆˆˆˆ	fd„}|c S 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 "Ú"c                 óJ   •— t        j                  ‰‰¬«       ‰€J ‚ ‰ ‰| Ž Ž S ©N)Úversion)r   Úwarn_deprecated)ÚargsÚkwÚconvr   r   Úwarning_txts     €€€€r   Úwrap_legz%_wrap_fn_for_legacy.<locals>.wrap_leg`   s.   ø€ Ü×(Ñ(¨¸eÕDØÐ+Ð+Ð+Ù™t T˜{Ð+Ð+r   c                 ó¼   •— t        j                  ‰
‰	¬«       t        t        ‰j                  | «      «      }‰D �cg c]  }||   ‘Œ	 }}‰r ‰|i |¤ŽS  ‰|Ž S c c}w r,   )r   r.   ÚdictÚzipÚ	arg_names)r/   r0   ÚargdictÚnameÚargs_from_dictr   Údispatch_collectionr   Úhas_kwr   r2   s        €€€€€€r   r3   z%_wrap_fn_for_legacy.<locals>.wrap_legg   sg   ø€ Ü×(Ñ(¨¸eÕDÜ"¤3Ð':×'DÑ'DÀdÓ#KÓL�GÙ@HÓ%IÁ¸ g¨d£mÀ�NÐ%IÙÙ! >Ð8°RÑ8Ð8á! >Ð2Ð2ùò	 &Js   ¼A)r/   r   r0   r   r   r   )	Úlegacy_signaturesÚlenr/   ÚboolÚvarkwr9   Újoinr7   Úclsname)
r;   r   ÚargspecÚformatted_defr3   r   r1   r<   r   r2   s
   ``   @@@@@r   Ú_wrap_fn_for_legacyrE   <   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                óV   ‡— dj                  ˆfd„| j                  d«      D «       «      S )NÚ
c              3  ó(   •K  — | ]	  }‰|z   –— Œ y ­w©Nr    )Ú.0ÚlineÚindents     €r   Ú	<genexpr>z_indent.<locals>.<genexpr>v   s   øè ø€ Ð@Ñ/? t�V˜d•]Ñ/?ùs   ƒ)rA   Úsplit)ÚtextrL   s    `r   Ú_indentrP   u   s!   ø€ Ø�9‰9Ó@¨t¯z©z¸$Ô/?Ó@Ó@Ð@r   c                óF  — t        dj                  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                  | j                  «      ||dœz  }|S )NrG   c              3  ó*   K  — | ]  }d d|iz  –— Œ y­w)z%(arg)s = kw['%(arg)s']ÚargNr    )rJ   rS   s     r   rM   z+_standard_listen_example.<locals>.<genexpr>   s!   è ø€ ð 
á9�ð &¨°¨Õ4Ù9ùs   ‚r   r   z    c              3  ó(   K  — | ]
  \  }}}|–— Œ y ­wrI   r    )rJ   r   r/   r1   s       r   rM   z+_standard_listen_example.<locals>.<genexpr>†   s   è ø€ ð 
á%JÑ!��t˜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)rP   rA   r7   r=   ÚmaxÚ__name__r<   )r;   rZ   r   rY   rU   rO   s         r   Ú_standard_listen_exampler]   y   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           	     óž   — d}| j                   D ];  \  }}}|d||j                  | j                  rdnddj                  |«      |dœz  z  }Œ= |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   rV   rW   rX   rZ   )r=   r\   r<   rA   )r;   rZ   r   rO   r   r/   r1   s          r   Ú_legacy_listen_examplesr_   ¢   sh   € ð
 €DØ0×BÔBÑˆˆt�TØð7ð Ø Ÿk™kà2×9Ò9‘G¸rà)-¯©°4«Ø!.ñññ	
‰ð Cð& €Kr   c                óÔ   ‡ ‡— ‰j                   d   \  }}}d|‰ j                  ‰j                  dj                  ˆˆ fd„‰j                  D «       «      ‰j
                  rddœz  S 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  óX   •K  — | ]!  }d ‰j                   ‰j                  |dœz  –— Œ# y­w)z6:paramref:`.%(clsname)s.%(event_name)s.%(param_name)s`)rB   rV   Ú
param_nameN)r\   r9   )rJ   rb   r;   Úparent_dispatch_clss     €€r   rM   z-_version_signature_changes.<locals>.<genexpr>Î   s?   øè ø€ ð /ñ #@�Jð Ià2×;Ñ;Ø"5×":Ñ":Ø",ñõñ #@ùs   ƒ'*r&   r'   )r   rB   rV   rX   rW   )r=   r\   r9   rA   r7   r<   )rc   r;   r   r/   r1   s   ``   r   Ú_version_signature_changesrd   ¾   sŒ   ù€ ð ,×=Ñ=¸aÑ@Ñ€Eˆ4�ð	+ð Ø*×3Ñ3Ø-×2Ñ2Ø%)§Y¡Yô /ð #6×"?Ò"?ó/ó &ð -@×,FÒ,F ñ
ñ	
ðð( MOñ
ñ	
ðr   c                ó   — d}t        |dd«      }|t        t        | ||«      d«      z   }| j                  r)|t        t	        | ||«      d«      z  }|t        || «      z  }t        j                  |j                  |d«      S )Nz@.. container:: event_signatures

     Example argument forms::

Ú_target_class_docÚobjz        r
   )	ÚgetattrrP   r]   r=   r_   rd   r   Úinject_docstring_textÚ__doc__)r;   rc   r   ÚheaderrZ   rO   s         r   Ú_augment_fn_docsrl   Ü   s    € ð	ð ô Ð/Ð1DÀeÓL€MØ”GÜ Ð!4°mÀRÓHØóñ €Dð ×,Ò,Ø”Ü#Ð$7¸ÈÓKØó
ñ 	
ˆð
 	Ô*ØÐ!4ó
ñ 	
ˆô ×%Ñ% b§j¡j°$¸Ó:Ð:r   rI   )r   Ústrr   z	List[str]r   zOptional[Callable[..., Any]]r   z2Callable[[Callable[..., Any]], Callable[..., Any]])r;   ú_ClsLevelDispatch[_ET]r   r   rC   r   r   r   )rO   rm   rL   rm   r   rm   )r;   rn   rZ   r   r   r   r   rm   )r;   rn   rZ   rm   r   r   r   rm   )rc   úType[_HasEventsDispatch[_ET]]r;   rn   r   rm   )r;   rn   rc   ro   r   r   r   rm   )rj   Ú
__future__r   Útypingr   r   r   r   r   r	   Úregistryr   r   r'   r   Úutil.compatr   ÚTYPE_CHECKINGÚattrr   Úbaser   rm   Ú_LegacySignatureTyper!   rE   rP   r]   r_   rd   rl   r    r   r   Ú<module>rx      s^  ðñõ #ã Ý Ý Ý Ý Ý Ý å Ý %Ý Ý %à	×ÒÝ'Ý(ð ˜S $ s¡)¨X°h¸sÀC¸xÑ6HÑ-IÐIÑJÐ ð /3ðØðàðð ,ðð 8ó	ð26Ø/ð6àð6ð ð6ð ó	6órAð&Ø/ð&àð&ð 	ð&ð 	ó	&ðRØ/ðàðð 	ðð 	ó	ð8Ø6ðà/ðð 	óð<;Ø/ð;à6ð;ð 	ð;ð 	ô	;r   