v440 2.0.0.dev80__tar.gz → 2.0.0.dev82__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.dev80/src/v440.egg-info → v440-2.0.0.dev82}/PKG-INFO +1 -1
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/pyproject.toml +1 -1
- v440-2.0.0.dev82/src/v440/_utils/qualparse/__init__.py +3 -0
- v440-2.0.0.dev82/src/v440/_utils/qualparse/devs.py +48 -0
- v440-2.0.0.dev82/src/v440/_utils/qualparse/posts.py +52 -0
- v440-2.0.0.dev82/src/v440/_utils/qualparse/pres.py +44 -0
- {v440-2.0.0.dev80/src/v440/_utils → v440-2.0.0.dev82/src/v440/_utils/qualparse}/segmenting.py +1 -1
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/core/Base.py +0 -29
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/core/Local.py +0 -3
- {v440-2.0.0.dev80 → v440-2.0.0.dev82/src/v440.egg-info}/PKG-INFO +1 -1
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440.egg-info/SOURCES.txt +6 -3
- v440-2.0.0.dev80/src/v440/_utils/qualparse.py +0 -132
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/LICENSE.txt +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/MANIFEST.in +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/README.rst +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/setup.cfg +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/__init__.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/BaseStringer.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/Cfg.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/ListStringer.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/Pattern.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/SlotStringer.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/__init__.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/cfg.toml +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/guarding.py +0 -0
- {v440-2.0.0.dev80/src/v440/_utils → v440-2.0.0.dev82/src/v440/_utils/qualparse}/Digest.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/releaseparse/__init__.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/releaseparse/listing.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/releaseparse/numerals.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/releaseparse/ranging.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/core/Public.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/core/Qual.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/core/Release.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/core/Version.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/core/VersionError.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/core/__init__.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/tests/__init__.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/tests/test_testdata.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/tests/test_version.py +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/tests/testdata.toml +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440.egg-info/dependency_links.txt +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440.egg-info/requires.txt +0 -0
- {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import *
|
|
4
|
+
|
|
5
|
+
from v440._utils.Pattern import Pattern
|
|
6
|
+
from v440._utils.qualparse import segmenting
|
|
7
|
+
from v440._utils.qualparse.Digest import Digest
|
|
8
|
+
|
|
9
|
+
parse_dev: Digest = Digest("parse_dev")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@parse_dev.overload()
|
|
13
|
+
def parse_dev() -> None:
|
|
14
|
+
return
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@parse_dev.overload(int)
|
|
18
|
+
def parse_dev(value: int) -> int:
|
|
19
|
+
if value < 0:
|
|
20
|
+
raise ValueError
|
|
21
|
+
return value
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@parse_dev.overload(list)
|
|
25
|
+
def parse_dev(value: list) -> Optional[int]:
|
|
26
|
+
x: Any
|
|
27
|
+
y: Any
|
|
28
|
+
x, y = map(segmenting.segment, value)
|
|
29
|
+
if x != "dev":
|
|
30
|
+
raise ValueError
|
|
31
|
+
if isinstance(y, str):
|
|
32
|
+
raise TypeError
|
|
33
|
+
return y
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@parse_dev.overload(str)
|
|
37
|
+
def parse_dev(value: str) -> Optional[int]:
|
|
38
|
+
v: str = value
|
|
39
|
+
v = v.replace("_", ".")
|
|
40
|
+
v = v.replace("-", ".")
|
|
41
|
+
m: Any = Pattern.PARSER.bound.search(v)
|
|
42
|
+
x: Any
|
|
43
|
+
y: Any
|
|
44
|
+
x, y = m.groups()
|
|
45
|
+
if x not in (None, "dev"):
|
|
46
|
+
raise ValueError
|
|
47
|
+
if y is not None:
|
|
48
|
+
return int(y)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import *
|
|
4
|
+
|
|
5
|
+
from v440._utils.Pattern import Pattern
|
|
6
|
+
from v440._utils.qualparse import segmenting
|
|
7
|
+
from v440._utils.qualparse.Digest import Digest
|
|
8
|
+
|
|
9
|
+
parse_post: Digest = Digest("parse_post")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@parse_post.overload()
|
|
13
|
+
def parse_post() -> None:
|
|
14
|
+
return
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@parse_post.overload(int)
|
|
18
|
+
def parse_post(value: int) -> int:
|
|
19
|
+
if value < 0:
|
|
20
|
+
raise ValueError
|
|
21
|
+
return value
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@parse_post.overload(list)
|
|
25
|
+
def parse_post(value: list) -> Optional[int]:
|
|
26
|
+
v: list = list(map(segmenting.segment, value))
|
|
27
|
+
if len(v) == 0:
|
|
28
|
+
raise ValueError
|
|
29
|
+
if len(v) > 2:
|
|
30
|
+
raise ValueError
|
|
31
|
+
if len(v) == 1:
|
|
32
|
+
v.insert(0, "")
|
|
33
|
+
if v[0] not in ("post", "rev", "r", ""):
|
|
34
|
+
raise ValueError
|
|
35
|
+
if isinstance(v[1], str):
|
|
36
|
+
raise TypeError
|
|
37
|
+
return v[1]
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@parse_post.overload(str)
|
|
41
|
+
def parse_post(value: str) -> Optional[int]:
|
|
42
|
+
v: str = value
|
|
43
|
+
v = v.replace("_", ".")
|
|
44
|
+
v = v.replace("-", ".")
|
|
45
|
+
m: Any = Pattern.PARSER.bound.search(v)
|
|
46
|
+
x: Any
|
|
47
|
+
y: Any
|
|
48
|
+
x, y = m.groups()
|
|
49
|
+
if x not in (None, "post", "rev", "r"):
|
|
50
|
+
raise ValueError
|
|
51
|
+
if y is not None:
|
|
52
|
+
return int(y)
|
|
@@ -0,0 +1,44 @@
|
|
|
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()
|
|
14
|
+
def parse_pre() -> tuple:
|
|
15
|
+
return None, None
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@parse_pre.overload(list)
|
|
19
|
+
def parse_pre(value: list) -> tuple:
|
|
20
|
+
x: Any
|
|
21
|
+
y: Any
|
|
22
|
+
x, y = map(segmenting.segment, value)
|
|
23
|
+
if (x, y) == (None, None):
|
|
24
|
+
return None, None
|
|
25
|
+
x = Cfg.cfg.data["phases"][x]
|
|
26
|
+
if not isinstance(y, int):
|
|
27
|
+
raise TypeError
|
|
28
|
+
return x, y
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@parse_pre.overload(str)
|
|
32
|
+
def parse_pre(value: str) -> tuple:
|
|
33
|
+
if value == "":
|
|
34
|
+
return [None, None]
|
|
35
|
+
v: str = value
|
|
36
|
+
v = v.replace("_", ".")
|
|
37
|
+
v = v.replace("-", ".")
|
|
38
|
+
m: Any = Pattern.PARSER.bound.search(v)
|
|
39
|
+
l: Any
|
|
40
|
+
n: Any
|
|
41
|
+
l, n = m.groups()
|
|
42
|
+
l = Cfg.cfg.data["phases"][l]
|
|
43
|
+
n = 0 if (n is None) else int(n)
|
|
44
|
+
return l, n
|
|
@@ -5,7 +5,6 @@ from typing import *
|
|
|
5
5
|
import setdoc
|
|
6
6
|
from overloadable import Overloadable
|
|
7
7
|
|
|
8
|
-
from v440._utils.Digest import Digest
|
|
9
8
|
from v440._utils.guarding import guard
|
|
10
9
|
from v440._utils.SlotStringer import SlotStringer
|
|
11
10
|
from v440.core.Release import Release
|
|
@@ -13,34 +12,6 @@ from v440.core.Release import Release
|
|
|
13
12
|
__all__ = ["Base"]
|
|
14
13
|
|
|
15
14
|
|
|
16
|
-
parse_epoch: Digest = Digest("parse_epoch")
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
@parse_epoch.overload()
|
|
20
|
-
def parse_epoch() -> int:
|
|
21
|
-
return 0
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
@parse_epoch.overload(int)
|
|
25
|
-
def parse_epoch(value: int) -> int:
|
|
26
|
-
if value < 0:
|
|
27
|
-
raise ValueError
|
|
28
|
-
return value
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
@parse_epoch.overload(str)
|
|
32
|
-
def parse_epoch(value: str) -> int:
|
|
33
|
-
s: str = value
|
|
34
|
-
if s.endswith("!"):
|
|
35
|
-
s = s[:-1]
|
|
36
|
-
if s == "":
|
|
37
|
-
return 0
|
|
38
|
-
ans: int = int(s)
|
|
39
|
-
if ans < 0:
|
|
40
|
-
raise ValueError
|
|
41
|
-
return ans
|
|
42
|
-
|
|
43
|
-
|
|
44
15
|
class Base(SlotStringer):
|
|
45
16
|
|
|
46
17
|
__slots__ = ("_epoch", "_release")
|
|
@@ -11,15 +11,18 @@ src/v440.egg-info/requires.txt
|
|
|
11
11
|
src/v440.egg-info/top_level.txt
|
|
12
12
|
src/v440/_utils/BaseStringer.py
|
|
13
13
|
src/v440/_utils/Cfg.py
|
|
14
|
-
src/v440/_utils/Digest.py
|
|
15
14
|
src/v440/_utils/ListStringer.py
|
|
16
15
|
src/v440/_utils/Pattern.py
|
|
17
16
|
src/v440/_utils/SlotStringer.py
|
|
18
17
|
src/v440/_utils/__init__.py
|
|
19
18
|
src/v440/_utils/cfg.toml
|
|
20
19
|
src/v440/_utils/guarding.py
|
|
21
|
-
src/v440/_utils/qualparse.py
|
|
22
|
-
src/v440/_utils/
|
|
20
|
+
src/v440/_utils/qualparse/Digest.py
|
|
21
|
+
src/v440/_utils/qualparse/__init__.py
|
|
22
|
+
src/v440/_utils/qualparse/devs.py
|
|
23
|
+
src/v440/_utils/qualparse/posts.py
|
|
24
|
+
src/v440/_utils/qualparse/pres.py
|
|
25
|
+
src/v440/_utils/qualparse/segmenting.py
|
|
23
26
|
src/v440/_utils/releaseparse/__init__.py
|
|
24
27
|
src/v440/_utils/releaseparse/listing.py
|
|
25
28
|
src/v440/_utils/releaseparse/numerals.py
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from typing import *
|
|
4
|
-
|
|
5
|
-
from v440._utils import segmenting
|
|
6
|
-
from v440._utils.Cfg import Cfg
|
|
7
|
-
from v440._utils.Digest import Digest
|
|
8
|
-
from v440._utils.Pattern import Pattern
|
|
9
|
-
|
|
10
|
-
parse_dev: Digest = Digest("parse_dev")
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
@parse_dev.overload()
|
|
14
|
-
def parse_dev() -> None:
|
|
15
|
-
return
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
@parse_dev.overload(int)
|
|
19
|
-
def parse_dev(value: int) -> int:
|
|
20
|
-
if value < 0:
|
|
21
|
-
raise ValueError
|
|
22
|
-
return value
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
@parse_dev.overload(list)
|
|
26
|
-
def parse_dev(value: list) -> Optional[int]:
|
|
27
|
-
x: Any
|
|
28
|
-
y: Any
|
|
29
|
-
x, y = map(segmenting.segment, value)
|
|
30
|
-
if x != "dev":
|
|
31
|
-
raise ValueError
|
|
32
|
-
if isinstance(y, str):
|
|
33
|
-
raise TypeError
|
|
34
|
-
return y
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
@parse_dev.overload(str)
|
|
38
|
-
def parse_dev(value: str) -> Optional[int]:
|
|
39
|
-
v: str = value
|
|
40
|
-
v = v.replace("_", ".")
|
|
41
|
-
v = v.replace("-", ".")
|
|
42
|
-
m: Any = Pattern.PARSER.bound.search(v)
|
|
43
|
-
x: Any
|
|
44
|
-
y: Any
|
|
45
|
-
x, y = m.groups()
|
|
46
|
-
if x not in (None, "dev"):
|
|
47
|
-
raise ValueError
|
|
48
|
-
if y is not None:
|
|
49
|
-
return int(y)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
parse_post: Digest = Digest("parse_post")
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
@parse_post.overload()
|
|
56
|
-
def parse_post() -> None:
|
|
57
|
-
return
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
@parse_post.overload(int)
|
|
61
|
-
def parse_post(value: int) -> int:
|
|
62
|
-
if value < 0:
|
|
63
|
-
raise ValueError
|
|
64
|
-
return value
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
@parse_post.overload(list)
|
|
68
|
-
def parse_post(value: list) -> Optional[int]:
|
|
69
|
-
v: list = list(map(segmenting.segment, value))
|
|
70
|
-
if len(v) == 0:
|
|
71
|
-
raise ValueError
|
|
72
|
-
if len(v) > 2:
|
|
73
|
-
raise ValueError
|
|
74
|
-
if len(v) == 1:
|
|
75
|
-
v.insert(0, "")
|
|
76
|
-
if v[0] not in ("post", "rev", "r", ""):
|
|
77
|
-
raise ValueError
|
|
78
|
-
if isinstance(v[1], str):
|
|
79
|
-
raise TypeError
|
|
80
|
-
return v[1]
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
@parse_post.overload(str)
|
|
84
|
-
def parse_post(value: str) -> Optional[int]:
|
|
85
|
-
v: str = value
|
|
86
|
-
v = v.replace("_", ".")
|
|
87
|
-
v = v.replace("-", ".")
|
|
88
|
-
m: Any = Pattern.PARSER.bound.search(v)
|
|
89
|
-
x: Any
|
|
90
|
-
y: Any
|
|
91
|
-
x, y = m.groups()
|
|
92
|
-
if x not in (None, "post", "rev", "r"):
|
|
93
|
-
raise ValueError
|
|
94
|
-
if y is not None:
|
|
95
|
-
return int(y)
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
parse_pre: Digest = Digest("parse_pre")
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
@parse_pre.overload()
|
|
102
|
-
def parse_pre() -> tuple:
|
|
103
|
-
return None, None
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
@parse_pre.overload(list)
|
|
107
|
-
def parse_pre(value: list) -> tuple:
|
|
108
|
-
x: Any
|
|
109
|
-
y: Any
|
|
110
|
-
x, y = map(segmenting.segment, value)
|
|
111
|
-
if (x, y) == (None, None):
|
|
112
|
-
return None, None
|
|
113
|
-
x = Cfg.cfg.data["phases"][x]
|
|
114
|
-
if not isinstance(y, int):
|
|
115
|
-
raise TypeError
|
|
116
|
-
return x, y
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
@parse_pre.overload(str)
|
|
120
|
-
def parse_pre(value: str) -> tuple:
|
|
121
|
-
if value == "":
|
|
122
|
-
return [None, None]
|
|
123
|
-
v: str = value
|
|
124
|
-
v = v.replace("_", ".")
|
|
125
|
-
v = v.replace("-", ".")
|
|
126
|
-
m: Any = Pattern.PARSER.bound.search(v)
|
|
127
|
-
l: Any
|
|
128
|
-
n: Any
|
|
129
|
-
l, n = m.groups()
|
|
130
|
-
l = Cfg.cfg.data["phases"][l]
|
|
131
|
-
n = 0 if (n is None) else int(n)
|
|
132
|
-
return l, n
|
|
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
|