v440 2.0.0.dev26__tar.gz → 2.0.0.dev28__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 (34) hide show
  1. {v440-2.0.0.dev26/src/v440.egg-info → v440-2.0.0.dev28}/PKG-INFO +2 -2
  2. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/pyproject.toml +2 -2
  3. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/core/Qualification.py +0 -1
  4. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/core/Version.py +0 -17
  5. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/tests/test_testdata.py +25 -18
  6. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/tests/test_version.py +60 -58
  7. {v440-2.0.0.dev26 → v440-2.0.0.dev28/src/v440.egg-info}/PKG-INFO +2 -2
  8. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440.egg-info/requires.txt +1 -1
  9. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/LICENSE.txt +0 -0
  10. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/MANIFEST.in +0 -0
  11. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/README.rst +0 -0
  12. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/setup.cfg +0 -0
  13. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/__init__.py +0 -0
  14. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/_utils/BaseList.py +0 -0
  15. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/_utils/Cfg.py +0 -0
  16. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/_utils/Digest.py +0 -0
  17. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/_utils/Pattern.py +0 -0
  18. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/_utils/SimpleQualifierParser.py +0 -0
  19. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/_utils/SlotList.py +0 -0
  20. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/_utils/VList.py +0 -0
  21. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/_utils/__init__.py +0 -0
  22. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/_utils/cfg.toml +0 -0
  23. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/_utils/utils.py +0 -0
  24. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/core/Base.py +0 -0
  25. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/core/Local.py +0 -0
  26. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/core/Public.py +0 -0
  27. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/core/Release.py +0 -0
  28. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/core/VersionError.py +0 -0
  29. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/core/__init__.py +0 -0
  30. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/tests/__init__.py +0 -0
  31. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440/tests/testdata.toml +0 -0
  32. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440.egg-info/SOURCES.txt +0 -0
  33. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/src/v440.egg-info/dependency_links.txt +0 -0
  34. {v440-2.0.0.dev26 → v440-2.0.0.dev28}/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.dev26
3
+ Version: 2.0.0.dev28
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)
@@ -46,7 +46,7 @@ Requires-Dist: iterprod<2.0,>=1.0
46
46
  Requires-Dist: keyalias<2.0,>=1.0.3
47
47
  Requires-Dist: overloadable<2.0,>=1.0.5
48
48
  Requires-Dist: packaging>=23.2
49
- Requires-Dist: scaevola<2.0,>=1.0.11
49
+ Requires-Dist: scaevola<2.0,>=1.1
50
50
  Requires-Dist: tofunc<2,>=1.0.0
51
51
  Dynamic: license-file
52
52
 
@@ -26,7 +26,7 @@ dependencies = [
26
26
  "keyalias>=1.0.3,<2.0",
27
27
  "overloadable>=1.0.5,<2.0",
28
28
  "packaging>=23.2",
29
- "scaevola>=1.0.11,<2.0",
29
+ "scaevola>=1.1,<2.0",
30
30
  "tofunc>=1.0.0,<2",
31
31
  ]
32
32
  description = "This project provides mutable version objects in accordance with PEP440."
@@ -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.dev26"
37
+ version = "2.0.0.dev28"
38
38
 
39
39
  [project.license]
40
40
  file = "LICENSE.txt"
@@ -3,7 +3,6 @@ from __future__ import annotations
3
3
  from typing import *
4
4
 
5
5
  from v440._utils import SimpleQualifierParser, utils
6
- from v440._utils.BaseList import BaseList
7
6
  from v440._utils.Cfg import Cfg
8
7
  from v440._utils.Digest import Digest
9
8
  from v440._utils.Pattern import Pattern
@@ -98,15 +98,6 @@ class Version(SlotList):
98
98
  ans += "+%s" % self.local
99
99
  return ans
100
100
 
101
- def isdevrelease(self: Self) -> bool:
102
- return self.qualification.isdevrelease()
103
-
104
- def isprerelease(self: Self) -> bool:
105
- return self.qualification.isprerelease()
106
-
107
- def ispostrelease(self: Self) -> bool:
108
- return self.qualification.ispostrelease()
109
-
110
101
  @property
111
102
  def local(self: Self) -> Local:
112
103
  return self._local
@@ -151,11 +142,3 @@ class Version(SlotList):
151
142
  @qualification.setter
