zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
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
69
70
71
72
U
¸ý°dè0ã    @sdZddlmZddlZddlmZddlmZddlmZddlmZddlm    Z    dd    lm
Z
dd
lm Z dd lm Z dd lm Z dd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZededZedddZdNdddddd d!œd"d#„ZdOddddd d%œd&d'„ZdPdd(dddd d)œd*d+„ZdQdddd-d.œd/d0„ZdRddd2d3d2d4d5œd6d7„Zdd8d9d:œd;d<„Z dSddd8d4d=œd>d?„Z!d@d4dAœdBdC„Z"dddDœdEdF„Z#dTdGddddddGdHœdIdJ„Z$dUdddddd2ddKœdLdM„Z%dS)VzSHelpers related to deprecation of functions, methods, classes, other
functionality.é)Ú annotationsN)ÚAny)ÚCallable)ÚDict)ÚMatch)ÚOptional)ÚSequence)ÚSet)ÚTuple)ÚType)ÚTypeVar)ÚUnioné)Úcompat)Ú_hash_limit_string)Ú_warnings_warn)Ú    decorator)Úinject_docstring_text)Úinject_param_texté)ÚexcÚ_T)ÚboundÚ_FzCallable[..., Any]ÚstrzType[exc.SADeprecationWarning]Úintz Optional[str]ÚNone)ÚmsgÚversionÚtype_Ú
stacklevelÚcodeÚreturncCs&|||d}||_t||dddS)N©r!r©r )Zdeprecated_sincer)rrrr r!Úwarn©r&úSd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/util/deprecations.pyÚ_warn_with_version*s r(é)rrr r!r"cCst||tj||ddS)Nr#)r(rÚSADeprecationWarning)rrr r!r&r&r'Úwarn_deprecated7sÿr+z Sequence[Any])rÚargsrr r!r"cCs(|rt|d|ƒ}t||tj||ddS)zhIssue a deprecation warning with a parameterized string,
    limiting the number of registrations.
 
    é
r#N)rr(rr*)rr,rr r!r&r&r'Úwarn_deprecated_limited?s  ÿr.Ú__init__zCallable[[Type[_T]], Type[_T]])rÚmessageÚ constructorr"cs.dˆˆp
df‰dddœ‡‡‡‡fdd„ }|S)Nú.. deprecated:: %s %sÚúType[_T])Úclsr"cst|ˆtjˆtˆdˆˆƒS)N©Úfunc)Ú_decorate_cls_with_warningrr*Údict)r5©r1Úheaderr0rr&r'ÚdecorateVs úz deprecated_cls.<locals>.decorater&)rr0r1r<r&r:r'Údeprecated_clsQs
r=TÚboolz(Optional[Type[exc.SADeprecationWarning]]zCallable[[_F], _F])rr0Úadd_deprecation_to_docstringÚwarningÚenable_warningsr"cs`|rdˆˆpdf‰nd‰ˆdkr&d‰ˆdkr4tj‰ˆdˆ7‰dddœ‡‡‡‡‡fdd    „ }|S)
aáDecorates a function and issues a deprecation warning on use.
 
    :param version:
      Issue version in the warning.
 
    :param message:
      If provided, issue message in the warning.  A sensible default
      is used if not provided.
 
    :param add_deprecation_to_docstring:
      Default True.  If False, the wrapped function's __doc__ is left
      as-is.  If True, the 'message' is prepended to the docs if
      provided, or sensible default if message is omitted.
 
    r2r3Nz$Call to deprecated function %(func)sz (deprecated since: %s)r©Úfnr"cs8ˆdk    s t‚ˆdk    st‚t|ˆˆt|jdˆˆˆdS)Nr6)rA)ÚAssertionErrorÚ_decorate_with_warningr9Ú__name__)rC©rAr;r0rr@r&r'r<Šs  úzdeprecated.<locals>.decorate)rr*)rr0r?r@rAr<r&rGr'Ú
deprecatedcsþ  rHrz0Callable[[Callable[..., _T]], Callable[..., _T]])r0Úkwr"cKstd|tjdœ|—ŽS)Nú2.0©r0r@)rJ)rHrZMovedIn20Warning)r0rIr&r&r'Úmoved_20™sÿÿÿrL)Úapi_nameÚ alternativerIr"cKs–t d|¡}|r(ddddœ| d¡}nd}d||d    f}d
|krl| d d ¡}|sl| d ¡d ksltd|ƒ‚|r||d|7}tj}td||dœ|—ŽS)Nz^:(attr|func|meth):Ú    attributeÚfunctionÚmethod)Úattrr7ÚmethrZ    constructzPThe %s %s is considered legacy as of the 1.x series of SQLAlchemy and %s in 2.0.zbecomes a legacy constructz:attr:Zwarn_on_attribute_accessFrAzœattribute %s will emit a warning on read access.  If you *really* want this, add warn_on_attribute_access=True.  Otherwise please add enable_warnings=False.ú rJrK)rJ)    ÚreÚmatchÚgroupÚpopÚgetrDrZLegacyAPIWarningrH)rMrNrIZtype_regrr0Z attribute_okZ warning_clsr&r&r'Úbecame_legacy_20¡s2 
ÿýþÿ
 ýÿ rZzTuple[str, str])Úspecsr"c s^i‰i‰i‰ˆ ¡D]*\}\}}|ˆ|<t|ƒˆ|<tjˆ|<qdddœ‡‡‡‡fdd„ }|S)a"Decorates a function to warn on use of certain parameters.
 
    e.g. ::
 
        @deprecated_params(
            weak_identity_map=(
                "0.7",
                "the :paramref:`.Session.weak_identity_map parameter "
                "is deprecated."
            )
 
        )
 
    rrBc    st |¡}|jdk    r\tt|jt|jƒt|jƒd…|jƒƒ‰tˆƒ ˆ¡‰tˆƒ     ˆ¡‰n:|j
