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.
Files changed (43) hide show
  1. {v440-2.0.0.dev80/src/v440.egg-info → v440-2.0.0.dev82}/PKG-INFO +1 -1
  2. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/pyproject.toml +1 -1
  3. v440-2.0.0.dev82/src/v440/_utils/qualparse/__init__.py +3 -0
  4. v440-2.0.0.dev82/src/v440/_utils/qualparse/devs.py +48 -0
  5. v440-2.0.0.dev82/src/v440/_utils/qualparse/posts.py +52 -0
  6. v440-2.0.0.dev82/src/v440/_utils/qualparse/pres.py +44 -0
  7. {v440-2.0.0.dev80/src/v440/_utils → v440-2.0.0.dev82/src/v440/_utils/qualparse}/segmenting.py +1 -1
  8. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/core/Base.py +0 -29
  9. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/core/Local.py +0 -3
  10. {v440-2.0.0.dev80 → v440-2.0.0.dev82/src/v440.egg-info}/PKG-INFO +1 -1
  11. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440.egg-info/SOURCES.txt +6 -3
  12. v440-2.0.0.dev80/src/v440/_utils/qualparse.py +0 -132
  13. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/LICENSE.txt +0 -0
  14. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/MANIFEST.in +0 -0
  15. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/README.rst +0 -0
  16. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/setup.cfg +0 -0
  17. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/__init__.py +0 -0
  18. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/BaseStringer.py +0 -0
  19. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/Cfg.py +0 -0
  20. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/ListStringer.py +0 -0
  21. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/Pattern.py +0 -0
  22. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/SlotStringer.py +0 -0
  23. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/__init__.py +0 -0
  24. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/cfg.toml +0 -0
  25. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/guarding.py +0 -0
  26. {v440-2.0.0.dev80/src/v440/_utils → v440-2.0.0.dev82/src/v440/_utils/qualparse}/Digest.py +0 -0
  27. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/releaseparse/__init__.py +0 -0
  28. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/releaseparse/listing.py +0 -0
  29. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/releaseparse/numerals.py +0 -0
  30. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/_utils/releaseparse/ranging.py +0 -0
  31. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/core/Public.py +0 -0
  32. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/core/Qual.py +0 -0
  33. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/core/Release.py +0 -0
  34. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/core/Version.py +0 -0
  35. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/core/VersionError.py +0 -0
  36. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/core/__init__.py +0 -0
  37. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/tests/__init__.py +0 -0
  38. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/tests/test_testdata.py +0 -0
  39. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/tests/test_version.py +0 -0
  40. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440/tests/testdata.toml +0 -0
  41. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440.egg-info/dependency_links.txt +0 -0
  42. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/src/v440.egg-info/requires.txt +0 -0
  43. {v440-2.0.0.dev80 → v440-2.0.0.dev82}/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.dev80
3
+ Version: 2.0.0.dev82
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.dev80"
39
+ version = "2.0.0.dev82"
40
40
 
41
41
  [project.license]
42
42
  file = "LICENSE.txt"
@@ -0,0 +1,3 @@
1
+ from v440._utils.qualparse.devs import parse_dev
2
+ from v440._utils.qualparse.posts import parse_post
3
+ from v440._utils.qualparse.pres import parse_pre
@@ -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
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  import string
4
4
  from typing import *
5
5
 
6
- from v440._utils.Digest import Digest
6
+ from v440._utils.qualparse.Digest import Digest
7
7
  from v440.core.VersionError import VersionError
8
8
 
9
9
 
@@ -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")
@@ -4,9 +4,6 @@ import operator
4
4
  import string as string_
5
5
  from typing import *
6
6
 
7
- import setdoc
8
-
9
- from v440._utils import segmenting
10
7
  from v440._utils.ListStringer import ListStringer
11
8
 
12
9
  __all__ = ["Local"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: v440
3
- Version: 2.0.0.dev80
3
+ Version: 2.0.0.dev82
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)
@@ -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/segmenting.py
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