v440 2.0.0.dev13__tar.gz → 2.0.0.dev15__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.dev13/src/v440.egg-info → v440-2.0.0.dev15}/PKG-INFO +1 -1
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/pyproject.toml +1 -1
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/_utils/SimpleQualifierParser.py +6 -4
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/_utils/utils.py +1 -1
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/Public.py +8 -10
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/tests/test_testdata.py +16 -20
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/tests/test_version.py +118 -102
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/tests/testdata.toml +7 -4
- {v440-2.0.0.dev13 → v440-2.0.0.dev15/src/v440.egg-info}/PKG-INFO +1 -1
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/LICENSE.txt +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/MANIFEST.in +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/README.rst +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/setup.cfg +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/__init__.py +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/_utils/Digest.py +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/_utils/Pattern.py +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/_utils/VList.py +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/_utils/WList.py +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/_utils/__init__.py +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/Base.py +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/Local.py +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/Pre.py +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/Qualification.py +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/Release.py +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/Version.py +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/VersionError.py +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/__init__.py +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/tests/__init__.py +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440.egg-info/SOURCES.txt +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440.egg-info/dependency_links.txt +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440.egg-info/requires.txt +0 -0
- {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440.egg-info/top_level.txt +0 -0
|
@@ -38,13 +38,15 @@ class SimpleQualifierParser:
|
|
|
38
38
|
v = v.replace("_", ".")
|
|
39
39
|
v = v.replace("-", ".")
|
|
40
40
|
m: Any = Pattern.PARSER.bound.search(v)
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
x: Any
|
|
42
|
+
y: Any
|
|
43
|
+
x, y = m.groups()
|
|
44
|
+
if x not in self.keysforstr:
|
|
43
45
|
raise ValueError
|
|
44
|
-
if
|
|
46
|
+
if y is None:
|
|
45
47
|
return None
|
|
46
48
|
else:
|
|
47
|
-
return int(
|
|
49
|
+
return int(y)
|
|
48
50
|
|
|
49
51
|
def __init__(
|
|
50
52
|
self: Self,
|
|
@@ -51,6 +51,14 @@ class Public(WList):
|
|
|
51
51
|
def __str__(self: Self) -> str:
|
|
52
52
|
return self.format()
|
|
53
53
|
|
|
54
|
+
@property
|
|
55
|
+
def _data(self: Self) -> list:
|
|
56
|
+
return [self.base, self.qualification]
|
|
57
|
+
|
|
58
|
+
@_data.setter
|
|
59
|
+
def _data(self: Self, value: Any) -> None:
|
|
60
|
+
self.base, self.qualification = parse_data(value)
|
|
61
|
+
|
|
54
62
|
@property
|
|
55
63
|
def base(self: Self) -> Base:
|
|
56
64
|
return self._base
|
|
@@ -59,14 +67,6 @@ class Public(WList):
|
|
|
59
67
|
def base(self: Self, value: Any) -> None:
|
|
60
68
|
self.base.data = value
|
|
61
69
|
|
|
62
|
-
@property
|
|
63
|
-
def data(self: Self) -> list:
|
|
64
|
-
return [self.base, self.qualification]
|
|
65
|
-
|
|
66
|
-
@data.setter
|
|
67
|
-
def data(self: Self, value: Any) -> None:
|
|
68
|
-
self.base, self.qualification = parse_data(value)
|
|
69
|
-
|
|
70
70
|
def format(self: Self, cutoff: Any = None) -> str:
|
|
71
71
|
return self.base.format(cutoff) + str(self.qualification)
|
|
72
72
|
|
|
@@ -77,5 +77,3 @@ class Public(WList):
|
|
|
77
77
|
@qualification.setter
|
|
78
78
|
def qualification(self: Self, value: Any) -> None:
|
|
79
79
|
self.qualification.data = value
|
|
80
|
-
|
|
81
|
-
_data = data
|
|
@@ -10,6 +10,7 @@ import iterprod
|
|
|
10
10
|
import packaging.version
|
|
11
11
|
from catchlib import Catcher
|
|
12
12
|
|
|
13
|
+
from v440.core.Release import Release
|
|
13
14
|
from v440.core.Version import Version
|
|
14
15
|
from v440.core.VersionError import VersionError
|
|
15
16
|
|
|
@@ -77,9 +78,9 @@ class TestVersionLocalVersionError(unittest.TestCase):
|
|
|
77
78
|
k: str
|
|
78
79
|
v: dict
|
|
79
80
|
for k, v in Util.util.data["local_VersionError"].items():
|
|
80
|
-
self.
|
|
81
|
+
self.go(**v, key=k)
|
|
81
82
|
|
|
82
|
-
def
|
|
83
|
+
def go(
|
|
83
84
|
self: Self,
|
|
84
85
|
key: str,
|
|
85
86
|
query: list,
|
|
@@ -177,37 +178,32 @@ class TestSlicing(unittest.TestCase):
|
|
|
177
178
|
|
|
178
179
|
class TestDataProperty(unittest.TestCase):
|
|
179
180
|
def test_data(self: Self) -> None:
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
self.data(**v, key=k)
|
|
183
|
-
self.data(query=None, solution="0")
|
|
181
|
+
for k, v in Util.util.data["data-property"].items():
|
|
182
|
+
self.go(**v, key=k)
|
|
184
183
|
|
|
185
|
-
def
|
|
184
|
+
def go(
|
|
186
185
|
self: Self,
|
|
187
|
-
query: Any,
|
|
188
|
-
solution:
|
|
186
|
+
query: Any = None,
|
|
187
|
+
solution: Any = None,
|
|
189
188
|
key: str = "",
|
|
190
189
|
) -> None:
|
|
191
|
-
msg: str = "
|
|
192
|
-
|
|
193
|
-
|
|
190
|
+
msg: str = "data-property %r" % key
|
|
191
|
+
version: Version = Version()
|
|
192
|
+
version.data = query
|
|
193
|
+
self.assertEqual(solution, str(version), msg=msg)
|
|
194
194
|
|
|
195
195
|
|
|
196
196
|
class TestVersionRelease(unittest.TestCase):
|
|
197
197
|
|
|
198
|
-
def setUp(self: Self) -> None:
|
|
199
|
-
# Create a version class instance
|
|
200
|
-
self.version = Version()
|
|
201
|
-
|
|
202
198
|
def test_0(self: Self) -> None:
|
|
203
199
|
k: str
|
|
204
200
|
v: Any
|
|
205
201
|
for k, v in Util.util.data["release"].items():
|
|
206
|
-
self.
|
|
202
|
+
self.go(key=k, **v)
|
|
207
203
|
|
|
208
|
-
def
|
|
209
|
-
|
|
210
|
-
self.assertEqual(
|
|
204
|
+
def go(self: Self, query: Any, solution: Any, key: str = "") -> None:
|
|
205
|
+
release: Release = Release(query)
|
|
206
|
+
self.assertEqual(release, solution)
|
|
211
207
|
|
|
212
208
|
|
|
213
209
|
class TestDev(unittest.TestCase):
|
|
@@ -10,7 +10,7 @@ class TestVersionManipulation(unittest.TestCase):
|
|
|
10
10
|
|
|
11
11
|
def test_version_modification(self: Self) -> None:
|
|
12
12
|
# Create an instance of the v440.Version class
|
|
13
|
-
v = Version("1.2.3")
|
|
13
|
+
v: Version = Version("1.2.3")
|
|
14
14
|
|
|
15
15
|
# Modify individual parts of the version
|
|
16
16
|
v.release.major = 2
|
|
@@ -25,7 +25,7 @@ class TestVersionManipulation(unittest.TestCase):
|
|
|
25
25
|
class TestVersionLocal(unittest.TestCase):
|
|
26
26
|
|
|
27
27
|
def test_version_operations(self: Self) -> None:
|
|
28
|
-
v = Version("1.2.3")
|
|
28
|
+
v: Version = Version("1.2.3")
|
|
29
29
|
backup = v.local
|
|
30
30
|
v.local = "local.1.2.3"
|
|
31
31
|
self.assertEqual(str(v), "1.2.3+local.1.2.3")
|
|
@@ -53,7 +53,7 @@ class TestVersionLocal(unittest.TestCase):
|
|
|
53
53
|
class TestVersion(unittest.TestCase):
|
|
54
54
|
|
|
55
55
|
def test_version_pre(self: Self) -> None:
|
|
56
|
-
v = Version("1.2.3")
|
|
56
|
+
v: Version = Version("1.2.3")
|
|
57
57
|
backup = v.pre
|
|
58
58
|
|
|
59
59
|
# Initial version, no pre-release version
|
|
@@ -93,20 +93,20 @@ class TestVersion(unittest.TestCase):
|
|
|
93
93
|
class TestExample(unittest.TestCase):
|
|
94
94
|
|
|
95
95
|
def test_example_1(self: Self) -> None:
|
|
96
|
-
v = Version("v1.0.0")
|
|
96
|
+
v: Version = Version("v1.0.0")
|
|
97
97
|
self.assertEqual(str(v), "1") # Initial version
|
|
98
98
|
self.assertEqual(v.format("3"), "1.0.0") # Initial version formatted
|
|
99
99
|
|
|
100
100
|
def test_example_2(self: Self) -> None:
|
|
101
|
-
v = Version("2.5.3")
|
|
101
|
+
v: Version = Version("2.5.3")
|
|
102
102
|
self.assertEqual(str(v), "2.5.3") # Modified version
|
|
103
103
|
v.release[1] = 64
|
|
104
104
|
v.release.micro = 4
|
|
105
105
|
self.assertEqual(str(v), "2.64.4") # Further modified version
|
|
106
106
|
|
|
107
107
|
def test_example_3(self: Self) -> None:
|
|
108
|
-
v1 = Version("1.6.3")
|
|
109
|
-
v2 = Version("1.6.4")
|
|
108
|
+
v1: Version = Version("1.6.3")
|
|
109
|
+
v2: Version = Version("1.6.4")
|
|
110
110
|
self.assertEqual(str(v1), "1.6.3") # v1
|
|
111
111
|
self.assertEqual(str(v2), "1.6.4") # v2
|
|
112
112
|
self.assertFalse(v1 == v2) # v1 == v2 gives False
|
|
@@ -117,8 +117,8 @@ class TestExample(unittest.TestCase):
|
|
|
117
117
|
self.assertTrue(v1 < v2) # v1 < v2 gives True
|
|
118
118
|
|
|
119
119
|
def test_example_3a(self: Self) -> None:
|
|
120
|
-
v1 = Version("1.6.3")
|
|
121
|
-
v2 = "1.6.4"
|
|
120
|
+
v1: Version = Version("1.6.3")
|
|
121
|
+
v2: str = "1.6.4"
|
|
122
122
|
self.assertEqual(str(v1), "1.6.3") # v1
|
|
123
123
|
self.assertEqual(str(v2), "1.6.4") # v2
|
|
124
124
|
self.assertFalse(v1 == v2) # v1 == v2 gives False
|
|
@@ -129,8 +129,8 @@ class TestExample(unittest.TestCase):
|
|
|
129
129
|
self.assertTrue(v1 < v2) # v1 < v2 gives True
|
|
130
130
|
|
|
131
131
|
def test_example_3b(self: Self) -> None:
|
|
132
|
-
v1 = "1.6.3"
|
|
133
|
-
v2 = Version("1.6.4")
|
|
132
|
+
v1: str = "1.6.3"
|
|
133
|
+
v2: Version = Version("1.6.4")
|
|
134
134
|
self.assertEqual(str(v1), "1.6.3") # v1
|
|
135
135
|
self.assertEqual(str(v2), "1.6.4") # v2
|
|
136
136
|
self.assertFalse(v1 == v2) # v1 == v2 gives False
|
|
@@ -141,13 +141,13 @@ class TestExample(unittest.TestCase):
|
|
|
141
141
|
self.assertTrue(v1 < v2) # v1 < v2 gives True
|
|
142
142
|
|
|
143
143
|
def test_example_4(self: Self) -> None:
|
|
144
|
-
v = Version("2.5.3.9")
|
|
144
|
+
v: Version = Version("2.5.3.9")
|
|
145
145
|
self.assertEqual(str(v), "2.5.3.9") # before sorting
|
|
146
146
|
v.release.sort()
|
|
147
147
|
self.assertEqual(str(v), "2.3.5.9") # after sorting
|
|
148
148
|
|
|
149
149
|
def test_example_5(self: Self) -> None:
|
|
150
|
-
v = Version("2.0.0-alpha.1")
|
|
150
|
+
v: Version = Version("2.0.0-alpha.1")
|
|
151
151
|
self.assertEqual(str(v), "2a1") # Pre-release version
|
|
152
152
|
v.pre = "beta.2"
|
|
153
153
|
self.assertEqual(str(v), "2b2") # Modified pre-release version
|
|
@@ -157,7 +157,7 @@ class TestExample(unittest.TestCase):
|
|
|
157
157
|
self.assertEqual(str(v), "2rc4") # Even further modified pre-release version
|
|
158
158
|
|
|
159
159
|
def test_example_6(self: Self) -> None:
|
|
160
|
-
v = Version("1.2.3")
|
|
160
|
+
v: Version = Version("1.2.3")
|
|
161
161
|
v.post = "post1"
|
|
162
162
|
v.local = "local.7.dev"
|
|
163
163
|
self.assertEqual(str(v), "1.2.3.post1+local.7.dev") # Post-release version
|
|
@@ -175,7 +175,7 @@ class TestExample(unittest.TestCase):
|
|
|
175
175
|
self.assertEqual(str(v), "1.2.3.post3+3.test.19") # Modified local again
|
|
176
176
|
|
|
177
177
|
def test_example_7(self: Self) -> None:
|
|
178
|
-
v = Version("5.0.0")
|
|
178
|
+
v: Version = Version("5.0.0")
|
|
179
179
|
self.assertEqual(str(v), "5") # Original version
|
|
180
180
|
v.data = None
|
|
181
181
|
self.assertEqual(str(v), "0") # After reset
|
|
@@ -199,184 +199,200 @@ class TestPatch(unittest.TestCase):
|
|
|
199
199
|
|
|
200
200
|
class TestVersionRelease(unittest.TestCase):
|
|
201
201
|
|
|
202
|
-
def setUp(self: Self) -> None:
|
|
203
|
-
# Create a version class instance
|
|
204
|
-
self.version = Version()
|
|
205
|
-
|
|
206
202
|
def test_major_minor_micro_aliases(self: Self) -> None:
|
|
207
203
|
# Test major, minor, and micro aliases for the first three indices
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
self.assertEqual(
|
|
211
|
-
self.assertEqual(
|
|
212
|
-
self.assertEqual(
|
|
204
|
+
version: Version = Version()
|
|
205
|
+
version.release = [1, 2, 3]
|
|
206
|
+
self.assertEqual(version.release.major, 1)
|
|
207
|
+
self.assertEqual(version.release.minor, 2)
|
|
208
|
+
self.assertEqual(version.release.micro, 3)
|
|
209
|
+
self.assertEqual(version.release.patch, 3) # 'patch' is an alias for micro
|
|
213
210
|
|
|
214
211
|
def test_release_modify_aliases(self: Self) -> None:
|
|
215
212
|
# Test modifying the release via major, minor, and micro properties
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
self.assertEqual(
|
|
213
|
+
version: Version = Version()
|
|
214
|
+
version.release = [1, 2, 3]
|
|
215
|
+
version.release.major = 10
|
|
216
|
+
version.release.minor = 20
|
|
217
|
+
version.release.micro = 30
|
|
218
|
+
self.assertEqual(version.release, [10, 20, 30])
|
|
219
|
+
self.assertEqual(version.release.patch, 30)
|
|
222
220
|
|
|
223
221
|
def test_release_with_tailing_zeros_simulation(self: Self) -> None:
|
|
224
222
|
# Test that the release can simulate arbitrary high number of tailing zeros
|
|
225
|
-
|
|
226
|
-
|
|
223
|
+
version: Version = Version()
|
|
224
|
+
version.release = [1, 2]
|
|
225
|
+
simulated_release = version.release[:5]
|
|
227
226
|
self.assertEqual(simulated_release, [1, 2, 0, 0, 0])
|
|
228
227
|
|
|
229
228
|
def test_release_empty_major(self: Self) -> None:
|
|
230
229
|
# Test that an empty release still has valid major, minor, micro values
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
self.assertEqual(
|
|
234
|
-
self.assertEqual(
|
|
235
|
-
self.assertEqual(
|
|
230
|
+
version: Version = Version()
|
|
231
|
+
version.release = []
|
|
232
|
+
self.assertEqual(version.release.major, 0)
|
|
233
|
+
self.assertEqual(version.release.minor, 0)
|
|
234
|
+
self.assertEqual(version.release.micro, 0)
|
|
235
|
+
self.assertEqual(version.release.patch, 0)
|
|
236
236
|
|
|
237
237
|
def test_release_modify_with_alias_increase_length(self: Self) -> None:
|
|
238
238
|
# Test that modifying an alias can extend the length of release
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
self.version.release
|
|
243
|
-
|
|
239
|
+
version: Version = Version()
|
|
240
|
+
version.release = [1]
|
|
241
|
+
version.release.minor = 5 # This should make release [1, 5]
|
|
242
|
+
self.assertEqual(version.release, [1, 5])
|
|
243
|
+
version.release.micro = 3 # This should make release [1, 5, 3]
|
|
244
|
+
self.assertEqual(version.release, [1, 5, 3])
|
|
244
245
|
|
|
245
246
|
def test_release_modify_major_only(self: Self) -> None:
|
|
246
247
|
# Test that setting just the major property works
|
|
247
|
-
|
|
248
|
-
|
|
248
|
+
version: Version = Version()
|
|
249
|
+
version.release.major = 10
|
|
250
|
+
self.assertEqual(version.release, [10])
|
|
249
251
|
|
|
250
252
|
def test_release_modify_minor_only(self: Self) -> None:
|
|
251
253
|
# Test that setting just the minor property extends release
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
254
|
+
version: Version = Version()
|
|
255
|
+
version.release = []
|
|
256
|
+
version.release.minor = 1
|
|
257
|
+
self.assertEqual(version.release, [0, 1])
|
|
255
258
|
|
|
256
259
|
def test_release_modify_micro_only(self: Self) -> None:
|
|
257
260
|
# Test that setting just the micro (patch) property extends release
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
+
version: Version = Version()
|
|
262
|
+
version.release = []
|
|
263
|
+
version.release.micro = 1
|
|
264
|
+
self.assertEqual(version.release, [0, 0, 1])
|
|
261
265
|
|
|
262
266
|
|
|
263
267
|
class TestAdditionalVersionRelease(unittest.TestCase):
|
|
264
268
|
|
|
265
|
-
def setUp(self: Self) -> None:
|
|
266
|
-
# Initialize a fresh Version instance for every test
|
|
267
|
-
self.version = Version()
|
|
268
|
-
|
|
269
269
|
def test_release_inequality_with_list(self: Self) -> None:
|
|
270
270
|
# Test inequality of release with a normal list
|
|
271
|
-
|
|
272
|
-
|
|
271
|
+
version: Version = Version()
|
|
272
|
+
version.release = [1, 2, 3]
|
|
273
|
+
self.assertFalse(version.release == [1, 2, 4])
|
|
273
274
|
|
|
274
275
|
def test_release_len(self: Self) -> None:
|
|
275
276
|
# Test the length of the release list
|
|
276
|
-
|
|
277
|
-
|
|
277
|
+
version: Version = Version()
|
|
278
|
+
version.release = [1, 2, 3]
|
|
279
|
+
self.assertEqual(len(version.release), 3)
|
|
278
280
|
|
|
279
281
|
def test_release_slice_assignment(self: Self) -> None:
|
|
280
282
|
# Test assigning a slice to release
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
283
|
+
version: Version = Version()
|
|
284
|
+
version.release = [1, 2, 3, 4, 5]
|
|
285
|
+
version.release[1:4] = [20, 30, 40]
|
|
286
|
+
self.assertEqual(version.release, [1, 20, 30, 40, 5])
|
|
284
287
|
|
|
285
288
|
def test_release_iterable(self: Self) -> None:
|
|
286
289
|
# Test if release supports iteration
|
|
287
|
-
|
|
288
|
-
|
|
290
|
+
version: Version = Version()
|
|
291
|
+
version.release = [1, 2, 3]
|
|
292
|
+
result = [x for x in version.release]
|
|
289
293
|
self.assertEqual(result, [1, 2, 3])
|
|
290
294
|
|
|
291
295
|
def test_release_repr(self: Self) -> None:
|
|
292
296
|
# Test the repr of the release property
|
|
293
|
-
|
|
294
|
-
|
|
297
|
+
version: Version = Version()
|
|
298
|
+
version.release = [1, 2, 3]
|
|
299
|
+
self.assertEqual(str(version.release), "1.2.3")
|
|
295
300
|
|
|
296
301
|
def test_release_data_property(self: Self) -> None:
|
|
297
302
|
# Test the 'data' property
|
|
298
|
-
|
|
299
|
-
|
|
303
|
+
version: Version = Version()
|
|
304
|
+
version.release = [1, 2, 3]
|
|
305
|
+
self.assertEqual(version.release.data, [1, 2, 3])
|
|
300
306
|
|
|
301
307
|
def test_release_data_setter(self: Self) -> None:
|
|
302
308
|
# Test setting the 'data' property directly
|
|
303
|
-
|
|
304
|
-
|
|
309
|
+
version: Version = Version()
|
|
310
|
+
version.release.data = [10, 20, 30]
|
|
311
|
+
self.assertEqual(version.release, [10, 20, 30])
|
|
305
312
|
|
|
306
313
|
def test_release_contains(self: Self) -> None:
|
|
307
314
|
# Test 'in' keyword with release
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
self.
|
|
315
|
+
version: Version = Version()
|
|
316
|
+
version.release = [1, 2, 3]
|
|
317
|
+
self.assertIn(2, version.release)
|
|
318
|
+
self.assertNotIn(4, version.release)
|
|
311
319
|
|
|
312
320
|
def test_release_mul(self: Self) -> None:
|
|
313
321
|
# Test multiplying the release (list behavior)
|
|
314
|
-
|
|
315
|
-
|
|
322
|
+
version: Version = Version()
|
|
323
|
+
version.release = [1, 2]
|
|
324
|
+
self.assertEqual(version.release * 3, [1, 2, 1, 2, 1, 2])
|
|
316
325
|
|
|
317
326
|
def test_release_addition(self: Self) -> None:
|
|
318
327
|
# Test adding another list to release
|
|
319
|
-
|
|
320
|
-
|
|
328
|
+
version: Version = Version()
|
|
329
|
+
version.release = [1, 2, 3]
|
|
330
|
+
self.assertEqual(version.release + [4, 5], [1, 2, 3, 4, 5])
|
|
321
331
|
|
|
322
332
|
|
|
323
333
|
class TestVersionLocal(unittest.TestCase):
|
|
324
334
|
|
|
325
|
-
def setUp(self: Self) -> None:
|
|
326
|
-
# Initialize a fresh Version instance for every test
|
|
327
|
-
self.version = Version()
|
|
328
|
-
|
|
329
335
|
def test_local_len(self: Self) -> None:
|
|
330
336
|
# Test the length of the local list
|
|
331
|
-
|
|
332
|
-
|
|
337
|
+
version: Version = Version()
|
|
338
|
+
version.local = [1, "dev", "build"]
|
|
339
|
+
self.assertEqual(len(version.local), 3)
|
|
333
340
|
|
|
334
341
|
def test_local_slice_assignment(self: Self) -> None:
|
|
335
342
|
# Test assigning a slice to the local list
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
343
|
+
version: Version = Version()
|
|
344
|
+
version.local = [1, "dev", "build"]
|
|
345
|
+
version.local[1:3] = ["alpha", "beta"]
|
|
346
|
+
self.assertEqual(version.local, [1, "alpha", "beta"])
|
|
339
347
|
|
|
340
348
|
def test_local_contains(self: Self) -> None:
|
|
341
349
|
# Test 'in' keyword with local list
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
self.
|
|
350
|
+
version: Version = Version()
|
|
351
|
+
version.local = [1, "dev", "build"]
|
|
352
|
+
self.assertIn("dev", version.local)
|
|
353
|
+
self.assertNotIn("alpha", version.local)
|
|
345
354
|
|
|
346
355
|
def test_local_mul(self: Self) -> None:
|
|
347
356
|
# Test multiplying the local list
|
|
348
|
-
|
|
349
|
-
|
|
357
|
+
version: Version = Version()
|
|
358
|
+
version.local = [1, "dev"]
|
|
359
|
+
self.assertEqual(version.local * 3, [1, "dev", 1, "dev", 1, "dev"])
|
|
350
360
|
|
|
351
361
|
def test_local_addition(self: Self) -> None:
|
|
352
362
|
# Test adding another list to local
|
|
353
|
-
|
|
354
|
-
|
|
363
|
+
version: Version = Version()
|
|
364
|
+
version.local = [1, "dev"]
|
|
365
|
+
self.assertEqual(version.local + ["build"], [1, "dev", "build"])
|
|
355
366
|
|
|
356
367
|
def test_local_inequality_with_list(self: Self) -> None:
|
|
357
368
|
# Test inequality of local with a normal list
|
|
358
|
-
|
|
359
|
-
|
|
369
|
+
version: Version = Version()
|
|
370
|
+
version.local = [1, "dev"]
|
|
371
|
+
self.assertFalse(version.local == [1, "build"])
|
|
360
372
|
|
|
361
373
|
def test_local_repr(self: Self) -> None:
|
|
362
374
|
# Test repr of local list
|
|
363
|
-
|
|
364
|
-
|
|
375
|
+
version: Version = Version()
|
|
376
|
+
version.local = [1, "dev", "build"]
|
|
377
|
+
self.assertEqual(str(version.local), "1.dev.build")
|
|
365
378
|
|
|
366
379
|
def test_local_data_property(self: Self) -> None:
|
|
367
380
|
# Test that 'data' property correctly reflects local's internal list
|
|
368
|
-
|
|
369
|
-
|
|
381
|
+
version: Version = Version()
|
|
382
|
+
version.local = [1, "dev", "build"]
|
|
383
|
+
self.assertEqual(version.local.data, [1, "dev", "build"])
|
|
370
384
|
|
|
371
385
|
def test_local_data_setter(self: Self) -> None:
|
|
372
386
|
# Test that 'data' property can be set directly
|
|
373
|
-
|
|
374
|
-
|
|
387
|
+
version: Version = Version()
|
|
388
|
+
version.local.data = ["custom", "data"]
|
|
389
|
+
self.assertEqual(version.local, ["custom", "data"])
|
|
375
390
|
|
|
376
391
|
def test_local_iterable(self: Self) -> None:
|
|
377
392
|
# Test if local supports iteration
|
|
378
|
-
|
|
379
|
-
|
|
393
|
+
version: Version = Version()
|
|
394
|
+
version.local = "1.dev.build"
|
|
395
|
+
result: list = [x for x in version.local]
|
|
380
396
|
self.assertEqual(result, [1, "dev", "build"])
|
|
381
397
|
|
|
382
398
|
|
|
@@ -941,22 +941,25 @@ solution = [
|
|
|
941
941
|
3,
|
|
942
942
|
]
|
|
943
943
|
|
|
944
|
-
[
|
|
944
|
+
[data-property.local]
|
|
945
945
|
query = "42!1.2.3.dev1337+5.nov"
|
|
946
946
|
solution = "42!1.2.3.dev1337+5.nov"
|
|
947
947
|
|
|
948
|
-
[
|
|
948
|
+
[data-property.hitch]
|
|
949
949
|
query = 4.2
|
|
950
950
|
solution = "4.2"
|
|
951
951
|
|
|
952
|
-
[
|
|
952
|
+
[data-property.dragon]
|
|
953
953
|
query = 9001
|
|
954
954
|
solution = "9001"
|
|
955
955
|
|
|
956
|
-
[
|
|
956
|
+
[data-property.local_again]
|
|
957
957
|
query = "1701!4.5.6.rc255+reset"
|
|
958
958
|
solution = "1701!4.5.6rc255+reset"
|
|
959
959
|
|
|
960
|
+
[data-property.none]
|
|
961
|
+
solution = "0"
|
|
962
|
+
|
|
960
963
|
[slicingmethod.test_slicing_1]
|
|
961
964
|
query = "1.2.3.4.5.6.7.8.9.10"
|
|
962
965
|
start = -8
|
|
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
|