datahold 4.0.0.dev23__tar.gz → 4.0.0.dev25__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.dev25}/PKG-INFO +1 -1
  2. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/pyproject.toml +1 -1
  3. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/src/datahold/__init__.py +109 -101
  4. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/src/datahold.egg-info/PKG-INFO +1 -1
  5. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/LICENSE.txt +0 -0
  6. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/MANIFEST.in +0 -0
  7. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/README.rst +0 -0
  8. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/docs/v1.1.rst +0 -0
  9. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/docs/v1.2.rst +0 -0
  10. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/docs/v2.0.rst +0 -0
  11. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/docs/v2.1.rst +0 -0
  12. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/docs/v2.2.rst +0 -0
  13. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/docs/v2.3.rst +0 -0
  14. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/docs/v3.0.rst +0 -0
  15. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/docs/v4.0.rst +0 -0
  16. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/run_tests.py +0 -0
  17. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/setup.cfg +0 -0
  18. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/src/datahold/py.typed +0 -0
  19. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/src/datahold.egg-info/SOURCES.txt +0 -0
  20. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/src/datahold.egg-info/dependency_links.txt +0 -0
  21. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/src/datahold.egg-info/requires.txt +0 -0
  22. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/src/datahold.egg-info/top_level.txt +0 -0
  23. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/tests/test_FrozenListSlot.py +0 -0
  24. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/tests/test_MutableListSlot.py +0 -0
  25. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/tests/test_abstractmethods.py +0 -0
  26. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/tests/test_all.py +0 -0
  27. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/tests/test_attributes.py +0 -0
  28. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/tests/test_docs.py +0 -0
  29. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/tests/test_generic.py +0 -0
  30. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/tests/test_internal_comparison.py +0 -0
  31. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/tests/test_issubclass.py +0 -0
  32. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/tests/test_name.py +0 -0
  33. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/tests/test_nested.py +0 -0
  34. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/tests/test_sorted.py +0 -0
  35. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/tests/test_variance.py +0 -0
  36. {datahold-4.0.0.dev23 → datahold-4.0.0.dev25}/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.dev25
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.dev25"
35
35
 
36
36
  [project.urls]
37
37
  Download = "https://pypi.org/project/datahold/#files"
