v440 2.0.0.dev88__tar.gz → 2.0.0.dev89__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.
- {v440-2.0.0.dev88/src/v440.egg-info → v440-2.0.0.dev89}/PKG-INFO +1 -1
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/pyproject.toml +1 -1
- v440-2.0.0.dev89/src/v440/_utils/releaseparse/setting.py +53 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/core/Release.py +4 -44
- {v440-2.0.0.dev88 → v440-2.0.0.dev89/src/v440.egg-info}/PKG-INFO +1 -1
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440.egg-info/SOURCES.txt +1 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/LICENSE.txt +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/MANIFEST.in +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/README.rst +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/setup.cfg +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/__init__.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/BaseStringer.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/Cfg.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/ListStringer.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/Pattern.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/SlotStringer.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/__init__.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/cfg.toml +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/guarding.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/qualparse/Digest.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/qualparse/__init__.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/qualparse/devs.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/qualparse/posts.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/qualparse/pres.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/qualparse/segmenting.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/releaseparse/__init__.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/releaseparse/deleting.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/releaseparse/getting.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/releaseparse/listing.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/releaseparse/numerals.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/releaseparse/ranging.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/core/Base.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/core/Local.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/core/Public.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/core/Qual.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/core/Version.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/core/VersionError.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/core/__init__.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/tests/__init__.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/tests/test_testdata.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/tests/test_version.py +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/tests/testdata.toml +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440.egg-info/dependency_links.txt +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440.egg-info/requires.txt +0 -0
- {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import operator
|
|
4
|
+
from functools import partial
|
|
5
|
+
from typing import *
|
|
6
|
+
|
|
7
|
+
from overloadable import Overloadable
|
|
8
|
+
|
|
9
|
+
from v440._utils.releaseparse import listing, numerals, ranging
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def setitem_int(data: tuple, key: int, value: Any) -> tuple:
|
|
13
|
+
v: int = numerals.numeral(value)
|
|
14
|
+
if key < len(data):
|
|
15
|
+
edit: list = list(data)
|
|
16
|
+
edit[key] = v
|
|
17
|
+
return tuple(edit)
|
|
18
|
+
if v == 0:
|
|
19
|
+
return data
|
|
20
|
+
data += (0,) * (key - len(data))
|
|
21
|
+
data += (v,)
|
|
22
|
+
return data
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@Overloadable
|
|
26
|
+
def setitem_range(data: tuple, key: range, value: Any) -> bool:
|
|
27
|
+
return key.step == 1
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@setitem_range.overload(False)
|
|
31
|
+
def setitem_range(data: tuple, key: range, value: Any) -> tuple:
|
|
32
|
+
key: list = list(key)
|
|
33
|
+
value: list = listing.tolist(value, slicing=len(key))
|
|
34
|
+
if len(key) != len(value):
|
|
35
|
+
e = "attempt to assign sequence of size %s to extended slice of size %s"
|
|
36
|
+
e %= (len(value), len(key))
|
|
37
|
+
raise ValueError(e)
|
|
38
|
+
ext: int = max(0, max(*key) + 1 - len(data))
|
|
39
|
+
edit: list = list(data)
|
|
40
|
+
edit += [0] * ext
|
|
41
|
+
for k, v in zip(key, value):
|
|
42
|
+
edit[k] = v
|
|
43
|
+
return tuple(edit)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@setitem_range.overload(True)
|
|
47
|
+
def setitem_range(data: tuple, key: range, value: Any) -> Any:
|
|
48
|
+
edit: list = list(data)
|
|
49
|
+
ext: int = max(0, key.start - len(data))
|
|
50
|
+
edit += ext * [0]
|
|
51
|
+
l: list = listing.tolist(value, slicing="always")
|
|
52
|
+
edit = edit[: key.start] + l + edit[key.stop :]
|
|
53
|
+
return tuple(edit)
|
|
@@ -10,7 +10,7 @@ from overloadable import Overloadable
|
|
|
10
10
|
|
|
11
11
|
from v440._utils import releaseparse
|
|
12
12
|
from v440._utils.ListStringer import ListStringer
|
|
13
|
-
from v440._utils.releaseparse import deleting, getting
|
|
13
|
+
from v440._utils.releaseparse import deleting, getting, setting
|
|
14
14
|
|
|
15
15
|
__all__ = ["Release"]
|
|
16
16
|
|
|
@@ -43,13 +43,13 @@ class Release(ListStringer):
|
|
|
43
43
|
@setdoc.basic
|
|
44
44
|
def __setitem__(self: Self, key: SupportsIndex, value: Any) -> Any:
|
|
45
45
|
i: int = operator.index(key)
|
|
46
|
-
self.
|
|
46
|
+
self._data = setting.setitem_int(self.data, i, value)
|
|
47
47
|
|
|
48
48
|
@__setitem__.overload(True)
|
|
49
49
|
@setdoc.basic
|
|
50
50
|
def __setitem__(self: Self, key: SupportsIndex, value: Any) -> Any:
|
|
51
51
|
k: range = releaseparse.torange(key, len(self))
|
|
52
|
-
self.
|
|
52
|
+
self._data = setting.setitem_range(self.data, k, value)
|
|
53
53
|
|
|
54
54
|
@classmethod
|
|
55
55
|
def _data_parse(cls: type, value: list) -> Iterable:
|
|
@@ -71,46 +71,6 @@ class Release(ListStringer):
|
|
|
71
71
|
ans: str = ".".join(l)
|
|
72
72
|
return ans
|
|
73
73
|
|
|
74
|
-
def _setitem_int(self: Self, key: int, value: Any) -> Any:
|
|
75
|
-
v: int = releaseparse.numeral(value)
|
|
76
|
-
if key < len(self):
|
|
77
|
-
data = list(self.data)
|
|
78
|
-
data[key] = v
|
|
79
|
-
self.data = data
|
|
80
|
-
return
|
|
81
|
-
if v == 0:
|
|
82
|
-
return
|
|
83
|
-
self._data += (0,) * (key - len(self))
|
|
84
|
-
self._data += (v,)
|
|
85
|
-
|
|
86
|
-
@Overloadable
|
|
87
|
-
def _setitem_range(self: Self, key: range, value: Any) -> bool:
|
|
88
|
-
return key.step == 1
|
|
89
|
-
|
|
90
|
-
@_setitem_range.overload(False)
|
|
91
|
-
def _setitem_range(self: Self, key: range, value: Any) -> Any:
|
|
92
|
-
key: list = list(key)
|
|
93
|
-
value: list = releaseparse.tolist(value, slicing=len(key))
|
|
94
|
-
if len(key) != len(value):
|
|
95
|
-
e = "attempt to assign sequence of size %s to extended slice of size %s"
|
|
96
|
-
e %= (len(value), len(key))
|
|
97
|
-
raise ValueError(e)
|
|
98
|
-
ext: int = max(0, max(*key) + 1 - len(self))
|
|
99
|
-
data: list = list(self.data)
|
|
100
|
-
data += [0] * ext
|
|
101
|
-
for k, v in zip(key, value):
|
|
102
|
-
data[k] = v
|
|
103
|
-
self.data = data
|
|
104
|
-
|
|
105
|
-
@_setitem_range.overload(True)
|
|
106
|
-
def _setitem_range(self: Self, key: range, value: Any) -> Any:
|
|
107
|
-
data: list = list(self.data)
|
|
108
|
-
ext: int = max(0, key.start - len(data))
|
|
109
|
-
data += ext * [0]
|
|
110
|
-
l: list = releaseparse.tolist(value, slicing="always")
|
|
111
|
-
data = data[: key.start] + l + data[key.stop :]
|
|
112
|
-
self.data = data
|
|
113
|
-
|
|
114
74
|
@classmethod
|
|
115
75
|
def _sort(cls: type, value: int) -> int:
|
|
116
76
|
return value
|
|
@@ -128,6 +88,6 @@ class Release(ListStringer):
|
|
|
128
88
|
i: int = operator.index(index)
|
|
129
89
|
a: int = operator.index(amount)
|
|
130
90
|
x: int = getting.getitem_int(self.data, i) + a
|
|
131
|
-
self.
|
|
91
|
+
self._data = setting.setitem_int(self.data, i, x)
|
|
132
92
|
if i != -1:
|
|
133
93
|
self.data = self.data[: i + 1]
|
|
@@ -29,6 +29,7 @@ src/v440/_utils/releaseparse/getting.py
|
|
|
29
29
|
src/v440/_utils/releaseparse/listing.py
|
|
30
30
|
src/v440/_utils/releaseparse/numerals.py
|
|
31
31
|
src/v440/_utils/releaseparse/ranging.py
|
|
32
|
+
src/v440/_utils/releaseparse/setting.py
|
|
32
33
|
src/v440/core/Base.py
|
|
33
34
|
src/v440/core/Local.py
|
|
34
35
|
src/v440/core/Public.py
|
|
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
|
|
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
|