datahold 4.0.0.dev24__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.dev24 → datahold-4.0.0.dev26}/PKG-INFO +1 -1
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/pyproject.toml +1 -1
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/src/datahold/__init__.py +119 -133
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/src/datahold.egg-info/PKG-INFO +1 -1
- {datahold-4.0.0.dev24 → 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.dev24 → datahold-4.0.0.dev26}/tests/test_name.py +6 -11
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/tests/test_variance.py +1 -7
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/tests/testdata.toml +0 -17
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/LICENSE.txt +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/MANIFEST.in +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/README.rst +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/docs/v1.1.rst +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/docs/v1.2.rst +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/docs/v2.0.rst +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/docs/v2.1.rst +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/docs/v2.2.rst +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/docs/v2.3.rst +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/docs/v3.0.rst +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/docs/v4.0.rst +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/run_tests.py +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/setup.cfg +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/src/datahold/py.typed +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/src/datahold.egg-info/dependency_links.txt +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/src/datahold.egg-info/requires.txt +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/src/datahold.egg-info/top_level.txt +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/tests/test_FrozenListSlot.py +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/tests/test_MutableListSlot.py +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/tests/test_abstractmethods.py +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/tests/test_all.py +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/tests/test_attributes.py +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/tests/test_docs.py +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/tests/test_generic.py +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/tests/test_internal_comparison.py +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/tests/test_issubclass.py +0 -0
- {datahold-4.0.0.dev24 → datahold-4.0.0.dev26}/tests/test_nested.py +0 -0
- {datahold-4.0.0.dev24 → 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
|
|
@@ -47,7 +44,7 @@ from typing import (
|
|
|
47
44
|
import setdoc
|
|
48
45
|
from frozendict import frozendict
|
|
49
46
|
|
|
50
|
-
###
|
|
47
|
+
### PROTOCOLS ###
|
|
51
48
|
|
|
52
49
|
|
|
53
50
|
class ContextManager[Enter](Protocol):
|
|
@@ -75,6 +72,99 @@ class SupportsKeysAndGetitem[Key, Value](Protocol):
|
|
|
75
72
|
def keys(self: Self, /) -> abc.Iterable[Key]: ...
|
|
76
73
|
|
|
77
74
|
|
|
75
|
+
class Collection_Frozen[Item](
|
|
76
|
+
abc.Sized,
|
|
77
|
+
abc.Iterable[Item],
|
|
78
|
+
Protocol,
|
|
79
|
+
):
|
|
80
|
+
@setdoc.basic
|
|
81
|
+
def __contains__(self: Self, other: Never, /) -> bool: ...
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class MutableSet_Mutable[Item: abc.Hashable](Protocol):
|
|
85
|
+
@setdoc.basic
|
|
86
|
+
def add(self: Self, item: Item, /) -> object: ...
|
|
87
|
+
@setdoc.basic
|
|
88
|
+
def discard(self: Self, item: abc.Hashable, /) -> object: ...
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
class Mapping_Frozen[Key, Value](Collection_Frozen[Key], Protocol):
|
|
92
|
+
@setdoc.basic
|
|
93
|
+
def __getitem__(self: Self, key: abc.Hashable, /) -> Value: ...
|
|
94
|
+
class MutableMapping_Mutable[Key_, Value_](
|
|
95
|
+
Protocol,
|
|
96
|
+
):
|
|
97
|
+
@setdoc.basic
|
|
98
|
+
def __delitem__(self: Self, key: Key_ | str, /) -> object: ...
|
|
99
|
+
@setdoc.basic
|
|
100
|
+
def __setitem__(
|
|
101
|
+
self: Self, key: Key_ | str, value: Optional[Value_], /
|
|
102
|
+
) -> object: ...
|
|
103
|
+
class Sequence_Frozen[Item](
|
|
104
|
+
Collection_Frozen[Item],
|
|
105
|
+
Protocol,
|
|
106
|
+
):
|
|
107
|
+
@overload
|
|
108
|
+
@setdoc.basic
|
|
109
|
+
def __getitem__(self: Self, key: int, /) -> Item: ...
|
|
110
|
+
@overload
|
|
111
|
+
@setdoc.basic
|
|
112
|
+
def __getitem__(self: Self, key: Slice[int], /) -> abc.Sequence[Item]: ...
|
|
113
|
+
@setdoc.basic
|
|
114
|
+
def __getitem__(
|
|
115
|
+
self: Self,
|
|
116
|
+
key: int | Slice[int],
|
|
117
|
+
/,
|
|
118
|
+
) -> Item | abc.Sequence[Item]: ...
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
class MutableSequence_Mutable[Item](Protocol):
|
|
122
|
+
@overload
|
|
123
|
+
@setdoc.basic
|
|
124
|
+
def __delitem__(self: Self, key: SupportsIndex, /) -> None: ...
|
|
125
|
+
@overload
|
|
126
|
+
@setdoc.basic
|
|
127
|
+
def __delitem__(self: Self, key: Slice[SupportsIndex], /) -> None: ...
|
|
128
|
+
@setdoc.basic
|
|
129
|
+
def __delitem__(
|
|
130
|
+
self: Self, key: SupportsIndex | Slice[SupportsIndex], /
|
|
131
|
+
) -> None: ...
|
|
132
|
+
@overload
|
|
133
|
+
@setdoc.basic
|
|
134
|
+
def __getitem__(self: Self, key: int, /) -> Item: ...
|
|
135
|
+
@overload
|
|
136
|
+
@setdoc.basic
|
|
137
|
+
def __getitem__(
|
|
138
|
+
self: Self, key: Slice[int], /
|
|
139
|
+
) -> abc.MutableSequence[Item]: ...
|
|
140
|
+
@setdoc.basic
|
|
141
|
+
def __getitem__(
|
|
142
|
+
self: Self,
|
|
143
|
+
key: int | Slice[int],
|
|
144
|
+
/,
|
|
145
|
+
) -> Item | abc.MutableSequence[Item]: ...
|
|
146
|
+
@overload
|
|
147
|
+
@setdoc.basic
|
|
148
|
+
def __setitem__(self: Self, key: int, value: Item, /) -> None: ...
|
|
149
|
+
@overload
|
|
150
|
+
@setdoc.basic
|
|
151
|
+
def __setitem__(
|
|
152
|
+
self: Self, key: Slice[int], value: abc.Iterable[Item], /
|
|
153
|
+
) -> None: ...
|
|
154
|
+
@setdoc.basic
|
|
155
|
+
def __setitem__(
|
|
156
|
+
self: Self,
|
|
157
|
+
key: int | Slice[int],
|
|
158
|
+
value: Item | abc.Iterable[Item],
|
|
159
|
+
/,
|
|
160
|
+
) -> None: ...
|
|
161
|
+
@setdoc.basic
|
|
162
|
+
def insert(self: Self, index: int, item: Item, /) -> None: ...
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
### TYPE ALIASES ###
|
|
166
|
+
|
|
167
|
+
|
|
78
168
|
type DictInit[Key, Value] = (
|
|
79
169
|
SupportsKeysAndGetitem[Key | str, Optional[Value]]
|
|
80
170
|
| abc.Iterable[tuple[Key | str, Optional[Value]]]
|
|
@@ -86,15 +176,6 @@ type Slice[Index] = slice[Optional[Index], Optional[Index], Optional[Index]]
|
|
|
86
176
|
### COLLECTION ###
|
|
87
177
|
|
|
88
178
|
|
|
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
|
-
|
|
98
179
|
class Collection[Item](
|
|
99
180
|
abc.Sized,
|
|
100
181
|
abc.Iterable[Item],
|
|
@@ -133,11 +214,6 @@ class Set[Item: abc.Hashable](Collection[Item], abc.Set[Item]):
|
|
|
133
214
|
__slots__ = ()
|
|
134
215
|
|
|
135
216
|
|
|
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: ...
|
|
141
217
|
class MutableSet[Item: abc.Hashable](Set[Item], abc.MutableSet[Item]):
|
|
142
218
|
"""Provide abc for custom mutable set."""
|
|
143
219
|
|
|
@@ -259,32 +335,28 @@ class MutableSetLike[Item: abc.Hashable](SetLike[Item], MutableSet[Item]):
|
|
|
259
335
|
### SET-SLOT ###
|
|
260
336
|
|
|
261
337
|
|
|
262
|
-
class
|
|
263
|
-
"""Provide slotted set-like."""
|
|
338
|
+
class FrozenSetSlot[Item](FrozenSetLike[Item]):
|
|
339
|
+
"""Provide slotted frozen set-like."""
|
|
264
340
|
|
|
265
341
|
__slots__ = ("_slot",)
|
|
266
342
|
|
|
267
|
-
_slot:
|
|
343
|
+
_slot: FrozenSetSlot.__Frozen__[Item]
|
|
268
344
|
|
|
269
345
|
@setdoc.basic
|
|
270
|
-
def __frozen__(self: Self, /) ->
|
|
346
|
+
def __frozen__(self: Self, /) -> FrozenSetSlot.__Frozen__[Item]:
|
|
271
347
|
return self._slot
|
|
272
348
|
|
|
273
|
-
|
|
274
|
-
class FrozenSetSlot[Item](SetSlot[Item], FrozenSetLike[Item]):
|
|
275
|
-
"""Provide slotted frozen set-like."""
|
|
276
|
-
|
|
277
|
-
__slots__ = ()
|
|
278
|
-
|
|
279
349
|
@setdoc.basic
|
|
280
350
|
def __init__(self: Self, data: abc.Iterable[Item] = (), /) -> None:
|
|
281
351
|
self._slot = frozenset(data)
|
|
282
352
|
|
|
283
353
|
|
|
284
|
-
class MutableSetSlot[Item](
|
|
354
|
+
class MutableSetSlot[Item](MutableSetLike[Item]):
|
|
285
355
|
"""Provide slotted mutable set-like."""
|
|
286
356
|
|
|
287
|
-
__slots__ = ()
|
|
357
|
+
__slots__ = ("_slot",)
|
|
358
|
+
|
|
359
|
+
_slot: FrozenSetSlot.__Frozen__[Item]
|
|
288
360
|
|
|
289
361
|
@contextmanager
|
|
290
362
|
@setdoc.basic
|
|
@@ -301,9 +373,6 @@ class MutableSetSlot[Item](SetSlot[Item], MutableSetLike[Item]):
|
|
|
301
373
|
### MAPPING ###
|
|
302
374
|
|
|
303
375
|
|
|
304
|
-
class Mapping_Frozen[Key, Value](Collection_Frozen[Key], Protocol):
|
|
305
|
-
@setdoc.basic
|
|
306
|
-
def __getitem__(self: Self, key: abc.Hashable, /) -> Value: ...
|
|
307
376
|
class Mapping[Key: abc.Hashable, Value](
|
|
308
377
|
Collection[Key],
|
|
309
378
|
abc.Mapping[Key, Value],
|
|
@@ -322,15 +391,6 @@ class Mapping[Key: abc.Hashable, Value](
|
|
|
322
391
|
return self.__frozen__()[key]
|
|
323
392
|
|
|
324
393
|
|
|
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: ...
|
|
334
394
|
class MutableMapping[Key: abc.Hashable, Value](
|
|
335
395
|
Mapping[Key, Value],
|
|
336
396
|
abc.MutableMapping[Key | str, Optional[Value]],
|
|
@@ -366,9 +426,7 @@ class DictLike[Key: abc.Hashable, Value](
|
|
|
366
426
|
"""Provide abc for custom dict-like."""
|
|
367
427
|
|
|
368
428
|
__slots__ = ()
|
|
369
|
-
type __Frozen__[
|
|
370
|
-
FrozenKey | str, Optional[FrozenValue]
|
|
371
|
-
]
|
|
429
|
+
type __Frozen__[Key_, Value_] = frozendict[Key_ | str, Optional[Value_]]
|
|
372
430
|
|
|
373
431
|
@abstractmethod
|
|
374
432
|
@setdoc.basic
|
|
@@ -471,27 +529,20 @@ class MutableDictLike[Key: abc.Hashable, Value](
|
|
|
471
529
|
### DICT-SLOT ###
|
|
472
530
|
|
|
473
531
|
|
|
474
|
-
class
|
|
475
|
-
|
|
532
|
+
class FrozenDictSlot[Key: abc.Hashable, Value](
|
|
533
|
+
FrozenDictLike[Key, Value],
|
|
534
|
+
):
|
|
535
|
+
"""Provide slotted frozen dict-like."""
|
|
476
536
|
|
|
477
537
|
__slots__ = ("_slot",)
|
|
478
|
-
_slot:
|
|
538
|
+
_slot: FrozenDictSlot.__Frozen__[Key, Value]
|
|
479
539
|
|
|
480
540
|
@setdoc.basic
|
|
481
541
|
def __frozen__( # type: ignore[override]
|
|
482
542
|
self: Self,
|
|
483
|
-
) ->
|
|
543
|
+
) -> FrozenDictSlot.__Frozen__[Key, Value]:
|
|
484
544
|
return self._slot
|
|
485
545
|
|
|
486
|
-
|
|
487
|
-
class FrozenDictSlot[Key: abc.Hashable, Value](
|
|
488
|
-
DictSlot[Key, Value],
|
|
489
|
-
FrozenDictLike[Key, Value],
|
|
490
|
-
):
|
|
491
|
-
"""Provide slotted frozen dict-like."""
|
|
492
|
-
|
|
493
|
-
__slots__ = ()
|
|
494
|
-
|
|
495
546
|
@setdoc.basic
|
|
496
547
|
def __init__(
|
|
497
548
|
self: Self,
|
|
@@ -499,16 +550,16 @@ class FrozenDictSlot[Key: abc.Hashable, Value](
|
|
|
499
550
|
/,
|
|
500
551
|
**kwargs: Optional[Value],
|
|
501
552
|
) -> None:
|
|
502
|
-
self._slot = frozendict(data) # type: ignore[arg-type]
|
|
553
|
+
self._slot = frozendict(data, **kwargs) # type: ignore[arg-type]
|
|
503
554
|
|
|
504
555
|
|
|
505
556
|
class MutableDictSlot[Key: abc.Hashable, Value](
|
|
506
|
-
DictSlot[Key, Value],
|
|
507
557
|
MutableDictLike[Key, Value],
|
|
508
558
|
):
|
|
509
559
|
"""Provide slotted mutable dict-like."""
|
|
510
560
|
|
|
511
|
-
__slots__ = ()
|
|
561
|
+
__slots__ = ("_slot",)
|
|
562
|
+
_slot: FrozenDictSlot.__Frozen__[Key, Value]
|
|
512
563
|
|
|
513
564
|
@contextmanager
|
|
514
565
|
@setdoc.basic
|
|
@@ -525,22 +576,6 @@ class MutableDictSlot[Key: abc.Hashable, Value](
|
|
|
525
576
|
### SEQUENCE ###
|
|
526
577
|
|
|
527
578
|
|
|
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]: ...
|
|
544
579
|
class Sequence[Item](Collection[Item], abc.Sequence[Item]):
|
|
545
580
|
"""Provide abc for customized sequence."""
|
|
546
581
|
|
|
@@ -563,50 +598,6 @@ class Sequence[Item](Collection[Item], abc.Sequence[Item]):
|
|
|
563
598
|
return self.__frozen__()[key]
|
|
564
599
|
|
|
565
600
|
|
|
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
|
-
|
|
610
601
|
class MutableSequence[Item](Sequence[Item], abc.MutableSequence[Item]):
|
|
611
602
|
"""Provide abc for custom mutable sequence."""
|
|
612
603
|
|
|
@@ -853,31 +844,26 @@ class MutableListLike[Item](ListLike[Item], MutableSequence[Item]):
|
|
|
853
844
|
### LIST-SLOT ###
|
|
854
845
|
|
|
855
846
|
|
|
856
|
-
class
|
|
857
|
-
"""Provide slotted list-like
|
|
847
|
+
class FrozenListSlot[Item](FrozenListLike[Item]):
|
|
848
|
+
"""Provide slotted frozen list-like."""
|
|
858
849
|
|
|
859
850
|
__slots__ = ("_slot",)
|
|
860
|
-
_slot:
|
|
851
|
+
_slot: FrozenListSlot.__Frozen__[Item]
|
|
861
852
|
|
|
862
853
|
@setdoc.basic
|
|
863
|
-
def __frozen__(self: Self) ->
|
|
854
|
+
def __frozen__(self: Self) -> FrozenListSlot.__Frozen__[Item]:
|
|
864
855
|
return self._slot
|
|
865
856
|
|
|
866
|
-
|
|
867
|
-
class FrozenListSlot[Item](ListSlot[Item], FrozenListLike[Item]):
|
|
868
|
-
"""Provide slotted frozen list-like."""
|
|
869
|
-
|
|
870
|
-
__slots__ = ()
|
|
871
|
-
|
|
872
857
|
@setdoc.basic
|
|
873
858
|
def __init__(self: Self, data: abc.Iterable[Item] = (), /) -> None:
|
|
874
859
|
self._slot = tuple(data)
|
|
875
860
|
|
|
876
861
|
|
|
877
|
-
class MutableListSlot[Item](
|
|
862
|
+
class MutableListSlot[Item](MutableListLike[Item]):
|
|
878
863
|
"""Provide slotted mutable list-like."""
|
|
879
864
|
|
|
880
|
-
__slots__ = ()
|
|
865
|
+
__slots__ = ("_slot",)
|
|
866
|
+
_slot: MutableListSlot.__Frozen__[Item]
|
|
881
867
|
|
|
882
868
|
@contextmanager
|
|
883
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
|