dk    rŠ|j
‰tˆƒ ˆ¡‰tˆƒ     ˆ¡‰n d‰tˆƒ‰|j ‰t dddddœ‡‡‡‡‡‡‡fdd„ ƒ}|j dk    rÔ|j pÖd}|rôt|dd    „ˆ ¡Dƒƒ}||ƒ}||_ |S)
Nr&rr©rCr,Úkwargsr"csЈD]T}ˆ|dkr ||dk    s<ˆ|dk    r||ˆ|krtˆ|ˆ|ˆ|ddqˆˆkr˜t|ƒ ˆ¡r˜ˆdk    s|t‚tˆˆˆˆˆˆddˆD](}||krœtˆ|ˆ|ˆ|ddqœ|||ŽS©Nr)r$)r(ÚsetÚ
differencerD)rCr,r]Úm)Ú check_any_kwÚcheck_defaultsÚcheck_kwÚdefaultsÚmessagesÚversion_warningsÚversionsr&r'Úwarnedûs>
ÿÿüÿ üüz3deprecated_params.<locals>.decorate.<locals>.warnedr3cSs2i|]*\}\}}|d|dkr dn||p(df“qS)r2rJz1.4r3r&)Ú.0Úparamrr0r&r&r'Ú
<dictcomp>!s
 
þÿz7deprecated_params.<locals>.decorate.<locals>.<dictcomp>)rZinspect_getfullargspecrer9Úzipr,Úlenr_Ú intersectionr`ÚkwonlydefaultsÚvarkwrÚ__doc__rÚitems)rCÚspecriÚdocÚ    decorated©rfr[rgrh)rbrcrdrer'r<às<
 
þÿ
&!ýþz#deprecated_params.<locals>.decorate)rsÚ_sanitize_restructured_textrr*)r[rkrr0r<r&rwr'Údeprecated_paramsÇs  Kry)Útextr"cCs0dddœdd„}t ddd„|¡}t d    ||¡S)
Nz
Match[str]r)rar"cSs$| dd¡\}}|dkr |d7}|S)Nrr)r7rSz()©rW)rarÚnamer&r&r'Úrepl/sz)_sanitize_restructured_text.<locals>.replz:ref:`(.+) <.*>`cSsd| d¡S)Nz"%s"rr{)rar&r&r'Ú<lambda>5óz-_sanitize_restructured_text.<locals>.<lambda>z\:(\w+)\:`~?(?:_\w+)?\.?(.+?)`)rUÚsub)rzr}r&r&r'rx.srxr4)r5r1Úwtyper0rÚdocstring_headerr"c        Cs|jdk    r|jpd}|dk    rþ|dk    r2|t|d;}t|tjƒrF|d7}t||dƒ}d}t|ƒtkr®t|jƒ}||d<| dd¡| dd¡t|j    |j
|ƒ}|dk    rÆ||}n||_|dk    rÆt ||ƒ}|dk    rþ|dk    sÚt ‚|dk    sæt ‚t ||t||||dƒƒ|S)Nr3r6ú@ (Background on SQLAlchemy 2.0 at: :ref:`migration_20_toplevel`)rrrÚ__dict__Ú __weakref__)rrr9Ú
issubclassrÚBase20DeprecationWarningrÚtyper„rXrFÚ    __bases__ÚgetattrrDÚsetattrrE)    r5r1rr0rr‚ruZconstructor_fnZclsdictr&r&r'r89sH ÿ  
 
 
  ÿýr8)r7rr0rr‚rAr"c
s¤tˆƒ‰tˆtjƒrd}nd}tdddddœ‡‡‡‡fdd„ ƒ}|jdk    rP|jpRd}|dk    r€|t|jd    ;}||7}t||d
ƒ}||ƒ}    ||    _‡‡‡fd d „|    _    |    S) z=Wrap a function with a warnings.warn and augmented docstring.rƒr3rrr\cs0ˆ p| dd¡}|s&tˆˆˆdd|||ŽS)NZ_sa_skip_warningFr)r$)rXr()rCr,r]Z skip_warning©rAr0rrr&r'ri~s
ÿz&_decorate_with_warning.<locals>.warnedNr6rcstˆˆˆddSr^)r(r&)r0rrr&r'r~‘s
ÿz(_decorate_with_warning.<locals>.<lambda>)
rxr†rr‡rrrr9rFrZ_sa_warn)
r7rr0rr‚rAZdoc_onlyrirurvr&rŒr'rEjs 
 ÿ  rE)N)r)N)r)N)r/)NTNT)N)N)NT)&rrÚ
__future__rrUÚtypingrrrrrrr    r
r r r r3rZ langhelpersrrrrrrrrr(r+r.r=rHrLrZryrxr8rEr&r&r&r'Ú<module>    s^                     ûÿ ûÿû6    ÿ&gú6ú