datahold 4.0.0.dev5__tar.gz → 4.0.0.dev6__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 (34) hide show
  1. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/PKG-INFO +1 -1
  2. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/pyproject.toml +1 -1
  3. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/src/datahold/__init__.py +10 -42
  4. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/src/datahold.egg-info/PKG-INFO +1 -1
  5. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/tests/test_testdata.py +35 -0
  6. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/tests/testdata.toml +50 -0
  7. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/LICENSE.txt +0 -0
  8. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/MANIFEST.in +0 -0
  9. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/README.rst +0 -0
  10. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/docs/v1.1.rst +0 -0
  11. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/docs/v1.2.rst +0 -0
  12. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/docs/v2.0.rst +0 -0
  13. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/docs/v2.1.rst +0 -0
  14. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/docs/v2.2.rst +0 -0
  15. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/docs/v2.3.rst +0 -0
  16. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/docs/v3.0.rst +0 -0
  17. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/docs/v4.0.rst +0 -0
  18. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/run_tests.py +0 -0
  19. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/setup.cfg +0 -0
  20. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/src/datahold/py.typed +0 -0
  21. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/src/datahold.egg-info/SOURCES.txt +0 -0
  22. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/src/datahold.egg-info/dependency_links.txt +0 -0
  23. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/src/datahold.egg-info/requires.txt +0 -0
  24. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/src/datahold.egg-info/top_level.txt +0 -0
  25. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/tests/test_FrozenHoldDict.py +0 -0
  26. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/tests/test_FrozenHoldList.py +0 -0
  27. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/tests/test_FrozenHoldSet.py +0 -0
  28. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/tests/test_HoldDict.py +0 -0
  29. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/tests/test_HoldList.py +0 -0
  30. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/tests/test_HoldSet.py +0 -0
  31. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/tests/test_datahold_TestCopy.py +0 -0
  32. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/tests/test_datahold_TestDataAttribute.py +0 -0
  33. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/tests/test_datahold_TestFrozenMutability.py +0 -0
  34. {datahold-4.0.0.dev5 → datahold-4.0.0.dev6}/tests/test_datahold_TestMutableBehavior.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datahold
