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