ducktools-classbuilder 0.10.0__tar.gz → 0.10.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ducktools-classbuilder might be problematic. Click here for more details.
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/PKG-INFO +1 -1
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/pyproject.toml +3 -2
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/src/ducktools/classbuilder/__init__.py +26 -18
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/src/ducktools/classbuilder/__init__.pyi +3 -2
- ducktools_classbuilder-0.10.1/src/ducktools/classbuilder/_version.py +2 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/src/ducktools/classbuilder/annotations.py +23 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/src/ducktools/classbuilder/annotations.pyi +4 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/src/ducktools/classbuilder/prefab.py +5 -3
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/src/ducktools/classbuilder/prefab.pyi +2 -1
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/src/ducktools_classbuilder.egg-info/PKG-INFO +1 -1
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_init.py +28 -2
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/py314_tests/test_forwardref_annotations.py +12 -1
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/uv.lock +133 -104
- ducktools_classbuilder-0.10.0/src/ducktools/classbuilder/_version.py +0 -2
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/.github/dependabot.yml +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/.github/workflows/auto_test.yml +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/.github/workflows/publish_to_pypi.yml +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/.github/workflows/publish_to_testpypi.yml +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/.gitignore +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/.readthedocs.yaml +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/LICENSE +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/MANIFEST.in +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/README.md +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs/Makefile +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs/api.md +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs/approach_vs_tool.md +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs/conf.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs/extension_examples.md +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs/generated_code.md +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs/index.md +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs/make.bat +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs/perf/performance_tests.md +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs/prefab/index.md +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs/tutorial.md +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs_code/docs_ex10_frozen_attributes.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs_code/docs_ex1_basic.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs_code/docs_ex2_register.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs_code/docs_ex3_iterable.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs_code/docs_ex5_frozen.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs_code/docs_ex7_posonly.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs_code/docs_ex8_converters.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs_code/docs_ex9_annotated.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs_code/index_example.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs_code/tutorial_code.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/setup.cfg +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/src/ducktools/classbuilder/py.typed +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/src/ducktools_classbuilder.egg-info/SOURCES.txt +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/src/ducktools_classbuilder.egg-info/dependency_links.txt +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/src/ducktools_classbuilder.egg-info/requires.txt +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/src/ducktools_classbuilder.egg-info/top_level.txt +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/annotations/test_annotated.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/annotations/test_annotations_module.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/annotations/test_future_annotations.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/conftest.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/helpers/utils.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_compare_attrib.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_construction.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_creation.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_dunders.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_frozen.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_funcs.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_hint_syntax.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_inheritance.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_internals_dict.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_kw_only.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_pre_post_init.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_private.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_replace.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_repr.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_slots_novalues.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_slotted_class.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_subclass_implementation.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/py312_tests/test_generic_annotations.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/py314_tests/_test_support.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/test_core.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/test_field_flags.py +0 -0
- {ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/test_slotmakermeta.py +0 -0
|
@@ -28,8 +28,8 @@ dynamic = ['version']
|
|
|
28
28
|
[project.optional-dependencies]
|
|
29
29
|
# Needed for the current readthedocs.yaml
|
|
30
30
|
docs = [
|
|
31
|
-
"sphinx>=8.1",
|
|
32
|
-
"myst-parser>=4.0",
|
|
31
|
+
"sphinx>=8.1",
|
|
32
|
+
"myst-parser>=4.0",
|
|
33
33
|
"sphinx_rtd_theme>=3.0",
|
|
34
34
|
]
|
|
35
35
|
|
|
@@ -38,6 +38,7 @@ dev = [
|
|
|
38
38
|
"pytest>=8.4",
|
|
39
39
|
"pytest-cov>=6.1",
|
|
40
40
|
"mypy>=1.16",
|
|
41
|
+
"typing-extensions>=4.14",
|
|
41
42
|
]
|
|
42
43
|
performance = [
|
|
43
44
|
"attrs>=25.0",
|
|
@@ -217,15 +217,23 @@ class _SignatureMaker:
|
|
|
217
217
|
# help(cls) will fail along with inspect.signature(cls)
|
|
218
218
|
# This signature maker descriptor is placed to override __signature__ and force
|
|
219
219
|
# the `__init__` signature to be generated first if the signature is requested.
|
|
220
|
-
def __get__(self, instance, cls):
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
#
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
220
|
+
def __get__(self, instance, cls=None):
|
|
221
|
+
if cls is None:
|
|
222
|
+
cls = type(instance)
|
|
223
|
+
|
|
224
|
+
# force generation of `__init__` function
|
|
225
|
+
_ = cls.__init__
|
|
226
|
+
|
|
227
|
+
if instance is None:
|
|
228
|
+
raise AttributeError(
|
|
229
|
+
f"type object {cls.__name__!r} "
|
|
230
|
+
"has no attribute '__signature__'"
|
|
231
|
+
)
|
|
232
|
+
else:
|
|
233
|
+
raise AttributeError(
|
|
234
|
+
f"{cls.__name__!r} object"
|
|
235
|
+
"has no attribute '__signature__'"
|
|
236
|
+
)
|
|
229
237
|
|
|
230
238
|
|
|
231
239
|
signature_maker = _SignatureMaker()
|
|
@@ -393,7 +401,7 @@ def replace_generator(cls, funcname="__replace__"):
|
|
|
393
401
|
# Generate the replace method for built classes
|
|
394
402
|
# unlike the dataclasses implementation this is generated
|
|
395
403
|
attribs = get_fields(cls)
|
|
396
|
-
|
|
404
|
+
|
|
397
405
|
# This is essentially the as_dict generator for prefabs
|
|
398
406
|
# except based on attrib.init instead of .serialize
|
|
399
407
|
vals = ", ".join(
|
|
@@ -407,7 +415,7 @@ def replace_generator(cls, funcname="__replace__"):
|
|
|
407
415
|
f"def {funcname}(self, /, **changes):\n"
|
|
408
416
|
f" new_kwargs = {init_dict}\n"
|
|
409
417
|
f" for name, value in changes.items():\n"
|
|
410
|
-
f" if name not in new_kwargs:\n"
|
|
418
|
+
f" if name not in new_kwargs:\n"
|
|
411
419
|
f" raise TypeError(\n"
|
|
412
420
|
f" f\"{{name!r}} is not a valid replacable \"\n"
|
|
413
421
|
f" f\"field on {{self.__class__.__name__!r}}\"\n"
|
|
@@ -578,7 +586,7 @@ class SlotMakerMeta(type):
|
|
|
578
586
|
def __new__(cls, name, bases, ns, slots=True, gatherer=None, **kwargs):
|
|
579
587
|
# This should only run if slots=True is declared
|
|
580
588
|
# and __slots__ have not already been defined
|
|
581
|
-
if slots and "__slots__" not in ns:
|
|
589
|
+
if slots and "__slots__" not in ns:
|
|
582
590
|
# Check if a different gatherer has been set in any base classes
|
|
583
591
|
# Default to unified gatherer
|
|
584
592
|
if gatherer is None:
|
|
@@ -617,7 +625,7 @@ class SlotMakerMeta(type):
|
|
|
617
625
|
# Place pre-gathered field data - modifications are already applied
|
|
618
626
|
modifications = {}
|
|
619
627
|
ns[GATHERED_DATA] = fields, modifications
|
|
620
|
-
|
|
628
|
+
|
|
621
629
|
else:
|
|
622
630
|
if gatherer is not None:
|
|
623
631
|
ns[META_GATHERER_NAME] = gatherer
|
|
@@ -642,7 +650,7 @@ class GatheredFields:
|
|
|
642
650
|
def __eq__(self, other):
|
|
643
651
|
if type(self) is type(other):
|
|
644
652
|
return self.fields == other.fields and self.modifications == other.modifications
|
|
645
|
-
|
|
653
|
+
|
|
646
654
|
def __repr__(self):
|
|
647
655
|
return f"{type(self).__name__}(fields={self.fields!r}, modifications={self.modifications!r})"
|
|
648
656
|
|
|
@@ -761,11 +769,11 @@ def _build_field():
|
|
|
761
769
|
# Complete the construction of the Field class
|
|
762
770
|
field_docs = {
|
|
763
771
|
"default": "Standard default value to be used for attributes with this field.",
|
|
764
|
-
"default_factory":
|
|
772
|
+
"default_factory":
|
|
765
773
|
"A zero-argument function to be called to generate a default value, "
|
|
766
774
|
"useful for mutable obects like lists.",
|
|
767
775
|
"type": "The type of the attribute to be assigned by this field.",
|
|
768
|
-
"doc":
|
|
776
|
+
"doc":
|
|
769
777
|
"The documentation for the attribute that appears when calling "
|
|
770
778
|
"help(...) on the class. (Only in slotted classes).",
|
|
771
779
|
"init": "Include this attribute in the class __init__ parameters.",
|
|
@@ -813,7 +821,7 @@ def pre_gathered_gatherer(cls_or_ns):
|
|
|
813
821
|
cls_dict = cls_or_ns
|
|
814
822
|
else:
|
|
815
823
|
cls_dict = cls_or_ns.__dict__
|
|
816
|
-
|
|
824
|
+
|
|
817
825
|
return cls_dict[GATHERED_DATA]
|
|
818
826
|
|
|
819
827
|
|
|
@@ -1043,7 +1051,7 @@ def make_unified_gatherer(
|
|
|
1043
1051
|
return anno_g(cls_dict)
|
|
1044
1052
|
|
|
1045
1053
|
return attrib_g(cls_dict)
|
|
1046
|
-
|
|
1054
|
+
|
|
1047
1055
|
return field_unified_gatherer
|
|
1048
1056
|
|
|
1049
1057
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import types
|
|
2
2
|
import typing
|
|
3
|
+
import typing_extensions
|
|
3
4
|
|
|
4
5
|
import inspect
|
|
5
6
|
|
|
@@ -57,7 +58,7 @@ class MethodMaker:
|
|
|
57
58
|
def __get__(self, instance, cls) -> Callable: ...
|
|
58
59
|
|
|
59
60
|
class _SignatureMaker:
|
|
60
|
-
def __get__(self, instance, cls) ->
|
|
61
|
+
def __get__(self, instance, cls=None) -> typing_extensions.Never: ...
|
|
61
62
|
|
|
62
63
|
signature_maker: _SignatureMaker
|
|
63
64
|
|
|
@@ -141,7 +142,7 @@ class Field(metaclass=SlotMakerMeta):
|
|
|
141
142
|
|
|
142
143
|
__slots__: dict[str, str]
|
|
143
144
|
__classbuilder_internals__: dict
|
|
144
|
-
__signature__:
|
|
145
|
+
__signature__: _SignatureMaker
|
|
145
146
|
|
|
146
147
|
def __init__(
|
|
147
148
|
self,
|
|
@@ -33,6 +33,29 @@ class _LazyAnnotationLib:
|
|
|
33
33
|
_lazy_annotationlib = _LazyAnnotationLib()
|
|
34
34
|
|
|
35
35
|
|
|
36
|
+
def get_func_annotations(func):
|
|
37
|
+
"""
|
|
38
|
+
Given a function, return the annotations dictionary
|
|
39
|
+
|
|
40
|
+
:param func: function object
|
|
41
|
+
:return: dictionary of annotations
|
|
42
|
+
"""
|
|
43
|
+
# This method exists for use by prefab in getting annotations from
|
|
44
|
+
# the __prefab_post_init__ function
|
|
45
|
+
try:
|
|
46
|
+
annotations = func.__annotations__
|
|
47
|
+
except Exception:
|
|
48
|
+
if sys.version_info >= (3, 14):
|
|
49
|
+
annotations = _lazy_annotationlib.get_annotations(
|
|
50
|
+
func,
|
|
51
|
+
format=_lazy_annotationlib.Format.FORWARDREF,
|
|
52
|
+
)
|
|
53
|
+
else:
|
|
54
|
+
raise
|
|
55
|
+
|
|
56
|
+
return annotations
|
|
57
|
+
|
|
58
|
+
|
|
36
59
|
def get_ns_annotations(ns):
|
|
37
60
|
"""
|
|
38
61
|
Given a class namespace, attempt to retrieve the
|
|
@@ -3,6 +3,10 @@ import types
|
|
|
3
3
|
|
|
4
4
|
_CopiableMappings = dict[str, typing.Any] | types.MappingProxyType[str, typing.Any]
|
|
5
5
|
|
|
6
|
+
def get_func_annotations(
|
|
7
|
+
func: types.FunctionType,
|
|
8
|
+
) -> dict[str, typing.Any]: ...
|
|
9
|
+
|
|
6
10
|
def get_ns_annotations(
|
|
7
11
|
ns: _CopiableMappings,
|
|
8
12
|
) -> dict[str, typing.Any]: ...
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/src/ducktools/classbuilder/prefab.py
RENAMED
|
@@ -34,6 +34,8 @@ from . import (
|
|
|
34
34
|
get_repr_generator,
|
|
35
35
|
)
|
|
36
36
|
|
|
37
|
+
from .annotations import get_func_annotations
|
|
38
|
+
|
|
37
39
|
# These aren't used but are re-exported for ease of use
|
|
38
40
|
# noinspection PyUnresolvedReferences
|
|
39
41
|
from . import SlotFields, KW_ONLY # noqa: F401
|
|
@@ -98,7 +100,7 @@ def init_generator(cls, funcname="__init__"):
|
|
|
98
100
|
func_arglist.extend(arglist)
|
|
99
101
|
|
|
100
102
|
if extra_funcname == POST_INIT_FUNC:
|
|
101
|
-
post_init_annotations.update(func
|
|
103
|
+
post_init_annotations.update(get_func_annotations(func))
|
|
102
104
|
|
|
103
105
|
pos_arglist = []
|
|
104
106
|
kw_only_arglist = []
|
|
@@ -204,11 +206,11 @@ def init_generator(cls, funcname="__init__"):
|
|
|
204
206
|
post_init_call = ""
|
|
205
207
|
|
|
206
208
|
code = (
|
|
207
|
-
f"def {funcname}(self, {args}):\n"
|
|
209
|
+
f"def {funcname}(self, {args}) -> None:\n"
|
|
208
210
|
f"{pre_init_call}\n"
|
|
209
211
|
f"{body}\n"
|
|
210
212
|
f"{post_init_call}\n"
|
|
211
|
-
|
|
213
|
+
)
|
|
212
214
|
|
|
213
215
|
return GeneratedCode(code, globs)
|
|
214
216
|
|
|
@@ -13,6 +13,7 @@ from . import (
|
|
|
13
13
|
GeneratedCode,
|
|
14
14
|
MethodMaker,
|
|
15
15
|
SlotMakerMeta,
|
|
16
|
+
_SignatureMaker
|
|
16
17
|
)
|
|
17
18
|
|
|
18
19
|
from . import SlotFields as SlotFields, KW_ONLY as KW_ONLY
|
|
@@ -47,7 +48,7 @@ hash_maker: MethodMaker
|
|
|
47
48
|
|
|
48
49
|
class Attribute(Field):
|
|
49
50
|
__slots__: dict
|
|
50
|
-
__signature__:
|
|
51
|
+
__signature__: _SignatureMaker
|
|
51
52
|
__classbuilder_gathered_fields__: tuple[dict[str, Field], dict[str, typing.Any]]
|
|
52
53
|
|
|
53
54
|
iter: bool
|
|
@@ -260,11 +260,37 @@ def test_signature():
|
|
|
260
260
|
import inspect
|
|
261
261
|
|
|
262
262
|
init_sig = inspect.signature(TypeSignatureInit.__init__)
|
|
263
|
-
assert str(init_sig) == "(self, x: int, y: str = 'Test')"
|
|
263
|
+
assert str(init_sig) == "(self, x: int, y: str = 'Test') -> None"
|
|
264
264
|
|
|
265
265
|
|
|
266
266
|
def test_partial_signature():
|
|
267
267
|
import inspect
|
|
268
268
|
|
|
269
269
|
init_sig = inspect.signature(PartialTypeSignatureInit.__init__)
|
|
270
|
-
assert str(init_sig) == "(self, x, y: str = 'Test')"
|
|
270
|
+
assert str(init_sig) == "(self, x, y: str = 'Test') -> None"
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
def test_inherited_signature():
|
|
274
|
+
import inspect
|
|
275
|
+
|
|
276
|
+
@prefab
|
|
277
|
+
class Base:
|
|
278
|
+
x: int
|
|
279
|
+
y: str = "Base"
|
|
280
|
+
|
|
281
|
+
class Inherited(Base):
|
|
282
|
+
def __init__(self, x=42, y="Inherited") -> None:
|
|
283
|
+
self.x = x
|
|
284
|
+
self.y = y
|
|
285
|
+
|
|
286
|
+
base_signature = inspect.signature(Base)
|
|
287
|
+
inherited_signature = inspect.signature(Inherited)
|
|
288
|
+
|
|
289
|
+
assert str(base_signature) == "(x: int, y: str = 'Base') -> None"
|
|
290
|
+
assert str(inherited_signature) == "(x=42, y='Inherited') -> None"
|
|
291
|
+
|
|
292
|
+
with pytest.raises(AttributeError):
|
|
293
|
+
Base.__signature__
|
|
294
|
+
|
|
295
|
+
with pytest.raises(AttributeError):
|
|
296
|
+
Inherited.__signature__
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Bare forwardrefs only work in 3.14 or later
|
|
2
2
|
|
|
3
|
-
from ducktools.classbuilder.annotations import get_ns_annotations
|
|
3
|
+
from ducktools.classbuilder.annotations import get_ns_annotations, get_func_annotations
|
|
4
4
|
|
|
5
5
|
from pathlib import Path
|
|
6
6
|
|
|
@@ -46,3 +46,14 @@ def test_inner_outer_ref():
|
|
|
46
46
|
assert get_ns_annotations(cls.__dict__) == {
|
|
47
47
|
"a_val": str, "b_val": int, "c_val": float
|
|
48
48
|
}
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def test_func_annotations():
|
|
52
|
+
def forwardref_func(x: unknown) -> str:
|
|
53
|
+
return ''
|
|
54
|
+
|
|
55
|
+
annos = get_func_annotations(forwardref_func)
|
|
56
|
+
assert annos == {
|
|
57
|
+
'x': EqualToForwardRef("unknown", owner=forwardref_func),
|
|
58
|
+
'return': str
|
|
59
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
version = 1
|
|
2
|
-
revision =
|
|
2
|
+
revision = 3
|
|
3
3
|
requires-python = ">=3.10"
|
|
4
4
|
resolution-markers = [
|
|
5
5
|
"python_full_version >= '3.11'",
|
|
@@ -44,11 +44,11 @@ wheels = [
|
|
|
44
44
|
|
|
45
45
|
[[package]]
|
|
46
46
|
name = "certifi"
|
|
47
|
-
version = "2025.
|
|
47
|
+
version = "2025.8.3"
|
|
48
48
|
source = { registry = "https://pypi.org/simple" }
|
|
49
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
49
|
+
sdist = { url = "https://files.pythonhosted.org/packages/dc/67/960ebe6bf230a96cda2e0abcf73af550ec4f090005363542f0765df162e0/certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407", size = 162386, upload-time = "2025-08-03T03:07:47.08Z" }
|
|
50
50
|
wheels = [
|
|
51
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
51
|
+
{ url = "https://files.pythonhosted.org/packages/e5/48/1549795ba7742c948d2ad169c1c8cdbae65bc450d6cd753d124b17c8cd32/certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5", size = 161216, upload-time = "2025-08-03T03:07:45.777Z" },
|
|
52
52
|
]
|
|
53
53
|
|
|
54
54
|
[[package]]
|
|
@@ -123,66 +123,87 @@ wheels = [
|
|
|
123
123
|
|
|
124
124
|
[[package]]
|
|
125
125
|
name = "coverage"
|
|
126
|
-
version = "7.
|
|
127
|
-
source = { registry = "https://pypi.org/simple" }
|
|
128
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
129
|
-
wheels = [
|
|
130
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
131
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
132
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
133
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
134
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
135
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
136
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
137
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
138
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
139
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
140
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
141
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
142
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
143
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
144
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
145
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
146
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
147
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
148
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
149
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
150
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
151
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
152
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
153
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
154
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
155
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
156
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
157
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
158
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
159
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
160
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
161
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
162
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
163
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
164
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
165
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
166
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
167
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
168
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
169
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
170
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
171
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
172
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
173
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
174
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
175
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
176
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
177
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
178
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
179
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
180
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
181
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
182
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
183
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
184
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
185
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
126
|
+
version = "7.10.2"
|
|
127
|
+
source = { registry = "https://pypi.org/simple" }
|
|
128
|
+
sdist = { url = "https://files.pythonhosted.org/packages/ee/76/17780846fc7aade1e66712e1e27dd28faa0a5d987a1f433610974959eaa8/coverage-7.10.2.tar.gz", hash = "sha256:5d6e6d84e6dd31a8ded64759626627247d676a23c1b892e1326f7c55c8d61055", size = 820754, upload-time = "2025-08-04T00:35:17.511Z" }
|
|
129
|
+
wheels = [
|
|
130
|
+
{ url = "https://files.pythonhosted.org/packages/d8/5f/5ce748ab3f142593698aff5f8a0cf020775aa4e24b9d8748b5a56b64d3f8/coverage-7.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:79f0283ab5e6499fd5fe382ca3d62afa40fb50ff227676a3125d18af70eabf65", size = 215003, upload-time = "2025-08-04T00:33:02.977Z" },
|
|
131
|
+
{ url = "https://files.pythonhosted.org/packages/f4/ed/507088561217b000109552139802fa99c33c16ad19999c687b601b3790d0/coverage-7.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4545e906f595ee8ab8e03e21be20d899bfc06647925bc5b224ad7e8c40e08b8", size = 215391, upload-time = "2025-08-04T00:33:05.645Z" },
|
|
132
|
+
{ url = "https://files.pythonhosted.org/packages/79/1b/0f496259fe137c4c5e1e8eaff496fb95af88b71700f5e57725a4ddbe742b/coverage-7.10.2-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ae385e1d58fbc6a9b1c315e5510ac52281e271478b45f92ca9b5ad42cf39643f", size = 242367, upload-time = "2025-08-04T00:33:07.189Z" },
|
|
133
|
+
{ url = "https://files.pythonhosted.org/packages/b9/8e/5a8835fb0122a2e2a108bf3527931693c4625fdc4d953950a480b9625852/coverage-7.10.2-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6f0cbe5f7dd19f3a32bac2251b95d51c3b89621ac88a2648096ce40f9a5aa1e7", size = 243627, upload-time = "2025-08-04T00:33:08.809Z" },
|
|
134
|
+
{ url = "https://files.pythonhosted.org/packages/c3/96/6a528429c2e0e8d85261764d0cd42e51a429510509bcc14676ee5d1bb212/coverage-7.10.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fd17f427f041f6b116dc90b4049c6f3e1230524407d00daa2d8c7915037b5947", size = 245485, upload-time = "2025-08-04T00:33:10.29Z" },
|
|
135
|
+
{ url = "https://files.pythonhosted.org/packages/bf/82/1fba935c4d02c33275aca319deabf1f22c0f95f2c0000bf7c5f276d6f7b4/coverage-7.10.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7f10ca4cde7b466405cce0a0e9971a13eb22e57a5ecc8b5f93a81090cc9c7eb9", size = 243429, upload-time = "2025-08-04T00:33:11.909Z" },
|
|
136
|
+
{ url = "https://files.pythonhosted.org/packages/fc/a8/c8dc0a57a729fc93be33ab78f187a8f52d455fa8f79bfb379fe23b45868d/coverage-7.10.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3b990df23dd51dccce26d18fb09fd85a77ebe46368f387b0ffba7a74e470b31b", size = 242104, upload-time = "2025-08-04T00:33:13.467Z" },
|
|
137
|
+
{ url = "https://files.pythonhosted.org/packages/b9/6f/0b7da1682e2557caeed299a00897b42afde99a241a01eba0197eb982b90f/coverage-7.10.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc3902584d25c7eef57fb38f440aa849a26a3a9f761a029a72b69acfca4e31f8", size = 242397, upload-time = "2025-08-04T00:33:14.682Z" },
|
|
138
|
+
{ url = "https://files.pythonhosted.org/packages/2d/e4/54dc833dadccd519c04a28852f39a37e522bad35d70cfe038817cdb8f168/coverage-7.10.2-cp310-cp310-win32.whl", hash = "sha256:9dd37e9ac00d5eb72f38ed93e3cdf2280b1dbda3bb9b48c6941805f265ad8d87", size = 217502, upload-time = "2025-08-04T00:33:16.254Z" },
|
|
139
|
+
{ url = "https://files.pythonhosted.org/packages/c3/e7/2f78159c4c127549172f427dff15b02176329327bf6a6a1fcf1f603b5456/coverage-7.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:99d16f15cb5baf0729354c5bd3080ae53847a4072b9ba1e10957522fb290417f", size = 218388, upload-time = "2025-08-04T00:33:17.4Z" },
|
|
140
|
+
{ url = "https://files.pythonhosted.org/packages/6e/53/0125a6fc0af4f2687b4e08b0fb332cd0d5e60f3ca849e7456f995d022656/coverage-7.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c3b210d79925a476dfc8d74c7d53224888421edebf3a611f3adae923e212b27", size = 215119, upload-time = "2025-08-04T00:33:19.101Z" },
|
|
141
|
+
{ url = "https://files.pythonhosted.org/packages/0e/2e/960d9871de9152dbc9ff950913c6a6e9cf2eb4cc80d5bc8f93029f9f2f9f/coverage-7.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bf67d1787cd317c3f8b2e4c6ed1ae93497be7e30605a0d32237ac37a37a8a322", size = 215511, upload-time = "2025-08-04T00:33:20.32Z" },
|
|
142
|
+
{ url = "https://files.pythonhosted.org/packages/3f/34/68509e44995b9cad806d81b76c22bc5181f3535bca7cd9c15791bfd8951e/coverage-7.10.2-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:069b779d03d458602bc0e27189876e7d8bdf6b24ac0f12900de22dd2154e6ad7", size = 245513, upload-time = "2025-08-04T00:33:21.896Z" },
|
|
143
|
+
{ url = "https://files.pythonhosted.org/packages/ef/d4/9b12f357413248ce40804b0f58030b55a25b28a5c02db95fb0aa50c5d62c/coverage-7.10.2-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4c2de4cb80b9990e71c62c2d3e9f3ec71b804b1f9ca4784ec7e74127e0f42468", size = 247350, upload-time = "2025-08-04T00:33:23.917Z" },
|
|
144
|
+
{ url = "https://files.pythonhosted.org/packages/b6/40/257945eda1f72098e4a3c350b1d68fdc5d7d032684a0aeb6c2391153ecf4/coverage-7.10.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:75bf7ab2374a7eb107602f1e07310cda164016cd60968abf817b7a0b5703e288", size = 249516, upload-time = "2025-08-04T00:33:25.5Z" },
|
|
145
|
+
{ url = "https://files.pythonhosted.org/packages/ff/55/8987f852ece378cecbf39a367f3f7ec53351e39a9151b130af3a3045b83f/coverage-7.10.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3f37516458ec1550815134937f73d6d15b434059cd10f64678a2068f65c62406", size = 247241, upload-time = "2025-08-04T00:33:26.767Z" },
|
|
146
|
+
{ url = "https://files.pythonhosted.org/packages/df/ae/da397de7a42a18cea6062ed9c3b72c50b39e0b9e7b2893d7172d3333a9a1/coverage-7.10.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:de3c6271c482c250d3303fb5c6bdb8ca025fff20a67245e1425df04dc990ece9", size = 245274, upload-time = "2025-08-04T00:33:28.494Z" },
|
|
147
|
+
{ url = "https://files.pythonhosted.org/packages/4e/64/7baa895eb55ec0e1ec35b988687ecd5d4475ababb0d7ae5ca3874dd90ee7/coverage-7.10.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:98a838101321ac3089c9bb1d4bfa967e8afed58021fda72d7880dc1997f20ae1", size = 245882, upload-time = "2025-08-04T00:33:30.048Z" },
|
|
148
|
+
{ url = "https://files.pythonhosted.org/packages/24/6c/1fd76a0bd09ae75220ae9775a8290416d726f0e5ba26ea72346747161240/coverage-7.10.2-cp311-cp311-win32.whl", hash = "sha256:f2a79145a531a0e42df32d37be5af069b4a914845b6f686590739b786f2f7bce", size = 217541, upload-time = "2025-08-04T00:33:31.376Z" },
|
|
149
|
+
{ url = "https://files.pythonhosted.org/packages/5f/2d/8c18fb7a6e74c79fd4661e82535bc8c68aee12f46c204eabf910b097ccc9/coverage-7.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:e4f5f1320f8ee0d7cfa421ceb257bef9d39fd614dd3ddcfcacd284d4824ed2c2", size = 218426, upload-time = "2025-08-04T00:33:32.976Z" },
|
|
150
|
+
{ url = "https://files.pythonhosted.org/packages/da/40/425bb35e4ff7c7af177edf5dffd4154bc2a677b27696afe6526d75c77fec/coverage-7.10.2-cp311-cp311-win_arm64.whl", hash = "sha256:d8f2d83118f25328552c728b8e91babf93217db259ca5c2cd4dd4220b8926293", size = 217116, upload-time = "2025-08-04T00:33:34.302Z" },
|
|
151
|
+
{ url = "https://files.pythonhosted.org/packages/4e/1e/2c752bdbbf6f1199c59b1a10557fbb6fb3dc96b3c0077b30bd41a5922c1f/coverage-7.10.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:890ad3a26da9ec7bf69255b9371800e2a8da9bc223ae5d86daeb940b42247c83", size = 215311, upload-time = "2025-08-04T00:33:35.524Z" },
|
|
152
|
+
{ url = "https://files.pythonhosted.org/packages/68/6a/84277d73a2cafb96e24be81b7169372ba7ff28768ebbf98e55c85a491b0f/coverage-7.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:38fd1ccfca7838c031d7a7874d4353e2f1b98eb5d2a80a2fe5732d542ae25e9c", size = 215550, upload-time = "2025-08-04T00:33:37.109Z" },
|
|
153
|
+
{ url = "https://files.pythonhosted.org/packages/b5/e7/5358b73b46ac76f56cc2de921eeabd44fabd0b7ff82ea4f6b8c159c4d5dc/coverage-7.10.2-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:76c1ffaaf4f6f0f6e8e9ca06f24bb6454a7a5d4ced97a1bc466f0d6baf4bd518", size = 246564, upload-time = "2025-08-04T00:33:38.33Z" },
|
|
154
|
+
{ url = "https://files.pythonhosted.org/packages/7c/0e/b0c901dd411cb7fc0cfcb28ef0dc6f3049030f616bfe9fc4143aecd95901/coverage-7.10.2-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:86da8a3a84b79ead5c7d0e960c34f580bc3b231bb546627773a3f53c532c2f21", size = 248993, upload-time = "2025-08-04T00:33:39.555Z" },
|
|
155
|
+
{ url = "https://files.pythonhosted.org/packages/0e/4e/a876db272072a9e0df93f311e187ccdd5f39a190c6d1c1f0b6e255a0d08e/coverage-7.10.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:99cef9731c8a39801830a604cc53c93c9e57ea8b44953d26589499eded9576e0", size = 250454, upload-time = "2025-08-04T00:33:41.023Z" },
|
|
156
|
+
{ url = "https://files.pythonhosted.org/packages/64/d6/1222dc69f8dd1be208d55708a9f4a450ad582bf4fa05320617fea1eaa6d8/coverage-7.10.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ea58b112f2966a8b91eb13f5d3b1f8bb43c180d624cd3283fb33b1cedcc2dd75", size = 248365, upload-time = "2025-08-04T00:33:42.376Z" },
|
|
157
|
+
{ url = "https://files.pythonhosted.org/packages/62/e3/40fd71151064fc315c922dd9a35e15b30616f00146db1d6a0b590553a75a/coverage-7.10.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:20f405188d28da9522b7232e51154e1b884fc18d0b3a10f382d54784715bbe01", size = 246562, upload-time = "2025-08-04T00:33:43.663Z" },
|
|
158
|
+
{ url = "https://files.pythonhosted.org/packages/fc/14/8aa93ddcd6623ddaef5d8966268ac9545b145bce4fe7b1738fd1c3f0d957/coverage-7.10.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:64586ce42bbe0da4d9f76f97235c545d1abb9b25985a8791857690f96e23dc3b", size = 247772, upload-time = "2025-08-04T00:33:45.068Z" },
|
|
159
|
+
{ url = "https://files.pythonhosted.org/packages/07/4e/dcb1c01490623c61e2f2ea85cb185fa6a524265bb70eeb897d3c193efeb9/coverage-7.10.2-cp312-cp312-win32.whl", hash = "sha256:bc2e69b795d97ee6d126e7e22e78a509438b46be6ff44f4dccbb5230f550d340", size = 217710, upload-time = "2025-08-04T00:33:46.378Z" },
|
|
160
|
+
{ url = "https://files.pythonhosted.org/packages/79/16/e8aab4162b5f80ad2e5e1f54b1826e2053aa2f4db508b864af647f00c239/coverage-7.10.2-cp312-cp312-win_amd64.whl", hash = "sha256:adda2268b8cf0d11f160fad3743b4dfe9813cd6ecf02c1d6397eceaa5b45b388", size = 218499, upload-time = "2025-08-04T00:33:48.048Z" },
|
|
161
|
+
{ url = "https://files.pythonhosted.org/packages/06/7f/c112ec766e8f1131ce8ce26254be028772757b2d1e63e4f6a4b0ad9a526c/coverage-7.10.2-cp312-cp312-win_arm64.whl", hash = "sha256:164429decd0d6b39a0582eaa30c67bf482612c0330572343042d0ed9e7f15c20", size = 217154, upload-time = "2025-08-04T00:33:49.299Z" },
|
|
162
|
+
{ url = "https://files.pythonhosted.org/packages/8d/04/9b7a741557f93c0ed791b854d27aa8d9fe0b0ce7bb7c52ca1b0f2619cb74/coverage-7.10.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:aca7b5645afa688de6d4f8e89d30c577f62956fefb1bad021490d63173874186", size = 215337, upload-time = "2025-08-04T00:33:50.61Z" },
|
|
163
|
+
{ url = "https://files.pythonhosted.org/packages/02/a4/8d1088cd644750c94bc305d3cf56082b4cdf7fb854a25abb23359e74892f/coverage-7.10.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:96e5921342574a14303dfdb73de0019e1ac041c863743c8fe1aa6c2b4a257226", size = 215596, upload-time = "2025-08-04T00:33:52.33Z" },
|
|
164
|
+
{ url = "https://files.pythonhosted.org/packages/01/2f/643a8d73343f70e162d8177a3972b76e306b96239026bc0c12cfde4f7c7a/coverage-7.10.2-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:11333094c1bff621aa811b67ed794865cbcaa99984dedea4bd9cf780ad64ecba", size = 246145, upload-time = "2025-08-04T00:33:53.641Z" },
|
|
165
|
+
{ url = "https://files.pythonhosted.org/packages/1f/4a/722098d1848db4072cda71b69ede1e55730d9063bf868375264d0d302bc9/coverage-7.10.2-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6eb586fa7d2aee8d65d5ae1dd71414020b2f447435c57ee8de8abea0a77d5074", size = 248492, upload-time = "2025-08-04T00:33:55.366Z" },
|
|
166
|
+
{ url = "https://files.pythonhosted.org/packages/3f/b0/8a6d7f326f6e3e6ed398cde27f9055e860a1e858317001835c521673fb60/coverage-7.10.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d358f259d8019d4ef25d8c5b78aca4c7af25e28bd4231312911c22a0e824a57", size = 249927, upload-time = "2025-08-04T00:33:57.042Z" },
|
|
167
|
+
{ url = "https://files.pythonhosted.org/packages/bb/21/1aaadd3197b54d1e61794475379ecd0f68d8fc5c2ebd352964dc6f698a3d/coverage-7.10.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5250bda76e30382e0a2dcd68d961afcab92c3a7613606e6269855c6979a1b0bb", size = 248138, upload-time = "2025-08-04T00:33:58.329Z" },
|
|
168
|
+
{ url = "https://files.pythonhosted.org/packages/48/65/be75bafb2bdd22fd8bf9bf63cd5873b91bb26ec0d68f02d4b8b09c02decb/coverage-7.10.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a91e027d66eff214d88d9afbe528e21c9ef1ecdf4956c46e366c50f3094696d0", size = 246111, upload-time = "2025-08-04T00:33:59.899Z" },
|
|
169
|
+
{ url = "https://files.pythonhosted.org/packages/5e/30/a4f0c5e249c3cc60e6c6f30d8368e372f2d380eda40e0434c192ac27ccf5/coverage-7.10.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:228946da741558904e2c03ce870ba5efd9cd6e48cbc004d9a27abee08100a15a", size = 247493, upload-time = "2025-08-04T00:34:01.619Z" },
|
|
170
|
+
{ url = "https://files.pythonhosted.org/packages/85/99/f09b9493e44a75cf99ca834394c12f8cb70da6c1711ee296534f97b52729/coverage-7.10.2-cp313-cp313-win32.whl", hash = "sha256:95e23987b52d02e7c413bf2d6dc6288bd5721beb518052109a13bfdc62c8033b", size = 217756, upload-time = "2025-08-04T00:34:03.277Z" },
|
|
171
|
+
{ url = "https://files.pythonhosted.org/packages/2d/bb/cbcb09103be330c7d26ff0ab05c4a8861dd2e254656fdbd3eb7600af4336/coverage-7.10.2-cp313-cp313-win_amd64.whl", hash = "sha256:f35481d42c6d146d48ec92d4e239c23f97b53a3f1fbd2302e7c64336f28641fe", size = 218526, upload-time = "2025-08-04T00:34:04.635Z" },
|
|
172
|
+
{ url = "https://files.pythonhosted.org/packages/37/8f/8bfb4e0bca52c00ab680767c0dd8cfd928a2a72d69897d9b2d5d8b5f63f5/coverage-7.10.2-cp313-cp313-win_arm64.whl", hash = "sha256:65b451949cb789c346f9f9002441fc934d8ccedcc9ec09daabc2139ad13853f7", size = 217176, upload-time = "2025-08-04T00:34:05.973Z" },
|
|
173
|
+
{ url = "https://files.pythonhosted.org/packages/1e/25/d458ba0bf16a8204a88d74dbb7ec5520f29937ffcbbc12371f931c11efd2/coverage-7.10.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:e8415918856a3e7d57a4e0ad94651b761317de459eb74d34cc1bb51aad80f07e", size = 216058, upload-time = "2025-08-04T00:34:07.368Z" },
|
|
174
|
+
{ url = "https://files.pythonhosted.org/packages/0b/1c/af4dfd2d7244dc7610fed6d59d57a23ea165681cd764445dc58d71ed01a6/coverage-7.10.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f287a25a8ca53901c613498e4a40885b19361a2fe8fbfdbb7f8ef2cad2a23f03", size = 216273, upload-time = "2025-08-04T00:34:09.073Z" },
|
|
175
|
+
{ url = "https://files.pythonhosted.org/packages/8e/67/ec5095d4035c6e16368226fa9cb15f77f891194c7e3725aeefd08e7a3e5a/coverage-7.10.2-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:75cc1a3f8c88c69bf16a871dab1fe5a7303fdb1e9f285f204b60f1ee539b8fc0", size = 257513, upload-time = "2025-08-04T00:34:10.403Z" },
|
|
176
|
+
{ url = "https://files.pythonhosted.org/packages/1c/47/be5550b57a3a8ba797de4236b0fd31031f88397b2afc84ab3c2d4cf265f6/coverage-7.10.2-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ca07fa78cc9d26bc8c4740de1abd3489cf9c47cc06d9a8ab3d552ff5101af4c0", size = 259377, upload-time = "2025-08-04T00:34:12.138Z" },
|
|
177
|
+
{ url = "https://files.pythonhosted.org/packages/37/50/b12a4da1382e672305c2d17cd3029dc16b8a0470de2191dbf26b91431378/coverage-7.10.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c2e117e64c26300032755d4520cd769f2623cde1a1d1c3515b05a3b8add0ade1", size = 261516, upload-time = "2025-08-04T00:34:13.608Z" },
|
|
178
|
+
{ url = "https://files.pythonhosted.org/packages/db/41/4d3296dbd33dd8da178171540ca3391af7c0184c0870fd4d4574ac290290/coverage-7.10.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:daaf98009977f577b71f8800208f4d40d4dcf5c2db53d4d822787cdc198d76e1", size = 259110, upload-time = "2025-08-04T00:34:15.089Z" },
|
|
179
|
+
{ url = "https://files.pythonhosted.org/packages/ea/f1/b409959ecbc0cec0e61e65683b22bacaa4a3b11512f834e16dd8ffbc37db/coverage-7.10.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:ea8d8fe546c528535c761ba424410bbeb36ba8a0f24be653e94b70c93fd8a8ca", size = 257248, upload-time = "2025-08-04T00:34:16.501Z" },
|
|
180
|
+
{ url = "https://files.pythonhosted.org/packages/48/ab/7076dc1c240412e9267d36ec93e9e299d7659f6a5c1e958f87e998b0fb6d/coverage-7.10.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:fe024d40ac31eb8d5aae70215b41dafa264676caa4404ae155f77d2fa95c37bb", size = 258063, upload-time = "2025-08-04T00:34:18.338Z" },
|
|
181
|
+
{ url = "https://files.pythonhosted.org/packages/1e/77/f6b51a0288f8f5f7dcc7c89abdd22cf514f3bc5151284f5cd628917f8e10/coverage-7.10.2-cp313-cp313t-win32.whl", hash = "sha256:8f34b09f68bdadec122ffad312154eda965ade433559cc1eadd96cca3de5c824", size = 218433, upload-time = "2025-08-04T00:34:19.71Z" },
|
|
182
|
+
{ url = "https://files.pythonhosted.org/packages/7b/6d/547a86493e25270ce8481543e77f3a0aa3aa872c1374246b7b76273d66eb/coverage-7.10.2-cp313-cp313t-win_amd64.whl", hash = "sha256:71d40b3ac0f26fa9ffa6ee16219a714fed5c6ec197cdcd2018904ab5e75bcfa3", size = 219523, upload-time = "2025-08-04T00:34:21.171Z" },
|
|
183
|
+
{ url = "https://files.pythonhosted.org/packages/ff/d5/3c711e38eaf9ab587edc9bed232c0298aed84e751a9f54aaa556ceaf7da6/coverage-7.10.2-cp313-cp313t-win_arm64.whl", hash = "sha256:abb57fdd38bf6f7dcc66b38dafb7af7c5fdc31ac6029ce373a6f7f5331d6f60f", size = 217739, upload-time = "2025-08-04T00:34:22.514Z" },
|
|
184
|
+
{ url = "https://files.pythonhosted.org/packages/71/53/83bafa669bb9d06d4c8c6a055d8d05677216f9480c4698fb183ba7ec5e47/coverage-7.10.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:a3e853cc04987c85ec410905667eed4bf08b1d84d80dfab2684bb250ac8da4f6", size = 215328, upload-time = "2025-08-04T00:34:23.991Z" },
|
|
185
|
+
{ url = "https://files.pythonhosted.org/packages/1d/6c/30827a9c5a48a813e865fbaf91e2db25cce990bd223a022650ef2293fe11/coverage-7.10.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0100b19f230df72c90fdb36db59d3f39232391e8d89616a7de30f677da4f532b", size = 215608, upload-time = "2025-08-04T00:34:25.437Z" },
|
|
186
|
+
{ url = "https://files.pythonhosted.org/packages/bb/a0/c92d85948056ddc397b72a3d79d36d9579c53cb25393ed3c40db7d33b193/coverage-7.10.2-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:9c1cd71483ea78331bdfadb8dcec4f4edfb73c7002c1206d8e0af6797853f5be", size = 246111, upload-time = "2025-08-04T00:34:26.857Z" },
|
|
187
|
+
{ url = "https://files.pythonhosted.org/packages/c2/cf/d695cf86b2559aadd072c91720a7844be4fb82cb4a3b642a2c6ce075692d/coverage-7.10.2-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9f75dbf4899e29a37d74f48342f29279391668ef625fdac6d2f67363518056a1", size = 248419, upload-time = "2025-08-04T00:34:28.726Z" },
|
|
188
|
+
{ url = "https://files.pythonhosted.org/packages/ce/0a/03206aec4a05986e039418c038470d874045f6e00426b0c3879adc1f9251/coverage-7.10.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a7df481e7508de1c38b9b8043da48d94931aefa3e32b47dd20277e4978ed5b95", size = 250038, upload-time = "2025-08-04T00:34:30.061Z" },
|
|
189
|
+
{ url = "https://files.pythonhosted.org/packages/ab/9b/b3bd6bd52118c12bc4cf319f5baba65009c9beea84e665b6b9f03fa3f180/coverage-7.10.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:835f39e618099325e7612b3406f57af30ab0a0af350490eff6421e2e5f608e46", size = 248066, upload-time = "2025-08-04T00:34:31.53Z" },
|
|
190
|
+
{ url = "https://files.pythonhosted.org/packages/80/cc/bfa92e261d3e055c851a073e87ba6a3bff12a1f7134233e48a8f7d855875/coverage-7.10.2-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:12e52b5aa00aa720097d6947d2eb9e404e7c1101ad775f9661ba165ed0a28303", size = 245909, upload-time = "2025-08-04T00:34:32.943Z" },
|
|
191
|
+
{ url = "https://files.pythonhosted.org/packages/12/80/c8df15db4847710c72084164f615ae900af1ec380dce7f74a5678ccdf5e1/coverage-7.10.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:718044729bf1fe3e9eb9f31b52e44ddae07e434ec050c8c628bf5adc56fe4bdd", size = 247329, upload-time = "2025-08-04T00:34:34.388Z" },
|
|
192
|
+
{ url = "https://files.pythonhosted.org/packages/04/6f/cb66e1f7124d5dd9ced69f889f02931419cb448125e44a89a13f4e036124/coverage-7.10.2-cp314-cp314-win32.whl", hash = "sha256:f256173b48cc68486299d510a3e729a96e62c889703807482dbf56946befb5c8", size = 218007, upload-time = "2025-08-04T00:34:35.846Z" },
|
|
193
|
+
{ url = "https://files.pythonhosted.org/packages/8c/e1/3d4be307278ce32c1b9d95cc02ee60d54ddab784036101d053ec9e4fe7f5/coverage-7.10.2-cp314-cp314-win_amd64.whl", hash = "sha256:2e980e4179f33d9b65ac4acb86c9c0dde904098853f27f289766657ed16e07b3", size = 218802, upload-time = "2025-08-04T00:34:37.35Z" },
|
|
194
|
+
{ url = "https://files.pythonhosted.org/packages/ec/66/1e43bbeb66c55a5a5efec70f1c153cf90cfc7f1662ab4ebe2d844de9122c/coverage-7.10.2-cp314-cp314-win_arm64.whl", hash = "sha256:14fb5b6641ab5b3c4161572579f0f2ea8834f9d3af2f7dd8fbaecd58ef9175cc", size = 217397, upload-time = "2025-08-04T00:34:39.15Z" },
|
|
195
|
+
{ url = "https://files.pythonhosted.org/packages/81/01/ae29c129217f6110dc694a217475b8aecbb1b075d8073401f868c825fa99/coverage-7.10.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:e96649ac34a3d0e6491e82a2af71098e43be2874b619547c3282fc11d3840a4b", size = 216068, upload-time = "2025-08-04T00:34:40.648Z" },
|
|
196
|
+
{ url = "https://files.pythonhosted.org/packages/a2/50/6e9221d4139f357258f36dfa1d8cac4ec56d9d5acf5fdcc909bb016954d7/coverage-7.10.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1a2e934e9da26341d342d30bfe91422bbfdb3f1f069ec87f19b2909d10d8dcc4", size = 216285, upload-time = "2025-08-04T00:34:42.441Z" },
|
|
197
|
+
{ url = "https://files.pythonhosted.org/packages/eb/ec/89d1d0c0ece0d296b4588e0ef4df185200456d42a47f1141335f482c2fc5/coverage-7.10.2-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:651015dcd5fd9b5a51ca79ece60d353cacc5beaf304db750407b29c89f72fe2b", size = 257603, upload-time = "2025-08-04T00:34:43.899Z" },
|
|
198
|
+
{ url = "https://files.pythonhosted.org/packages/82/06/c830af66734671c778fc49d35b58339e8f0687fbd2ae285c3f96c94da092/coverage-7.10.2-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:81bf6a32212f9f66da03d63ecb9cd9bd48e662050a937db7199dbf47d19831de", size = 259568, upload-time = "2025-08-04T00:34:45.519Z" },
|
|
199
|
+
{ url = "https://files.pythonhosted.org/packages/60/57/f280dd6f1c556ecc744fbf39e835c33d3ae987d040d64d61c6f821e87829/coverage-7.10.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d800705f6951f75a905ea6feb03fff8f3ea3468b81e7563373ddc29aa3e5d1ca", size = 261691, upload-time = "2025-08-04T00:34:47.019Z" },
|
|
200
|
+
{ url = "https://files.pythonhosted.org/packages/54/2b/c63a0acbd19d99ec32326164c23df3a4e18984fb86e902afdd66ff7b3d83/coverage-7.10.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:248b5394718e10d067354448dc406d651709c6765669679311170da18e0e9af8", size = 259166, upload-time = "2025-08-04T00:34:48.792Z" },
|
|
201
|
+
{ url = "https://files.pythonhosted.org/packages/fd/c5/cd2997dcfcbf0683634da9df52d3967bc1f1741c1475dd0e4722012ba9ef/coverage-7.10.2-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:5c61675a922b569137cf943770d7ad3edd0202d992ce53ac328c5ff68213ccf4", size = 257241, upload-time = "2025-08-04T00:34:51.038Z" },
|
|
202
|
+
{ url = "https://files.pythonhosted.org/packages/16/26/c9e30f82fdad8d47aee90af4978b18c88fa74369ae0f0ba0dbf08cee3a80/coverage-7.10.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:52d708b5fd65589461381fa442d9905f5903d76c086c6a4108e8e9efdca7a7ed", size = 258139, upload-time = "2025-08-04T00:34:52.533Z" },
|
|
203
|
+
{ url = "https://files.pythonhosted.org/packages/c9/99/bdb7bd00bebcd3dedfb895fa9af8e46b91422993e4a37ac634a5f1113790/coverage-7.10.2-cp314-cp314t-win32.whl", hash = "sha256:916369b3b914186b2c5e5ad2f7264b02cff5df96cdd7cdad65dccd39aa5fd9f0", size = 218809, upload-time = "2025-08-04T00:34:54.075Z" },
|
|
204
|
+
{ url = "https://files.pythonhosted.org/packages/eb/5e/56a7852e38a04d1520dda4dfbfbf74a3d6dec932c20526968f7444763567/coverage-7.10.2-cp314-cp314t-win_amd64.whl", hash = "sha256:5b9d538e8e04916a5df63052d698b30c74eb0174f2ca9cd942c981f274a18eaf", size = 219926, upload-time = "2025-08-04T00:34:55.643Z" },
|
|
205
|
+
{ url = "https://files.pythonhosted.org/packages/e0/12/7fbe6b9c52bb9d627e9556f9f2edfdbe88b315e084cdecc9afead0c3b36a/coverage-7.10.2-cp314-cp314t-win_arm64.whl", hash = "sha256:04c74f9ef1f925456a9fd23a7eef1103126186d0500ef9a0acb0bd2514bdc7cc", size = 217925, upload-time = "2025-08-04T00:34:57.564Z" },
|
|
206
|
+
{ url = "https://files.pythonhosted.org/packages/18/d8/9b768ac73a8ac2d10c080af23937212434a958c8d2a1c84e89b450237942/coverage-7.10.2-py3-none-any.whl", hash = "sha256:95db3750dd2e6e93d99fa2498f3a1580581e49c494bddccc6f85c5c21604921f", size = 206973, upload-time = "2025-08-04T00:35:15.918Z" },
|
|
186
207
|
]
|
|
187
208
|
|
|
188
209
|
[package.optional-dependencies]
|
|
@@ -216,6 +237,7 @@ dev = [
|
|
|
216
237
|
{ name = "mypy" },
|
|
217
238
|
{ name = "pytest" },
|
|
218
239
|
{ name = "pytest-cov" },
|
|
240
|
+
{ name = "typing-extensions" },
|
|
219
241
|
]
|
|
220
242
|
performance = [
|
|
221
243
|
{ name = "attrs" },
|
|
@@ -235,6 +257,7 @@ dev = [
|
|
|
235
257
|
{ name = "mypy", specifier = ">=1.16" },
|
|
236
258
|
{ name = "pytest", specifier = ">=8.4" },
|
|
237
259
|
{ name = "pytest-cov", specifier = ">=6.1" },
|
|
260
|
+
{ name = "typing-extensions", specifier = ">=4.14" },
|
|
238
261
|
]
|
|
239
262
|
performance = [
|
|
240
263
|
{ name = "attrs", specifier = ">=25.0" },
|
|
@@ -385,7 +408,7 @@ wheels = [
|
|
|
385
408
|
|
|
386
409
|
[[package]]
|
|
387
410
|
name = "mypy"
|
|
388
|
-
version = "1.
|
|
411
|
+
version = "1.17.1"
|
|
389
412
|
source = { registry = "https://pypi.org/simple" }
|
|
390
413
|
dependencies = [
|
|
391
414
|
{ name = "mypy-extensions" },
|
|
@@ -393,33 +416,39 @@ dependencies = [
|
|
|
393
416
|
{ name = "tomli", marker = "python_full_version < '3.11'" },
|
|
394
417
|
{ name = "typing-extensions" },
|
|
395
418
|
]
|
|
396
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
397
|
-
wheels = [
|
|
398
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
399
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
400
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
401
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
402
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
403
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
404
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
405
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
406
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
407
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
408
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
409
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
410
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
411
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
412
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
413
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
414
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
415
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
416
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
417
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
418
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
419
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
420
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
421
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
422
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
419
|
+
sdist = { url = "https://files.pythonhosted.org/packages/8e/22/ea637422dedf0bf36f3ef238eab4e455e2a0dcc3082b5cc067615347ab8e/mypy-1.17.1.tar.gz", hash = "sha256:25e01ec741ab5bb3eec8ba9cdb0f769230368a22c959c4937360efb89b7e9f01", size = 3352570, upload-time = "2025-07-31T07:54:19.204Z" }
|
|
420
|
+
wheels = [
|
|
421
|
+
{ url = "https://files.pythonhosted.org/packages/77/a9/3d7aa83955617cdf02f94e50aab5c830d205cfa4320cf124ff64acce3a8e/mypy-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3fbe6d5555bf608c47203baa3e72dbc6ec9965b3d7c318aa9a4ca76f465bd972", size = 11003299, upload-time = "2025-07-31T07:54:06.425Z" },
|
|
422
|
+
{ url = "https://files.pythonhosted.org/packages/83/e8/72e62ff837dd5caaac2b4a5c07ce769c8e808a00a65e5d8f94ea9c6f20ab/mypy-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80ef5c058b7bce08c83cac668158cb7edea692e458d21098c7d3bce35a5d43e7", size = 10125451, upload-time = "2025-07-31T07:53:52.974Z" },
|
|
423
|
+
{ url = "https://files.pythonhosted.org/packages/7d/10/f3f3543f6448db11881776f26a0ed079865926b0c841818ee22de2c6bbab/mypy-1.17.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4a580f8a70c69e4a75587bd925d298434057fe2a428faaf927ffe6e4b9a98df", size = 11916211, upload-time = "2025-07-31T07:53:18.879Z" },
|
|
424
|
+
{ url = "https://files.pythonhosted.org/packages/06/bf/63e83ed551282d67bb3f7fea2cd5561b08d2bb6eb287c096539feb5ddbc5/mypy-1.17.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd86bb649299f09d987a2eebb4d52d10603224500792e1bee18303bbcc1ce390", size = 12652687, upload-time = "2025-07-31T07:53:30.544Z" },
|
|
425
|
+
{ url = "https://files.pythonhosted.org/packages/69/66/68f2eeef11facf597143e85b694a161868b3b006a5fbad50e09ea117ef24/mypy-1.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a76906f26bd8d51ea9504966a9c25419f2e668f012e0bdf3da4ea1526c534d94", size = 12896322, upload-time = "2025-07-31T07:53:50.74Z" },
|
|
426
|
+
{ url = "https://files.pythonhosted.org/packages/a3/87/8e3e9c2c8bd0d7e071a89c71be28ad088aaecbadf0454f46a540bda7bca6/mypy-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:e79311f2d904ccb59787477b7bd5d26f3347789c06fcd7656fa500875290264b", size = 9507962, upload-time = "2025-07-31T07:53:08.431Z" },
|
|
427
|
+
{ url = "https://files.pythonhosted.org/packages/46/cf/eadc80c4e0a70db1c08921dcc220357ba8ab2faecb4392e3cebeb10edbfa/mypy-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad37544be07c5d7fba814eb370e006df58fed8ad1ef33ed1649cb1889ba6ff58", size = 10921009, upload-time = "2025-07-31T07:53:23.037Z" },
|
|
428
|
+
{ url = "https://files.pythonhosted.org/packages/5d/c1/c869d8c067829ad30d9bdae051046561552516cfb3a14f7f0347b7d973ee/mypy-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:064e2ff508e5464b4bd807a7c1625bc5047c5022b85c70f030680e18f37273a5", size = 10047482, upload-time = "2025-07-31T07:53:26.151Z" },
|
|
429
|
+
{ url = "https://files.pythonhosted.org/packages/98/b9/803672bab3fe03cee2e14786ca056efda4bb511ea02dadcedde6176d06d0/mypy-1.17.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70401bbabd2fa1aa7c43bb358f54037baf0586f41e83b0ae67dd0534fc64edfd", size = 11832883, upload-time = "2025-07-31T07:53:47.948Z" },
|
|
430
|
+
{ url = "https://files.pythonhosted.org/packages/88/fb/fcdac695beca66800918c18697b48833a9a6701de288452b6715a98cfee1/mypy-1.17.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e92bdc656b7757c438660f775f872a669b8ff374edc4d18277d86b63edba6b8b", size = 12566215, upload-time = "2025-07-31T07:54:04.031Z" },
|
|
431
|
+
{ url = "https://files.pythonhosted.org/packages/7f/37/a932da3d3dace99ee8eb2043b6ab03b6768c36eb29a02f98f46c18c0da0e/mypy-1.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c1fdf4abb29ed1cb091cf432979e162c208a5ac676ce35010373ff29247bcad5", size = 12751956, upload-time = "2025-07-31T07:53:36.263Z" },
|
|
432
|
+
{ url = "https://files.pythonhosted.org/packages/8c/cf/6438a429e0f2f5cab8bc83e53dbebfa666476f40ee322e13cac5e64b79e7/mypy-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:ff2933428516ab63f961644bc49bc4cbe42bbffb2cd3b71cc7277c07d16b1a8b", size = 9507307, upload-time = "2025-07-31T07:53:59.734Z" },
|
|
433
|
+
{ url = "https://files.pythonhosted.org/packages/17/a2/7034d0d61af8098ec47902108553122baa0f438df8a713be860f7407c9e6/mypy-1.17.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:69e83ea6553a3ba79c08c6e15dbd9bfa912ec1e493bf75489ef93beb65209aeb", size = 11086295, upload-time = "2025-07-31T07:53:28.124Z" },
|
|
434
|
+
{ url = "https://files.pythonhosted.org/packages/14/1f/19e7e44b594d4b12f6ba8064dbe136505cec813549ca3e5191e40b1d3cc2/mypy-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b16708a66d38abb1e6b5702f5c2c87e133289da36f6a1d15f6a5221085c6403", size = 10112355, upload-time = "2025-07-31T07:53:21.121Z" },
|
|
435
|
+
{ url = "https://files.pythonhosted.org/packages/5b/69/baa33927e29e6b4c55d798a9d44db5d394072eef2bdc18c3e2048c9ed1e9/mypy-1.17.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:89e972c0035e9e05823907ad5398c5a73b9f47a002b22359b177d40bdaee7056", size = 11875285, upload-time = "2025-07-31T07:53:55.293Z" },
|
|
436
|
+
{ url = "https://files.pythonhosted.org/packages/90/13/f3a89c76b0a41e19490b01e7069713a30949d9a6c147289ee1521bcea245/mypy-1.17.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03b6d0ed2b188e35ee6d5c36b5580cffd6da23319991c49ab5556c023ccf1341", size = 12737895, upload-time = "2025-07-31T07:53:43.623Z" },
|
|
437
|
+
{ url = "https://files.pythonhosted.org/packages/23/a1/c4ee79ac484241301564072e6476c5a5be2590bc2e7bfd28220033d2ef8f/mypy-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c837b896b37cd103570d776bda106eabb8737aa6dd4f248451aecf53030cdbeb", size = 12931025, upload-time = "2025-07-31T07:54:17.125Z" },
|
|
438
|
+
{ url = "https://files.pythonhosted.org/packages/89/b8/7409477be7919a0608900e6320b155c72caab4fef46427c5cc75f85edadd/mypy-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:665afab0963a4b39dff7c1fa563cc8b11ecff7910206db4b2e64dd1ba25aed19", size = 9584664, upload-time = "2025-07-31T07:54:12.842Z" },
|
|
439
|
+
{ url = "https://files.pythonhosted.org/packages/5b/82/aec2fc9b9b149f372850291827537a508d6c4d3664b1750a324b91f71355/mypy-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93378d3203a5c0800c6b6d850ad2f19f7a3cdf1a3701d3416dbf128805c6a6a7", size = 11075338, upload-time = "2025-07-31T07:53:38.873Z" },
|
|
440
|
+
{ url = "https://files.pythonhosted.org/packages/07/ac/ee93fbde9d2242657128af8c86f5d917cd2887584cf948a8e3663d0cd737/mypy-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:15d54056f7fe7a826d897789f53dd6377ec2ea8ba6f776dc83c2902b899fee81", size = 10113066, upload-time = "2025-07-31T07:54:14.707Z" },
|
|
441
|
+
{ url = "https://files.pythonhosted.org/packages/5a/68/946a1e0be93f17f7caa56c45844ec691ca153ee8b62f21eddda336a2d203/mypy-1.17.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:209a58fed9987eccc20f2ca94afe7257a8f46eb5df1fb69958650973230f91e6", size = 11875473, upload-time = "2025-07-31T07:53:14.504Z" },
|
|
442
|
+
{ url = "https://files.pythonhosted.org/packages/9f/0f/478b4dce1cb4f43cf0f0d00fba3030b21ca04a01b74d1cd272a528cf446f/mypy-1.17.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:099b9a5da47de9e2cb5165e581f158e854d9e19d2e96b6698c0d64de911dd849", size = 12744296, upload-time = "2025-07-31T07:53:03.896Z" },
|
|
443
|
+
{ url = "https://files.pythonhosted.org/packages/ca/70/afa5850176379d1b303f992a828de95fc14487429a7139a4e0bdd17a8279/mypy-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ffadfbe6994d724c5a1bb6123a7d27dd68fc9c059561cd33b664a79578e14", size = 12914657, upload-time = "2025-07-31T07:54:08.576Z" },
|
|
444
|
+
{ url = "https://files.pythonhosted.org/packages/53/f9/4a83e1c856a3d9c8f6edaa4749a4864ee98486e9b9dbfbc93842891029c2/mypy-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:9a2b7d9180aed171f033c9f2fc6c204c1245cf60b0cb61cf2e7acc24eea78e0a", size = 9593320, upload-time = "2025-07-31T07:53:01.341Z" },
|
|
445
|
+
{ url = "https://files.pythonhosted.org/packages/38/56/79c2fac86da57c7d8c48622a05873eaab40b905096c33597462713f5af90/mypy-1.17.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:15a83369400454c41ed3a118e0cc58bd8123921a602f385cb6d6ea5df050c733", size = 11040037, upload-time = "2025-07-31T07:54:10.942Z" },
|
|
446
|
+
{ url = "https://files.pythonhosted.org/packages/4d/c3/adabe6ff53638e3cad19e3547268482408323b1e68bf082c9119000cd049/mypy-1.17.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:55b918670f692fc9fba55c3298d8a3beae295c5cded0a55dccdc5bbead814acd", size = 10131550, upload-time = "2025-07-31T07:53:41.307Z" },
|
|
447
|
+
{ url = "https://files.pythonhosted.org/packages/b8/c5/2e234c22c3bdeb23a7817af57a58865a39753bde52c74e2c661ee0cfc640/mypy-1.17.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:62761474061feef6f720149d7ba876122007ddc64adff5ba6f374fda35a018a0", size = 11872963, upload-time = "2025-07-31T07:53:16.878Z" },
|
|
448
|
+
{ url = "https://files.pythonhosted.org/packages/ab/26/c13c130f35ca8caa5f2ceab68a247775648fdcd6c9a18f158825f2bc2410/mypy-1.17.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c49562d3d908fd49ed0938e5423daed8d407774a479b595b143a3d7f87cdae6a", size = 12710189, upload-time = "2025-07-31T07:54:01.962Z" },
|
|
449
|
+
{ url = "https://files.pythonhosted.org/packages/82/df/c7d79d09f6de8383fe800521d066d877e54d30b4fb94281c262be2df84ef/mypy-1.17.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:397fba5d7616a5bc60b45c7ed204717eaddc38f826e3645402c426057ead9a91", size = 12900322, upload-time = "2025-07-31T07:53:10.551Z" },
|
|
450
|
+
{ url = "https://files.pythonhosted.org/packages/b8/98/3d5a48978b4f708c55ae832619addc66d677f6dc59f3ebad71bae8285ca6/mypy-1.17.1-cp314-cp314-win_amd64.whl", hash = "sha256:9d6b20b97d373f41617bd0708fd46aa656059af57f2ef72aa8c7d6a2b73b74ed", size = 9751879, upload-time = "2025-07-31T07:52:56.683Z" },
|
|
451
|
+
{ url = "https://files.pythonhosted.org/packages/1d/f3/8fcd2af0f5b806f6cf463efaffd3c9548a28f84220493ecd38d127b6b66d/mypy-1.17.1-py3-none-any.whl", hash = "sha256:a9f52c0351c21fe24c21d8c0eb1f62967b262d6729393397b6f443c3b773c3b9", size = 2283411, upload-time = "2025-07-31T07:53:24.664Z" },
|
|
423
452
|
]
|
|
424
453
|
|
|
425
454
|
[[package]]
|
|
@@ -580,16 +609,16 @@ wheels = [
|
|
|
580
609
|
|
|
581
610
|
[[package]]
|
|
582
611
|
name = "pygments"
|
|
583
|
-
version = "2.19.
|
|
612
|
+
version = "2.19.2"
|
|
584
613
|
source = { registry = "https://pypi.org/simple" }
|
|
585
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
614
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" }
|
|
586
615
|
wheels = [
|
|
587
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
616
|
+
{ url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" },
|
|
588
617
|
]
|
|
589
618
|
|
|
590
619
|
[[package]]
|
|
591
620
|
name = "pytest"
|
|
592
|
-
version = "8.4.
|
|
621
|
+
version = "8.4.1"
|
|
593
622
|
source = { registry = "https://pypi.org/simple" }
|
|
594
623
|
dependencies = [
|
|
595
624
|
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
|
@@ -600,9 +629,9 @@ dependencies = [
|
|
|
600
629
|
{ name = "pygments" },
|
|
601
630
|
{ name = "tomli", marker = "python_full_version < '3.11'" },
|
|
602
631
|
]
|
|
603
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
632
|
+
sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload-time = "2025-06-18T05:48:06.109Z" }
|
|
604
633
|
wheels = [
|
|
605
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
634
|
+
{ url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload-time = "2025-06-18T05:48:03.955Z" },
|
|
606
635
|
]
|
|
607
636
|
|
|
608
637
|
[[package]]
|
|
@@ -881,11 +910,11 @@ wheels = [
|
|
|
881
910
|
|
|
882
911
|
[[package]]
|
|
883
912
|
name = "typing-extensions"
|
|
884
|
-
version = "4.14.
|
|
913
|
+
version = "4.14.1"
|
|
885
914
|
source = { registry = "https://pypi.org/simple" }
|
|
886
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
915
|
+
sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload-time = "2025-07-04T13:28:34.16Z" }
|
|
887
916
|
wheels = [
|
|
888
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
917
|
+
{ url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" },
|
|
889
918
|
]
|
|
890
919
|
|
|
891
920
|
[[package]]
|
|
@@ -902,9 +931,9 @@ wheels = [
|
|
|
902
931
|
|
|
903
932
|
[[package]]
|
|
904
933
|
name = "urllib3"
|
|
905
|
-
version = "2.
|
|
934
|
+
version = "2.5.0"
|
|
906
935
|
source = { registry = "https://pypi.org/simple" }
|
|
907
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
936
|
+
sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" }
|
|
908
937
|
wheels = [
|
|
909
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
938
|
+
{ url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" },
|
|
910
939
|
]
|
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/.github/workflows/auto_test.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs/perf/performance_tests.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs_code/docs_ex2_register.py
RENAMED
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs_code/docs_ex3_iterable.py
RENAMED
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs_code/docs_ex5_frozen.py
RENAMED
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs_code/docs_ex7_posonly.py
RENAMED
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs_code/docs_ex8_converters.py
RENAMED
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/docs_code/docs_ex9_annotated.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/src/ducktools/classbuilder/py.typed
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/annotations/test_annotated.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_compare_attrib.py
RENAMED
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_construction.py
RENAMED
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_creation.py
RENAMED
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_dunders.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_hint_syntax.py
RENAMED
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_inheritance.py
RENAMED
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_internals_dict.py
RENAMED
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_kw_only.py
RENAMED
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_pre_post_init.py
RENAMED
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_private.py
RENAMED
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_replace.py
RENAMED
|
File without changes
|
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_slots_novalues.py
RENAMED
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/prefab/test_slotted_class.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ducktools_classbuilder-0.10.0 → ducktools_classbuilder-0.10.1}/tests/py314_tests/_test_support.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|