v440 2.0.0.dev90__tar.gz → 2.0.0.dev92__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 (45) hide show
  1. {v440-2.0.0.dev90/src/v440.egg-info → v440-2.0.0.dev92}/PKG-INFO +1 -1
  2. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/pyproject.toml +1 -1
  3. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/BaseStringer.py +0 -1
  4. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/ListStringer.py +18 -32
  5. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/core/Local.py +25 -0
  6. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/core/Release.py +23 -0
  7. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/tests/test_testdata.py +36 -6
  8. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/tests/test_version.py +31 -47
  9. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/tests/testdata.toml +27 -0
  10. {v440-2.0.0.dev90 → v440-2.0.0.dev92/src/v440.egg-info}/PKG-INFO +1 -1
  11. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/LICENSE.txt +0 -0
  12. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/MANIFEST.in +0 -0
  13. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/README.rst +0 -0
  14. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/setup.cfg +0 -0
  15. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/__init__.py +0 -0
  16. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/Cfg.py +0 -0
  17. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/Pattern.py +0 -0
  18. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/SlotStringer.py +0 -0
  19. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/__init__.py +0 -0
  20. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/cfg.toml +0 -0
  21. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/guarding.py +0 -0
  22. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/qualparse/Digest.py +0 -0
  23. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/qualparse/__init__.py +0 -0
  24. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/qualparse/devs.py +0 -0
  25. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/qualparse/posts.py +0 -0
  26. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/qualparse/pres.py +0 -0
  27. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/qualparse/segmenting.py +0 -0
  28. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/releaseparse/__init__.py +0 -0
  29. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/releaseparse/deleting.py +0 -0
  30. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/releaseparse/getting.py +0 -0
  31. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/releaseparse/listing.py +0 -0
  32. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/releaseparse/numerals.py +0 -0
  33. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/releaseparse/ranging.py +0 -0
  34. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/_utils/releaseparse/setting.py +0 -0
  35. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/core/Base.py +0 -0
  36. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/core/Public.py +0 -0
  37. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/core/Qual.py +0 -0
  38. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/core/Version.py +0 -0
  39. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/core/VersionError.py +0 -0
  40. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/core/__init__.py +0 -0
  41. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440/tests/__init__.py +0 -0
  42. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440.egg-info/SOURCES.txt +0 -0
  43. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440.egg-info/dependency_links.txt +0 -0
  44. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/src/v440.egg-info/requires.txt +0 -0
  45. {v440-2.0.0.dev90 → v440-2.0.0.dev92}/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.dev90
3
+ Version: 2.0.0.dev92
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)
@@ -36,7 +36,7 @@ keywords = []
36
36
  name = "v440"
37
37
  readme = "README.rst"
38
38
  requires-python = ">=3.11"
39
- version = "2.0.0.dev90"
39
+ version = "2.0.0.dev92"
40
40
 
41
41
  [project.license]
42
42
  file = "LICENSE.txt"
@@ -9,7 +9,6 @@ from v440._utils.guarding import guard
9
9
  from v440.core.VersionError import VersionError
10
10
 
11
11
 
12
- @scaevola.auto
13
12
  class BaseStringer(metaclass=ABCMeta):
14
13
  __slots__ = ()
15
14
 
@@ -9,7 +9,7 @@ from overloadable import Overloadable
9
9
  from v440._utils.BaseStringer import BaseStringer
10
10
  from v440._utils.guarding import guard
11
11
 
12
- __all__ = ["VList"]
12
+ __all__ = ["ListStringer"]
13
13
 
14
14
 
15
15
  class ListStringer(BaseStringer, collections.abc.MutableSequence):
@@ -20,7 +20,12 @@ class ListStringer(BaseStringer, collections.abc.MutableSequence):
20
20
 
21
21
  @setdoc.basic
22
22
  def __add__(self: Self, other: Any) -> Self:
23
- return type(self)(self.data + tuple(other))
23
+ alt: tuple
24
+ try:
25
+ alt = tuple(other)
26
+ except Exception:
27
+ return NotImplemented
28
+ return type(self)(data=self.data + alt)
24
29
 
25
30
  @setdoc.basic
26
31
  def __bool__(self: Self) -> bool:
@@ -50,31 +55,6 @@ class ListStringer(BaseStringer, collections.abc.MutableSequence):
50
55
  self.data = self.data * other
51
56
  return self
52
57
 
