datahold 4.0.0.dev23__tar.gz → 4.0.0.dev24__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 (36) hide show
  1. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/PKG-INFO +1 -1
  2. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/pyproject.toml +1 -1
  3. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/src/datahold/__init__.py +101 -100
  4. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/src/datahold.egg-info/PKG-INFO +1 -1
  5. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/LICENSE.txt +0 -0
  6. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/MANIFEST.in +0 -0
  7. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/README.rst +0 -0
  8. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/docs/v1.1.rst +0 -0
  9. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/docs/v1.2.rst +0 -0
  10. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/docs/v2.0.rst +0 -0
  11. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/docs/v2.1.rst +0 -0
  12. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/docs/v2.2.rst +0 -0
  13. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/docs/v2.3.rst +0 -0
  14. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/docs/v3.0.rst +0 -0
  15. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/docs/v4.0.rst +0 -0
  16. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/run_tests.py +0 -0
  17. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/setup.cfg +0 -0
  18. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/src/datahold/py.typed +0 -0
  19. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/src/datahold.egg-info/SOURCES.txt +0 -0
  20. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/src/datahold.egg-info/dependency_links.txt +0 -0
  21. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/src/datahold.egg-info/requires.txt +0 -0
  22. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/src/datahold.egg-info/top_level.txt +0 -0
  23. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/tests/test_FrozenListSlot.py +0 -0
  24. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/tests/test_MutableListSlot.py +0 -0
  25. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/tests/test_abstractmethods.py +0 -0
  26. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/tests/test_all.py +0 -0
  27. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/tests/test_attributes.py +0 -0
  28. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/tests/test_docs.py +0 -0
  29. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/tests/test_generic.py +0 -0
  30. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/tests/test_internal_comparison.py +0 -0
  31. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/tests/test_issubclass.py +0 -0
  32. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/tests/test_name.py +0 -0
  33. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/tests/test_nested.py +0 -0
  34. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/tests/test_sorted.py +0 -0
  35. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/tests/test_variance.py +0 -0
  36. {datahold-4.0.0.dev23 → datahold-4.0.0.dev24}/tests/testdata.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datahold
3
- Version: 4.0.0.dev23
3
+ Version: 4.0.0.dev24
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.dev23"
34
+ version = "4.0.0.dev24"
35
35
 
36
36
  [project.urls]
37
37
  Download = "https://pypi.org/project/datahold/#files"
@@ -86,6 +86,15 @@ type Slice[Index] = slice[Optional[Index], Optional[Index], Optional[Index]]
86
86
  ### COLLECTION ###
87
87
 
88
88
 
