datahold 4.0.0.dev25__tar.gz → 4.0.0.dev26__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.dev25 → datahold-4.0.0.dev26}/PKG-INFO +1 -1
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/pyproject.toml +1 -1
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/src/datahold/__init__.py +25 -46
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/src/datahold.egg-info/PKG-INFO +1 -1
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/src/datahold.egg-info/SOURCES.txt +1 -0
- datahold-4.0.0.dev26/tests/test_MutableDictSlot.py +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_name.py +6 -11
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_variance.py +1 -7
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/testdata.toml +0 -17
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/LICENSE.txt +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/MANIFEST.in +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/README.rst +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/docs/v1.1.rst +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/docs/v1.2.rst +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/docs/v2.0.rst +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/docs/v2.1.rst +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/docs/v2.2.rst +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/docs/v2.3.rst +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/docs/v3.0.rst +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/docs/v4.0.rst +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/run_tests.py +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/setup.cfg +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/src/datahold/py.typed +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/src/datahold.egg-info/dependency_links.txt +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/src/datahold.egg-info/requires.txt +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/src/datahold.egg-info/top_level.txt +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_FrozenListSlot.py +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_MutableListSlot.py +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_abstractmethods.py +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_all.py +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_attributes.py +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_docs.py +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_generic.py +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_internal_comparison.py +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_issubclass.py +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_nested.py +0 -0
- {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_sorted.py +0 -0
|
@@ -5,7 +5,6 @@ from __future__ import annotations
|
|
|
5
5
|
__all__: list[str] = [
|
|
6
6
|
"Collection",
|
|
7
7
|
"DictLike",
|
|
8
|
-
"DictSlot",
|
|
9
8
|
"FrozenDictLike",
|
|
10
9
|
"FrozenDictSlot",
|
|
11
10
|
"FrozenListLike",
|
|
@@ -13,7 +12,6 @@ __all__: list[str] = [
|
|
|
13
12
|
"FrozenSetLike",
|
|
14
13
|
"FrozenSetSlot",
|
|
15
14
|
"ListLike",
|
|
16
|
-
"ListSlot",
|
|
17
15
|
"Mapping",
|
|
18
16
|
"MutableDictLike",
|
|
19
17
|
"MutableDictSlot",
|
|
@@ -27,7 +25,6 @@ __all__: list[str] = [
|
|
|
27
25
|
"Sequence",
|
|
28
26
|
"Set",
|
|
29
27
|
"SetLike",
|
|
30
|
-
"SetSlot",
|
|
31
28
|
]
|
|
32
29
|
|
|
33
30
|
from abc import abstractmethod
|
|
@@ -338,32 +335,28 @@ class MutableSetLike[Item: abc.Hashable](SetLike[Item], MutableSet[Item]):
|
|
|
338
335
|
### SET-SLOT ###
|
|
339
336
|
|
|
340
337
|
|
|
341
|
-
class
|
|
342
|
-
"""Provide slotted set-like."""
|
|
338
|
+
class FrozenSetSlot[Item](FrozenSetLike[Item]):
|
|
339
|
+
"""Provide slotted frozen set-like."""
|
|
343
340
|
|
|
344
341
|
__slots__ = ("_slot",)
|
|
345
342
|
|
|
346
|
-
_slot:
|
|
343
|
+
_slot: FrozenSetSlot.__Frozen__[Item]
|
|
347
344
|
|
|
348
345
|
@setdoc.basic
|
|
349
|
-
def __frozen__(self: Self, /) ->
|
|
346
|
+
def __frozen__(self: Self, /) -> FrozenSetSlot.__Frozen__[Item]:
|
|
350
347
|
return self._slot
|
|
351
348
|
|
|
352
|
-
|
|
353
|
-
class FrozenSetSlot[Item](SetSlot[Item], FrozenSetLike[Item]):
|
|
354
|
-
"""Provide slotted frozen set-like."""
|
|
355
|
-
|
|
356
|
-
__slots__ = ()
|
|
357
|
-
|
|
358
349
|
@setdoc.basic
|
|
359
350
|
def __init__(self: Self, data: abc.Iterable[Item] = (), /) -> None:
|
|
360
351
|
self._slot = frozenset(data)
|
|
361
352
|
|
|
362
353
|
|
|
363
|
-
class MutableSetSlot[Item](
|
|
354
|
+
class MutableSetSlot[Item](MutableSetLike[Item]):
|
|
364
355
|
"""Provide slotted mutable set-like."""
|
|
365
356
|
|
|
366
|
-
__slots__ = ()
|
|
357
|
+
__slots__ = ("_slot",)
|
|
358
|
+
|
|
359
|
+
_slot: FrozenSetSlot.__Frozen__[Item]
|
|
367
360
|
|
|
368
361
|
@contextmanager
|
|
369
362
|
@setdoc.basic
|
|
@@ -433,9 +426,7 @@ class DictLike[Key: abc.Hashable, Value](
|
|
|
433
426
|
"""Provide abc for custom dict-like."""
|
|
434
427
|
|
|
435
428
|
__slots__ = ()
|
|
436
|
-
type __Frozen__[
|
|
437
|
-
FrozenKey | str, Optional[FrozenValue]
|
|
438
|
-
]
|
|
429
|
+
type __Frozen__[Key_, Value_] = frozendict[Key_ | str, Optional[Value_]]
|
|
439
430
|
|
|
440
431
|
@abstractmethod
|
|
441
432
|
@setdoc.basic
|
|
@@ -538,27 +529,20 @@ class MutableDictLike[Key: abc.Hashable, Value](
|
|
|
538
529
|
### DICT-SLOT ###
|
|
539
530
|
|
|
540
531
|
|
|
541
|
-
class
|
|
542
|
-
|
|
532
|
+
class FrozenDictSlot[Key: abc.Hashable, Value](
|
|
533
|
+
FrozenDictLike[Key, Value],
|
|
534
|
+
):
|
|
535
|
+
"""Provide slotted frozen dict-like."""
|
|
543
536
|
|
|
544
537
|
__slots__ = ("_slot",)
|
|
545
|
-
_slot:
|
|
538
|
+
_slot: FrozenDictSlot.__Frozen__[Key, Value]
|
|
546
539
|
|
|
547
540
|
@setdoc.basic
|
|
548
541
|
def __frozen__( # type: ignore[override]
|
|
549
542
|
self: Self,
|
|
550
|
-
) ->
|
|
543
|
+
) -> FrozenDictSlot.__Frozen__[Key, Value]:
|
|
551
544
|
return self._slot
|
|
552
545
|
|
|
553
|
-
|
|
554
|
-
class FrozenDictSlot[Key: abc.Hashable, Value](
|
|
555
|
-
DictSlot[Key, Value],
|
|
556
|
-
FrozenDictLike[Key, Value],
|
|
557
|
-
):
|
|
558
|
-
"""Provide slotted frozen dict-like."""
|
|
559
|
-
|
|
560
|
-
__slots__ = ()
|
|
561
|
-
|
|
562
546
|
@setdoc.basic
|
|
563
547
|
def __init__(
|
|
564
548
|
self: Self,
|
|
@@ -566,16 +550,16 @@ class FrozenDictSlot[Key: abc.Hashable, Value](
|
|
|
566
550
|
/,
|
|
567
551
|
**kwargs: Optional[Value],
|
|
568
552
|
) -> None:
|
|
569
|
-
self._slot = frozendict(data) # type: ignore[arg-type]
|
|
553
|
+
self._slot = frozendict(data, **kwargs) # type: ignore[arg-type]
|
|
570
554
|
|
|
571
555
|
|
|
572
556
|
class MutableDictSlot[Key: abc.Hashable, Value](
|
|
573
|
-
DictSlot[Key, Value],
|
|
574
557
|
MutableDictLike[Key, Value],
|
|
575
558
|
):
|
|
576
559
|
"""Provide slotted mutable dict-like."""
|
|
577
560
|
|
|
578
|
-
__slots__ = ()
|
|
561
|
+
__slots__ = ("_slot",)
|
|
562
|
+
_slot: FrozenDictSlot.__Frozen__[Key, Value]
|
|
579
563
|
|
|
580
564
|
@contextmanager
|
|
581
565
|
@setdoc.basic
|
|
@@ -860,31 +844,26 @@ class MutableListLike[Item](ListLike[Item], MutableSequence[Item]):
|
|
|
860
844
|
### LIST-SLOT ###
|
|
861
845
|
|
|
862
846
|
|
|
863
|
-
class
|
|
864
|
-
"""Provide slotted list-like
|
|
847
|
+
class FrozenListSlot[Item](FrozenListLike[Item]):
|
|
848
|
+
"""Provide slotted frozen list-like."""
|
|
865
849
|
|
|
866
850
|
__slots__ = ("_slot",)
|
|
867
|
-
_slot:
|
|
851
|
+
_slot: FrozenListSlot.__Frozen__[Item]
|
|
868
852
|
|
|
869
853
|
@setdoc.basic
|
|
870
|
-
def __frozen__(self: Self) ->
|
|
854
|
+
def __frozen__(self: Self) -> FrozenListSlot.__Frozen__[Item]:
|
|
871
855
|
return self._slot
|
|
872
856
|
|
|
873
|
-
|
|
874
|
-
class FrozenListSlot[Item](ListSlot[Item], FrozenListLike[Item]):
|
|
875
|
-
"""Provide slotted frozen list-like."""
|
|
876
|
-
|
|
877
|
-
__slots__ = ()
|
|
878
|
-
|
|
879
857
|
@setdoc.basic
|
|
880
858
|
def __init__(self: Self, data: abc.Iterable[Item] = (), /) -> None:
|
|
881
859
|
self._slot = tuple(data)
|
|
882
860
|
|
|
883
861
|
|
|
884
|
-
class MutableListSlot[Item](
|
|
862
|
+
class MutableListSlot[Item](MutableListLike[Item]):
|
|
885
863
|
"""Provide slotted mutable list-like."""
|
|
886
864
|
|
|
887
|
-
__slots__ = ()
|
|
865
|
+
__slots__ = ("_slot",)
|
|
866
|
+
_slot: MutableListSlot.__Frozen__[Item]
|
|
888
867
|
|
|
889
868
|
@contextmanager
|
|
890
869
|
@setdoc.basic
|
|
@@ -20,6 +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/test_MutableDictSlot.py
|
|
23
24
|
tests/test_MutableListSlot.py
|
|
24
25
|
tests/test_abstractmethods.py
|
|
25
26
|
tests/test_all.py
|
|
File without changes
|
|
@@ -40,17 +40,15 @@ class TestName(unittest.TestCase):
|
|
|
40
40
|
self.assertTrue(issubclass(datatype, abc.Hashable))
|
|
41
41
|
self.assertFalse(hasattr(datatype, "__Mutable__"))
|
|
42
42
|
self.assertFalse(hasattr(datatype, "__mutate__"))
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
)
|
|
43
|
+
ancestor = getattr(datahold, name[6:], object)
|
|
44
|
+
self.assertTrue(issubclass(datatype, ancestor))
|
|
46
45
|
# mutable
|
|
47
46
|
if prefix == "Mutable":
|
|
48
47
|
self.assertIn(datatype.__hash__, [None, object.__hash__])
|
|
49
48
|
self.assertTrue(hasattr(datatype, "__Mutable__"))
|
|
50
49
|
self.assertTrue(hasattr(datatype, "__mutate__"))
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
)
|
|
50
|
+
ancestor = getattr(datahold, name[7:], object)
|
|
51
|
+
self.assertTrue(issubclass(datatype, ancestor))
|
|
54
52
|
# no prefix
|
|
55
53
|
if prefix == "":
|
|
56
54
|
self.assertIn(datatype.__hash__, [None, object.__hash__])
|
|
@@ -62,11 +60,8 @@ class TestName(unittest.TestCase):
|
|
|
62
60
|
# slot
|
|
63
61
|
if suffix == "Slot":
|
|
64
62
|
self.assertTrue(hasattr(datatype, "__init__"))
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
datatype, Lazy.get_import("datahold." + name[:-4] + "Like")
|
|
68
|
-
)
|
|
69
|
-
)
|
|
63
|
+
ancestor = getattr(datahold, name[:-4] + "Like")
|
|
64
|
+
self.assertTrue(issubclass(datatype, ancestor))
|
|
70
65
|
# no suffix
|
|
71
66
|
if suffix == "":
|
|
72
67
|
self.assertIs(datatype.__init__, object.__init__)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import unittest
|
|
4
4
|
|
|
5
|
-
from datahold import FrozenListLike, FrozenListSlot, ListLike
|
|
5
|
+
from datahold import FrozenListLike, FrozenListSlot, ListLike
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class Animal:
|
|
@@ -26,12 +26,6 @@ def cast_FrozenListLikeAnimal(
|
|
|
26
26
|
return x
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
def cast_ListSlotAnimal(
|
|
30
|
-
x: ListSlot[Bear],
|
|
31
|
-
) -> ListSlot[Animal]:
|
|
32
|
-
return x
|
|
33
|
-
|
|
34
|
-
|
|
35
29
|
def cast_FrozenListSlotAnimal(
|
|
36
30
|
x: FrozenListSlot[Bear],
|
|
37
31
|
) -> FrozenListSlot[Animal]:
|
|
@@ -7,10 +7,6 @@ __or__ = "datahold.DictLike"
|
|
|
7
7
|
"collections.abc.Mapping" = true
|
|
8
8
|
"datahold.Mapping" = true
|
|
9
9
|
|
|
10
|
-
[datatypes.DictSlot.issubclass]
|
|
11
|
-
"collections.abc.Mapping" = true
|
|
12
|
-
"datahold.DictLike" = true
|
|
13
|
-
|
|
14
10
|
[datatypes.FrozenDictLike.issubclass]
|
|
15
11
|
"collections.abc.Hashable" = true
|
|
16
12
|
"datahold.Mapping" = true
|
|
@@ -182,13 +178,6 @@ __Mutable__ = ""
|
|
|
182
178
|
[datatypes.ListLike.varia]
|
|
183
179
|
generic = 1
|
|
184
180
|
|
|
185
|
-
[datatypes.ListSlot.nested]
|
|
186
|
-
__Frozen__ = "builtins.tuple"
|
|
187
|
-
__Mutable__ = ""
|
|
188
|
-
|
|
189
|
-
[datatypes.ListSlot.varia]
|
|
190
|
-
generic = 1
|
|
191
|
-
|
|
192
181
|
[datatypes.Mapping.issubclass]
|
|
193
182
|
"collections.abc.Mapping" = true
|
|
194
183
|
"datahold.Collection" = true
|
|
@@ -288,7 +277,6 @@ sort = ""
|
|
|
288
277
|
"datahold.Collection" = true
|
|
289
278
|
"datahold.MutableSet" = true
|
|
290
279
|
"datahold.MutableSetLike" = true
|
|
291
|
-
"datahold.SetSlot" = true
|
|
292
280
|
|
|
293
281
|
[datatypes.Sequence]
|
|
294
282
|
|
|
@@ -302,9 +290,4 @@ sort = ""
|
|
|
302
290
|
"datahold.Set" = true
|
|
303
291
|
"datahold.SetLike" = true
|
|
304
292
|
|
|
305
|
-
[datatypes.SetSlot.issubclass]
|
|
306
|
-
"collections.abc.Set" = true
|
|
307
|
-
"datahold.Collection" = true
|
|
308
|
-
"datahold.SetLike" = true
|
|
309
|
-
|
|
310
293
|
[non_datatypes]
|
|
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
|