v440 2.0.0.dev68__tar.gz → 2.0.0.dev71__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 (36) hide show
  1. {v440-2.0.0.dev68/src/v440.egg-info → v440-2.0.0.dev71}/PKG-INFO +1 -1
  2. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/pyproject.toml +1 -1
  3. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/ListStringer.py +1 -3
  4. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/tests/test_testdata.py +95 -68
  5. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/tests/testdata.toml +48 -48
  6. {v440-2.0.0.dev68 → v440-2.0.0.dev71/src/v440.egg-info}/PKG-INFO +1 -1
  7. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/LICENSE.txt +0 -0
  8. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/MANIFEST.in +0 -0
  9. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/README.rst +0 -0
  10. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/setup.cfg +0 -0
  11. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/__init__.py +0 -0
  12. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/BaseStringer.py +0 -0
  13. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/Cfg.py +0 -0
  14. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/Digest.py +0 -0
  15. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/Pattern.py +0 -0
  16. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/SlotStringer.py +0 -0
  17. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/__init__.py +0 -0
  18. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/cfg.toml +0 -0
  19. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/guarding.py +0 -0
  20. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/qualparse.py +0 -0
  21. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/releaseparse.py +0 -0
  22. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/segmenting.py +0 -0
  23. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/core/Base.py +0 -0
  24. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/core/Local.py +0 -0
  25. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/core/Public.py +0 -0
  26. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/core/Qual.py +0 -0
  27. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/core/Release.py +0 -0
  28. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/core/Version.py +0 -0
  29. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/core/VersionError.py +0 -0
  30. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/core/__init__.py +0 -0
  31. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/tests/__init__.py +0 -0
  32. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/tests/test_version.py +0 -0
  33. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440.egg-info/SOURCES.txt +0 -0
  34. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440.egg-info/dependency_links.txt +0 -0
  35. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440.egg-info/requires.txt +0 -0
  36. {v440-2.0.0.dev68 → v440-2.0.0.dev71}/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.dev68
3
+ Version: 2.0.0.dev71
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.dev68"
39
+ version = "2.0.0.dev71"
40
40
 
41
41
  [project.license]
42
42
  file = "LICENSE.txt"
@@ -178,9 +178,7 @@ class ListStringer(BaseStringer, collections.abc.MutableSequence):
178
178
  self._data = ()
179
179
 
180
180
  def _set(self: Self, value: Any) -> None:
181
- if value is None:
182
- self.data = ()
183
- elif isinstance(value, str):
181
+ if isinstance(value, str):
184
182
  self.string = value
185
183
  elif hasattr(value, "__iter__"):
186
184
  self.data = value
@@ -198,36 +198,39 @@ class TestVersionRelease(unittest.TestCase):
198
198
 
199
199
  class TestDevGo(unittest.TestCase):
200
200
  def test_dev_as_tuple(self: Self) -> None:
