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.
Files changed (32) hide show
  1. {v440-2.0.0.dev13/src/v440.egg-info → v440-2.0.0.dev15}/PKG-INFO +1 -1
  2. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/pyproject.toml +1 -1
  3. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/_utils/SimpleQualifierParser.py +6 -4
  4. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/_utils/utils.py +1 -1
  5. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/Public.py +8 -10
  6. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/tests/test_testdata.py +16 -20
  7. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/tests/test_version.py +118 -102
  8. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/tests/testdata.toml +7 -4
  9. {v440-2.0.0.dev13 → v440-2.0.0.dev15/src/v440.egg-info}/PKG-INFO +1 -1
  10. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/LICENSE.txt +0 -0
  11. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/MANIFEST.in +0 -0
  12. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/README.rst +0 -0
  13. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/setup.cfg +0 -0
  14. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/__init__.py +0 -0
  15. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/_utils/Digest.py +0 -0
  16. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/_utils/Pattern.py +0 -0
  17. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/_utils/VList.py +0 -0
  18. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/_utils/WList.py +0 -0
  19. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/_utils/__init__.py +0 -0
  20. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/Base.py +0 -0
  21. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/Local.py +0 -0
  22. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/Pre.py +0 -0
  23. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/Qualification.py +0 -0
  24. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/Release.py +0 -0
  25. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/Version.py +0 -0
  26. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/VersionError.py +0 -0
  27. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/core/__init__.py +0 -0
  28. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440/tests/__init__.py +0 -0
  29. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440.egg-info/SOURCES.txt +0 -0
  30. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440.egg-info/dependency_links.txt +0 -0
  31. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/src/v440.egg-info/requires.txt +0 -0
  32. {v440-2.0.0.dev13 → v440-2.0.0.dev15}/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.dev13
3
+ Version: 2.0.0.dev15
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)
@@ -34,7 +34,7 @@ keywords = []
34
34
  name = "v440"
35
35
  readme = "README.rst"
36
36
  requires-python = ">=3.11"
37
- version = "2.0.0.dev13"
37
+ version = "2.0.0.dev15"
38
38
 
39
39
  [project.license]
40
40
  file = "LICENSE.txt"
@@ -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
- l, n = m.groups()
42
- if l not in self.keysforstr:
41
+ x: Any
42
+ y: Any
43
+ x, y = m.groups()
44
+ if x not in self.keysforstr:
43
45
  raise ValueError
44
- if n is None:
46
+ if y is None:
45
47
  return None
46
48
  else:
47
- return int(n)
49
+ return int(y)
48
50
 
