L i !dZddlmZddlZddlmZddlmZddlmZddlmZddlmZdd lm Z dd lm Z d d l m Z d d l m Z ddlmZddlmZej$r d dlmZd dlmZe dedefZeeeeedeffZ d ddZd dZ d!dZd"dZ d#dZ d$dZ d%dZ d&dZ!y)'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.)boundcdfd }|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. cjt|dsg|_|jjf|S)N_legacy_signatures)hasattrrappend)fnargnames convertersinces ]/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sqlalchemy/event/legacy.pylegz_legacy_signature..leg6s6r/0$&B ! $$eXy%AB rrreturnr)rrrrs``` r_legacy_signaturer$&s  Jr cd|_|S)NT)_omit_standard_example)rs rr&r&?s $B Ir c  jD]\ddk(rdddndtt|jk(s;t|jusSdj ddj jrd nd d }d jd j dd|d rJd fd }|cSd fd }|cSS)Nz**kwTrFzdef (, , **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 ""cJtjJ|SN)version)rwarn_deprecated)argskwconvrr warning_txts rwrap_legz%_wrap_fn_for_legacy..wrap_leghs.((eD+++tT{++r ctj ttj|}Dcgc]}|| }}r|i|S|Scc}wr1)rr3dictzip arg_names) r4r5argdictnameargs_from_dictrdispatch_collectionrhas_kwrr7s rr8z%_wrap_fn_for_legacy..wrap_legosf((eD"3':'D'Dd#KLG@H%Igdm%IN%I!>8R88!>22 &Js A)r4rr5rr"r) legacy_signatureslenr4boolvarkwr>joinr<clsname) r@rargspec formatted_defr8rr6rArr7s `` @@@@@r_wrap_fn_for_legacyrJDs "5!F!F1x B<6 !F"~HF x=C - -&D MM= 3 $(( -778"*M(//',,!  !!z,, O33O_1b r cVdjfd|jdDS)N c3(K|] }|z ywNr#).0lineindents r z_indent..~s@tVd]@s)rFsplit)textrQs `r_indentrU}s! 99@tzz$/?@ @@r cFtdjd|jddDd}|jrt d|jD}nd}d}||rd|znd |j |j rd nd d j|j||d z}|S) NrLc3*K|] }dd|iz yw)z%(arg)s = kw['%(arg)s']argNr#)rOrXs rrRz+_standard_listen_example..s!  & 4 srrz c3(K|] \}}}| ywrNr#)rOrr4r6s rrRz+_standard_listen_example..s !tT  szfrom 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_namehas_kw_argumentsnamed_event_argumentsexample_kw_arg sample_target)rUrFr<rBmax__name__rA)r@r_rr^rZrTs r_standard_listen_examplerbs   *44Qq9    N,, %8%J%J    3  7D #m 3"kk(;(B(BH!%+>+H+H!I(&  D Kr c d}|jD];\}}}|d||j|jrdnddj||dzz }=|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*)rr[r\r]r_)rBrarArF)r@r_rrTrr4r6s r_legacy_listen_examplesrdsl D0BB tT  7 kk299Gr)-4!.   & Kr cjd\}}}d|jjdjfdjDj rddzSddzS)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*c3XK|]!}djj|dz#yw)z6:paramref:`.%(clsname)s.%(event_name)s.%(param_name)s`)rGr[ param_nameN)rar>)rOrgr@parent_dispatch_clss rrRz-_version_signature_changes..s;/ I2;;"5":":",/s'*r+r,)rrGr[r]r\)rBrar>rFr<rA)rhr@rr4r6s`` r_version_signature_changesris,==a@E4 +*33-22%)YY/#6"?"?/&-@,F,F  (MO  r cNt|ddr|jsJ|jSd}t|dd}|tt|||dz}|jr)|tt |||dz }|t ||z }tj|j|dS)Nr&Fz@.. container:: event_signatures Example argument forms:: _target_class_docobjz r ) getattr__doc__rUrbrBrdririnject_docstring_text)r@rhrheaderr_rTs r_augment_fn_docsrqs r+U3zzzzz  /1DeLM G !4mRH D,,  #$7 K    * !4    % %bjj$ ::r rN)rstrrz List[str]rzOptional[Callable[..., Any]]r"zCallable[[_F], _F]r!)r@_ClsLevelDispatch[_ET]rr rHrr"r )rTrrrQrrr"rr)r@rsr_rrr r"rr)r@rsr_rrrr r"rr)rhType[_HasEventsDispatch[_ET]]r@rsr"rr)r@rsrhrtrr r"rr)"rn __future__rtypingrrrrrr r registryr r r,r util.compatr TYPE_CHECKINGattrrbaserrrr_LegacySignatureTyper$r&rJrUrbrdrirqr#r rr}sv# %% '( T#s(+,S$s)Xc3h-??@ /3 , 2 6/666 6rA&/&& & &R/  86/ <;/;6; ; ;r