53
- @Overloadable
54
- @setdoc.basic
55
- def __init__(self: Self, *args: Any, **kwargs: Any) -> bool:
56
- if len(args) == 0 and "string" in kwargs.keys():
57
- return True
58
- if len(args) == 1 and len(kwargs) == 0:
59
- if isinstance(args[0], str):
60
- return True
61
- if hasattr(args[0], "__iter__"):
62
- return False
63
- return True
64
- return False
65
-
66
- @__init__.overload(True)
67
- @setdoc.basic
68
- def __init__(self: Self, string: Any) -> None:
69
- self._init_setup()
70
- self.string = string
71
-
72
- @__init__.overload(False)
73
- @setdoc.basic
74
- def __init__(self: Self, data: Iterable = ()) -> None:
75
- self._init_setup()
76
- self.data = data
77
-
78
58
  @setdoc.basic
79
59
  def __iter__(self: Self) -> Iterator:
80
60
  return iter(self.data)
@@ -85,11 +65,20 @@ class ListStringer(BaseStringer, collections.abc.MutableSequence):
85
65
 
86
66
  @setdoc.basic
87
67
  def __mul__(self: Self, other: Any) -> Self:
88
- return type(self)(self.data * other)
68
+ return type(self)(data=self.data * other)
69
+
70
+ @setdoc.basic
71
+ def __radd__(self: Self, other: Any) -> Self:
72
+ alt: tuple
73
+ try:
74
+ alt = tuple(other)
75
+ except Exception:
76
+ return NotImplemented
77
+ return type(self)(data=alt + self.data)
89
78
 
90
79
  @setdoc.basic
91
80
  def __repr__(self: Self) -> str:
92
- return datarepr(type(self).__name__, self.data)
81
+ return datarepr(type(self).__name__, list(self))
93
82
 
94
83
  @setdoc.basic
95
84
  def __reversed__(self: Self) -> reversed:
@@ -112,9 +101,6 @@ class ListStringer(BaseStringer, collections.abc.MutableSequence):
112
101
  @abstractmethod
113
102
  def _data_parse(cls: type, value: list) -> Iterable: ...
114
103
 
115
- def _init_setup(self: Self) -> None:
116
- self._data = ()
117
-
118
104
  def _set(self: Self, value: Any) -> None:
119
105
  if isinstance(value, str):
120
106
  self.string = value
@@ -4,6 +4,9 @@ import operator
4
4
  import string as string_
5
5
  from typing import *
6
6
 
7
+ import setdoc
8
+ from overloadable import Overloadable
9
+
7
10
  from v440._utils.ListStringer import ListStringer
8
11
 
9
12
  __all__ = ["Local"]
@@ -15,6 +18,25 @@ class Local(ListStringer):
15
18
  string: str
16
19
  data: tuple[int | str]
17
20
 
21
+ @Overloadable
22
+ @setdoc.basic
23
+ def __init__(self: Self, *args: Any, **kwargs: Any) -> bool:
24
+ if len(args) <= 1 and len(kwargs) == 0:
25
+ return True
26
+ if "string" in kwargs.keys():
27
+ return True
28
+ return False
29
+
30
+ @__init__.overload(True)
31
+ def __init__(self: Self, string: Any = "") -> None:
32
+ self._data = ()
33
+ self.string = string
34
+
35
+ @__init__.overload(False)
36
+ def __init__(self: Self, data: Iterable) -> None:
37
+ self._data = ()
38
+ self.data = data
39
+
18
40
  @classmethod
19
41
  def _data_parse(cls: type, value: list) -> Iterable:
20
42
  return tuple(map(cls._item_parse, value))
@@ -24,6 +46,9 @@ class Local(ListStringer):
24
46
  raise ValueError
25
47
  return ".".join(map(str, self))
26
48
 
49
+ def _init_setup(self: Self) -> None:
50
+ self._data = ()
51
+
27
52
  @classmethod
28
53
  def _item_parse(cls: type, value: Any) -> int | str:
29
54
  ans: int | str
@@ -5,6 +5,7 @@ from typing import *
5
5
 
6
6
  import setdoc
7
7
  from keyalias import keyalias
8
+ from overloadable import Overloadable
8
9
 
9
10
  from v440._utils import releaseparse
10
11
  from v440._utils.ListStringer import ListStringer
@@ -32,6 +33,25 @@ class Release(ListStringer):
32
33
  def __getitem__(self: Self, key: Any) -> bool:
33
34
  return getting.getitem(self.data, key)
34
35
 
