v440 2.0.0.dev72__tar.gz → 2.0.0.dev74__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 (39) hide show
  1. {v440-2.0.0.dev72/src/v440.egg-info → v440-2.0.0.dev74}/PKG-INFO +1 -1
  2. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/pyproject.toml +1 -1
  3. v440-2.0.0.dev74/src/v440/_utils/releaseparse/__init__.py +2 -0
  4. v440-2.0.0.dev74/src/v440/_utils/releaseparse/numerals.py +29 -0
  5. v440-2.0.0.dev74/src/v440/_utils/releaseparse/ranging.py +37 -0
  6. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/core/Release.py +3 -34
  7. {v440-2.0.0.dev72 → v440-2.0.0.dev74/src/v440.egg-info}/PKG-INFO +1 -1
  8. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440.egg-info/SOURCES.txt +3 -1
  9. v440-2.0.0.dev72/src/v440/_utils/releaseparse.py +0 -44
  10. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/LICENSE.txt +0 -0
  11. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/MANIFEST.in +0 -0
  12. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/README.rst +0 -0
  13. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/setup.cfg +0 -0
  14. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/__init__.py +0 -0
  15. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/_utils/BaseStringer.py +0 -0
  16. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/_utils/Cfg.py +0 -0
  17. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/_utils/Digest.py +0 -0
  18. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/_utils/ListStringer.py +0 -0
  19. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/_utils/Pattern.py +0 -0
  20. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/_utils/SlotStringer.py +0 -0
  21. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/_utils/__init__.py +0 -0
  22. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/_utils/cfg.toml +0 -0
  23. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/_utils/guarding.py +0 -0
  24. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/_utils/qualparse.py +0 -0
  25. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/_utils/segmenting.py +0 -0
  26. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/core/Base.py +0 -0
  27. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/core/Local.py +0 -0
  28. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/core/Public.py +0 -0
  29. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/core/Qual.py +0 -0
  30. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/core/Version.py +0 -0
  31. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/core/VersionError.py +0 -0
  32. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/core/__init__.py +0 -0
  33. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/tests/__init__.py +0 -0
  34. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/tests/test_testdata.py +0 -0
  35. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/tests/test_version.py +0 -0
  36. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440/tests/testdata.toml +0 -0
  37. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440.egg-info/dependency_links.txt +0 -0
  38. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/src/v440.egg-info/requires.txt +0 -0
  39. {v440-2.0.0.dev72 → v440-2.0.0.dev74}/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.dev72
3
+ Version: 2.0.0.dev74
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.dev72"
39
+ version = "2.0.0.dev74"
40
40
 
41
41
  [project.license]
42
42
  file = "LICENSE.txt"
@@ -0,0 +1,2 @@
1
+ from v440._utils.releaseparse.numerals import numeral
2
+ from v440._utils.releaseparse.ranging import torange
@@ -0,0 +1,29 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import *
4
+
5
+ from v440.core.VersionError import VersionError
6
+
7
+ __all__ = ["numeral"]
8
+
9
+
10
+ def numeral(value: Any, /) -> int:
11
+ v: int
12
+ try:
13
+ v = numeral_(value)
14
+ except Exception:
15
+ e: str = "%r is not a valid numeral segment"
16
+ raise VersionError(e % value) from None
17
+ return v
18
+
19
+
20
+ def numeral_(value: Any, /) -> int:
21
+ if isinstance(value, int):
22
+ return int(value)
23
+ s: str = str(value)
24
+ if s == "":
25
+ return 0
26
+ i: int = int(s)
27
+ if i < 0:
28
+ raise ValueError
29
+ return i
@@ -0,0 +1,37 @@
1
+ from __future__ import annotations
2
+
3
+ import operator
4
+ from typing import *
5
+
6
+ __all__ = ["torange"]
7
+
8
+
9
+ def torange(key: Any, length: Any) -> range:
10
+ start: Any = key.start
11
+ stop: Any = key.stop
12
+ step: Any = key.step
13
+ if step is None:
14
+ step = 1
15
+ else:
16
+ step = operator.index(step)
17
+ if step == 0:
18
+ raise ValueError
19
+ fwd: bool = step > 0
20
+ if start is None:
21
+ start = 0 if fwd else (length - 1)
22
+ else:
23
+ start = operator.index(start)
24
+ if stop is None:
25
+ stop = length if fwd else -1
26
+ else:
27
+ stop = operator.index(stop)
28
+ if start < 0:
29
+ start += length
30
+ if start < 0:
31
+ start = 0 if fwd else -1
32
+ if stop < 0:
33
+ stop += length
34
+ if stop < 0:
35
+ stop = 0 if fwd else -1
36
+ ans: range = range(start, stop, step)
37
+ return ans
@@ -67,37 +67,6 @@ def tolist(value: Any, *, slicing: Any) -> list:
67
67
  return l
