JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr ړg# dZddlmZddlZddlmZddlmZddlmZddlmZddlmZdd lm Z d d l m Z d d l m Z d dl mZd dlmZej"r d dlmZd dlmZeeeeeedeffZ d ddZ ddZddZ ddZ ddZ d dZ d!dZy)"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.cdfd }|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 H/opt/hc_python/lib64/python3.12/site-packages/sqlalchemy/event/legacy.pylegz_legacy_signature..leg3s6r/0$&B ! $$eXy%AB )rCallable[..., Any]returnr)rrrrs``` r_legacy_signaturer!#s  Jrc  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_leg`s.((eD+++tT{++rctj ttj|}Dcgc]}|| }}r|i|S|Scc}wr,)rr.dictzip arg_names) r/r0argdictnameargs_from_dictrdispatch_collectionrhas_kwrr2s rr3z%_wrap_fn_for_legacy..wrap_leggsg((eD"3':'D'Dd#KLG@H%IgdmN%I!>8R88!>22 &Js A)r/rr0rrr) legacy_signatureslenr/boolvarkwr9joinr7clsname) r;rargspec formatted_defr3rr1r<rr2s `` @@@@@r_wrap_fn_for_legacyrE<s "5!F!Fx B<6 !F"~HF x=C - -&D MM= 3 $(( -778"*M(//',,!  !!z,, O33O_"Gb rcVdjfd|jdDS)N c3(K|] }|z ywNr ).0lineindents r z_indent..vs@/?tVd]/?s)rAsplit)textrLs `r_indentrPus! 99@tzz$/?@ @@rcFtdjd|jddDd}|jrt d|jD}nd}d}||rd|znd |j |j rd nd d j|j||d z}|S) NrGc3*K|] }dd|iz yw)z%(arg)s = kw['%(arg)s']argNr )rJrSs rrMz+_standard_listen_example..s! 9 & 49srr z c3(K|] \}}}| ywrIr )rJrr/r1s rrMz+_standard_listen_example..s %J!tT %Jszfrom 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)rPrAr7r=max__name__r<)r;rZrrYrUrOs r_standard_listen_exampler]ys   *44Qq9    N,, %8%J%J    3  7D #m 3"kk(;(B(BH!%+>+H+H!I(&  D Krc 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%)rrVrWrXrZ)r=r\r<rA)r;rZrrOrr/r1s r_legacy_listen_examplesr_sh D0BBtT  7 kk299Gr)-4!.  C& Krcjd\}}}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`)rBrV param_nameN)r\r9)rJrbr;parent_dispatch_clss rrMz-_version_signature_changes..s?/#@J I2;;"5":":", #@s'*r&r')rrBrVrXrW)r=r\r9rAr7r<)rcr;rr/r1s`` r_version_signature_changesrds,==a@E4 +*33-22%)YY/#6"?"?/&-@,F,F  (MO  rcd}t|dd}|tt|||dz}|jr)|tt |||dz }|t ||z }t j|j|dS)Nz@.. container:: event_signatures Example argument forms:: _target_class_docobjz r ) getattrrPr]r=r_rdrinject_docstring_text__doc__)r;rcrheaderrZrOs r_augment_fn_docsrls   /1DeLM G !4mRH D,,  #$7 K    * !4    % %bjj$ ::rrI)rstrrz List[str]rzOptional[Callable[..., Any]]rz2Callable[[Callable[..., Any]], Callable[..., Any]])r;_ClsLevelDispatch[_ET]rr rCrrr )rOrmrLrmrrm)r;rnrZrrr rrm)r;rnrZrmrr rrm)rcType[_HasEventsDispatch[_ET]]r;rnrrm)r;rnrcrorr rrm)rj __future__rtypingrrrrrr registryr r r'r util.compatr TYPE_CHECKINGattrrbaserrm_LegacySignatureTyper!rErPr]r_rdrlr rrrxs^# %% '(S$s)XhsCx6H-IIJ /3 ,8 26/666 6rA&/&& & &R/  86/ <;/;6; ; ;r