36
+ @Overloadable
37
+ @setdoc.basic
38
+ def __init__(self: Self, *args: Any, **kwargs: Any) -> bool:
39
+ if len(args) <= 1 and len(kwargs) == 0:
40
+ return True
41
+ if "string" in kwargs.keys():
42
+ return True
43
+ return False
44
+
45
+ @__init__.overload(True)
46
+ def __init__(self: Self, string: Any = "0") -> None:
47
+ self._data = ()
48
+ self.string = string
49
+
50
+ @__init__.overload(False)
51
+ def __init__(self: Self, data: Iterable) -> None:
52
+ self._data = ()
53
+ self.data = data
54
+
35
55
  @setdoc.basic
36
56
  def __setitem__(self: Self, key: Any, value: Any) -> bool:
37
57
  self._data = setting.setitem(self.data, key, value)
@@ -56,6 +76,9 @@ class Release(ListStringer):
56
76
  ans: str = ".".join(l)
57
77
  return ans
58
78
 
79
+ def _init_setup(self: Self) -> None:
80
+ self._data = ()
81
+
59
82
  @classmethod
60
83
  def _sort(cls: type, value: int) -> int:
61
84
  return value
@@ -51,7 +51,8 @@ class TestVersionReleaseAttrs(unittest.TestCase):
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.public.base.release, target)
54
+ ans: list = list(version.public.base.release)
55
+ self.assertEqual(ans, target)
55
56
 
56
57
 
57
58
  class TestVersionReleaseVersionError(unittest.TestCase):
@@ -114,7 +115,8 @@ class TestVersionLocalGo(unittest.TestCase):
114
115
  ans: Any = attr(*args, **dict(kwargs))
115
116
  self.assertEqual(ans, solution)
116
117
  if target is not None:
117
- self.assertEqual(version.local, target)
118
+ answer: list = list(version.local)
119
+ self.assertEqual(answer, target)
118
120
 
119
121
 
120
122
  class TestVersionEpochGo(unittest.TestCase):
@@ -186,14 +188,14 @@ class TestVersionRelease(unittest.TestCase):
186
188
 
187
189
  def test_0(self: Self) -> None:
188
190
  k: str
189
- v: Any
191
+ v: dict
190
192
  for k, v in Util.util.data["release"].items():
191
193
  with self.subTest(key=k):
192
194
  self.go(**v)
193
195
 
194
- def go(self: Self, query: Any, solution: Any) -> None:
195
- release: Release = Release(query)
196
- self.assertEqual(release, solution)
196
+ def go(self: Self, query: list, solution: list) -> None:
197
+ release: Release = Release(data=query)
198
+ self.assertEqual(list(release), solution)
197
199
 
198
200
 
199
201
  class TestDevGo(unittest.TestCase):
@@ -425,5 +427,33 @@ class TestSlots(unittest.TestCase):
425
427
  setattr(obj, attrname, attrvalue)
426
428
 
427
429
 
430
+ class TestReleaseAlias(unittest.TestCase):
431
+ def test_0(self: Self) -> None:
432
+ x: Any
433
+ y: Any
434
+ for x, y in Util.util.data["release-key"].items():
435
+ with self.subTest(test_label=x):
436
+ self.go(**y)
437
+
438
+ def go(self: Self, steps: list) -> None:
439
+ version: Version = Version()
440
+ step: dict
441
+ for step in steps:
442
+ self.modify(version=version, **step)
443
+
444
+ def modify(
445
+ self: Self,
446
+ version: Version,
447
+ name: str,
448
+ value: Any,
449
+ solution: Optional[list] = None,
450
+ ) -> None:
451
+ setattr(version.public.base.release, name, value)
452
+ if solution is None:
453
+ return
454
+ answer: list = list(version.public.base.release)
455
+ self.assertEqual(answer, solution)
456
+
457
+
428
458
  if __name__ == "__main__":
429
459
  unittest.main()
@@ -59,7 +59,7 @@ class TestPre(unittest.TestCase):
59
59
 
60
60
  # Initial version, no pre-release version
61
61
  self.assertEqual(str(v), "1.2.3")
62
- self.assertEqual(v.public.qual.string, "")
62
+ self.assertEqual(str(v.public.qual), "")
63
63
 
64
64
  # Set pre-release version to "a1"
65
65
  v.public.qual = "a1"
@@ -212,11 +212,11 @@ class TestVersionRelease(unittest.TestCase):
212
212
  def test_release_modify_aliases(self: Self) -> None:
213
213
  # Test modifying the release via major, minor, and micro properties
214
214
  version: Version = Version()
