v440 2.0.0.dev113__tar.gz → 2.0.0.dev115__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.dev113/src/v440.egg-info → v440-2.0.0.dev115}/PKG-INFO +1 -1
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/pyproject.toml +1 -1
- v440-2.0.0.dev113/src/v440/_utils/qualparse/Digest.py → v440-2.0.0.dev115/src/v440/_utils/qualparse/__init__.py +76 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115/src/v440.egg-info}/PKG-INFO +1 -1
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440.egg-info/SOURCES.txt +0 -3
- v440-2.0.0.dev113/src/v440/_utils/qualparse/__init__.py +0 -1
- v440-2.0.0.dev113/src/v440/_utils/qualparse/pres.py +0 -39
- v440-2.0.0.dev113/src/v440/_utils/qualparse/segmenting.py +0 -43
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/LICENSE.txt +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/MANIFEST.in +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/README.rst +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/setup.cfg +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/__init__.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/_utils/BaseStringer.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/_utils/Cfg.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/_utils/ListStringer.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/_utils/Pattern.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/_utils/SlotStringer.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/_utils/__init__.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/_utils/cfg.toml +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/_utils/guarding.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/_utils/releaseparse/__init__.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/_utils/releaseparse/deleting.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/_utils/releaseparse/getting.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/_utils/releaseparse/listing.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/_utils/releaseparse/numerals.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/_utils/releaseparse/ranging.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/_utils/releaseparse/setting.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/core/Base.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/core/Local.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/core/Public.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/core/Qual.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/core/Release.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/core/Version.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/core/VersionError.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/core/__init__.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/tests/__init__.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/tests/test_testdata.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/tests/test_version.py +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440/tests/testdata.toml +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440.egg-info/dependency_links.txt +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440.egg-info/requires.txt +0 -0
- {v440-2.0.0.dev113 → v440-2.0.0.dev115}/src/v440.egg-info/top_level.txt +0 -0
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import functools
|
|
4
|
+
import string
|
|
4
5
|
import types
|
|
5
6
|
from typing import *
|
|
6
7
|
|
|
7
8
|
import setdoc
|
|
8
9
|
|
|
10
|
+
from v440._utils.Cfg import Cfg
|
|
11
|
+
from v440._utils.Pattern import Pattern
|
|
12
|
+
from v440.core.VersionError import VersionError
|
|
9
13
|
|
|
14
|
+
|
|
15
|
+
# Digest
|
|
10
16
|
class Digest:
|
|
11
17
|
__slots__ = ("__dict__", "lookup", "name", "kind")
|
|
12
18
|
lookup: dict
|
|
@@ -77,3 +83,73 @@ class Digest:
|
|
|
77
83
|
if self.kind is not None:
|
|
78
84
|
new = self.kind(new)
|
|
79
85
|
return new
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
# segment
|
|
89
|
+
def segment(value: Any, /) -> Any:
|
|
90
|
+
try:
|
|
91
|
+
return _segment(value)
|
|
92
|
+
except:
|
|
93
|
+
e: str = "%r is not a valid segment"
|
|
94
|
+
e = VersionError(e % value)
|
|
95
|
+
raise e from None
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
_segment: Digest = Digest("_segment")
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
@_segment.overload()
|
|
102
|
+
def _segment():
|
|
103
|
+
return
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
@_segment.overload(int)
|
|
107
|
+
def _segment(value: int, /) -> Any:
|
|
108
|
+
if value < 0:
|
|
109
|
+
raise ValueError
|
|
110
|
+
return value
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
@_segment.overload(str)
|
|
114
|
+
def _segment(value: Any, /) -> int | str:
|
|
115
|
+
if value.strip(string.ascii_lowercase + string.digits):
|
|
116
|
+
raise ValueError(value)
|
|
117
|
+
if value.strip(string.digits):
|
|
118
|
+
return value
|
|
119
|
+
elif value == "":
|
|
120
|
+
return 0
|
|
121
|
+
else:
|
|
122
|
+
return int(value)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
# parse_pre
|
|
126
|
+
parse_pre: Digest = Digest("parse_pre")
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
@parse_pre.overload(list)
|
|
130
|
+
def parse_pre(value: list) -> tuple:
|
|
131
|
+
x: Any
|
|
132
|
+
y: Any
|
|
133
|
+
x, y = map(segment, value)
|
|
134
|
+
if (x, y) == (None, None):
|
|
135
|
+
return None, None
|
|
136
|
+
x = Cfg.cfg.data["phases"][x]
|
|
137
|
+
if not isinstance(y, int):
|
|
138
|
+
raise TypeError
|
|
139
|
+
return x, y
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
@parse_pre.overload(str)
|
|
143
|
+
def parse_pre(value: str) -> tuple:
|
|
144
|
+
v: str = str(value)
|
|
145
|
+
if v == "":
|
|
146
|
+
return None, None
|
|
147
|
+
v = v.replace("_", ".")
|
|
148
|
+
v = v.replace("-", ".")
|
|
149
|
+
m: Any = Pattern.PARSER.bound.search(v)
|
|
150
|
+
l: Any
|
|
151
|
+
n: Any
|
|
152
|
+
l, n = m.groups()
|
|
153
|
+
l = Cfg.cfg.data["phases"][l]
|
|
154
|
+
n = 0 if (n is None) else int(n)
|
|
155
|
+
return l, n
|
|
@@ -17,10 +17,7 @@ src/v440/_utils/SlotStringer.py
|
|
|
17
17
|
src/v440/_utils/__init__.py
|
|
18
18
|
src/v440/_utils/cfg.toml
|
|
19
19
|
src/v440/_utils/guarding.py
|
|
20
|
-
src/v440/_utils/qualparse/Digest.py
|
|
21
20
|
src/v440/_utils/qualparse/__init__.py
|
|
22
|
-
src/v440/_utils/qualparse/pres.py
|
|
23
|
-
src/v440/_utils/qualparse/segmenting.py
|
|
24
21
|
src/v440/_utils/releaseparse/__init__.py
|
|
25
22
|
src/v440/_utils/releaseparse/deleting.py
|
|
26
23
|
src/v440/_utils/releaseparse/getting.py
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
from v440._utils.qualparse.pres import parse_pre
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from typing import *
|
|
4
|
-
|
|
5
|
-
from v440._utils.Cfg import Cfg
|
|
6
|
-
from v440._utils.Pattern import Pattern
|
|
7
|
-
from v440._utils.qualparse import segmenting
|
|
8
|
-
from v440._utils.qualparse.Digest import Digest
|
|
9
|
-
|
|
10
|
-
parse_pre: Digest = Digest("parse_pre")
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
@parse_pre.overload(list)
|
|
14
|
-
def parse_pre(value: list) -> tuple:
|
|
15
|
-
x: Any
|
|
16
|
-
y: Any
|
|
17
|
-
x, y = map(segmenting.segment, value)
|
|
18
|
-
if (x, y) == (None, None):
|
|
19
|
-
return None, None
|
|
20
|
-
x = Cfg.cfg.data["phases"][x]
|
|
21
|
-
if not isinstance(y, int):
|
|
22
|
-
raise TypeError
|
|
23
|
-
return x, y
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
@parse_pre.overload(str)
|
|
27
|
-
def parse_pre(value: str) -> tuple:
|
|
28
|
-
if value == "":
|
|
29
|
-
return [None, None]
|
|
30
|
-
v: str = value
|
|
31
|
-
v = v.replace("_", ".")
|
|
32
|
-
v = v.replace("-", ".")
|
|
33
|
-
m: Any = Pattern.PARSER.bound.search(v)
|
|
34
|
-
l: Any
|
|
35
|
-
n: Any
|
|
36
|
-
l, n = m.groups()
|
|
37
|
-
l = Cfg.cfg.data["phases"][l]
|
|
38
|
-
n = 0 if (n is None) else int(n)
|
|
39
|
-
return l, n
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import string
|
|
4
|
-
from typing import *
|
|
5
|
-
|
|
6
|
-
from v440._utils.qualparse.Digest import Digest
|
|
7
|
-
from v440.core.VersionError import VersionError
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def segment(value: Any, /) -> Any:
|
|
11
|
-
try:
|
|
12
|
-
return _segment(value)
|
|
13
|
-
except:
|
|
14
|
-
e: str = "%r is not a valid segment"
|
|
15
|
-
e = VersionError(e % value)
|
|
16
|
-
raise e from None
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
_segment: Digest = Digest("_segment")
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
@_segment.overload()
|
|
23
|
-
def _segment():
|
|
24
|
-
return
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
@_segment.overload(int)
|
|
28
|
-
def _segment(value: int, /) -> Any:
|
|
29
|
-
if value < 0:
|
|
30
|
-
raise ValueError
|
|
31
|
-
return value
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
@_segment.overload(str)
|
|
35
|
-
def _segment(value: Any, /) -> int | str:
|
|
36
|
-
if value.strip(string.ascii_lowercase + string.digits):
|
|
37
|
-
raise ValueError(value)
|
|
38
|
-
if value.strip(string.digits):
|
|
39
|
-
return value
|
|
40
|
-
elif value == "":
|
|
41
|
-
return 0
|
|
42
|
-
else:
|
|
43
|
-
return int(value)
|
|
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
|