v440 1.1.0.dev5__tar.gz → 2.0.0.dev0__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-1.1.0.dev5/src/v440.egg-info → v440-2.0.0.dev0}/PKG-INFO +1 -1
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/pyproject.toml +1 -1
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/core/Version.py +42 -81
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/tests/test_testdata.py +0 -2
- {v440-1.1.0.dev5 → v440-2.0.0.dev0/src/v440.egg-info}/PKG-INFO +1 -1
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/LICENSE.txt +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/MANIFEST.in +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/README.rst +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/setup.cfg +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/__init__.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/_utils/Base.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/_utils/Digest.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/_utils/Pattern.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/_utils/PhasedQualifierParser.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/_utils/SimpleQualifierParser.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/_utils/VList.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/_utils/WList.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/_utils/__init__.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/_utils/utils.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/core/Base_.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/core/Local.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/core/Pre.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/core/Public_.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/core/Qualification.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/core/Release.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/core/VersionError.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/core/__init__.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/tests/__init__.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/tests/test_version.py +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440/tests/testdata.toml +1 -1
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440.egg-info/SOURCES.txt +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440.egg-info/dependency_links.txt +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440.egg-info/requires.txt +0 -0
- {v440-1.1.0.dev5 → v440-2.0.0.dev0}/src/v440.egg-info/top_level.txt +0 -0
|
@@ -8,6 +8,7 @@ from catchlib import Catcher
|
|
|
8
8
|
|
|
9
9
|
from v440._utils.Base import Base
|
|
10
10
|
from v440._utils.Digest import Digest
|
|
11
|
+
from v440._utils.WList import WList
|
|
11
12
|
from v440.core.Base_ import Base_
|
|
12
13
|
from v440.core.Local import Local
|
|
13
14
|
from v440.core.Pre import Pre
|
|
@@ -16,23 +17,37 @@ from v440.core.Qualification import Qualification
|
|
|
16
17
|
from v440.core.Release import Release
|
|
17
18
|
from v440.core.VersionError import VersionError
|
|
18
19
|
|
|
20
|
+
parse_data: Digest = Digest("parse_data")
|
|
19
21
|
|
|
20
|
-
@dataclasses.dataclass(order=True)
|
|
21
|
-
class _Version:
|
|
22
|
-
public_: Public_ = dataclasses.field(default_factory=Public_)
|
|
23
|
-
local: Local = dataclasses.field(default_factory=Local)
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
@parse_data.overload()
|
|
24
|
+
def parse_data() -> list:
|
|
25
|
+
return [None, None]
|
|
27
26
|
|
|
28
|
-
def todict(self: Self) -> dict:
|
|
29
|
-
return dataclasses.asdict(self)
|
|
30
27
|
|
|
28
|
+
@parse_data.overload(int)
|
|
29
|
+
def parse_data(value: int) -> list:
|
|
30
|
+
return [value, None]
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
|
|
33
|
+
@parse_data.overload(list)
|
|
34
|
+
def parse_data(value: list) -> list:
|
|
35
|
+
return value
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@parse_data.overload(str)
|
|
39
|
+
def parse_data(value: str) -> list:
|
|
40
|
+
if "+" in value:
|
|
41
|
+
return value.split("+")
|
|
42
|
+
else:
|
|
43
|
+
return [value, None]
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class Version(WList):
|
|
47
|
+
__slots__ = ("_public_", "_local")
|
|
33
48
|
base: Self
|
|
34
49
|
base_: Base_
|
|
35
|
-
data:
|
|
50
|
+
data: list
|
|
36
51
|
dev: Optional[int]
|
|
37
52
|
epoch: int
|
|
38
53
|
local: Local
|
|
@@ -43,58 +58,14 @@ class Version(Base):
|
|
|
43
58
|
qualification: Qualification
|
|
44
59
|
release: Release
|
|
45
60
|
|
|
46
|
-
def __bool__(self: Self) -> bool:
|
|
47
|
-
return self._data != _Version()
|
|
48
|
-
|
|
49
61
|
def __init__(self: Self, data: Any = "0", /, **kwargs: Any) -> None:
|
|
50
|
-
|
|
62
|
+
self._public_ = Public_()
|
|
63
|
+
self._local = Local()
|
|
51
64
|
self.data = data
|
|
52
65
|
self.update(**kwargs)
|
|
53
66
|
|
|
54
|
-
def __le__(self: Self, other: Any) -> bool:
|
|
55
|
-
return self._data <= type(self)(other)._data
|
|
56
|
-
|
|
57
|
-
def __setattr__(self: Self, name: str, value: Any) -> None:
|
|
58
|
-
a: dict = dict()
|
|
59
|
-
b: dict = dict()
|
|
60
|
-
catcher: Catcher = Catcher()
|
|
61
|
-
x: Any
|
|
62
|
-
y: Any
|
|
63
|
-
for x, y in self._data.todict().items():
|
|
64
|
-
with catcher.catch(AttributeError):
|
|
65
|
-
a[x] = y.data
|
|
66
|
-
if catcher.caught is not None:
|
|
67
|
-
b[x] = y
|
|
68
|
-
try:
|
|
69
|
-
Base.__setattr__(self, name, value)
|
|
70
|
-
except VersionError:
|
|
71
|
-
for x, y in a.items():
|
|
72
|
-
getattr(self._data, x).data = y
|
|
73
|
-
for x, y in b.items():
|
|
74
|
-
setattr(self._data, x, y)
|
|
75
|
-
raise
|
|
76
|
-
|
|
77
67
|
def __str__(self: Self) -> str:
|
|
78
|
-
return self.
|
|
79
|
-
|
|
80
|
-
_data_fset: Digest = Digest("_data_fset")
|
|
81
|
-
|
|
82
|
-
@_data_fset.overload()
|
|
83
|
-
def _data_fset(self: Self) -> None:
|
|
84
|
-
self.public_ = None
|
|
85
|
-
self.local = None
|
|
86
|
-
|
|
87
|
-
@_data_fset.overload(int)
|
|
88
|
-
def _data_fset(self: Self, value: int) -> None:
|
|
89
|
-
self.public_ = value
|
|
90
|
-
self.local = None
|
|
91
|
-
|
|
92
|
-
@_data_fset.overload(str)
|
|
93
|
-
def _data_fset(self: Self, value: str) -> None:
|
|
94
|
-
if "+" in value:
|
|
95
|
-
self.public_, self.local = value.split("+", 1)
|
|
96
|
-
else:
|
|
97
|
-
self.public_, self.local = value, None
|
|
68
|
+
return self.format()
|
|
98
69
|
|
|
99
70
|
@property
|
|
100
71
|
def base(self: Self) -> Self:
|
|
@@ -102,27 +73,23 @@ class Version(Base):
|
|
|
102
73
|
|
|
103
74
|
@base.setter
|
|
104
75
|
def base(self: Self, value: Any) -> None:
|
|
105
|
-
self.
|
|
76
|
+
self.base_ = value
|
|
106
77
|
|
|
107
78
|
@property
|
|
108
79
|
def base_(self: Self) -> Base_:
|
|
109
|
-
return self.
|
|
80
|
+
return self.public_.base_
|
|
110
81
|
|
|
111
82
|
@base_.setter
|
|
112
83
|
def base_(self: Self, value: Any) -> None:
|
|
113
84
|
self.base_.data = value
|
|
114
85
|
|
|
115
|
-
def clear(self: Self) -> None:
|
|
116
|
-
self.data = None
|
|
117
|
-
|
|
118
|
-
def copy(self: Self) -> Self:
|
|
119
|
-
return type(self)(self)
|
|
120
|
-
|
|
121
86
|
@property
|
|
122
87
|
def data(self: Self) -> str:
|
|
123
|
-
return self.
|
|
88
|
+
return [self.public_, self.local]
|
|
124
89
|
|
|
125
|
-
data
|
|
90
|
+
@data.setter
|
|
91
|
+
def data(self: Self, value: Any) -> None:
|
|
92
|
+
self.public_, self.local = parse_data(value)
|
|
126
93
|
|
|
127
94
|
@property
|
|
128
95
|
def dev(self: Self) -> Optional[int]:
|
|
@@ -141,15 +108,7 @@ class Version(Base):
|
|
|
141
108
|
self.base_.epoch = value
|
|
142
109
|
|
|
143
110
|
def format(self: Self, cutoff: Any = None) -> str:
|
|
144
|
-
ans: str =
|
|
145
|
-
if self.epoch:
|
|
146
|
-
ans += "%s!" % self.epoch
|
|
147
|
-
ans += self.release.format(cutoff)
|
|
148
|
-
ans += str(self.pre)
|
|
149
|
-
if self.post is not None:
|
|
150
|
-
ans += ".post%s" % self.post
|
|
151
|
-
if self.dev is not None:
|
|
152
|
-
ans += ".dev%s" % self.dev
|
|
111
|
+
ans: str = self.public_.format(cutoff)
|
|
153
112
|
if self.local:
|
|
154
113
|
ans += "+%s" % self.local
|
|
155
114
|
return ans
|
|
@@ -165,11 +124,11 @@ class Version(Base):
|
|
|
165
124
|
|
|
166
125
|
@property
|
|
167
126
|
def local(self: Self) -> Local:
|
|
168
|
-
return self.
|
|
127
|
+
return self._local
|
|
169
128
|
|
|
170
129
|
@local.setter
|
|
171
130
|
def local(self: Self, value: Any) -> None:
|
|
172
|
-
self.
|
|
131
|
+
self.local.data = value
|
|
173
132
|
|
|
174
133
|
def packaging(self: Self) -> packaging.version.Version:
|
|
175
134
|
return packaging.version.Version(str(self))
|
|
@@ -196,11 +155,11 @@ class Version(Base):
|
|
|
196
155
|
|
|
197
156
|
@public.setter
|
|
198
157
|
def public(self: Self, value: Any) -> None:
|
|
199
|
-
self.public_
|
|
158
|
+
self.public_ = value
|
|
200
159
|
|
|
201
160
|
@property
|
|
202
161
|
def public_(self: Self) -> Self:
|
|
203
|
-
return self.
|
|
162
|
+
return self._public_
|
|
204
163
|
|
|
205
164
|
@public_.setter
|
|
206
165
|
def public_(self: Self, value: Any) -> None:
|
|
@@ -208,7 +167,7 @@ class Version(Base):
|
|
|
208
167
|
|
|
209
168
|
@property
|
|
210
169
|
def qualification(self: Self) -> Qualification:
|
|
211
|
-
return self.
|
|
170
|
+
return self.public_.qualification
|
|
212
171
|
|
|
213
172
|
@qualification.setter
|
|
214
173
|
def qualification(self: Self, value: Any) -> None:
|
|
@@ -235,3 +194,5 @@ class Version(Base):
|
|
|
235
194
|
m: str = "%r is not a property"
|
|
236
195
|
m %= x
|
|
237
196
|
raise AttributeError(m)
|
|
197
|
+
|
|
198
|
+
_data = data
|
|
@@ -191,8 +191,6 @@ class TestDataProperty(unittest.TestCase):
|
|
|
191
191
|
msg: str = "data_property %r" % key
|
|
192
192
|
self.v.data = query
|
|
193
193
|
self.assertEqual(solution, str(self.v), msg=msg)
|
|
194
|
-
self.assertEqual(self.v.data, str(self.v), msg=msg)
|
|
195
|
-
self.assertEqual(type(self.v.data), str, msg=msg)
|
|
196
194
|
|
|
197
195
|
|
|
198
196
|
class TestVersionRelease(unittest.TestCase):
|
|
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
|
|
@@ -721,7 +721,6 @@ Post-releases = [
|
|
|
721
721
|
"Invalid cases (testing error handling for extreme cases)" = [
|
|
722
722
|
"1.0.0alpha_beta",
|
|
723
723
|
"1!2.0.0+",
|
|
724
|
-
"1.0.0++local.version.doubleplus",
|
|
725
724
|
]
|
|
726
725
|
"Cases with inconsistent pre-release and post-release ordering" = [
|
|
727
726
|
"1.0.0.post1a1",
|
|
@@ -741,6 +740,7 @@ Post-releases = [
|
|
|
741
740
|
"1.0.0a1..post2",
|
|
742
741
|
"2!1..0",
|
|
743
742
|
"1.0.0+build@sha.123",
|
|
743
|
+
"1.0.0++local.version.doubleplus",
|
|
744
744
|
]
|
|
745
745
|
|
|
746
746
|
[devint.test_dev_as_int]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|