U aw.@sdZddlZddlZddlmZddlmZddlmZddlmZddlm Z dd lm Z d d lm Z d Z e d ddkrdZ d-ddZd.ddZd/ddZd0ddZd1ddZd2ddZd3dd Zd!d"Zd4d#d$Zd%d&Zd'd(Zd5d)d*Zd6d+d,ZdS)7zSHelpers related to deprecation of functions, methods, classes, other functionality.N)compat)_hash_limit_string)_warnings_warn) decorator)inject_docstring_text)inject_param_text)excFSQLALCHEMY_WARN_20false)trueyes1TcCs:t|tjrtsdS|||d}||_t||dddS)Ncoder stacklevel) issubclassr RemovedIn20Warningr deprecated_sincer)msgversiontype_rrwarnr]C:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-nyjtotrf\sqlalchemy\util\deprecations.py_warn_with_versions  rcCst||tj||ddSNr)rr SADeprecationWarning)rrrrrrrwarn_deprecated'sr!cCs(|rt|d|}t||tj||ddS)zhIssue a deprecation warning with a parameterized string, limiting the number of registrations. rN)rrr r )rargsrrrrrrwarn_deprecated_limited-s r$cCst|tjjtj||ddSr)rr rr)rrrrrrwarn_deprecated_209sr%__init__cs&dp dffdd}|S)N.. deprecated:: %s %scst|tjtdS)Nfunc)_decorate_cls_with_warningr r dictcls constructorheadermessagerrrdecorateGs z deprecated_cls..decorater)rr2r0r3rr/rdeprecated_clsDs r4cs6d||s dndf|r$d|7fdd}|S)Nzg.. deprecated:: 1.4 The %s class is considered legacy as of the 1.x series of SQLAlchemy and %s in 2.0.will be removedbecomes a legacy construct cst|tjtjjS)N)r+r rrr-r0r2rrr3esz#deprecated_20_cls..decorater)Zclsname alternativer0becomes_legacyr3rr8rdeprecated_20_clsTs   r;cs|dkrdkrtjd|r0dp(dfnddkr@ddkrNtjtjk rdd7fdd }|S) aDecorates 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. 2.0N1.4r'r(z$Call to deprecated function %(func)sz (deprecated since: %s)cs t|t|jddS)Nr))enable_warnings)_decorate_with_warningr,__name__)fnr>r1r2rwarningrrr3szdeprecated..decorate)r rr )rr2Zadd_deprecation_to_docstringrCr>r3rrBr deprecatedrs$   rDcKstd|tjd|S)Nr<r2rC)r<)rDr ZMovedIn20Warning)r2kwrrrmoved_20srGcKstd|}|r(dddd|d}nd}d|||s:d nd f}d |krt|d d }|st|dd ksttd||r|d|7}td|tjd|S)Nz^:(attr|func|meth): attributefunctionmethod)attrr*methrZ constructzPThe %s %s is considered legacy as of the 1.x series of SQLAlchemy and %s in 2.0.r5r6z:attr:Zwarn_on_attribute_accessFr>zattribute %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.r7r<rE)r<) rematchgrouppopgetAssertionErrorrDr r)Zapi_namer9r:rFZtype_regrr2Z attribute_okrrr deprecated_20sB     rSc sdiiiD]8\}\}}||<t||<|dkrBtjntj|<qfdd}|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." ) ) r<cst|}|jdk r\tt|jt|jt|jd|jtt n dt|j t fdd}|j dk r|j pd}|rt |ddD}||}||_ |S)NrcsD]T}|dkr ||dk s<|dk r|||krt|||ddqkrt|rtddD](}||krt|||ddq|||SNrr)rset difference)rAr#kwargsm) check_any_kwcheck_defaultscheck_kwdefaultsmessagesversion_warningsversionsrrwarned s< z3deprecated_params..decorate..warnedr(cSs2i|]*\}\}}|d|dkr dn||p(dfqS)r'r<r=r(r).0paramrr2rrr 0s  z7deprecated_params..decorate..)rZinspect_getfullargspecr\r,zipr#lenrU intersectionrVvarkwr__doc__ritems)rAspecr`doc decoratedr]specsr^r_)rYrZr[r\rr3s4  !z#deprecated_params..decorate)ri_sanitize_restructured_textr rr )rnrbrr2r3rrmrdeprecated_paramss BrpcCs(dd}tddd|}td||S)NcSs$|dd\}}|dkr |d7}|S)Nrr )r*rLz()rO)rXrnamerrrrepl>sz)_sanitize_restructured_text..replz:ref:`(.+) <.*>`cSsd|dS)Nz"%s"rrq)rXrrrDz-_sanitize_restructured_text..z\:(\w+)\:`~?(?:_\w+)?\.?(.+?)`)rMsub)textrsrrrro=sroc Cs|jdk r|jpd}|dk r|dk r2|t|d;}t|tjrF|d7}t||d}t|tkrt|j}||d<|ddt|j |j |}|dk r||}n||_|dk rt ||}|dk rt ||t ||||d|S)Nr(r)@ (Background on SQLAlchemy 2.0 at: :ref:`migration_20_toplevel`)rrh__dict__)rhr,rr rrtyperyrPr@ __bases__getattrsetattrr?) r.r0wtyper2rdocstring_headerrkZclsdictZconstructor_fnrrrr+Hs@       r+c stttjrd}nd}tfdd}|jdk rD|jpFd}|dk rt|t|jd;}||7}t||d}||} || _fdd | _ | S) z=Wrap a function with a warnings.warn and augmented docstring.rxr(cs0 p|dd}|s&tdd|||S)NZ_sa_skip_warningFrr)rPr)rAr#rWZ skip_warningr>r2rr~rrr`s z&_decorate_with_warning..warnedNr)rcstddSrT)rr)r2rr~rrrts z(_decorate_with_warning..) rorr rrrhr,r@rZ_sa_warn) r*r~r2rrr>Zdoc_onlyr`rkrlrrrr?ps   r?)N)rN)rN)rN)r&)Nr&F)NTNT)NF)N)NT)rhosrMr(rZ langhelpersrrrrrr r getenvlowerrr!r$r%r4r;rDrGrSrpror+r?rrrrsF           = &b )