201
- self.go(
201
+ self.go_key(
202
202
  key="test_dev_as_tuple",
203
- v_version="1.2.3",
204
- v_dev=("dev", "5000"),
205
- v_str="1.2.3.dev5000",
206
- v_ans=5000,
203
+ setup="1.2.3",
204
+ update=("dev", "5000"),
205
+ text="1.2.3.dev5000",
206
+ answer=5000,
207
207
  )
208
208
 
209
209
  def test_strings_a(self: Self) -> None:
210
210
  k: str
211
211
  v: dict
212
212
  for k, v in Util.util.data["devint"].items():
213
- with self.subTest(key=k):
214
- self.go(**v, key=k)
213
+ self.go_key(**v, key=k)
214
+
215
+ def go_key(self: Self, key: str, **kwargs: Any) -> None:
216
+ msg: str = "dev %r" % key
217
+ with self.subTest(key=key):
218
+ self.go(**kwargs, msg=msg)
215
219
 
216
220
  def go(
217
221
  self: Self,
218
- key: str,
219
- v_version: Any,
220
- v_str: Any,
221
- v_ans: Any,
222
- v_dev: Any = None,
222
+ msg: str,
223
+ setup: Any,
224
+ text: str,
225
+ answer: Any,
226
+ update: Any = None,
223
227
  dev_type: type = int,
224
228
  ):
225
- msg: str = "dev %r" % key
226
- v: Version = Version(v_version)
227
- v.public.qual.dev = v_dev
228
- self.assertEqual(str(v), v_str, msg=msg)
229
+ v: Version = Version(setup)
230
+ v.public.qual.dev = update
231
+ self.assertEqual(str(v), text, msg=msg)
229
232
  self.assertIsInstance(v.public.qual.dev, dev_type, msg=msg)
230
- self.assertEqual(v.public.qual.dev, v_ans, msg=msg)
233
+ self.assertEqual(v.public.qual.dev, answer, msg=msg)
231
234
 
232
235
 
233
236
  class TestVersionSpecifiersGo(unittest.TestCase):
@@ -255,14 +258,10 @@ class TestPackagingA(unittest.TestCase):
255
258
  self.go(text=s)
256
259
 
257
260
  def go(self: Self, text: str) -> None:
258
- a: packaging.version.Version
259
- b: str
260
- f: int
261
- g: str
262
- a = packaging.version.Version(text)
263
- b = str(a)
264
- f = len(a.release)
265
- g = format(Version(text), str(f))
261
+ a: packaging.version.Version = packaging.version.Version(text)
262
+ b: str = str(a)
263
+ f: int = len(a.release)
264
+ g: str = format(Version(text), str(f))
266
265
  self.assertEqual(b, g)
267
266
 
268
267
 
@@ -289,9 +288,9 @@ class TestPackagingB(unittest.TestCase):
289
288
  class TestPackagingC(unittest.TestCase):
290
289
  def test_strings_c(self: Self) -> None:
291
290
  pure: list = list()
292
- l: list
293
- for l in Util.util.data["strings"]["valid"].values():
294
- pure += l
291
+ part: list
292
+ for part in Util.util.data["strings"]["valid"].values():
293
+ pure += part
295
294
  ops: list = [
296
295
  operator.eq,
297
296
  operator.ne,
@@ -300,57 +299,85 @@ class TestPackagingC(unittest.TestCase):
300
299
  operator.le,
301
300
  operator.lt,
302
301
  ]
303
- a: packaging.version.Version
304
- b: packaging.version.Version
305
- c: packaging.version.Version
306
- d: packaging.version.Version
307
- native: bool
308
- convert: bool
309
- msg: str
310
- op: Any
311
- for x, y, op in iterprod.iterprod(pure, pure, ops):
312
- a = packaging.version.Version(x)
313
- b = Version(x).packaging()
314
- c = packaging.version.Version(y)
315
- d = Version(y).packaging()
316
- native = op(a, c)
317
- convert = op(b, d)
318
- msg = f"{op} should match for {x!r} and {y!r}"
319
- self.assertEqual(native, convert, msg=msg)
302
+ args: tuple
303
+ for args in iterprod.iterprod(pure, pure, ops):
304
+ with self.subTest(args=args):
305
+ self.go(*args)
306
+
307
+ def go(self: Self, x: str, y: str, func: Callable, /) -> None:
308
+ a: packaging.version.Version = packaging.version.Version(x)
309
+ b: packaging.version.Version = Version(string=x).packaging()
310
+ c: packaging.version.Version = packaging.version.Version(y)
311
+ d: packaging.version.Version = Version(string=y).packaging()
312
+ native: bool = func(a, c)
313
+ convert: bool = func(b, d)
314
+ msg: str = f"{func} should match for {x!r} and {y!r}"
315
+ self.assertEqual(native, convert, msg=msg)
320
316
 
321
317
 
322
318
  class TestPackagingField(unittest.TestCase):
323
319
  def test_field(self: Self) -> None:
324
- versionable: list = list()
320
+ k: str
325
321
  l: list
326
- for l in Util.util.data["strings"]["valid"].values():
327
- versionable += l
328
- for l in Util.util.data["strings"]["incomp"].values():
329
- versionable += l
330
- version_obj: Version = Version()
331
- v: Version
322
+ for k, l in Util.util.data["strings"]["valid"].items():
323
+ with self.subTest(key=k):
324
+ self.go_list(l)
325
+ for k, l in Util.util.data["strings"]["incomp"].items():
326
+ with self.subTest(key=k):
327
+ self.go_list(l)
328
+
329
+ def go_list(self: Self, listing: list) -> None:
332
330
  x: str
333
- for x in versionable:
334
- v = Version(x)
335
- self.assertEqual(v.public.qual.isdevrelease(), v.packaging().is_devrelease)
336
- self.assertEqual(v.public.qual.isprerelease(), v.packaging().is_prerelease)
337
- self.assertEqual(
338
- v.public.qual.ispostrelease(), v.packaging().is_postrelease
339
- )
340
- self.assertEqual(str(v.public.base), v.packaging().base_version)
341
- self.assertEqual(str(v.public), v.packaging().public)
342
- version_obj.local = v.packaging().local
343
- self.assertEqual(str(v.local), str(version_obj.local))
331
+ for x in listing:
332
+ with self.subTest():
333
+ self.go(query=x)
334
+
335
+ def go(self: Self, query: str) -> None:
336
+ v: Version = Version(query)
337
+ self.assertEqual(
338
+ v.public.qual.isdevrelease(),
339
+ v.packaging().is_devrelease,
340
+ )
341
+ self.assertEqual(
342
+ v.public.qual.isprerelease(),
343
+ v.packaging().is_prerelease,
344
+ )
345
+ self.assertEqual(
346
+ v.public.qual.ispostrelease(),
347
+ v.packaging().is_postrelease,
348
+ )
349
+ self.assertEqual(
350
+ str(v.public.base),
351
+ v.packaging().base_version,
352
+ )
353
+ self.assertEqual(
354
+ str(v.public),
355
+ v.packaging().public,
356
+ )
357
+ local_packaging: Optional[str] = v.packaging().local
358
+ if local_packaging is None:
359
+ local_packaging = ""
360
+ self.assertEqual(
361
+ str(v.local),
362
+ str(local_packaging),
363
+ )
344
364
 
345
365
 
346
366
  class TestPackagingExc(unittest.TestCase):
347
367
  def test_exc_pack(self: Self) -> None:
348
- impure: list = list()
368
+ k: str
369
+ for k in ("incomp", "exc"):
370
+ with self.subTest(strings=k):
371
+ self.go_dict(Util.util.data["strings"][k])
372
+
373
+ def go_dict(self: Self, dictionary: dict, /) -> None:
374
+ k: str
349
375
  l: list
350
- for l in Util.util.data["strings"]["incomp"].values():
351
- impure += l
352
- for l in Util.util.data["strings"]["exc"].values():
353
- impure += l
376
+ for k, l in dictionary.items():
377
+ with self.subTest(key=k):
378
+ self.go_list(l)
379
+
380
+ def go_list(self: Self, impure: list, /) -> None:
354
381
  x: str
355
382
  for x in impure:
356
383
  with self.assertRaises(packaging.version.InvalidVersion):
@@ -748,82 +748,82 @@ Post-releases = [
748
748
  ]
749
749
 
750
750
  [devint.test_dev_as_int]
751
- v_version = "1.2.3"
752
- v_dev = 1
753
- v_str = "1.2.3.dev1"
754
- v_ans = 1
751
+ setup = "1.2.3"
752
+ update = 1
753
+ text = "1.2.3.dev1"
754
+ answer = 1
755
755
 
756
756
  [devint.test_dev_as_string_int]
757
- v_version = "1.2.3"
758
- v_dev = "42"
759
- v_str = "1.2.3.dev42"
760
- v_ans = 42
757
+ setup = "1.2.3"
758
+ update = "42"
759
+ text = "1.2.3.dev42"
760
+ answer = 42
761
761
 
762
762
  [devint.test_dev_as_string_with_dev_prefix]
763
- v_version = "1.2.3"
764
- v_dev = "dev1000"
765
- v_str = "1.2.3.dev1000"
766
- v_ans = 1000
763
+ setup = "1.2.3"
764
+ update = "dev1000"
765
+ text = "1.2.3.dev1000"
766
+ answer = 1000
767
767
 
768
768
  [devint.test_dev_as_string_with_dev_dot_prefix]
769
- v_version = "1.2.3"
770
- v_dev = "dev.2000"
771
- v_str = "1.2.3.dev2000"
772
- v_ans = 2000
769
+ setup = "1.2.3"
770
+ update = "dev.2000"
771
+ text = "1.2.3.dev2000"
772
+ answer = 2000
773
773
 
774
774
  [devint.test_dev_as_string_with_dot_dev_prefix]
775
- v_version = "1.2.3"
776
- v_dev = ".dev.3000"
777
- v_str = "1.2.3.dev3000"
778
- v_ans = 3000
775
+ setup = "1.2.3"
776
+ update = ".dev.3000"
777
+ text = "1.2.3.dev3000"
778
+ answer = 3000
779
779
 
780
780
  [devint.test_dev_as_string_with_dot_dev_number_prefix]
781
- v_version = "1.2.3"
782
- v_dev = ".dev4000"
783
- v_str = "1.2.3.dev4000"
784
- v_ans = 4000
781
+ setup = "1.2.3"
782
+ update = ".dev4000"
783
+ text = "1.2.3.dev4000"
784
+ answer = 4000
785
785
 
786
786
  [devint.test_dev_as_list]
787
- v_version = "1.2.3"
788
- v_dev = [
787
+ setup = "1.2.3"
788
+ update = [
789
789
  "dev",
790
790
  "6000",
791
791
  ]
792
- v_str = "1.2.3.dev6000"
793
- v_ans = 6000
792
+ text = "1.2.3.dev6000"
793
+ answer = 6000
794
794
 
795
795
  [devint.test_dev_as_uppercase_string]
796
- v_version = "1.2.3"
797
- v_dev = "DEV7000"
798
- v_str = "1.2.3.dev7000"
799
- v_ans = 7000
796
+ setup = "1.2.3"
797
+ update = "DEV7000"
798
+ text = "1.2.3.dev7000"
799
+ answer = 7000
800
800
 
801
801
  [devint.test_dev_as_mixed_case_string]
802
- v_version = "1.2.3"
803
- v_dev = "dEv8000"
804
- v_str = "1.2.3.dev8000"
805
- v_ans = 8000
802
+ setup = "1.2.3"
803
+ update = "dEv8000"
804
+ text = "1.2.3.dev8000"
805
+ answer = 8000
806
806
 
807
807
  [devint.test_dev_as_list_mixed_case]
808
- v_version = "1.2.3"
809
- v_dev = [
808
+ setup = "1.2.3"
809
+ update = [
810
810
  "dEV",
811
811
  "9000",
812
812
  ]
813
- v_str = "1.2.3.dev9000"
814
- v_ans = 9000
813
+ text = "1.2.3.dev9000"
814
+ answer = 9000
815
815
 
816
816
  [devint.test_dev_as_false]
817
- v_version = "1.2.3"
818
- v_dev = false
819
- v_str = "1.2.3.dev0"
820
- v_ans = 0
817
+ setup = "1.2.3"
818
+ update = false
819
+ text = "1.2.3.dev0"
820
+ answer = 0
821
821
 
822
822
  [devint.test_dev_as_true]
823
- v_version = "1.2.3"
824
- v_dev = true
825
- v_str = "1.2.3.dev1"
826
- v_ans = 1
823
+ setup = "1.2.3"
824
+ update = true
825
+ text = "1.2.3.dev1"
826
+ answer = 1
827
827
 
828
828
  [spec.test_basic_version_with_post_specifier]
829
829
  string_a = "1.2.3-4"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: v440
3
- Version: 2.0.0.dev68
3
+ Version: 2.0.0.dev71
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