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.
Files changed (35) hide show
  1. {v440-2.0.0.dev29/src/v440.egg-info → v440-2.0.0.dev31}/PKG-INFO +1 -1
  2. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/pyproject.toml +1 -1
  3. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/core/Version.py +0 -24
  4. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/tests/test_testdata.py +43 -67
  5. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/tests/test_version.py +64 -21
  6. {v440-2.0.0.dev29 → v440-2.0.0.dev31/src/v440.egg-info}/PKG-INFO +1 -1
  7. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/LICENSE.txt +0 -0
  8. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/MANIFEST.in +0 -0
  9. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/README.rst +0 -0
  10. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/setup.cfg +0 -0
  11. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/__init__.py +0 -0
  12. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/BaseList.py +0 -0
  13. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/Cfg.py +0 -0
  14. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/Digest.py +0 -0
  15. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/Pattern.py +0 -0
  16. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/SimpleQualifierParser.py +0 -0
  17. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/SlotList.py +0 -0
  18. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/VList.py +0 -0
  19. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/__init__.py +0 -0
  20. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/cfg.toml +0 -0
  21. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/qualparse.py +0 -0
  22. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/_utils/utils.py +0 -0
  23. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/core/Base.py +0 -0
  24. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/core/Local.py +0 -0
  25. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/core/Public.py +0 -0
  26. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/core/Qualification.py +0 -0
  27. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/core/Release.py +0 -0
  28. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/core/VersionError.py +0 -0
  29. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/core/__init__.py +0 -0
  30. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/tests/__init__.py +0 -0
  31. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440/tests/testdata.toml +0 -0
  32. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440.egg-info/SOURCES.txt +0 -0
  33. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440.egg-info/dependency_links.txt +0 -0
  34. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/src/v440.egg-info/requires.txt +0 -0
  35. {v440-2.0.0.dev29 → v440-2.0.0.dev31}/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.dev29
3
+ Version: 2.0.0.dev31
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.dev29"
37
+ version = "2.0.0.dev31"
38
38
 
39
39
  [project.license]
40
40
  file = "LICENSE.txt"
@@ -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.go(**v, key=k)
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 TestVersionLocal(unittest.TestCase):
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.local(**v, key=k)
97
+ with self.subTest(key=k):
98
+ self.go(**v)
99
99
 
100
- def local(
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 TestVersionEpoch(unittest.TestCase):
121
- def epoch(
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
- def test_0(self: Self) -> None:
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 Util.util.data["epoch"].items():
139
- self.epoch(**v, key=k)
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 slicingmethod(
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 TestDev(unittest.TestCase):
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.dev(
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.dev(key=k, **v)
211
+ with self.subTest(key=k):
212
+ self.go(**v, key=k)
237
213
 
238
- def dev(
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 TestVersionSpecifiers(unittest.TestCase):
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.spec(**v, key=k)
237
+ self.go(**v, key=k)
270
238
 
271
- def spec(self: Self, string_a: str, string_b: str, key: str = "") -> None:
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 TestPackaging(unittest.TestCase):
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()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: v440
3
- Version: 2.0.0.dev29
3
+ Version: 2.0.0.dev31
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