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.
Files changed (37) hide show
  1. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/PKG-INFO +1 -1
  2. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/pyproject.toml +1 -1
  3. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/src/datahold/__init__.py +25 -46
  4. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/src/datahold.egg-info/PKG-INFO +1 -1
  5. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/src/datahold.egg-info/SOURCES.txt +1 -0
  6. datahold-4.0.0.dev26/tests/test_MutableDictSlot.py +0 -0
  7. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_name.py +6 -11
  8. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_variance.py +1 -7
  9. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/testdata.toml +0 -17
  10. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/LICENSE.txt +0 -0
  11. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/MANIFEST.in +0 -0
  12. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/README.rst +0 -0
  13. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/docs/v1.1.rst +0 -0
  14. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/docs/v1.2.rst +0 -0
  15. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/docs/v2.0.rst +0 -0
  16. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/docs/v2.1.rst +0 -0
  17. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/docs/v2.2.rst +0 -0
  18. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/docs/v2.3.rst +0 -0
  19. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/docs/v3.0.rst +0 -0
  20. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/docs/v4.0.rst +0 -0
  21. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/run_tests.py +0 -0
  22. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/setup.cfg +0 -0
  23. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/src/datahold/py.typed +0 -0
  24. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/src/datahold.egg-info/dependency_links.txt +0 -0
  25. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/src/datahold.egg-info/requires.txt +0 -0
  26. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/src/datahold.egg-info/top_level.txt +0 -0
  27. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_FrozenListSlot.py +0 -0
  28. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_MutableListSlot.py +0 -0
  29. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_abstractmethods.py +0 -0
  30. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_all.py +0 -0
  31. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_attributes.py +0 -0
  32. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_docs.py +0 -0
  33. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_generic.py +0 -0
  34. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_internal_comparison.py +0 -0
  35. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_issubclass.py +0 -0
  36. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_nested.py +0 -0
  37. {datahold-4.0.0.dev25 → datahold-4.0.0.dev26}/tests/test_sorted.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datahold
3
- Version: 4.0.0.dev25
3
+ Version: 4.0.0.dev26
4
4
  Summary: This project wraps common mutable datastructures for inheritance with modification.
5
5
  Author-email: Johannes <johannes.programming@gmail.com>
6
6
  License-Expression: MIT
@@ -31,7 +31,7 @@ license-files = [
31
31
  name = "datahold"
32
32
  readme = "README.rst"
33
33
  requires-python = ">=3.11"
34
- version = "4.0.0.dev25"
34
+ version = "4.0.0.dev26"
35
35
 
36
36
  [project.urls]
37
37
  Download = "https://pypi.org/project/datahold/#files"
@@ -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 SetSlot[Item: abc.Hashable](SetLike[Item]):
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: SetSlot.__Frozen__[Item]
343
+ _slot: FrozenSetSlot.__Frozen__[Item]
347
344
 
348
345
  @setdoc.basic
349
- def __frozen__(self: Self, /) -> SetSlot.__Frozen__[Item]:
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](SetSlot[Item], MutableSetLike[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__[FrozenKey, FrozenValue] = frozendict[
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 DictSlot[Key: abc.Hashable, Value](DictLike[Key, Value]):
542
- """Provide slotted dict-like."""
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: DictSlot.__Frozen__[Key, Value]
538
+ _slot: FrozenDictSlot.__Frozen__[Key, Value]
546
539
 
547
540
  @setdoc.basic
548
541
  def __frozen__( # type: ignore[override]
549
542
  self: Self,
550
- ) -> DictSlot.__Frozen__[Key, Value]:
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 ListSlot[Item](ListLike[Item]):
864
- """Provide slotted list-like class."""
847
+ class FrozenListSlot[Item](FrozenListLike[Item]):
848
+ """Provide slotted frozen list-like."""
865
849
 
866
850
  __slots__ = ("_slot",)
867
- _slot: ListSlot.__Frozen__[Item]
851
+ _slot: FrozenListSlot.__Frozen__[Item]
868
852
 
869
853
  @setdoc.basic
870
- def __frozen__(self: Self) -> ListSlot.__Frozen__[Item]:
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](ListSlot[Item], MutableListLike[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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datahold
3
- Version: 4.0.0.dev25
3
+ Version: 4.0.0.dev26
4
4
  Summary: This project wraps common mutable datastructures for inheritance with modification.
5
5
  Author-email: Johannes <johannes.programming@gmail.com>
6
6
  License-Expression: MIT
@@ -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
- self.assertTrue(
44
- issubclass(datatype, Lazy.get_import("datahold." + name[6:]))
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
- self.assertTrue(
52
- issubclass(datatype, Lazy.get_import("datahold." + name[7:]))
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
- self.assertTrue(
66
- issubclass(
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, ListSlot
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