49
51
  def __init__(
50
52
  self: Self,
@@ -44,7 +44,7 @@ def _segment():
44
44
 
45
45
 
46
46
  @_segment.overload(int)
47
- def byInt(value: int, /) -> Any:
47
+ def _segment(value: int, /) -> Any:
48
48
  if value < 0:
49
49
  raise ValueError
50
50
  return value
@@ -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.local(**v, key=k)
81
+ self.go(**v, key=k)
81
82
 
82
- def local(
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
- self.v = Version()
181
- for k, v in Util.util.data["data_property"].items():
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 data(
184
+ def go(
186
185
  self: Self,
187
- query: Any,
188
- solution: str,
186
+ query: Any = None,
187
+ solution: Any = None,
189
188
  key: str = "",
190
189
  ) -> None:
191
- msg: str = "data_property %r" % key
192
- self.v.data = query
193
- self.assertEqual(solution, str(self.v), msg=msg)
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.release(key=k, **v)
202
+ self.go(key=k, **v)
207
203
 
208
- def release(self: Self, query: Any, solution: Any, key: str = "") -> None:
209
- self.version.release = query
210
- self.assertEqual(self.version.release, solution)
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
- self.version.release = [1, 2, 3]
209
- self.assertEqual(self.version.release.major, 1)
210
- self.assertEqual(self.version.release.minor, 2)
211
- self.assertEqual(self.version.release.micro, 3)
212
- self.assertEqual(self.version.release.patch, 3) # 'patch' is an alias for micro
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
- self.version.release = [1, 2, 3]
217
- self.version.release.major = 10
218
- self.version.release.minor = 20
219
- self.version.release.micro = 30
220
- self.assertEqual(self.version.release, [10, 20, 30])
221
- self.assertEqual(self.version.release.patch, 30)
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
- self.version.release = [1, 2]
226
- simulated_release = self.version.release[:5]
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
- self.version.release = []
232
- self.assertEqual(self.version.release.major, 0)
233
- self.assertEqual(self.version.release.minor, 0)
234
- self.assertEqual(self.version.release.micro, 0)
235
- self.assertEqual(self.version.release.patch, 0)
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
- self.version.release = [1]
240
- self.version.release.minor = 5 # This should make release [1, 5]
241
- self.assertEqual(self.version.release, [1, 5])
242
- self.version.release.micro = 3 # This should make release [1, 5, 3]
243
- self.assertEqual(self.version.release, [1, 5, 3])
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
- self.version.release.major = 10
248
- self.assertEqual(self.version.release, [10])
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
- self.version.release = []
253
- self.version.release.minor = 1
254
- self.assertEqual(self.version.release, [0, 1])
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
- self.version.release = []
259
- self.version.release.micro = 1
260
- self.assertEqual(self.version.release, [0, 0, 1])
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
- self.version.release = [1, 2, 3]
272
- self.assertFalse(self.version.release == [1, 2, 4])
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
- self.version.release = [1, 2, 3]
277
- self.assertEqual(len(self.version.release), 3)
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
- self.version.release = [1, 2, 3, 4, 5]
282
- self.version.release[1:4] = [20, 30, 40]
283
- self.assertEqual(self.version.release, [1, 20, 30, 40, 5])
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
- self.version.release = [1, 2, 3]
288
- result = [x for x in self.version.release]
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
- self.version.release = [1, 2, 3]
294
- self.assertEqual(str(self.version.release), "1.2.3")
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
- self.version.release = [1, 2, 3]
299
- self.assertEqual(self.version.release.data, [1, 2, 3])
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
- self.version.release.data = [10, 20, 30]
304
- self.assertEqual(self.version.release, [10, 20, 30])
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
- self.version.release = [1, 2, 3]
309
- self.assertIn(2, self.version.release)
310
- self.assertNotIn(4, self.version.release)
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
- self.version.release = [1, 2]
315
- self.assertEqual(self.version.release * 3, [1, 2, 1, 2, 1, 2])
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
- self.version.release = [1, 2, 3]
320
- self.assertEqual(self.version.release + [4, 5], [1, 2, 3, 4, 5])
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
- self.version.local = [1, "dev", "build"]
332
- self.assertEqual(len(self.version.local), 3)
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
- self.version.local = [1, "dev", "build"]
337
- self.version.local[1:3] = ["alpha", "beta"]
338
- self.assertEqual(self.version.local, [1, "alpha", "beta"])
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
- self.version.local = [1, "dev", "build"]
343
- self.assertIn("dev", self.version.local)
344
- self.assertNotIn("alpha", self.version.local)
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
- self.version.local = [1, "dev"]
349
- self.assertEqual(self.version.local * 3, [1, "dev", 1, "dev", 1, "dev"])
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
- self.version.local = [1, "dev"]
354
- self.assertEqual(self.version.local + ["build"], [1, "dev", "build"])
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
- self.version.local = [1, "dev"]
359
- self.assertFalse(self.version.local == [1, "build"])
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
- self.version.local = [1, "dev", "build"]
364
- self.assertEqual(str(self.version.local), "1.dev.build")
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
- self.version.local = [1, "dev", "build"]
369
- self.assertEqual(self.version.local.data, [1, "dev", "build"])
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
- self.version.local.data = ["custom", "data"]
374
- self.assertEqual(self.version.local, ["custom", "data"])
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
- self.version.local = "1.dev.build"
379
- result = [x for x in self.version.local]
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
- [data_property.local]
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
- [data_property.hitch]
948
+ [data-property.hitch]
949
949
  query = 4.2
950
950
  solution = "4.2"
951
951
 
952
- [data_property.dragon]
952
+ [data-property.dragon]
953
953
  query = 9001
954
954
  solution = "9001"
955
955
 
956
- [data_property.local_again]
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: v440
3
- Version: 2.0.0.dev13
3
+ Version: 2.0.0.dev15
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)
File without changes
File without changes
File without changes
File without changes