K iddlmZddlmZddlZddlmZGddZde d e d e d dfd Z Gd de eZ Gdde eZGddeeZdD] Ze eedGddeeZdD] Ze eedGddej(j*eZedZded efdZe e e eeeeeiZded efdZded efdZeZeZy) )wraps)TypeVarN)SetuptoolsDeprecationWarningc eZdZUdZdZeed<y)Statica` Wrapper for built-in object types that are allow setuptools to identify static core metadata (in opposition to ``Dynamic``, as defined :pep:`643`). The trick is to mark values with :class:`Static` when they come from ``pyproject.toml`` or ``setup.cfg``, so if any plugin overwrite the value with a built-in, setuptools will be able to recognise the change. We inherit from built-in classes, so that we don't need to change the existing code base to deal with the new types. We also should strive for immutability objects to avoid changes after the initial parsing. F _mutated_N)__name__ __module__ __qualname____doc__r bool__annotations__X/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/setuptools/_static.pyrr s Itrrtargetmethodcopyingreturnct||dytdtffd }d|_t |||y)a  Because setuptools is very flexible we cannot fully prevent plugins and user customizations from modifying static values that were parsed from config files. But we can attempt to block "in-place" mutations and identify when they were done. Nselfcbd|_tjdddd|g|i|S)NTz/Direct modification of value will be disallowedz In an effort to implement PEP 643, direct/in-place changes of static values that come from configuration files are deprecated. If you need to modify this value, please first create a copy with z and make sure conform to all relevant standards when overriding setuptools functionality (https://packaging.python.org/en/latest/specifications/). )i r)due_date)r remit)rargskwargsrfns r _replacementz+_prevent_modification.._replacement'sS$)) =OPWiX  $ $((((r)getattrrrr setattr)rrrr rs ` @r_prevent_modificationr$sN  &B z 2Y)6))"L FFL)rc eZdZy)StrNr r r rrrr&r&=rr&c eZdZy)TupleNr'rrrr*r*Ar(rr*ceZdZdZy)Lista :meta private: >>> x = List([1, 2, 3]) >>> is_static(x) True >>> x += [0] # doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): SetuptoolsDeprecationWarning: Direct modification ... >>> is_static(x) # no longer static after modification False >>> y = list(x) >>> y.clear() >>> y [] >>> y == x False >>> is_static(List(y)) True Nr r r r rrrr,r,Esrr,) __delitem____iadd__ __setitem__appendclearextendinsertremovereversepopz `list(value)`ceZdZdZy)Dicta :meta private: >>> x = Dict({'a': 1, 'b': 2}) >>> is_static(x) True >>> x['c'] = 0 # doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): SetuptoolsDeprecationWarning: Direct modification ... >>> x._mutated_ True >>> is_static(x) # no longer static after modification False >>> y = dict(x) >>> y.popitem() ('b', 2) >>> y == x False >>> is_static(Dict(y)) True Nr-rrrr9r9lsrr9)r.__ior__r0r2r7popitem setdefaultupdatez `dict(value)`ceZdZdZy) SpecifierSetz>Not exactly a built-in type but useful for ``requires-python``Nr-rrrr?r?sHrr?Tvaluec|S)z >>> noop(42) 42 rrAs rnooprDs LrcRtjt|t|S)zc >>> is_static(attempt_conversion("hello")) True >>> is_static(object()) False ) _CONVERSIONSgettyperDrCs rattempt_conversionrIs    DK .u 55rc@t|txr |j S)z >>> is_static(a := Dict({'a': 1})) True >>> is_static(dict(a)) False >>> is_static(b := List([1, 2, 3])) True >>> is_static(list(b)) False ) isinstancerr rCs r is_staticrLs eV $ r[s;2$*$**c*d*D #v  E6 40  :G$9 :40  :G$9 :I9''44fI CLaS%dD$? 6a6A6 =V = =V V r