@@ -47,7 +47,7 @@ from typing import (
47
47
  import setdoc
48
48
  from frozendict import frozendict
49
49
 
50
- ### UTILS ###
50
+ ### PROTOCOLS ###
51
51
 
52
52
 
53
53
  class ContextManager[Enter](Protocol):
@@ -75,6 +75,99 @@ class SupportsKeysAndGetitem[Key, Value](Protocol):
75
75
  def keys(self: Self, /) -> abc.Iterable[Key]: ...
76
76
 
77
77
 
78
+ class Collection_Frozen[Item](
79
+ abc.Sized,
80
+ abc.Iterable[Item],
81
+ Protocol,
82
+ ):
83
+ @setdoc.basic
84
+ def __contains__(self: Self, other: Never, /) -> bool: ...
85
+
86
+
87
+ class MutableSet_Mutable[Item: abc.Hashable](Protocol):
88
+ @setdoc.basic
89
+ def add(self: Self, item: Item, /) -> object: ...
90
+ @setdoc.basic
91
+ def discard(self: Self, item: abc.Hashable, /) -> object: ...
92
+
93
+
94
+ class Mapping_Frozen[Key, Value](Collection_Frozen[Key], Protocol):
95
+ @setdoc.basic
96
+ def __getitem__(self: Self, key: abc.Hashable, /) -> Value: ...
97
+ class MutableMapping_Mutable[Key_, Value_](
98
+ Protocol,
99
+ ):
100
+ @setdoc.basic
101
+ def __delitem__(self: Self, key: Key_ | str, /) -> object: ...
102
+ @setdoc.basic
103
+ def __setitem__(
104
+ self: Self, key: Key_ | str, value: Optional[Value_], /
105
+ ) -> object: ...
106
+ class Sequence_Frozen[Item](
107
+ Collection_Frozen[Item],
108
+ Protocol,
109
+ ):
110
+ @overload
111
+ @setdoc.basic
112
+ def __getitem__(self: Self, key: int, /) -> Item: ...
113
+ @overload
114
+ @setdoc.basic
115
+ def __getitem__(self: Self, key: Slice[int], /) -> abc.Sequence[Item]: ...
116
+ @setdoc.basic
117
+ def __getitem__(
118
+ self: Self,
119
+ key: int | Slice[int],
120
+ /,
121
+ ) -> Item | abc.Sequence[Item]: ...
122
+
123
+
124
+ class MutableSequence_Mutable[Item](Protocol):
125
+ @overload
126
+ @setdoc.basic
127
+ def __delitem__(self: Self, key: SupportsIndex, /) -> None: ...
128
+ @overload
129
+ @setdoc.basic
130
+ def __delitem__(self: Self, key: Slice[SupportsIndex], /) -> None: ...
131
+ @setdoc.basic
132
+ def __delitem__(
133
+ self: Self, key: SupportsIndex | Slice[SupportsIndex], /
134
+ ) -> None: ...
135
+ @overload
136
+ @setdoc.basic
137
+ def __getitem__(self: Self, key: int, /) -> Item: ...
138
+ @overload
139
+ @setdoc.basic
140
+ def __getitem__(
141
+ self: Self, key: Slice[int], /
142
+ ) -> abc.MutableSequence[Item]: ...
143
+ @setdoc.basic
144
+ def __getitem__(
145
+ self: Self,
146
+ key: int | Slice[int],
147
+ /,
148
+ ) -> Item | abc.MutableSequence[Item]: ...
149
+ @overload
150
+ @setdoc.basic
151
+ def __setitem__(self: Self, key: int, value: Item, /) -> None: ...
152
+ @overload
153
+ @setdoc.basic
154
+ def __setitem__(
155
+ self: Self, key: Slice[int], value: abc.Iterable[Item], /
156
+ ) -> None: ...
157
+ @setdoc.basic
158
+ def __setitem__(
159
+ self: Self,
160
+ key: int | Slice[int],
161
+ value: Item | abc.Iterable[Item],
162
+ /,
163
+ ) -> None: ...
164
+ @setdoc.basic
165
+ def insert(self: Self, index: int, item: Item, /) -> None: ...
166
+
167
+
168
+ ### TYPE ALIASES ###
169
+
170
+
78
171
  type DictInit[Key, Value] = (
79
172
  SupportsKeysAndGetitem[Key | str, Optional[Value]]
80
173
  | abc.Iterable[tuple[Key | str, Optional[Value]]]
@@ -93,14 +186,7 @@ class Collection[Item](
93
186
  ):
94
187
  """Provide abc for custom collection."""
95
188
 
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: ...
189
+ type __Frozen__[Item_] = Collection_Frozen[Item_]
104
190
 
105
191
  @setdoc.basic
106
192
  def __contains__(self: Self, other: object, /) -> bool:
@@ -111,10 +197,10 @@ class Collection[Item](
111
197
 
112
198
  @abstractmethod
113
199
  @setdoc.basic
114
- def __frozen__(self: Self, /) -> __Frozen__[Item]: ...
200
+ def __frozen__(self: Self, /) -> Collection_Frozen[Item]: ...
115
201
 
116
202
  @setdoc.basic
117
- def __iter__(self: Self) -> abc.Iterator[Item]:
203
+ def __iter__(self: Self, /) -> abc.Iterator[Item]:
118
204
  return iter(self.__frozen__())
119
205
 
120
206
  @setdoc.basic
@@ -135,16 +221,11 @@ class MutableSet[Item: abc.Hashable](Set[Item], abc.MutableSet[Item]):
135
221
  """Provide abc for custom mutable set."""
136
222
 
137
223
  __slots__ = ()
224
+ type __Mutable__[Item_] = MutableSet_Mutable[Item_]
138
225
 
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
226
  @abstractmethod
146
227
  @setdoc.basic
147
- def __mutate__(self: Self) -> ContextManager[__Mutable__[Item]]: ...
228
+ def __mutate__(self: Self) -> ContextManager[MutableSet_Mutable[Item]]: ...
148
229
  @setdoc.basic
149
230
  def add(self: Self, item: Item, /) -> None:
150
231
  with self.__mutate__() as mutable:
@@ -204,7 +285,7 @@ class FrozenSetLike[Item: abc.Hashable](SetLike[Item], abc.Hashable):
204
285
  __slots__ = ()
205
286
 
206
287
  @setdoc.basic
207
- def __hash__(self: Self) -> int:
288
+ def __hash__(self: Self, /) -> int:
208
289
  return hash(self.__frozen__())
209
290
 
210
291
 
@@ -265,7 +346,7 @@ class SetSlot[Item: abc.Hashable](SetLike[Item]):
265
346
  _slot: SetSlot.__Frozen__[Item]
266
347
 
267
348
  @setdoc.basic
268
- def __frozen__(self: Self) -> SetSlot.__Frozen__[Item]:
349
+ def __frozen__(self: Self, /) -> SetSlot.__Frozen__[Item]:
269
350
  return self._slot
270
351
 
271
352
 
@@ -307,12 +388,8 @@ class Mapping[Key: abc.Hashable, Value](
307
388
 
308
389
  __slots__ = ()
309
390
 
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: ...
391
+ type __Frozen__[Key_, Value_] = Mapping_Frozen[Key_, Value_]
392
+
316
393
  @abstractmethod
317
394
  @setdoc.basic
318
395
  def __frozen__(self: Self, /) -> __Frozen__[Key, Value]: ...
@@ -329,16 +406,7 @@ class MutableMapping[Key: abc.Hashable, Value](
329
406
 
330
407
  __slots__ = ()
331
408
 
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: ...
409
+ type __Mutable__[Key_, Value_] = MutableMapping_Mutable[Key_, Value_]
342
410
 
343
411
  @setdoc.basic
344
412
  def __delitem__(self: Self, key: Key | str, /) -> None:
@@ -352,7 +420,8 @@ class MutableMapping[Key: abc.Hashable, Value](
352
420
  def __setitem__(
353
421
  self: Self, key: Key | str, value: Optional[Value], /
354
422
  ) -> None:
355
- self[key] = value
423
+ with self.__mutate__() as mutable:
424
+ mutable[key] = value
356
425
 
357
426
 
358
427
  ### DICT-LIKE ###
@@ -399,7 +468,7 @@ class DictLike[Key: abc.Hashable, Value](
399
468
  def fromkeys(
400
469
  cls: type[Self],
401
470
  iterable: abc.Iterable[Key | str],
402
- value: Optional[Value],
471
+ value: Optional[Value] = None,
403
472
  /,
404
473
  ) -> Self:
405
474
  return cls(dict.fromkeys(iterable, value))
@@ -527,26 +596,8 @@ class Sequence[Item](Collection[Item], abc.Sequence[Item]):
527
596
  """Provide abc for customized sequence."""
528
597
 
529
598
  __slots__ = ()
599
+ type __Frozen__[Item_] = Sequence_Frozen[Item_]
530
600
 
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
601
  @abstractmethod
551
602
  @setdoc.basic
552
603
  def __frozen__(self: Self, /) -> __Frozen__[Item]: ...
@@ -567,50 +618,7 @@ class MutableSequence[Item](Sequence[Item], abc.MutableSequence[Item]):
567
618
  """Provide abc for custom mutable sequence."""
568
619
 
569
620
  __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: ...
621
+ type __Mutable__[Item_] = MutableSequence_Mutable[Item_]
614
622
 
615
623
  @overload
616
624
  @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.dev25
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