v440 2.0.0.dev29__tar.gz → 2.0.0.dev31__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.dev29/src/v440.egg-info → v440-2.0.0.dev31}/PKG-INFO +1 -1
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/pyproject.toml +1 -1
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/core/Version.py +0 -24
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/tests/test_testdata.py +43 -67
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/tests/test_version.py +64 -21
- {v440-2.0.0.dev29 → v440-2.0.0.dev31/src/v440.egg-info}/PKG-INFO +1 -1
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/LICENSE.txt +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/MANIFEST.in +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/README.rst +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/setup.cfg +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/__init__.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/BaseList.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/Cfg.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/Digest.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/Pattern.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/SimpleQualifierParser.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/SlotList.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/VList.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/__init__.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/cfg.toml +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/qualparse.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/utils.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/core/Base.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/core/Local.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/core/Public.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/core/Qualification.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/core/Release.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/core/VersionError.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/core/__init__.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/tests/__init__.py +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/tests/testdata.toml +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440.egg-info/SOURCES.txt +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440.egg-info/dependency_links.txt +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440.egg-info/requires.txt +0 -0
- {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440.egg-info/top_level.txt +0 -0
|
@@ -110,22 +110,6 @@ class Version(SlotList):
|
|
|
110
110
|
def packaging(self: Self) -> packaging.version.Version:
|
|
111
111
|
return packaging.version.Version(str(self))
|
|
112
112
|
|
|
113
|
-
@property
|
|
114
|
-
def post(self: Self) -> Optional[int]:
|
|
115
|
-
return self.qualification.post
|
|
116
|
-
|
|
117
|
-
@post.setter
|
|
118
|
-
def post(self: Self, value: Any) -> None:
|
|
119
|
-
self.qualification.post = value
|
|
120
|
-
|
|
121
|
-
@property
|
|
122
|
-
def pre(self: Self) -> list:
|
|
123
|
-
return self.qualification.pre
|
|
124
|
-
|
|
125
|
-
@pre.setter
|
|
126
|
-
def pre(self: Self, value: Any) -> None:
|
|
127
|
-
self.qualification.pre = value
|
|
128
|
-
|
|
129
113
|
@property
|
|
130
114
|
def public(self: Self) -> Self:
|
|
131
115
|
return self._public
|
|
@@ -134,11 +118,3 @@ class Version(SlotList):
|
|
|
134
118
|
@guard
|
|
135
119
|
def public(self: Self, value: Any) -> None:
|
|
136
120
|
self.public.data = value
|
|
137
|
-
|
|
138
|
-
@property
|
|
139
|
-
def qualification(self: Self) -> Qualification:
|
|
140
|
-
return self.public.qualification
|
|
141
|
-
|
|
142
|
-
@qualification.setter
|
|
143
|
-
def qualification(self: Self, value: Any) -> None:
|
|
144
|
-
self.qualification.data = value
|
|
@@ -8,7 +8,6 @@ from typing import *
|
|
|
8
8
|
|
|
9
9
|
import iterprod
|
|
10
10
|
import packaging.version
|
|
11
|
-
from catchlib import Catcher
|
|
12
11
|
|
|
13
12
|
from v440.core.Release import Release
|
|
14
13
|
from v440.core.Version import Version
|
|
@@ -78,11 +77,11 @@ class TestVersionLocalVersionError(unittest.TestCase):
|
|
|
78
77
|
k: str
|
|
79
78
|
v: dict
|
|
80
79
|
for k, v in Util.util.data["local_VersionError"].items():
|
|
81
|
-
self.
|
|
80
|
+
with self.subTest(key=k):
|
|
81
|
+
self.go(**v)
|
|
82
82
|
|
|
83
83
|
def go(
|
|
84
84
|
self: Self,
|
|
85
|
-
key: str,
|
|
86
85
|
query: list,
|
|
87
86
|
) -> None:
|
|
88
87
|
version: Version = Version()
|
|
@@ -90,16 +89,16 @@ class TestVersionLocalVersionError(unittest.TestCase):
|
|
|
90
89
|
version.local = query
|
|
91
90
|
|
|
92
91
|
|
|
93
|
-
class
|
|
92
|
+
class TestVersionLocalGo(unittest.TestCase):
|
|
94
93
|
def test_0(self: Self) -> None:
|
|
95
94
|
k: str
|
|
96
95
|
v: dict
|
|
97
96
|
for k, v in Util.util.data["local_attr"].items():
|
|
98
|
-
self.
|
|
97
|
+
with self.subTest(key=k):
|
|
98
|
+
self.go(**v)
|
|
99
99
|
|
|
100
|
-
def
|
|
100
|
+
def go(
|
|
101
101
|
self: Self,
|
|
102
|
-
key: str,
|
|
103
102
|
query: list,
|
|
104
103
|
attrname: Optional[str] = None,
|
|
105
104
|
args: list | tuple = (),
|
|
@@ -117,8 +116,16 @@ class TestVersionLocal(unittest.TestCase):
|
|
|
117
116
|
self.assertEqual(version.local, target)
|
|
118
117
|
|
|
119
118
|
|
|
120
|
-
class
|
|
121
|
-
|
|
119
|
+
class TestVersionEpochGo(unittest.TestCase):
|
|
120
|
+
|
|
121
|
+
def test_0(self: Self) -> None:
|
|
122
|
+
k: str
|
|
123
|
+
v: dict
|
|
124
|
+
for k, v in Util.util.data["epoch"].items():
|
|
125
|
+
with self.subTest(key=k):
|
|
126
|
+
self.go(**v)
|
|
127
|
+
|
|
128
|
+
def go(
|
|
122
129
|
self: Self,
|
|
123
130
|
full: Any,
|
|
124
131
|
part: Any,
|
|
@@ -132,23 +139,16 @@ class TestVersionEpoch(unittest.TestCase):
|
|
|
132
139
|
self.assertIsInstance(v.epoch, int, msg=msg)
|
|
133
140
|
self.assertEqual(v.epoch, part, msg=msg)
|
|
134
141
|
|
|
135
|
-
|
|
142
|
+
|
|
143
|
+
class TestSlicingGo(unittest.TestCase):
|
|
144
|
+
def test_slicing_3(self: Self) -> None:
|
|
145
|
+
sli: dict = Util.util.data["slicingmethod"]
|
|
136
146
|
k: str
|
|
137
147
|
v: dict
|
|
138
|
-
for k, v in
|
|
139
|
-
self.
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
class TestSlicing(unittest.TestCase):
|
|
143
|
-
|
|
144
|
-
def test_slicing_2(self: Self) -> None:
|
|
145
|
-
v: Version = Version("1.2.3.4.5.6.7.8.9.10")
|
|
146
|
-
catcher: Catcher = Catcher()
|
|
147
|
-
with catcher.catch(Exception):
|
|
148
|
-
v.public.base.release[-8:15:5] = 777
|
|
149
|
-
self.assertNotEqual(catcher.caught, None)
|
|
148
|
+
for k, v in sli.items():
|
|
149
|
+
self.go(**v, key=k)
|
|
150
150
|
|
|
151
|
-
def
|
|
151
|
+
def go(
|
|
152
152
|
self: Self,
|
|
153
153
|
query: Any,
|
|
154
154
|
change: Any,
|
|
@@ -162,19 +162,6 @@ class TestSlicing(unittest.TestCase):
|
|
|
162
162
|
v.public.base.release[start:stop:step] = change
|
|
163
163
|
self.assertEqual(str(v), solution, "slicingmethod %s" % key)
|
|
164
164
|
|
|
165
|
-
def test_slicing_3(self: Self) -> None:
|
|
166
|
-
sli: dict = Util.util.data["slicingmethod"]
|
|
167
|
-
k: str
|
|
168
|
-
v: dict
|
|
169
|
-
for k, v in sli.items():
|
|
170
|
-
self.slicingmethod(**v, key=k)
|
|
171
|
-
|
|
172
|
-
def test_slicing_7(self: Self) -> None:
|
|
173
|
-
# test_slicing_7
|
|
174
|
-
v: Version = Version("1.2.3.4.5.6.7.8.9.10")
|
|
175
|
-
del v.public.base.release[-8:15:5]
|
|
176
|
-
self.assertEqual(str(v), "1.2.4.5.6.7.9.10")
|
|
177
|
-
|
|
178
165
|
|
|
179
166
|
class TestDataProperty(unittest.TestCase):
|
|
180
167
|
def test_data(self: Self) -> None:
|
|
@@ -207,21 +194,9 @@ class TestVersionRelease(unittest.TestCase):
|
|
|
207
194
|
self.assertEqual(release, solution)
|
|
208
195
|
|
|
209
196
|
|
|
210
|
-
class
|
|
211
|
-
|
|
212
|
-
def test_initial_none_dev(self: Self) -> None:
|
|
213
|
-
v: Version = Version("1.2.3")
|
|
214
|
-
self.assertEqual(str(v), "1.2.3")
|
|
215
|
-
self.assertIsNone(v.dev)
|
|
216
|
-
|
|
217
|
-
def test_dev_as_none(self: Self) -> None:
|
|
218
|
-
v: Version = Version("1.2.3")
|
|
219
|
-
v.dev = None
|
|
220
|
-
self.assertEqual(str(v), "1.2.3")
|
|
221
|
-
self.assertIsNone(v.dev)
|
|
222
|
-
|
|
197
|
+
class TestDevGo(unittest.TestCase):
|
|
223
198
|
def test_dev_as_tuple(self: Self) -> None:
|
|
224
|
-
self.
|
|
199
|
+
self.go(
|
|
225
200
|
key="test_dev_as_tuple",
|
|
226
201
|
v_version="1.2.3",
|
|
227
202
|
v_dev=("dev", "5000"),
|
|
@@ -233,9 +208,10 @@ class TestDev(unittest.TestCase):
|
|
|
233
208
|
k: str
|
|
234
209
|
v: dict
|
|
235
210
|
for k, v in Util.util.data["devint"].items():
|
|
236
|
-
self.
|
|
211
|
+
with self.subTest(key=k):
|
|
212
|
+
self.go(**v, key=k)
|
|
237
213
|
|
|
238
|
-
def
|
|
214
|
+
def go(
|
|
239
215
|
self: Self,
|
|
240
216
|
key: str,
|
|
241
217
|
v_version: Any,
|
|
@@ -246,35 +222,27 @@ class TestDev(unittest.TestCase):
|
|
|
246
222
|
):
|
|
247
223
|
msg: str = "dev %r" % key
|
|
248
224
|
v: Version = Version(v_version)
|
|
249
|
-
v.dev = v_dev
|
|
225
|
+
v.public.qualification.dev = v_dev
|
|
250
226
|
self.assertEqual(str(v), v_str, msg=msg)
|
|
251
|
-
self.assertIsInstance(v.dev, dev_type, msg=msg)
|
|
252
|
-
self.assertEqual(v.dev, v_ans, msg=msg)
|
|
227
|
+
self.assertIsInstance(v.public.qualification.dev, dev_type, msg=msg)
|
|
228
|
+
self.assertEqual(v.public.qualification.dev, v_ans, msg=msg)
|
|
253
229
|
|
|
254
230
|
|
|
255
|
-
class
|
|
256
|
-
|
|
257
|
-
def test_version_with_invalid_specifiers(self: Self) -> None:
|
|
258
|
-
# Test version with invalid specifiers that should raise an error
|
|
259
|
-
with self.assertRaises(VersionError):
|
|
260
|
-
Version("1.2.3--4")
|
|
261
|
-
|
|
262
|
-
with self.assertRaises(VersionError):
|
|
263
|
-
Version("1.2.3a1--4")
|
|
231
|
+
class TestVersionSpecifiersGo(unittest.TestCase):
|
|
264
232
|
|
|
265
233
|
def test_spec_toml(self: Self) -> None:
|
|
266
234
|
k: str
|
|
267
235
|
v: dict
|
|
268
236
|
for k, v in Util.util.data["spec"].items():
|
|
269
|
-
self.
|
|
237
|
+
self.go(**v, key=k)
|
|
270
238
|
|
|
271
|
-
def
|
|
239
|
+
def go(self: Self, string_a: str, string_b: str, key: str = "") -> None:
|
|
272
240
|
msg: str = "spec %r" % key
|
|
273
241
|
version: Version = Version(string_a)
|
|
274
242
|
self.assertEqual(str(version), string_b, msg=msg)
|
|
275
243
|
|
|
276
244
|
|
|
277
|
-
class
|
|
245
|
+
class TestPackagingA(unittest.TestCase):
|
|
278
246
|
def test_strings_a(self: Self) -> None:
|
|
279
247
|
a: packaging.version.Version
|
|
280
248
|
b: str
|
|
@@ -291,6 +259,8 @@ class TestPackaging(unittest.TestCase):
|
|
|
291
259
|
g = Version(s).format(f)
|
|
292
260
|
self.assertEqual(b, g)
|
|
293
261
|
|
|
262
|
+
|
|
263
|
+
class TestPackagingB(unittest.TestCase):
|
|
294
264
|
def test_strings_b(self: Self) -> None:
|
|
295
265
|
a: packaging.version.Version
|
|
296
266
|
b: packaging.version.Version
|
|
@@ -305,6 +275,8 @@ class TestPackaging(unittest.TestCase):
|
|
|
305
275
|
msg = f"{s} should match packaging.version.Version"
|
|
306
276
|
self.assertEqual(a, b, msg=msg)
|
|
307
277
|
|
|
278
|
+
|
|
279
|
+
class TestPackagingC(unittest.TestCase):
|
|
308
280
|
def test_strings_c(self: Self) -> None:
|
|
309
281
|
pure: list = list()
|
|
310
282
|
l: list
|
|
@@ -336,6 +308,8 @@ class TestPackaging(unittest.TestCase):
|
|
|
336
308
|
msg = f"{op} should match for {x!r} and {y!r}"
|
|
337
309
|
self.assertEqual(native, convert, msg=msg)
|
|
338
310
|
|
|
311
|
+
|
|
312
|
+
class TestPackagingField(unittest.TestCase):
|
|
339
313
|
def test_field(self: Self) -> None:
|
|
340
314
|
versionable: list = list()
|
|
341
315
|
l: list
|
|
@@ -362,6 +336,8 @@ class TestPackaging(unittest.TestCase):
|
|
|
362
336
|
version_obj.local = v.packaging().local
|
|
363
337
|
self.assertEqual(str(v.local), str(version_obj.local))
|
|
364
338
|
|
|
339
|
+
|
|
340
|
+
class TestPackagingExc(unittest.TestCase):
|
|
365
341
|
def test_exc_pack(self: Self) -> None:
|
|
366
342
|
impure: list = list()
|
|
367
343
|
l: list
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import unittest
|
|
2
2
|
from typing import *
|
|
3
3
|
|
|
4
|
+
from catchlib import Catcher
|
|
5
|
+
|
|
4
6
|
from v440.core.Qualification import Qualification
|
|
5
7
|
from v440.core.Version import Version
|
|
6
8
|
from v440.core.VersionError import VersionError
|
|
@@ -15,7 +17,7 @@ class TestVersionManipulation(unittest.TestCase):
|
|
|
15
17
|
# Modify individual parts of the version
|
|
16
18
|
v.public.base.release.major = 2
|
|
17
19
|
v.public.base.release.minor = 5
|
|
18
|
-
v.qualification = "beta.1"
|
|
20
|
+
v.public.qualification = "beta.1"
|
|
19
21
|
v.local = "local.7.dev"
|
|
20
22
|
|
|
21
23
|
# Verify the expected output
|
|
@@ -54,40 +56,40 @@ class TestPre(unittest.TestCase):
|
|
|
54
56
|
|
|
55
57
|
def test_pre(self: Self) -> None:
|
|
56
58
|
v: Version = Version("1.2.3")
|
|
57
|
-
backup: Qualification = v.qualification
|
|
59
|
+
backup: Qualification = v.public.qualification
|
|
58
60
|
|
|
59
61
|
# Initial version, no pre-release version
|
|
60
62
|
self.assertEqual(str(v), "1.2.3")
|
|
61
|
-
self.assertEqual(v.qualification, [None, None, None, None])
|
|
63
|
+
self.assertEqual(v.public.qualification, [None, None, None, None])
|
|
62
64
|
|
|
63
65
|
# Set pre-release version to "a1"
|
|
64
|
-
v.qualification = "a1"
|
|
66
|
+
v.public.qualification = "a1"
|
|
65
67
|
self.assertEqual(str(v), "1.2.3a1")
|
|
66
|
-
self.assertEqual(str(v.qualification), "a1")
|
|
68
|
+
self.assertEqual(str(v.public.qualification), "a1")
|
|
67
69
|
|
|
68
70
|
# Modify pre-release phase to "preview"
|
|
69
|
-
v.qualification.prephase = "preview"
|
|
71
|
+
v.public.qualification.prephase = "preview"
|
|
70
72
|
self.assertEqual(str(v), "1.2.3rc1")
|
|
71
|
-
self.assertEqual(str(v.qualification), "rc1")
|
|
73
|
+
self.assertEqual(str(v.public.qualification), "rc1")
|
|
72
74
|
|
|
73
75
|
# Modify subphase to "42"
|
|
74
|
-
v.qualification.presubphase = "42"
|
|
76
|
+
v.public.qualification.presubphase = "42"
|
|
75
77
|
self.assertEqual(str(v), "1.2.3rc42")
|
|
76
|
-
self.assertEqual(str(v.qualification), "rc42")
|
|
78
|
+
self.assertEqual(str(v.public.qualification), "rc42")
|
|
77
79
|
|
|
78
80
|
# Change phase to a formatted string "BeTa"
|
|
79
|
-
v.qualification.prephase = """
|
|
81
|
+
v.public.qualification.prephase = """
|
|
80
82
|
BeTa
|
|
81
83
|
"""
|
|
82
84
|
self.assertEqual(str(v), "1.2.3b42")
|
|
83
|
-
self.assertEqual(str(v.qualification), "b42")
|
|
85
|
+
self.assertEqual(str(v.public.qualification), "b42")
|
|
84
86
|
|
|
85
|
-
self.assertEqual(v.qualification, backup)
|
|
87
|
+
self.assertEqual(v.public.qualification, backup)
|
|
86
88
|
|
|
87
89
|
# Set pre-release to None
|
|
88
|
-
v.qualification = None
|
|
90
|
+
v.public.qualification = None
|
|
89
91
|
self.assertEqual(str(v), "1.2.3")
|
|
90
|
-
self.assertEqual(v.qualification, [None, None, None, None])
|
|
92
|
+
self.assertEqual(v.public.qualification, [None, None, None, None])
|
|
91
93
|
|
|
92
94
|
|
|
93
95
|
class TestExample(unittest.TestCase):
|
|
@@ -149,25 +151,25 @@ class TestExample(unittest.TestCase):
|
|
|
149
151
|
def test_example_5(self: Self) -> None:
|
|
150
152
|
v: Version = Version("2.0.0-alpha.1")
|
|
151
153
|
self.assertEqual(str(v), "2a1") # Pre-release version
|
|
152
|
-
v.pre = "beta.2"
|
|
154
|
+
v.public.qualification.pre = "beta.2"
|
|
153
155
|
self.assertEqual(str(v), "2b2") # Modified pre-release version
|
|
154
156
|
with self.assertRaises(Exception):
|
|
155
|
-
v.qualification.pre[1] = 4
|
|
157
|
+
v.public.qualification.pre[1] = 4
|
|
156
158
|
self.assertEqual(str(v), "2b2") # Further modified pre-release version
|
|
157
|
-
v.qualification.prephase = "PrEvIeW"
|
|
159
|
+
v.public.qualification.prephase = "PrEvIeW"
|
|
158
160
|
self.assertEqual(str(v), "2rc2") # Even further modified pre-release version
|
|
159
161
|
|
|
160
162
|
def test_example_6(self: Self) -> None:
|
|
161
163
|
v: Version = Version("1.2.3")
|
|
162
|
-
v.post = "post1"
|
|
164
|
+
v.public.qualification.post = "post1"
|
|
163
165
|
v.local = "local.7.dev"
|
|
164
166
|
self.assertEqual(str(v), "1.2.3.post1+local.7.dev") # Post-release version
|
|
165
167
|
self.assertEqual(v.format("-1"), "1.2.post1+local.7.dev") # Formatted version
|
|
166
|
-
v.post = "post.2"
|
|
168
|
+
v.public.qualification.post = "post.2"
|
|
167
169
|
self.assertEqual(str(v), "1.2.3.post2+local.7.dev") # Modified version
|
|
168
|
-
v.post = None
|
|
170
|
+
v.public.qualification.post = None
|
|
169
171
|
self.assertEqual(str(v), "1.2.3+local.7.dev") # Modified without post
|
|
170
|
-
v.post = "post", 3
|
|
172
|
+
v.public.qualification.post = "post", 3
|
|
171
173
|
v.local.sort()
|
|
172
174
|
self.assertEqual(str(v), "1.2.3.post3+dev.local.7") # After sorting local
|
|
173
175
|
v.local.append(8)
|
|
@@ -396,5 +398,46 @@ class TestVersionLocal(unittest.TestCase):
|
|
|
396
398
|
self.assertEqual(result, [1, "dev", "build"])
|
|
397
399
|
|
|
398
400
|
|
|
401
|
+
class TestSlicingNoGo(unittest.TestCase):
|
|
402
|
+
|
|
403
|
+
def test_slicing_2(self: Self) -> None:
|
|
404
|
+
v: Version = Version("1.2.3.4.5.6.7.8.9.10")
|
|
405
|
+
catcher: Catcher = Catcher()
|
|
406
|
+
with catcher.catch(Exception):
|
|
407
|
+
v.public.base.release[-8:15:5] = 777
|
|
408
|
+
self.assertNotEqual(catcher.caught, None)
|
|
409
|
+
|
|
410
|
+
def test_slicing_7(self: Self) -> None:
|
|
411
|
+
# test_slicing_7
|
|
412
|
+
v: Version = Version("1.2.3.4.5.6.7.8.9.10")
|
|
413
|
+
del v.public.base.release[-8:15:5]
|
|
414
|
+
self.assertEqual(str(v), "1.2.4.5.6.7.9.10")
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
class TestDevNoGo(unittest.TestCase):
|
|
418
|
+
|
|
419
|
+
def test_initial_none_dev(self: Self) -> None:
|
|
420
|
+
v: Version = Version("1.2.3")
|
|
421
|
+
self.assertEqual(str(v), "1.2.3")
|
|
422
|
+
self.assertIsNone(v.public.qualification.dev)
|
|
423
|
+
|
|
424
|
+
def test_dev_as_none(self: Self) -> None:
|
|
425
|
+
v: Version = Version("1.2.3")
|
|
426
|
+
v.public.qualification.dev = None
|
|
427
|
+
self.assertEqual(str(v), "1.2.3")
|
|
428
|
+
self.assertIsNone(v.public.qualification.dev)
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
class TestVersionSpecifiersNoGo(unittest.TestCase):
|
|
432
|
+
|
|
433
|
+
def test_version_with_invalid_specifiers(self: Self) -> None:
|
|
434
|
+
# Test version with invalid specifiers that should raise an error
|
|
435
|
+
with self.assertRaises(VersionError):
|
|
436
|
+
Version("1.2.3--4")
|
|
437
|
+
|
|
438
|
+
with self.assertRaises(VersionError):
|
|
439
|
+
Version("1.2.3a1--4")
|
|
440
|
+
|
|
441
|
+
|
|
399
442
|
if __name__ == "__main__":
|
|
400
443
|
unittest.main()
|
|
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
|