3
- Version: 4.0.0.dev5
3
+ Version: 4.0.0.dev6
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
@@ -34,7 +34,7 @@ license-files = [
34
34
  name = "datahold"
35
35
  readme = "README.rst"
36
36
  requires-python = ">=3.12"
37
- version = "4.0.0.dev5"
37
+ version = "4.0.0.dev6"
38
38
 
39
39
  [project.urls]
40
40
  Download = "https://pypi.org/project/datahold/#files"
@@ -134,7 +134,7 @@ class BaseDataSet[Item: abc.Hashable](BaseDataAbstractSet[Item]):
134
134
 
135
135
  @abstractmethod
136
136
  @setdoc.basic
137
- def __fget__(self: Self) -> set[Item]: ...
137
+ def __fget__(self: Self) -> Data[Item]: ...
138
138
 
139
139
  @abstractmethod
140
140
  @setdoc.basic
@@ -214,18 +214,6 @@ class DataSet[Item: abc.Hashable](
214
214
 
215
215
  __slots__ = ()
216
216
 
217
- @abstractmethod
218
- @setdoc.basic
219
- def __fget__(self: Self) -> DataSet.Data[Item]: ...
220
-
221
- @abstractmethod
222
- @setdoc.basic
223
- def __fset__(
224
- self: Self,
225
- value: DataSet.Data[Item],
226
- /,
227
- ) -> None: ...
228
-
229
217
  @setdoc.basic
230
218
  def add(self: Self, item: Item, /) -> None:
231
219
  self.__fset__(self.__fget__() | {item})
@@ -337,6 +325,10 @@ class BaseDataDict[Key: abc.Hashable, Value](
337
325
  | abc.Iterable[tuple[DataKey | str, Optional[DataValue]]]
338
326
  )
339
327
 
328
+ @abstractmethod
329
+ @setdoc.basic
330
+ def __fget__(self: Self) -> Data[Key, Value]: ...
331
+
340
332
  @abstractmethod
341
333
  @setdoc.basic
342
334
  def __fset__(self: Self, data: Data[Key, Value], /) -> None: ...
@@ -369,10 +361,6 @@ class BaseDataDict[Key: abc.Hashable, Value](
369
361
 
370
362
  # __ror__ is unnecessary because of how __or__ is defined
371
363
 
372
- @abstractmethod
373
- @setdoc.basic
374
- def __fget__(self: Self) -> Data[Key, Value]: ...
375
-
376
364
  @classmethod
377
365
  @setdoc.basic
378
366
  def fromkeys(
@@ -429,14 +417,6 @@ class DataDict[Key: abc.Hashable, Value](
429
417
  del data[key]
430
418
  self.__fset__(data)
431
419
 
432
- @abstractmethod
433
- @setdoc.basic
434
- def __fget__(self: Self) -> DataDict.Data[Key, Value]: ...
435
-
436
- @abstractmethod
437
- @setdoc.basic
438
- def __fset__(self: Self, data: DataDict.Data[Key, Value], /) -> None: ...
439
-
440
420
  @setdoc.basic
441
421
  def __ior__(
442
422
  self: Self,
@@ -568,7 +548,11 @@ class BaseDataList[Item](BaseDataSequence[Item]):
568
548
 
569
549
  @abstractmethod
570
550
  @setdoc.basic
571
- def __fset__(self: Self, value: list[Item], /) -> None: ...
551
+ def __fget__(self: Self) -> Data[Item]: ...
552
+
553
+ @abstractmethod
554
+ @setdoc.basic
555
+ def __fset__(self: Self, data: Data[Item], /) -> None: ...
572
556
 
573
557
  @setdoc.basic
574
558
  def __ge__(self: Self, other: object, /) -> NotImplementedType | bool:
@@ -629,10 +613,6 @@ class BaseDataList[Item](BaseDataSequence[Item]):
629
613
 
630
614
  __rmul__ = __mul__
631
615
 
632
- @abstractmethod
633
- @setdoc.basic
634
- def __fget__(self: Self) -> Data[Item]: ...
635
-
636
616
 
637
617
  class FrozenDataList[Item](
638
618
  BaseDataList[Item],
@@ -681,18 +661,6 @@ class DataList[Item](
681
661
  del data[other]
682
662
  self.__fset__(data)
683
663
 
684
- @abstractmethod
685
- @setdoc.basic
686
- def __fget__(self: Self) -> DataList.Data[Item]: ...
687
-
688
- @abstractmethod
689
- @setdoc.basic
690
- def __fset__(
691
- self: Self,
692
- value: DataList.Data[Item],
693
- /,
694
- ) -> None: ...
695
-
696
664
  @setdoc.basic
697
665
  def __imul__(self: Self, other: SupportsIndex, /) -> Self:
698
666
  self.__fset__(self.__fget__() * other)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datahold
3
- Version: 4.0.0.dev5
3
+ Version: 4.0.0.dev6
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
@@ -3,6 +3,7 @@ __all__: list[str] = [
3
3
  "TestCollection",
4
4
  "TestConstructor",
5
5
  "TestData",
6
+ "TestDirData",
6
7
  "TestGeneric",
7
8
  "TestHasCopy",
8
9
  "TestParents",
@@ -169,6 +170,40 @@ class TestData(unittest.TestCase):
169
170
  obj.foo = 42
170
171
 
171
172
 
173
+ class TestDirData(unittest.TestCase):
174
+ def go_dirData(self: Self, x: Any, /, **y: Any) -> None:
175
+ cls = getattr(datahold, x)
176
+ dirData = y.get("dirData")
177
+ if dirData is None:
178
+ return
179
+ for z in dirData:
180
+ self.assertTrue(hasattr(cls.Data, z))
181
+
182
+ def go_init(self: Self, x: str, /) -> None:
183
+ cls: Any
184
+ cls = getattr(datahold, x)
185
+ self.assertEqual(
186
+ "__fget__" in cls.__dict__,
187
+ "Data" in cls.__dict__ or not ins.isabstract(cls),
188
+ )
189
+ if "__fset__" in cls.__dict__:
190
+ self.assertIn("__fget__", cls.__dict__)
191
+ self.assertEqual(
192
+ "Init" in cls.__dict__,
193
+ "__init__" in cls.__dict__,
194
+ )
195
+ self.assertNotEqual(
196
+ hasattr(cls, "Init"),
197
+ cls.__init__ is object.__init__,
198
+ )
199
+
200
+ def test_types(self: Self) -> None:
201
+ for x, y in Lazy.lazy.types.items():
202
+ with self.subTest(type=x):
203
+ self.go_dirData(x, **y)
204
+ self.go_init(x)
205
+
206
+
172
207
  class TestGeneric(unittest.TestCase):
173
208
  def go_assert_is_generic(
174
209
  self: Self,
@@ -4,40 +4,73 @@ METHODS = [
4
4
  "__str__",
5
5
  ]
6
6
 
7
+ [types.BaseDataAbstractSet]
8
+ dirData = [
9
+ "__contains__",
10
+ "__iter__",
11
+ "__len__",
12
+ ]
13
+
7
14
  [types.BaseDataAbstractSet.parents]
8
15
  BaseDataCollection = true
9
16
  Hashable = false
10
17
 
18
+ [types.BaseDataCollection]
19
+ dirData = [
20
+ "__contains__",
21
+ "__iter__",
22
+ "__len__",
23
+ ]
24
+
11
25
  [types.BaseDataCollection.parents]
12
26
  Collection = true
13
27
  Hashable = true
14
28
 
29
+ [types.BaseDataDict]
30
+ dirData = []
31
+
15
32
  [types.BaseDataDict.parents]
16
33
  Hashable = false
17
34
  Mapping = true
18
35
 
36
+ [types.BaseDataList]
37
+ dirData = []
38
+
19
39
  [types.BaseDataList.parents]
20
40
  Hashable = false
21
41
  Sequence = true
22
42
 
43
+ [types.BaseDataMapping]
44
+ dirData = []
45
+
23
46
  [types.BaseDataMapping.parents]
24
47
  BaseDataCollection = true
25
48
  Hashable = false
26
49
 
50
+ [types.BaseDataSequence]
51
+ dirData = []
52
+
27
53
  [types.BaseDataSequence.parents]
28
54
  BaseDataCollection = true
29
55
  Hashable = true
30
56
 
57
+ [types.BaseDataSet]
58
+ dirData = []
59
+
31
60
  [types.BaseDataSet.parents]
32
61
  Hashable = false
33
62
  Set = true
34
63
 
64
+ [types.BaseHoldCollection]
65
+ dirData = []
66
+
35
67
  [types.BaseHoldCollection.parents]
36
68
  BaseDataCollection = true
37
69
  Hashable = true
38
70
 
39
71
  [types.DataDict]
40
72
  Data = "frozendict"
73
+ dirData = []
41
74
  isabstract = true
42
75
  n_type_params = 2
43
76
 
@@ -50,6 +83,7 @@ MutableMapping = true
50
83
 
51
84
  [types.DataList]
52
85
  Data = "tuple"
86
+ dirData = []
53
87
  isabstract = true
54
88
  n_type_params = 1
55
89
 
@@ -63,6 +97,7 @@ Sequence = true
63
97
 
64
98
  [types.DataSet]
65
99
  Data = "frozenset"
100
+ dirData = []
66
101
  isabstract = true
67
102
  n_type_params = 1
68
103
 
@@ -76,22 +111,28 @@ Set = true
76
111
 
77
112
  [types.FrozenDataDict]
78
113
  Data = "frozendict"
114
+ dirData = []
79
115
  isabstract = true
80
116
 
81
117
  [types.FrozenDataDict.parents]
82
118
 
83
119
  [types.FrozenDataList]
84
120
  Data = "tuple"
121
+ dirData = []
85
122
  isabstract = true
86
123
 
87
124
  [types.FrozenDataList.parents]
88
125
 
89
126
  [types.FrozenDataSet]
90
127
  Data = "frozenset"
128
+ dirData = []
91
129
  isabstract = true
92
130
 
93
131
  [types.FrozenDataSet.parents]
94
132
 
133
+ [types.FrozenHoldDict]
134
+ dirData = []
135
+
95
136
  [types.FrozenHoldDict.constructor.concrete]
96
137
  args = [
97
138
  { a = 1 },
@@ -104,6 +145,9 @@ a = 1
104
145
  Mapping = true
105
146
  MutableMapping = false
106
147
 
148
+ [types.FrozenHoldList]
149
+ dirData = []
150
+
107
151
  [types.FrozenHoldList.constructor.concrete]
108
152
  args = [
109
153
  [
@@ -118,6 +162,9 @@ FrozenDataList = true
118
162
  MutableSequence = false
119
163
  Sequence = true
120
164
 
165
+ [types.FrozenHoldSet]
166
+ dirData = []
167
+
121
168
  [types.FrozenHoldSet.constructor.concrete]
122
169
  args = [
123
170
  [
@@ -133,6 +180,7 @@ Set = true
133
180
 
134
181
  [types.HoldDict]
135
182
  Data = "frozendict"
183
+ dirData = []
136
184
  n_type_params = 2
137
185
 
138
186
  [types.HoldDict.constructor.concrete.kwargs]
@@ -149,6 +197,7 @@ MutableMapping = true
149
197
 
150
198
  [types.HoldList]
151
199
  Data = "tuple"
200
+ dirData = []
152
201
  n_type_params = 1
153
202
 
154
203
  [types.HoldList.constructor.empty]
@@ -178,6 +227,7 @@ Sequence = true
178
227
 
179
228
  [types.HoldSet]
180
229
  Date = "frozenset"
230
+ dirData = []
181
231
  n_type_params = 1
182
232
 
183
233
  [types.HoldSet.constructor.empty]
File without changes
File without changes
File without changes
File without changes