zmc
2023-10-12 ed135d79df12a2466b52dae1a82326941211dcc9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
U
¸ý°d !ã@sZdZddlmZddlZddlmZddlmZddlmZddlmZddlmZdd    lm    Z    d
d l
m Z d
d l
m Z d dl mZd dlmZejr®d
dlmZd
dlmZeeeeeedeffZd0dddddœdd„Zdddddœdd„Zdddd œd!d"„Zdd#ddd$œd%d&„Zddddd$œd'd(„Zd)ddd*œd+d,„Zdd)ddd-œd.d/„ZdS)1zhRoutines 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.Ústrz    List[str]zOptional[Callable[..., Any]]z2Callable[[Callable[..., Any]], Callable[..., Any]])ÚsinceÚargnamesÚ    converterÚreturncsdddœ‡‡‡fdd„ }|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.
 
    zCallable[..., Any])Úfnrcs&t|dƒsg|_|j ˆˆˆf¡|S)NÚ_legacy_signatures)ÚhasattrrÚappend)r©rrr©úNd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/event/legacy.pyÚleg3s
z_legacy_signature.<locals>.legr)rrrrrrrÚ_legacy_signature#srz_ClsLevelDispatch[_ET]r r)Údispatch_collectionrÚargspecrcsâˆjD]Ö\‰‰‰ˆddkr.d‰ˆdd…‰nd‰tˆƒt|jƒkrˆt|jƒkrdˆjd ˆj¡ˆrjdnd    f}d
ˆjˆjˆ|f‰ˆdk    r´ˆr–t    ‚d d d d œ‡‡‡‡fd d„ }n d d d d œ‡‡‡‡‡‡fdd„ }|SqˆS)Néÿÿÿÿz**kwTrFz def %s(%s%s)ú, ú, **kwÚzÁThe argument signature for the "%s.%s" event listener has changed as of version %s, and conversion for the old argument signature will be removed in a future release.  The new signature is "%s"r)ÚargsÚkwrcs&tjˆˆdˆdk    st‚ˆˆ|ŽŽS)N©Úversion)r Úwarn_deprecatedÚAssertionError)r%r&)ÚconvrrÚ warning_txtrrÚwrap_legas z%_wrap_fn_for_legacy.<locals>.wrap_legcsJtjˆˆdttˆj|ƒƒ‰‡fdd„ˆDƒ}ˆr>ˆ||ŽSˆ|ŽSdS)Nr'csg|] }ˆ|‘qSrr)Ú.0Úname©ZargdictrrÚ
<listcomp>ksz9_wrap_fn_for_legacy.<locals>.wrap_leg.<locals>.<listcomp>)r r)ÚdictÚzipÚ    arg_names)r%r&Zargs_from_dict)rrrÚhas_kwrr,r0rr-hs 
)
Úlegacy_signaturesÚlenr%ÚboolÚvarkwr/Újoinr4Úclsnamer*)rrr Z formatted_defr-r)rr+rrr5rr,rÚ_wrap_fn_for_legacy<s6 ÿ
 
ýüüÿ      
r<)ÚtextÚindentrcsd ‡fdd„| d¡Dƒ¡S)NÚ
c3s|]}ˆ|VqdS©Nr)r.Úline©r>rrÚ    <genexpr>wsz_indent.<locals>.<genexpr>)r:Úsplit)r=r>rrBrÚ_indentvsrEr)rÚ sample_targetrrcCs‚td dd„|jdd…Dƒ¡dƒ}|jr@tdd„|jDƒƒ}nd}d}||rVd    |nd
|j|jrfd nd
d  |j¡||d œ;}|S)Nr?css|]}dd|iVqdS)z%(arg)s = kw['%(arg)s']ÚargNr)r.rGrrrrC€sÿz+_standard_listen_example.<locals>.<genexpr>rr z    css|]\}}}|VqdSr@r)r.rr%r+rrrrC‡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_argrF)rEr:r4r6ÚmaxÚ__name__r5)rrFrrLrHr=rrrÚ_standard_listen_examplezs0
 þûþ
ÿ    ÿ
 
ø
rOc    CsDd}|jD]4\}}}|d||j|jr(dndd |¡|dœ7}q
|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")rrIrJrKrF)r6rNr5r:)rrFrr=rr%r+rrrÚ_legacy_listen_examples£sÿùùÿrPzType[_HasEventsDispatch[_ET]])Úparent_dispatch_clsrrc    sJˆjd\}}}d|ˆjˆjd ‡‡fdd„ˆjDƒ¡ˆjr@dnddœS)    Nra=
.. 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"c3s"|]}dˆjˆj|dœVqdS)z6:paramref:`.%(clsname)s.%(event_name)s.%(param_name)s`)r;rIÚ
param_nameN)rNr/)r.rR©rrQrrrCÏsúýÿz-_version_signature_changes.<locals>.<genexpr>r#r$)rr;rIrKrJ)r6rNr/r:r4r5)rQrrr%r+rrSrÚ_version_signature_changes¿sù     óúÿrT)rrQrrcCs`d}t|ddƒ}|tt|||ƒdƒ}|jrP|tt|||ƒdƒ7}|t||ƒ7}t |j|d¡S)Nz@.. container:: event_signatures
 
     Example argument forms::
 
Z_target_class_docÚobjz        r    )    ÚgetattrrErOr6rPrTr Zinject_docstring_textÚ__doc__)rrQrÚheaderrFr=rrrÚ_augment_fn_docsÝs"ÿ 
þ
þÿrY)N)rWÚ
__future__rÚtypingrrrrrrÚregistryr
r r$r Z util.compatrÚ TYPE_CHECKINGÚattrrÚbaserrZ_LegacySignatureTyperr<rErOrPrTrYrrrrÚ<module>s0             ý:)