89
+ class Collection_Frozen[Item](
90
+ abc.Sized,
91
+ abc.Iterable[Item],
92
+ Protocol,
93
+ ):
94
+ @setdoc.basic
95
+ def __contains__(self: Self, other: Never, /) -> bool: ...
96
+
97
+
89
98
  class Collection[Item](
90
99
  abc.Sized,
91
100
  abc.Iterable[Item],
@@ -93,14 +102,7 @@ class Collection[Item](
93
102
  ):
94
103
  """Provide abc for custom collection."""
95
104
 
96
- @setdoc.basic
97
- class __Frozen__[Item_](
98
- abc.Sized,
99
- abc.Iterable[Item_],
100
- Protocol,
101
- ):
102
- @setdoc.basic
103
- def __contains__(self: Self, other: Never, /) -> bool: ...
105
+ type __Frozen__[Item_] = Collection_Frozen[Item_]
104
106
 
105
107
  @setdoc.basic
106
108
  def __contains__(self: Self, other: object, /) -> bool:
@@ -111,10 +113,10 @@ class Collection[Item](
111
113
 
112
114
  @abstractmethod
113
115
  @setdoc.basic
114
- def __frozen__(self: Self, /) -> __Frozen__[Item]: ...
116
+ def __frozen__(self: Self, /) -> Collection_Frozen[Item]: ...
115
117
 
116
118
  @setdoc.basic
117
- def __iter__(self: Self) -> abc.Iterator[Item]:
119
+ def __iter__(self: Self, /) -> abc.Iterator[Item]:
118
120
  return iter(self.__frozen__())
119
121
 
120
122
  @setdoc.basic
@@ -131,20 +133,20 @@ class Set[Item: abc.Hashable](Collection[Item], abc.Set[Item]):
131
133
  __slots__ = ()
132
134
 
133
135
 
136
+ class MutableSet_Mutable[Item: abc.Hashable](Protocol):
137
+ @setdoc.basic
138
+ def add(self: Self, item: Item, /) -> object: ...
139
+ @setdoc.basic
140
+ def discard(self: Self, item: abc.Hashable, /) -> object: ...
134
141
  class MutableSet[Item: abc.Hashable](Set[Item], abc.MutableSet[Item]):
135
142
  """Provide abc for custom mutable set."""
136
143
 
137
144
  __slots__ = ()
145
+ type __Mutable__[Item_] = MutableSet_Mutable[Item_]
138
146
 
139
- @setdoc.basic
140
- class __Mutable__[Item_: abc.Hashable](Protocol):
141
- @setdoc.basic
142
- def add(self: Self, item: Item_, /) -> object: ...
143
- @setdoc.basic
144
- def discard(self: Self, item: abc.Hashable, /) -> object: ...
145
147
  @abstractmethod
146
148
  @setdoc.basic
147
- def __mutate__(self: Self) -> ContextManager[__Mutable__[Item]]: ...
149
+ def __mutate__(self: Self) -> ContextManager[MutableSet_Mutable[Item]]: ...
148
150
  @setdoc.basic
149
151
  def add(self: Self, item: Item, /) -> None:
150
152
  with self.__mutate__() as mutable:
@@ -204,7 +206,7 @@ class FrozenSetLike[Item: abc.Hashable](SetLike[Item], abc.Hashable):
204
206
  __slots__ = ()
205
207
 
206
208
  @setdoc.basic
207
- def __hash__(self: Self) -> int:
209
+ def __hash__(self: Self, /) -> int:
208
210
  return hash(self.__frozen__())
209
211
 
210
212
 
@@ -265,7 +267,7 @@ class SetSlot[Item: abc.Hashable](SetLike[Item]):
265
267
  _slot: SetSlot.__Frozen__[Item]
266
268
 
267
269
  @setdoc.basic
268
- def __frozen__(self: Self) -> SetSlot.__Frozen__[Item]:
270
+ def __frozen__(self: Self, /) -> SetSlot.__Frozen__[Item]:
269
271
  return self._slot
270
272
 
271
273
 
@@ -299,6 +301,9 @@ class MutableSetSlot[Item](SetSlot[Item], MutableSetLike[Item]):
299
301
  ### MAPPING ###
300
302
 
301
303
 
304
+ class Mapping_Frozen[Key, Value](Collection_Frozen[Key], Protocol):
305
+ @setdoc.basic
306
+ def __getitem__(self: Self, key: abc.Hashable, /) -> Value: ...
302
307
  class Mapping[Key: abc.Hashable, Value](
303
308
  Collection[Key],
304
309
  abc.Mapping[Key, Value],
@@ -307,12 +312,8 @@ class Mapping[Key: abc.Hashable, Value](
307
312
 
308
313
  __slots__ = ()
309
314
 
310
- @setdoc.basic
311
- class __Frozen__[FrozenKey, FrozenValue](
312
- Collection.__Frozen__[FrozenKey], Protocol
313
- ):
314
- @setdoc.basic
315
- def __getitem__(self: Self, key: abc.Hashable, /) -> FrozenValue: ...
315
+ type __Frozen__[Key_, Value_] = Mapping_Frozen[Key_, Value_]
316
+
316
317
  @abstractmethod
317
318
  @setdoc.basic
318
319
  def __frozen__(self: Self, /) -> __Frozen__[Key, Value]: ...
@@ -321,6 +322,15 @@ class Mapping[Key: abc.Hashable, Value](
321
322
  return self.__frozen__()[key]
322
323
 
323
324
 
325
+ class MutableMapping_Mutable[Key_, Value_](
326
+ Protocol,
327
+ ):
328
+ @setdoc.basic
329
+ def __delitem__(self: Self, key: Key_ | str, /) -> object: ...
330
+ @setdoc.basic
331
+ def __setitem__(
332
+ self: Self, key: Key_ | str, value: Optional[Value_], /
333
+ ) -> object: ...
324
334
  class MutableMapping[Key: abc.Hashable, Value](
325
335
  Mapping[Key, Value],
326
336
  abc.MutableMapping[Key | str, Optional[Value]],
@@ -329,16 +339,7 @@ class MutableMapping[Key: abc.Hashable, Value](
329
339
 
330
340
  __slots__ = ()
331
341
 
332
- @setdoc.basic
333
- class __Mutable__[Key_, Value_](
334
- Protocol,
335
- ):
336
- @setdoc.basic
337
- def __delitem__(self: Self, key: Key_ | str, /) -> object: ...
338
- @setdoc.basic
339
- def __setitem__(
340
- self: Self, key: Key_ | str, value: Optional[Value_], /
341
- ) -> object: ...
342
+ type __Mutable__[Key_, Value_] = MutableMapping_Mutable[Key_, Value_]
342
343
 
343
344
  @setdoc.basic
344
345
  def __delitem__(self: Self, key: Key | str, /) -> None:
@@ -352,7 +353,8 @@ class MutableMapping[Key: abc.Hashable, Value](
352
353
  def __setitem__(
353
354
  self: Self, key: Key | str, value: Optional[Value], /
354
355
  ) -> None:
355
- self[key] = value
356
+ with self.__mutate__() as mutable:
357
+ mutable[key] = value
356
358
 
357
359
 
358
360
  ### DICT-LIKE ###
@@ -399,7 +401,7 @@ class DictLike[Key: abc.Hashable, Value](
399
401
  def fromkeys(
400
402
  cls: type[Self],
401
403
  iterable: abc.Iterable[Key | str],
402
- value: Optional[Value],
404
+ value: Optional[Value] = None,
403
405
  /,
404
406
  ) -> Self:
405
407
  return cls(dict.fromkeys(iterable, value))
@@ -523,30 +525,28 @@ class MutableDictSlot[Key: abc.Hashable, Value](
523
525
  ### SEQUENCE ###
524
526
 
525
527
 
528
+ class Sequence_Frozen[Item](
529
+ Collection_Frozen[Item],
530
+ Protocol,
531
+ ):
532
+ @overload
533
+ @setdoc.basic
534
+ def __getitem__(self: Self, key: int, /) -> Item: ...
535
+ @overload
536
+ @setdoc.basic
537
+ def __getitem__(self: Self, key: Slice[int], /) -> abc.Sequence[Item]: ...
538
+ @setdoc.basic
539
+ def __getitem__(
540
+ self: Self,
541
+ key: int | Slice[int],
542
+ /,
543
+ ) -> Item | abc.Sequence[Item]: ...
526
544
  class Sequence[Item](Collection[Item], abc.Sequence[Item]):
527
545
  """Provide abc for customized sequence."""
528
546
 
529
547
  __slots__ = ()
548
+ type __Frozen__[Item_] = Sequence_Frozen[Item_]
530
549
 
531
- @setdoc.basic
532
- class __Frozen__[Item_](
533
- Collection.__Frozen__[Item_],
534
- Protocol,
535
- ):
536
- @overload
537
- @setdoc.basic
538
- def __getitem__(self: Self, key: int, /) -> Item_: ...
539
- @overload
540
- @setdoc.basic
541
- def __getitem__(
542
- self: Self, key: Slice[int], /
543
- ) -> abc.Sequence[Item_]: ...
544
- @setdoc.basic
545
- def __getitem__(
546
- self: Self,
547
- key: int | Slice[int],
548
- /,
549
- ) -> Item_ | abc.Sequence[Item_]: ...
550
550
  @abstractmethod
551
551
  @setdoc.basic
552
552
  def __frozen__(self: Self, /) -> __Frozen__[Item]: ...
@@ -563,54 +563,55 @@ class Sequence[Item](Collection[Item], abc.Sequence[Item]):
563
563
  return self.__frozen__()[key]
564
564
 
565
565
 
566
+ class MutableSequence_Mutable[Item](Protocol):
567
+ @overload
568
+ @setdoc.basic
569
+ def __delitem__(self: Self, key: SupportsIndex, /) -> None: ...
570
+ @overload
571
+ @setdoc.basic
572
+ def __delitem__(self: Self, key: Slice[SupportsIndex], /) -> None: ...
573
+ @setdoc.basic
574
+ def __delitem__(
575
+ self: Self, key: SupportsIndex | Slice[SupportsIndex], /
576
+ ) -> None: ...
577
+ @overload
578
+ @setdoc.basic
579
+ def __getitem__(self: Self, key: int, /) -> Item: ...
580
+ @overload
581
+ @setdoc.basic
582
+ def __getitem__(
583
+ self: Self, key: Slice[int], /
584
+ ) -> abc.MutableSequence[Item]: ...
585
+ @setdoc.basic
586
+ def __getitem__(
587
+ self: Self,
588
+ key: int | Slice[int],
589
+ /,
590
+ ) -> Item | abc.MutableSequence[Item]: ...
591
+ @overload
592
+ @setdoc.basic
593
+ def __setitem__(self: Self, key: int, value: Item, /) -> None: ...
594
+ @overload
595
+ @setdoc.basic
596
+ def __setitem__(
597
+ self: Self, key: Slice[int], value: abc.Iterable[Item], /
598
+ ) -> None: ...
599
+ @setdoc.basic
600
+ def __setitem__(
601
+ self: Self,
602
+ key: int | Slice[int],
603
+ value: Item | abc.Iterable[Item],
604
+ /,
605
+ ) -> None: ...
606
+ @setdoc.basic
607
+ def insert(self: Self, index: int, item: Item, /) -> None: ...
608
+
609
+
566
610
  class MutableSequence[Item](Sequence[Item], abc.MutableSequence[Item]):
567
611
  """Provide abc for custom mutable sequence."""
568
612
 
569
613
  __slots__ = ()
570
-
571
- @setdoc.basic
572
- class __Mutable__[Item_](Protocol):
573
- @overload
574
- @setdoc.basic
575
- def __delitem__(self: Self, key: SupportsIndex, /) -> None: ...
576
- @overload
577
- @setdoc.basic
578
- def __delitem__(self: Self, key: Slice[SupportsIndex], /) -> None: ...
579
- @setdoc.basic
580
- def __delitem__(
581
- self: Self, key: SupportsIndex | Slice[SupportsIndex], /
582
- ) -> None: ...
583
- @overload
584
- @setdoc.basic
585
- def __getitem__(self: Self, key: int, /) -> Item_: ...
586
- @overload
587
- @setdoc.basic
588
- def __getitem__(
589
- self: Self, key: Slice[int], /
590
- ) -> abc.MutableSequence[Item_]: ...
591
- @setdoc.basic
592
- def __getitem__(
593
- self: Self,
594
- key: int | Slice[int],
595
- /,
596
- ) -> Item_ | abc.MutableSequence[Item_]: ...
597
- @overload
598
- @setdoc.basic
599
- def __setitem__(self: Self, key: int, value: Item_, /) -> None: ...
600
- @overload
601
- @setdoc.basic
602
- def __setitem__(
603
- self: Self, key: Slice[int], value: abc.Iterable[Item_], /
604
- ) -> None: ...
605
- @setdoc.basic
606
- def __setitem__(
607
- self: Self,
608
- key: int | Slice[int],
609
- value: Item_ | abc.Iterable[Item_],
610
- /,
611
- ) -> None: ...
612
- @setdoc.basic
613
- def insert(self: Self, index: int, item: Item_, /) -> None: ...
614
+ type __Mutable__[Item_] = MutableSequence_Mutable[Item_]
614
615
 
615
616
  @overload
616
617
  @setdoc.basic
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datahold
3
- Version: 4.0.0.dev23
3
+ Version: 4.0.0.dev24
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
File without changes