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.
Files changed (45) hide show
  1. {v440-2.0.0.dev88/src/v440.egg-info → v440-2.0.0.dev89}/PKG-INFO +1 -1
  2. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/pyproject.toml +1 -1
  3. v440-2.0.0.dev89/src/v440/_utils/releaseparse/setting.py +53 -0
  4. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/core/Release.py +4 -44
  5. {v440-2.0.0.dev88 → v440-2.0.0.dev89/src/v440.egg-info}/PKG-INFO +1 -1
  6. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440.egg-info/SOURCES.txt +1 -0
  7. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/LICENSE.txt +0 -0
  8. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/MANIFEST.in +0 -0
  9. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/README.rst +0 -0
  10. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/setup.cfg +0 -0
  11. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/__init__.py +0 -0
  12. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/BaseStringer.py +0 -0
  13. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/Cfg.py +0 -0
  14. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/ListStringer.py +0 -0
  15. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/Pattern.py +0 -0
  16. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/SlotStringer.py +0 -0
  17. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/__init__.py +0 -0
  18. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/cfg.toml +0 -0
  19. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/guarding.py +0 -0
  20. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/qualparse/Digest.py +0 -0
  21. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/qualparse/__init__.py +0 -0
  22. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/qualparse/devs.py +0 -0
  23. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/qualparse/posts.py +0 -0
  24. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/qualparse/pres.py +0 -0
  25. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/qualparse/segmenting.py +0 -0
  26. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/releaseparse/__init__.py +0 -0
  27. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/releaseparse/deleting.py +0 -0
  28. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/releaseparse/getting.py +0 -0
  29. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/releaseparse/listing.py +0 -0
  30. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/releaseparse/numerals.py +0 -0
  31. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/_utils/releaseparse/ranging.py +0 -0
  32. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/core/Base.py +0 -0
  33. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/core/Local.py +0 -0
  34. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/core/Public.py +0 -0
  35. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/core/Qual.py +0 -0
  36. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/core/Version.py +0 -0
  37. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/core/VersionError.py +0 -0
  38. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/core/__init__.py +0 -0
  39. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/tests/__init__.py +0 -0
  40. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/tests/test_testdata.py +0 -0
  41. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/tests/test_version.py +0 -0
  42. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440/tests/testdata.toml +0 -0
  43. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440.egg-info/dependency_links.txt +0 -0
  44. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440.egg-info/requires.txt +0 -0
  45. {v440-2.0.0.dev88 → v440-2.0.0.dev89}/src/v440.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: v440
3
- Version: 2.0.0.dev88
3
+ Version: 2.0.0.dev89
4
4
  Summary: This project provides mutable version objects in accordance with PEP440.
5
5
  Author-email: Johannes <johannes.programming@gmail.com>
6
6
  License: The MIT License (MIT)
@@ -36,7 +36,7 @@ keywords = []
36
36
  name = "v440"
37
37
  readme = "README.rst"
38
38
  requires-python = ">=3.11"
39
- version = "2.0.0.dev88"
39
+ version = "2.0.0.dev89"
40
40
 
41
41
  [project.license]
42
42
  file = "LICENSE.txt"
@@ -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._setitem_int(i, value)
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._setitem_range(k, value)
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._setitem_int(i, x)
91
+ self._data = setting.setitem_int(self.data, i, x)
132
92
  if i != -1:
133
93
  self.data = self.data[: i + 1]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: v440
3
- Version: 2.0.0.dev88
3
+ Version: 2.0.0.dev89
4
4
  Summary: This project provides mutable version objects in accordance with PEP440.
5
5
  Author-email: Johannes <johannes.programming@gmail.com>
6
6
  License: The MIT License (MIT)
@@ -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