datahold 4.0.0.dev22__tar.gz → 4.0.0.dev23__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.
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/PKG-INFO +1 -1
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/pyproject.toml +1 -1
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/src/datahold/__init__.py +5 -2
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/src/datahold.egg-info/PKG-INFO +1 -1
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/src/datahold.egg-info/SOURCES.txt +2 -2
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/tests/test_abstractmethods.py +5 -9
- datahold-4.0.0.dev23/tests/test_name.py +81 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/tests/testdata.toml +7 -31
- datahold-4.0.0.dev22/tests/test_prefix.py +0 -41
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/LICENSE.txt +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/MANIFEST.in +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/README.rst +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/docs/v1.1.rst +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/docs/v1.2.rst +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/docs/v2.0.rst +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/docs/v2.1.rst +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/docs/v2.2.rst +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/docs/v2.3.rst +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/docs/v3.0.rst +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/docs/v4.0.rst +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/run_tests.py +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/setup.cfg +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/src/datahold/py.typed +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/src/datahold.egg-info/dependency_links.txt +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/src/datahold.egg-info/requires.txt +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/src/datahold.egg-info/top_level.txt +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/tests/test_FrozenListSlot.py +0 -0
- /datahold-4.0.0.dev22/tests/test_MutableListHold.py → /datahold-4.0.0.dev23/tests/test_MutableListSlot.py +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/tests/test_all.py +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/tests/test_attributes.py +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/tests/test_docs.py +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/tests/test_generic.py +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/tests/test_internal_comparison.py +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/tests/test_issubclass.py +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/tests/test_nested.py +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/tests/test_sorted.py +0 -0
- {datahold-4.0.0.dev22 → datahold-4.0.0.dev23}/tests/test_variance.py +0 -0
|
@@ -219,7 +219,6 @@ class MutableSetLike[Item: abc.Hashable](SetLike[Item], MutableSet[Item]):
|
|
|
219
219
|
with self.__mutate__() as mutable:
|
|
220
220
|
return frozenset(mutable)
|
|
221
221
|
|
|
222
|
-
@abstractmethod
|
|
223
222
|
@setdoc.basic
|
|
224
223
|
def __init__(self: Self, data: abc.Iterable[Item] = (), /) -> None:
|
|
225
224
|
with self.__mutate__() as mutable:
|
|
@@ -287,7 +286,11 @@ class MutableSetSlot[Item](SetSlot[Item], MutableSetLike[Item]):
|
|
|
287
286
|
|
|
288
287
|
@contextmanager
|
|
289
288
|
@setdoc.basic
|
|
290
|
-
def __mutate__(
|
|
289
|
+
def __mutate__(
|
|
290
|
+
self: Self,
|
|
291
|
+
/,
|
|
292
|
+
) -> abc.Generator[MutableSetSlot.__Mutable__[Item], None, None]:
|
|
293
|
+
slot: MutableSetSlot.__Mutable__[Item]
|
|
291
294
|
slot = set(getattr(self, "_slot", ()))
|
|
292
295
|
yield slot
|
|
293
296
|
self._slot = frozenset(slot)
|
|
@@ -20,7 +20,7 @@ src/datahold.egg-info/dependency_links.txt
|
|
|
20
20
|
src/datahold.egg-info/requires.txt
|
|
21
21
|
src/datahold.egg-info/top_level.txt
|
|
22
22
|
tests/test_FrozenListSlot.py
|
|
23
|
-
tests/
|
|
23
|
+
tests/test_MutableListSlot.py
|
|
24
24
|
tests/test_abstractmethods.py
|
|
25
25
|
tests/test_all.py
|
|
26
26
|
tests/test_attributes.py
|
|
@@ -28,8 +28,8 @@ tests/test_docs.py
|
|
|
28
28
|
tests/test_generic.py
|
|
29
29
|
tests/test_internal_comparison.py
|
|
30
30
|
tests/test_issubclass.py
|
|
31
|
+
tests/test_name.py
|
|
31
32
|
tests/test_nested.py
|
|
32
|
-
tests/test_prefix.py
|
|
33
33
|
tests/test_sorted.py
|
|
34
34
|
tests/test_variance.py
|
|
35
35
|
tests/testdata.toml
|
|
@@ -12,22 +12,18 @@ import datahold
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class TestAbstractmethods(unittest.TestCase):
|
|
15
|
-
def _test(
|
|
16
|
-
self: Self, name: str, abstractmethods: Optional[list[str]] = None, /
|
|
17
|
-
) -> None:
|
|
15
|
+
def _test(self: Self, name: str, abstractmethods: set[str], /) -> None:
|
|
18
16
|
datatype: Any
|
|
19
|
-
if abstractmethods is None:
|
|
20
|
-
return
|
|
21
17
|
datatype = getattr(datahold, name)
|
|
22
|
-
self.
|
|
18
|
+
self.assertLessEqual(len(datatype.__abstractmethods__), 2)
|
|
19
|
+
self.assertSetEqual(datatype.__abstractmethods__, abstractmethods)
|
|
23
20
|
self.assertEqual(ins.isabstract(datatype), bool(abstractmethods))
|
|
24
21
|
|
|
25
22
|
def test_abstractmethods(self: Self, /) -> None:
|
|
26
|
-
data: Any
|
|
27
23
|
name: Any
|
|
28
|
-
for name
|
|
24
|
+
for name in Lazy.lazy.datatypes.keys():
|
|
29
25
|
with self.subTest(datatype=name):
|
|
30
|
-
self._test(name,
|
|
26
|
+
self._test(name, Lazy.get_abstractmethods(name))
|
|
31
27
|
|
|
32
28
|
|
|
33
29
|
if __name__ == "__main__":
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
__all__: list[str] = ["TestName"]
|
|
4
|
+
|
|
5
|
+
import unittest
|
|
6
|
+
from collections import abc
|
|
7
|
+
from typing import Self
|
|
8
|
+
|
|
9
|
+
from Lazy import Lazy
|
|
10
|
+
|
|
11
|
+
import datahold
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class TestName(unittest.TestCase):
|
|
15
|
+
|
|
16
|
+
def _test_name(self: Self, name: str, /) -> None:
|
|
17
|
+
prefix: str
|
|
18
|
+
suffix: str
|
|
19
|
+
if name.startswith("Frozen"):
|
|
20
|
+
prefix = "Frozen"
|
|
21
|
+
elif name.startswith("Mutable"):
|
|
22
|
+
prefix = "Mutable"
|
|
23
|
+
else:
|
|
24
|
+
prefix = ""
|
|
25
|
+
if name.endswith("Like"):
|
|
26
|
+
suffix = "Like"
|
|
27
|
+
elif name.endswith("Slot"):
|
|
28
|
+
suffix = "Slot"
|
|
29
|
+
else:
|
|
30
|
+
suffix = ""
|
|
31
|
+
# all
|
|
32
|
+
datatype = getattr(datahold, name)
|
|
33
|
+
self.assertEqual(datatype.__name__, name)
|
|
34
|
+
self.assertTrue(hasattr(datatype, "__Frozen__"))
|
|
35
|
+
self.assertTrue(hasattr(datatype, "__frozen__"))
|
|
36
|
+
self.assertTrue(issubclass(datatype, datahold.Collection))
|
|
37
|
+
# frozen
|
|
38
|
+
if prefix == "Frozen":
|
|
39
|
+
self.assertIsNot(datatype.__hash__, object.__hash__)
|
|
40
|
+
self.assertTrue(issubclass(datatype, abc.Hashable))
|
|
41
|
+
self.assertFalse(hasattr(datatype, "__Mutable__"))
|
|
42
|
+
self.assertFalse(hasattr(datatype, "__mutate__"))
|
|
43
|
+
self.assertTrue(
|
|
44
|
+
issubclass(datatype, Lazy.get_import("datahold." + name[6:]))
|
|
45
|
+
)
|
|
46
|
+
# mutable
|
|
47
|
+
if prefix == "Mutable":
|
|
48
|
+
self.assertIn(datatype.__hash__, [None, object.__hash__])
|
|
49
|
+
self.assertTrue(hasattr(datatype, "__Mutable__"))
|
|
50
|
+
self.assertTrue(hasattr(datatype, "__mutate__"))
|
|
51
|
+
self.assertTrue(
|
|
52
|
+
issubclass(datatype, Lazy.get_import("datahold." + name[7:]))
|
|
53
|
+
)
|
|
54
|
+
# no prefix
|
|
55
|
+
if prefix == "":
|
|
56
|
+
self.assertIn(datatype.__hash__, [None, object.__hash__])
|
|
57
|
+
self.assertFalse(hasattr(datatype, "__Mutable__"))
|
|
58
|
+
self.assertFalse(hasattr(datatype, "__mutate__"))
|
|
59
|
+
# like
|
|
60
|
+
if suffix == "Like":
|
|
61
|
+
self.assertTrue(hasattr(datatype, "__init__"))
|
|
62
|
+
# slot
|
|
63
|
+
if suffix == "Slot":
|
|
64
|
+
self.assertTrue(hasattr(datatype, "__init__"))
|
|
65
|
+
self.assertTrue(
|
|
66
|
+
issubclass(
|
|
67
|
+
datatype, Lazy.get_import("datahold." + name[:-4] + "Like")
|
|
68
|
+
)
|
|
69
|
+
)
|
|
70
|
+
# no suffix
|
|
71
|
+
if suffix == "":
|
|
72
|
+
self.assertIs(datatype.__init__, object.__init__)
|
|
73
|
+
|
|
74
|
+
def test_name(self: Self, /) -> None:
|
|
75
|
+
for name in Lazy.lazy.datatypes.keys():
|
|
76
|
+
with self.subTest(datatype=name):
|
|
77
|
+
self._test_name(name)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
if __name__ == "__main__":
|
|
81
|
+
unittest.main(verbosity=2)
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
[datatypes.Collection]
|
|
2
2
|
|
|
3
|
+
[datatypes.DictLike.attributes]
|
|
4
|
+
__or__ = "datahold.DictLike"
|
|
5
|
+
|
|
3
6
|
[datatypes.DictLike.issubclass]
|
|
4
7
|
"collections.abc.Mapping" = true
|
|
5
8
|
"datahold.Mapping" = true
|
|
@@ -16,12 +19,6 @@
|
|
|
16
19
|
"collections.abc.Hashable" = true
|
|
17
20
|
"datahold.FrozenDictLike" = true
|
|
18
21
|
|
|
19
|
-
[datatypes.FrozenListLike]
|
|
20
|
-
abstractmethods = [
|
|
21
|
-
"__frozen__",
|
|
22
|
-
"__init__",
|
|
23
|
-
]
|
|
24
|
-
|
|
25
22
|
[datatypes.FrozenListLike.attributes]
|
|
26
23
|
__frozen__ = "datahold.ListLike"
|
|
27
24
|
__init__ = "datahold.ListLike"
|
|
@@ -40,9 +37,6 @@ __Mutable__ = ""
|
|
|
40
37
|
[datatypes.FrozenListLike.varia]
|
|
41
38
|
generic = 1
|
|
42
39
|
|
|
43
|
-
[datatypes.FrozenListSlot]
|
|
44
|
-
abstractmethods = []
|
|
45
|
-
|
|
46
40
|
[datatypes.FrozenListSlot.TestInternalComparsion.ge.test_greater_value]
|
|
47
41
|
a = "_1_3"
|
|
48
42
|
b = "_1_2"
|
|
@@ -166,12 +160,6 @@ generic = 1
|
|
|
166
160
|
"collections.abc.Set" = true
|
|
167
161
|
"datahold.Collection" = true
|
|
168
162
|
|
|
169
|
-
[datatypes.ListLike]
|
|
170
|
-
abstractmethods = [
|
|
171
|
-
"__frozen__",
|
|
172
|
-
"__init__",
|
|
173
|
-
]
|
|
174
|
-
|
|
175
163
|
[datatypes.ListLike.attributes]
|
|
176
164
|
__frozen__ = "datahold.ListLike"
|
|
177
165
|
__init__ = "datahold.ListLike"
|
|
@@ -194,11 +182,6 @@ __Mutable__ = ""
|
|
|
194
182
|
[datatypes.ListLike.varia]
|
|
195
183
|
generic = 1
|
|
196
184
|
|
|
197
|
-
[datatypes.ListSlot]
|
|
198
|
-
abstractmethods = [
|
|
199
|
-
"__init__",
|
|
200
|
-
]
|
|
201
|
-
|
|
202
185
|
[datatypes.ListSlot.nested]
|
|
203
186
|
__Frozen__ = "builtins.tuple"
|
|
204
187
|
__Mutable__ = ""
|
|
@@ -210,6 +193,10 @@ generic = 1
|
|
|
210
193
|
"collections.abc.Mapping" = true
|
|
211
194
|
"datahold.Collection" = true
|
|
212
195
|
|
|
196
|
+
[datatypes.MutableDictLike.attributes]
|
|
197
|
+
__ior__ = "datahold.MutableDictLike"
|
|
198
|
+
__or__ = "datahold.DictLike"
|
|
199
|
+
|
|
213
200
|
[datatypes.MutableDictLike.issubclass]
|
|
214
201
|
"collections.abc.Mapping" = true
|
|
215
202
|
"collections.abc.MutableMapping" = true
|
|
@@ -221,11 +208,6 @@ generic = 1
|
|
|
221
208
|
"datahold.MutableDictLike" = true
|
|
222
209
|
"datahold.MutableMapping" = true
|
|
223
210
|
|
|
224
|
-
[datatypes.MutableListLike]
|
|
225
|
-
abstractmethods = [
|
|
226
|
-
"__mutate__",
|
|
227
|
-
]
|
|
228
|
-
|
|
229
211
|
[datatypes.MutableListLike.attributes]
|
|
230
212
|
__add__ = "datahold.MutableListLike"
|
|
231
213
|
__frozen__ = "datahold.MutableListLike"
|
|
@@ -259,9 +241,6 @@ __hash__ = ""
|
|
|
259
241
|
[datatypes.MutableListLike.varia]
|
|
260
242
|
generic = 1
|
|
261
243
|
|
|
262
|
-
[datatypes.MutableListSlot]
|
|
263
|
-
abstractmethods = []
|
|
264
|
-
|
|
265
244
|
[datatypes.MutableListSlot.issubclass]
|
|
266
245
|
"builtins.list" = false
|
|
267
246
|
"datahold.ListLike" = true
|
|
@@ -312,9 +291,6 @@ sort = ""
|
|
|
312
291
|
"datahold.SetSlot" = true
|
|
313
292
|
|
|
314
293
|
[datatypes.Sequence]
|
|
315
|
-
abstractmethods = [
|
|
316
|
-
"__frozen__",
|
|
317
|
-
]
|
|
318
294
|
|
|
319
295
|
[datatypes.Set.issubclass]
|
|
320
296
|
"collections.abc.Set" = true
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
__all__: list[str] = ["TestPrefix"]
|
|
4
|
-
|
|
5
|
-
import unittest
|
|
6
|
-
from collections import abc
|
|
7
|
-
from typing import Self
|
|
8
|
-
|
|
9
|
-
from Lazy import Lazy
|
|
10
|
-
|
|
11
|
-
import datahold
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class TestPrefix(unittest.TestCase):
|
|
15
|
-
def _test_prefix(self: Self, name: str, /) -> None:
|
|
16
|
-
datatype = getattr(datahold, name)
|
|
17
|
-
self.assertEqual(datatype.__name__, name)
|
|
18
|
-
self.assertTrue(hasattr(datatype, "__Frozen__"))
|
|
19
|
-
self.assertTrue(hasattr(datatype, "__frozen__"))
|
|
20
|
-
if name.startswith("Frozen"):
|
|
21
|
-
self.assertIsNot(datatype.__hash__, object.__hash__)
|
|
22
|
-
self.assertTrue(issubclass(datatype, abc.Hashable))
|
|
23
|
-
self.assertFalse(hasattr(datatype, "__Mutable__"))
|
|
24
|
-
self.assertFalse(hasattr(datatype, "__mutate__"))
|
|
25
|
-
return
|
|
26
|
-
self.assertIn(datatype.__hash__, [None, object.__hash__])
|
|
27
|
-
if name.startswith("Mutable"):
|
|
28
|
-
self.assertTrue(hasattr(datatype, "__Mutable__"))
|
|
29
|
-
self.assertTrue(hasattr(datatype, "__mutate__"))
|
|
30
|
-
return
|
|
31
|
-
self.assertFalse(hasattr(datatype, "__Mutable__"))
|
|
32
|
-
self.assertFalse(hasattr(datatype, "__mutate__"))
|
|
33
|
-
|
|
34
|
-
def test_prefix(self: Self, /) -> None:
|
|
35
|
-
for name in Lazy.lazy.datatypes.keys():
|
|
36
|
-
with self.subTest(datatype=name):
|
|
37
|
-
self._test_prefix(name)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if __name__ == "__main__":
|
|
41
|
-
unittest.main(verbosity=2)
|
|
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
|
|
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
|