215
- version.public.base.release = [1, 2, 3]
215
+ version.public.base.release.data = [1, 2, 3]
216
216
  version.public.base.release.major = 10
217
217
  version.public.base.release.minor = 20
218
218
  version.public.base.release.micro = 30
219
- self.assertEqual(version.public.base.release, [10, 20, 30])
219
+ self.assertEqual(list(version.public.base.release), [10, 20, 30])
220
220
  self.assertEqual(version.public.base.release.patch, 30)
221
221
 
222
222
  def test_release_with_tailing_zeros_simulation(self: Self) -> None:
@@ -229,41 +229,12 @@ class TestVersionRelease(unittest.TestCase):
229
229
  def test_release_empty_major(self: Self) -> None:
230
230
  # Test that an empty release still has valid major, minor, micro values
231
231
  version: Version = Version()
232
- version.public.base.release = []
232
+ version.public.base.release.data = []
233
233
  self.assertEqual(version.public.base.release.major, 0)
234
234
  self.assertEqual(version.public.base.release.minor, 0)
235
235
  self.assertEqual(version.public.base.release.micro, 0)
236
236
  self.assertEqual(version.public.base.release.patch, 0)
237
237
 
238
- def test_release_modify_with_alias_increase_length(self: Self) -> None:
239
- # Test that modifying an alias can extend the length of release
240
- version: Version = Version()
241
- version.public.base.release = [1]
242
- version.public.base.release.minor = 5 # This should make release [1, 5]
243
- self.assertEqual(version.public.base.release, [1, 5])
244
- version.public.base.release.micro = 3 # This should make release [1, 5, 3]
245
- self.assertEqual(version.public.base.release, [1, 5, 3])
246
-
247
- def test_release_modify_major_only(self: Self) -> None:
248
- # Test that setting just the major property works
249
- version: Version = Version()
250
- version.public.base.release.major = 10
251
- self.assertEqual(version.public.base.release, [10])
252
-
253
- def test_release_modify_minor_only(self: Self) -> None:
254
- # Test that setting just the minor property extends release
255
- version: Version = Version()
256
- version.public.base.release = []
257
- version.public.base.release.minor = 1
258
- self.assertEqual(version.public.base.release, [0, 1])
259
-
260
- def test_release_modify_micro_only(self: Self) -> None:
261
- # Test that setting just the micro (patch) property extends release
262
- version: Version = Version()
263
- version.public.base.release = []
264
- version.public.base.release.micro = 1
265
- self.assertEqual(version.public.base.release, [0, 0, 1])
266
-
267
238
 
268
239
  class TestAdditionalVersionRelease(unittest.TestCase):
269
240
 
@@ -282,9 +253,12 @@ class TestAdditionalVersionRelease(unittest.TestCase):
282
253
  def test_release_slice_assignment(self: Self) -> None:
283
254
  # Test assigning a slice to release
284
255
  version: Version = Version()
285
- version.public.base.release = [1, 2, 3, 4, 5]
256
+ version.public.base.release.data = [1, 2, 3, 4, 5]
286
257
  version.public.base.release[1:4] = [20, 30, 40]
287
- self.assertEqual(version.public.base.release, [1, 20, 30, 40, 5])
258
+ self.assertEqual(
259
+ list(version.public.base.release),
260
+ [1, 20, 30, 40, 5],
261
+ )
288
262
 
289
263
  def test_release_iterable(self: Self) -> None:
290
264
  # Test if release supports iteration
@@ -309,7 +283,7 @@ class TestAdditionalVersionRelease(unittest.TestCase):
309
283
  # Test setting the 'data' property directly
310
284
  version: Version = Version()
311
285
  version.public.base.release.data = [10, 20, 30]
312
- self.assertEqual(version.public.base.release, [10, 20, 30])
286
+ self.assertEqual(list(version.public.base.release), [10, 20, 30])
313
287
 
314
288
  def test_release_contains(self: Self) -> None:
315
289
  # Test 'in' keyword with release
@@ -322,13 +296,17 @@ class TestAdditionalVersionRelease(unittest.TestCase):
322
296
  # Test multiplying the release (list behavior)
323
297
  version: Version = Version()
324
298
  version.public.base.release = [1, 2]
325
- self.assertEqual(version.public.base.release * 3, [1, 2, 1, 2, 1, 2])
299
+ answer: list = list(version.public.base.release * 3)
300
+ solution: list = [1, 2, 1, 2, 1, 2]
301
+ self.assertEqual(answer, solution)
326
302
 