152
143
  def qualification(self: Self, value: Any) -> None:
153
144
  self.qualification.data = value
154
-
155
- @property
156
- def release(self: Self) -> Release:
157
- return self.base.release
158
-
159
- @release.setter
160
- def release(self: Self, value: Any) -> None:
161
- self.base.release = value
@@ -31,11 +31,11 @@ class TestVersionReleaseAttrs(unittest.TestCase):
31
31
  k: str
32
32
  v: dict
33
33
  for k, v in Util.util.data["release_attr"].items():
34
- self.release(**v, key=k)
34
+ with self.subTest(key=k):
35
+ self.go(**v)
35
36
 
36
- def release(
37
+ def go(
37
38
  self: Self,
38
- key: str,
39
39
  query: list,
40
40
  attrname: Optional[str] = None,
41
41
  args: list | tuple = (),
@@ -45,13 +45,13 @@ class TestVersionReleaseAttrs(unittest.TestCase):
45
45
  ) -> None:
46
46
  # Test the append method of the release list-like object
47
47
  version: Version = Version()
48
- version.release = query
48
+ version.public.base.release = query
49
49
  if attrname is not None:
50
- attr: Any = getattr(version.release, attrname)
50
+ attr: Any = getattr(version.public.base.release, attrname)
51
51
  ans: Any = attr(*args, **dict(kwargs))
52
52
  self.assertEqual(ans, solution)
53
53
  if target is not None:
54
- self.assertEqual(version.release, target)
54
+ self.assertEqual(version.public.base.release, target)
55
55
 
56
56
 
57
57
  class TestVersionReleaseVersionError(unittest.TestCase):
@@ -60,16 +60,16 @@ class TestVersionReleaseVersionError(unittest.TestCase):
60
60
  k: str
61
61
  v: dict
62
62
  for k, v in Util.util.data["release_VersionError"].items():
63
- self.release(**v, key=k)
63
+ with self.subTest(key=k):
64
+ self.go(**v)
64
65
 
65
- def release(
66
+ def go(
66
67
  self: Self,
67
- key: str,
68
68
  query: list,
69
69
  ) -> None:
70
70
  version: Version = Version()
71
71
  with self.assertRaises(VersionError):
72
- version.release = query
72
+ version.public.base.release = query
73
73
 
74
74
 
75
75
  class TestVersionLocalVersionError(unittest.TestCase):
@@ -145,7 +145,7 @@ class TestSlicing(unittest.TestCase):
145
145
  v: Version = Version("1.2.3.4.5.6.7.8.9.10")
146
146
  catcher: Catcher = Catcher()
147
147
  with catcher.catch(Exception):
148
- v.release[-8:15:5] = 777
148
+ v.public.base.release[-8:15:5] = 777
149
149
  self.assertNotEqual(catcher.caught, None)
150
150
 
151
151
  def slicingmethod(
@@ -159,7 +159,7 @@ class TestSlicing(unittest.TestCase):
159
159
  key: str = "",
160
160
  ) -> None:
161
161
  v: Version = Version(query)
162
- v.release[start:stop:step] = change
162
+ v.public.base.release[start:stop:step] = change
163
163
  self.assertEqual(str(v), solution, "slicingmethod %s" % key)
164
164
 
165
165
  def test_slicing_3(self: Self) -> None:
@@ -172,7 +172,7 @@ class TestSlicing(unittest.TestCase):
172
172
  def test_slicing_7(self: Self) -> None:
173
173
  # test_slicing_7
174
174
  v: Version = Version("1.2.3.4.5.6.7.8.9.10")
175
- del v.release[-8:15:5]
175
+ del v.public.base.release[-8:15:5]
176
176
  self.assertEqual(str(v), "1.2.4.5.6.7.9.10")
177
177
 
178
178
 
@@ -199,9 +199,10 @@ class TestVersionRelease(unittest.TestCase):
199
199
  k: str
200
200
  v: Any
201
201
  for k, v in Util.util.data["release"].items():
202
- self.go(key=k, **v)
202
+ with self.subTest(key=k):
203
+ self.go(**v)
203
204
 
204
- def go(self: Self, query: Any, solution: Any, key: str = "") -> None:
205
+ def go(self: Self, query: Any, solution: Any) -> None:
205
206
  release: Release = Release(query)
206
207
  self.assertEqual(release, solution)
207
208
 
@@ -347,9 +348,15 @@ class TestPackaging(unittest.TestCase):
347
348
  x: str
348
349
  for x in versionable:
349
350
  v = Version(x)
350
- self.assertEqual(v.isdevrelease(), v.packaging().is_devrelease)
351
- self.assertEqual(v.isprerelease(), v.packaging().is_prerelease)
352
- self.assertEqual(v.ispostrelease(), v.packaging().is_postrelease)
351
+ self.assertEqual(
352
+ v.public.qualification.isdevrelease(), v.packaging().is_devrelease
353
+ )
354
+ self.assertEqual(
355
+ v.public.qualification.isprerelease(), v.packaging().is_prerelease
356
+ )
357
+ self.assertEqual(
358
+ v.public.qualification.ispostrelease(), v.packaging().is_postrelease
359
+ )
353
360
  self.assertEqual(str(v.base), v.packaging().base_version)
354
361
  self.assertEqual(str(v.public), v.packaging().public)
355
362
  version_obj.local = v.packaging().local
@@ -13,8 +13,8 @@ class TestVersionManipulation(unittest.TestCase):
13
13
  v: Version = Version("1.2.3")
14
14
 
15
15
  # Modify individual parts of the version
16
- v.release.major = 2
17
- v.release.minor = 5
16
+ v.public.base.release.major = 2
17
+ v.public.base.release.minor = 5
18
18
  v.qualification = "beta.1"
19
19
  v.local = "local.7.dev"
20
20
 
@@ -100,8 +100,8 @@ class TestExample(unittest.TestCase):
100
100
  def test_example_2(self: Self) -> None:
101
101
  v: Version = Version("2.5.3")
102
102
  self.assertEqual(str(v), "2.5.3") # Modified version
103
- v.release[1] = 64
104
- v.release.micro = 4
103
+ v.public.base.release[1] = 64
104
+ v.public.base.release.micro = 4
105
105
  self.assertEqual(str(v), "2.64.4") # Further modified version
106
106
 
107
107
  def test_example_3a(self: Self) -> None:
@@ -143,7 +143,7 @@ class TestExample(unittest.TestCase):
143
143
  def test_example_4(self: Self) -> None:
144
144
  v: Version = Version("2.5.3.9")
145
145
  self.assertEqual(str(v), "2.5.3.9") # before sorting
146
- v.release.sort()
146
+ v.public.base.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:
@@ -200,66 +200,68 @@ class TestVersionRelease(unittest.TestCase):
200
200
  def test_major_minor_micro_aliases(self: Self) -> None:
201
201
  # Test major, minor, and micro aliases for the first three indices
202
202
  version: Version = Version()
203
- version.release = [1, 2, 3]
204
- self.assertEqual(version.release.major, 1)
205
- self.assertEqual(version.release.minor, 2)
206
- self.assertEqual(version.release.micro, 3)
207
- self.assertEqual(version.release.patch, 3) # 'patch' is an alias for micro
203
+ version.public.base.release = [1, 2, 3]
204
+ self.assertEqual(version.public.base.release.major, 1)
205
+ self.assertEqual(version.public.base.release.minor, 2)
206
+ self.assertEqual(version.public.base.release.micro, 3)
207
+ self.assertEqual(
208
+ version.public.base.release.patch, 3
209
+ ) # 'patch' is an alias for micro
208
210
 
209
211
  def test_release_modify_aliases(self: Self) -> None:
210
212
  # Test modifying the release via major, minor, and micro properties
211
213
  version: Version = Version()
212
- version.release = [1, 2, 3]
213
- version.release.major = 10
214
- version.release.minor = 20
215
- version.release.micro = 30
216
- self.assertEqual(version.release, [10, 20, 30])
217
- self.assertEqual(version.release.patch, 30)
214
+ version.public.base.release = [1, 2, 3]
215
+ version.public.base.release.major = 10
216
+ version.public.base.release.minor = 20
217
+ version.public.base.release.micro = 30
218
+ self.assertEqual(version.public.base.release, [10, 20, 30])
219
+ self.assertEqual(version.public.base.release.patch, 30)
218
220
 
219
221
  def test_release_with_tailing_zeros_simulation(self: Self) -> None:
220
222
  # Test that the release can simulate arbitrary high number of tailing zeros
221
223
  version: Version = Version()
222
- version.release = [1, 2]
223
- simulated_release = version.release[:5]
224
+ version.public.base.release = [1, 2]
225
+ simulated_release = version.public.base.release[:5]
224
226
  self.assertEqual(simulated_release, [1, 2, 0, 0, 0])
225
227
 
226
228
  def test_release_empty_major(self: Self) -> None:
227
229
  # Test that an empty release still has valid major, minor, micro values
228
230
  version: Version = Version()
229
- version.release = []
230
- self.assertEqual(version.release.major, 0)
231
- self.assertEqual(version.release.minor, 0)
232
- self.assertEqual(version.release.micro, 0)
233
- self.assertEqual(version.release.patch, 0)
231
+ version.public.base.release = []
232
+ self.assertEqual(version.public.base.release.major, 0)
233
+ self.assertEqual(version.public.base.release.minor, 0)
234
+ self.assertEqual(version.public.base.release.micro, 0)
235
+ self.assertEqual(version.public.base.release.patch, 0)
234
236
 
235
237
  def test_release_modify_with_alias_increase_length(self: Self) -> None:
236
238
  # Test that modifying an alias can extend the length of release
237
239
  version: Version = Version()
238
- version.release = [1]
239
- version.release.minor = 5 # This should make release [1, 5]
240
- self.assertEqual(version.release, [1, 5])
241
- version.release.micro = 3 # This should make release [1, 5, 3]
242
- self.assertEqual(version.release, [1, 5, 3])
240
+ version.public.base.release = [1]
241
+ version.public.base.release.minor = 5 # This should make release [1, 5]
242
+ self.assertEqual(version.public.base.release, [1, 5])
243
+ version.public.base.release.micro = 3 # This should make release [1, 5, 3]
244
+ self.assertEqual(version.public.base.release, [1, 5, 3])
243
245
 
244
246
  def test_release_modify_major_only(self: Self) -> None:
245
247
  # Test that setting just the major property works
246
248
  version: Version = Version()
247
- version.release.major = 10
248
- self.assertEqual(version.release, [10])
249
+ version.public.base.release.major = 10
250
+ self.assertEqual(version.public.base.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
254
  version: Version = Version()
253
- version.release = []
254
- version.release.minor = 1
255
- self.assertEqual(version.release, [0, 1])
255
+ version.public.base.release = []
256
+ version.public.base.release.minor = 1
257
+ self.assertEqual(version.public.base.release, [0, 1])
256
258
 
257
259
  def test_release_modify_micro_only(self: Self) -> None:
258
260
  # Test that setting just the micro (patch) property extends release
259
261
  version: Version = Version()
260
- version.release = []
261
- version.release.micro = 1
262
- self.assertEqual(version.release, [0, 0, 1])
262
+ version.public.base.release = []
263
+ version.public.base.release.micro = 1
264
+ self.assertEqual(version.public.base.release, [0, 0, 1])
263
265
 
264
266
 
265
267
  class TestAdditionalVersionRelease(unittest.TestCase):
@@ -267,65 +269,65 @@ class TestAdditionalVersionRelease(unittest.TestCase):
267
269
  def test_release_inequality_with_list(self: Self) -> None:
268
270
  # Test inequality of release with a normal list
269
271
  version: Version = Version()
270
- version.release = [1, 2, 3]
271
- self.assertFalse(version.release == [1, 2, 4])
272
+ version.public.base.release = [1, 2, 3]
273
+ self.assertFalse(version.public.base.release == [1, 2, 4])
272
274
 
273
275
  def test_release_len(self: Self) -> None:
274
276
  # Test the length of the release list
275
277
  version: Version = Version()
276
- version.release = [1, 2, 3]
277
- self.assertEqual(len(version.release), 3)
278
+ version.public.base.release = [1, 2, 3]
279
+ self.assertEqual(len(version.public.base.release), 3)
278
280
 
279
281
  def test_release_slice_assignment(self: Self) -> None:
280
282
  # Test assigning a slice to release
281
283
  version: Version = Version()
282
- version.release = [1, 2, 3, 4, 5]
283
- version.release[1:4] = [20, 30, 40]
284
- self.assertEqual(version.release, [1, 20, 30, 40, 5])
284
+ version.public.base.release = [1, 2, 3, 4, 5]
285
+ version.public.base.release[1:4] = [20, 30, 40]
286
+ self.assertEqual(version.public.base.release, [1, 20, 30, 40, 5])
285
287
 
286
288
  def test_release_iterable(self: Self) -> None:
287
289
  # Test if release supports iteration
288
290
  version: Version = Version()
289
- version.release = [1, 2, 3]
290
- result = list(version.release)
291
+ version.public.base.release = [1, 2, 3]
292
+ result = list(version.public.base.release)
291
293
  self.assertEqual(result, [1, 2, 3])
292
294
 
293
295
  def test_release_repr(self: Self) -> None:
294
296
  # Test the repr of the release property
295
297
  version: Version = Version()
296
- version.release = [1, 2, 3]
297
- self.assertEqual(str(version.release), "1.2.3")
298
+ version.public.base.release = [1, 2, 3]
299
+ self.assertEqual(str(version.public.base.release), "1.2.3")
298
300
 
299
301
  def test_release_data_property(self: Self) -> None:
300
302
  # Test the 'data' property
301
303
  version: Version = Version()
302
- version.release = [1, 2, 3]
303
- self.assertEqual(version.release.data, [1, 2, 3])
304
+ version.public.base.release = [1, 2, 3]
305
+ self.assertEqual(version.public.base.release.data, [1, 2, 3])
304
306
 
305
307
  def test_release_data_setter(self: Self) -> None:
306
308
  # Test setting the 'data' property directly
307
309
  version: Version = Version()
308
- version.release.data = [10, 20, 30]
309
- self.assertEqual(version.release, [10, 20, 30])
310
+ version.public.base.release.data = [10, 20, 30]
311
+ self.assertEqual(version.public.base.release, [10, 20, 30])
310
312
 
311
313
  def test_release_contains(self: Self) -> None:
312
314
  # Test 'in' keyword with release
313
315
  version: Version = Version()
314
- version.release = [1, 2, 3]
315
- self.assertIn(2, version.release)
316
- self.assertNotIn(4, version.release)
316
+ version.public.base.release = [1, 2, 3]
317
+ self.assertIn(2, version.public.base.release)
318
+ self.assertNotIn(4, version.public.base.release)
317
319
 
318
320
  def test_release_mul(self: Self) -> None:
319
321
  # Test multiplying the release (list behavior)
320
322
  version: Version = Version()
321
- version.release = [1, 2]
322
- self.assertEqual(version.release * 3, [1, 2, 1, 2, 1, 2])
323
+ version.public.base.release = [1, 2]
324
+ self.assertEqual(version.public.base.release * 3, [1, 2, 1, 2, 1, 2])
323
325
 
324
326
  def test_release_addition(self: Self) -> None:
325
327
  # Test adding another list to release
326
328
  version: Version = Version()
327
- version.release = [1, 2, 3]
328
- self.assertEqual(version.release + [4, 5], [1, 2, 3, 4, 5])
329
+ version.public.base.release = [1, 2, 3]
330
+ self.assertEqual(version.public.base.release + [4, 5], [1, 2, 3, 4, 5])
329
331
 
330
332
 
331
333
  class TestVersionLocal(unittest.TestCase):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: v440
3
- Version: 2.0.0.dev26
3
+ Version: 2.0.0.dev28
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)
@@ -46,7 +46,7 @@ Requires-Dist: iterprod<2.0,>=1.0
46
46
  Requires-Dist: keyalias<2.0,>=1.0.3
47
47
  Requires-Dist: overloadable<2.0,>=1.0.5
48
48
  Requires-Dist: packaging>=23.2
49
- Requires-Dist: scaevola<2.0,>=1.0.11
49
+ Requires-Dist: scaevola<2.0,>=1.1
50
50
  Requires-Dist: tofunc<2,>=1.0.0
51
51
  Dynamic: license-file
52
52
 
@@ -4,5 +4,5 @@ iterprod<2.0,>=1.0
4
4
  keyalias<2.0,>=1.0.3
5
5
  overloadable<2.0,>=1.0.5
6
6
  packaging>=23.2
7
- scaevola<2.0,>=1.0.11
7
+ scaevola<2.0,>=1.1
8
8
  tofunc<2,>=1.0.0
File without changes
File without changes
File without changes
File without changes