68
68
 
69
69
 
70
- def torange(key: Any, length: Any) -> range:
71
- start: Any = key.start
72
- stop: Any = key.stop
73
- step: Any = key.step
74
- if step is None:
75
- step = 1
76
- else:
77
- step = operator.index(step)
78
- if step == 0:
79
- raise ValueError
80
- fwd: bool = step > 0
81
- if start is None:
82
- start = 0 if fwd else (length - 1)
83
- else:
84
- start = operator.index(start)
85
- if stop is None:
86
- stop = length if fwd else -1
87
- else:
88
- stop = operator.index(stop)
89
- if start < 0:
90
- start += length
91
- if start < 0:
92
- start = 0 if fwd else -1
93
- if stop < 0:
94
- stop += length
95
- if stop < 0:
96
- stop = 0 if fwd else -1
97
- ans: range = range(start, stop, step)
98
- return ans
99
-
100
-
101
70
  @keyalias(major=0, minor=1, micro=2, patch=2)
102
71
  class Release(ListStringer):
103
72
  __slots__ = ()
@@ -127,7 +96,7 @@ class Release(ListStringer):
127
96
  @__delitem__.overload(True)
128
97
  @setdoc.basic
129
98
  def __delitem__(self: Self, key: Any) -> None:
130
- r: range = torange(key, len(self))
99
+ r: range = releaseparse.torange(key, len(self))
131
100
  k: Any
132
101
  l: list = [k for k in r if k < len(self)]
133
102
  l.sort(reverse=True)
@@ -151,7 +120,7 @@ class Release(ListStringer):
151
120
  @__getitem__.overload(True)
152
121
  @setdoc.basic
153
122
  def __getitem__(self: Self, key: Any) -> list:
154
- r: range = torange(key, len(self))
123
+ r: range = releaseparse.torange(key, len(self))
155
124
  m: map = map(self._getitem_int, r)
156
125
  ans: list = list(m)
157
126
  return ans
@@ -170,7 +139,7 @@ class Release(ListStringer):
170
139
  @__setitem__.overload(True)
171
140
  @setdoc.basic
172
141
  def __setitem__(self: Self, key: SupportsIndex, value: Any) -> Any:
173
- k: range = torange(key, len(self))
142
+ k: range = releaseparse.torange(key, len(self))
174
143
  self._setitem_range(k, value)
175
144
 
176
145
  @classmethod
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: v440
3
- Version: 2.0.0.dev72
3
+ Version: 2.0.0.dev74
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)
@@ -19,8 +19,10 @@ src/v440/_utils/__init__.py
19
19
  src/v440/_utils/cfg.toml
20
20
  src/v440/_utils/guarding.py
21
21
  src/v440/_utils/qualparse.py
22
- src/v440/_utils/releaseparse.py
23
22
  src/v440/_utils/segmenting.py
23
+ src/v440/_utils/releaseparse/__init__.py
24
+ src/v440/_utils/releaseparse/numerals.py
25
+ src/v440/_utils/releaseparse/ranging.py
24
26
  src/v440/core/Base.py
25
27
  src/v440/core/Local.py
26
28
  src/v440/core/Public.py
@@ -1,44 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import string
4
- from typing import *
5
-
6
- from v440._utils.Digest import Digest
7
- from v440.core.VersionError import VersionError
8
-
9
-
10
- def numeral(value: Any, /) -> int:
11
- v: Any
12
- try:
13
- v = _segment(value)
14
- except:
15
- e: str = "%r is not a valid segment"
16
- e = VersionError(e % value)
17
- raise e from None
18
- if type(v) is int:
19
- return v
20
- e: str = "%r is not a valid numeral segment"
21
- e %= v
22
- raise VersionError(e)
23
-
24
-
25
- _segment: Digest = Digest("_segment")
26
-
27
-
28
- @_segment.overload(int)
29
- def _segment(value: int, /) -> Any:
30
- if value < 0:
31
- raise ValueError
32
- return value
33
-
34
-
35
- @_segment.overload(str)
36
- def _segment(value: Any, /) -> int | str:
37
- if value.strip(string.ascii_lowercase + string.digits):
38
- raise ValueError(value)
39
- if value.strip(string.digits):
40
- return value
41
- elif value == "":
42
- return 0
43
- else:
44
- return int(value)
File without changes
File without changes
File without changes
File without changes