327
303
  def test_release_addition(self: Self) -> None:
328
304
  # Test adding another list to release
329
305
  version: Version = Version()
330
- version.public.base.release = [1, 2, 3]
331
- self.assertEqual(version.public.base.release + [4, 5], [1, 2, 3, 4, 5])
306
+ version.public.base.release.data = [1, 2, 3]
307
+ answer: list = list(version.public.base.release) + [4, 5]
308
+ solution: list = [1, 2, 3, 4, 5]
309
+ self.assertEqual(answer, solution)
332
310
 
333
311
 
334
312
  class TestVersionLocal(unittest.TestCase):
@@ -342,28 +320,32 @@ class TestVersionLocal(unittest.TestCase):
342
320
  def test_local_slice_assignment(self: Self) -> None:
343
321
  # Test assigning a slice to the local list
344
322
  version: Version = Version()
345
- version.local = [1, "dev", "build"]
323
+ version.local.data = [1, "dev", "build"]
346
324
  version.local[1:3] = ["alpha", "beta"]
347
- self.assertEqual(version.local, [1, "alpha", "beta"])
325
+ self.assertEqual(list(version.local), [1, "alpha", "beta"])
348
326
 
349
327
  def test_local_contains(self: Self) -> None:
350
328
  # Test 'in' keyword with local list
351
329
  version: Version = Version()
352
- version.local = [1, "dev", "build"]
330
+ version.local.data = [1, "dev", "build"]
353
331
  self.assertIn("dev", version.local)
354
332
  self.assertNotIn("alpha", version.local)
355
333
 
356
334
  def test_local_mul(self: Self) -> None:
357
335
  # Test multiplying the local list
358
336
  version: Version = Version()
359
- version.local = [1, "dev"]
360
- self.assertEqual(version.local * 3, [1, "dev", 1, "dev", 1, "dev"])
337
+ version.local.data = [1, "dev"]
338
+ answer: list = list(version.local * 3)
339
+ solution: list = [1, "dev", 1, "dev", 1, "dev"]
340
+ self.assertEqual(answer, solution)
361
341
 
362
342
  def test_local_addition(self: Self) -> None:
363
343
  # Test adding another list to local
364
344
  version: Version = Version()
365
- version.local = [1, "dev"]
366
- self.assertEqual(version.local + ["build"], [1, "dev", "build"])
345
+ version.local.data = [1, "dev"]
346
+ answer: list = list(version.local + ["build"])
347
+ solution: list = [1, "dev", "build"]
348
+ self.assertEqual(answer, solution)
367
349
 
368
350
  def test_local_inequality_with_list(self: Self) -> None:
369
351
  # Test inequality of local with a normal list
@@ -387,7 +369,9 @@ class TestVersionLocal(unittest.TestCase):
387
369
  # Test that 'data' property can be set directly
388
370
  version: Version = Version()
389
371
  version.local.data = ["custom", "data"]
390
- self.assertEqual(version.local, ["custom", "data"])
372
+ answer: list = list(version.local)
373
+ solution: list = ["custom", "data"]
374
+ self.assertEqual(answer, solution)
391
375
 
392
376
  def test_local_iterable(self: Self) -> None:
393
377
  # Test if local supports iteration
@@ -1064,3 +1064,30 @@ clsname = "Version"
1064
1064
  attrname = "fdsfvdsff"
1065
1065
  attrvalue = 42
1066
1066
  isimported = true
1067
+
1068
+ [release-key.test-major]
1069
+ steps = [
1070
+ {name = "major", value = 10, solution = [10]}
1071
+ ]
1072
+
1073
+ [release-key.test-minor]
1074
+ steps = [
1075
+ {name = "minor", value = 1, solution = [0, 1] }
1076
+ ]
1077
+
1078
+ [release-key.test-micro]
1079
+ steps = [
1080
+ {name = "micro",value = 1, solution = [0, 0, 1] }
1081
+ ]
1082
+
1083
+ [release-key.test-patch]
1084
+ steps = [
1085
+ {name = "patch", value = 5, solution = [0, 0, 5]}
1086
+ ]
1087
+
1088
+ [release-key.modify-increase-length]
1089
+ steps = [
1090
+ { name = "data", value = [1], solution = [1] },
1091
+ { name = "minor", value = 5, solution = [1, 5] },
1092
+ { name = "micro", value = 3, solution = [1, 5, 3] }
1093
+ ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: v440
3
- Version: 2.0.0.dev90
3
+ Version: 2.0.0.dev92
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