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.
- {v440-2.0.0.dev68/src/v440.egg-info → v440-2.0.0.dev71}/PKG-INFO +1 -1
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/pyproject.toml +1 -1
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/ListStringer.py +1 -3
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/tests/test_testdata.py +95 -68
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/tests/testdata.toml +48 -48
- {v440-2.0.0.dev68 → v440-2.0.0.dev71/src/v440.egg-info}/PKG-INFO +1 -1
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/LICENSE.txt +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/MANIFEST.in +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/README.rst +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/setup.cfg +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/__init__.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/BaseStringer.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/Cfg.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/Digest.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/Pattern.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/SlotStringer.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/__init__.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/cfg.toml +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/guarding.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/qualparse.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/releaseparse.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/_utils/segmenting.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/core/Base.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/core/Local.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/core/Public.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/core/Qual.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/core/Release.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/core/Version.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/core/VersionError.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/core/__init__.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/tests/__init__.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440/tests/test_version.py +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440.egg-info/SOURCES.txt +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440.egg-info/dependency_links.txt +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440.egg-info/requires.txt +0 -0
- {v440-2.0.0.dev68 → v440-2.0.0.dev71}/src/v440.egg-info/top_level.txt +0 -0
|
@@ -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
|
|
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.
|
|
201
|
+
self.go_key(
|
|
202
202
|
key="test_dev_as_tuple",
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
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
|
-
|
|
214
|
-
|
|
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
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
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
|
-
|
|
226
|
-
v
|
|
227
|
-
v
|
|
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,
|
|
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
|
-
|
|
293
|
-
for
|
|
294
|
-
pure +=
|
|
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
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
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
|
-
|
|
320
|
+
k: str
|
|
325
321
|
l: list
|
|
326
|
-
for l in Util.util.data["strings"]["valid"].
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
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
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
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
|
-
|
|
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
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
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
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
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
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
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
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
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
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
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
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
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
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
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
|
-
|
|
788
|
-
|
|
787
|
+
setup = "1.2.3"
|
|
788
|
+
update = [
|
|
789
789
|
"dev",
|
|
790
790
|
"6000",
|
|
791
791
|
]
|
|
792
|
-
|
|
793
|
-
|
|
792
|
+
text = "1.2.3.dev6000"
|
|
793
|
+
answer = 6000
|
|
794
794
|
|
|
795
795
|
[devint.test_dev_as_uppercase_string]
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
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
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
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
|
-
|
|
809
|
-
|
|
808
|
+
setup = "1.2.3"
|
|
809
|
+
update = [
|
|
810
810
|
"dEV",
|
|
811
811
|
"9000",
|
|
812
812
|
]
|
|
813
|
-
|
|
814
|
-
|
|
813
|
+
text = "1.2.3.dev9000"
|
|
814
|
+
answer = 9000
|
|
815
815
|
|
|
816
816
|
[devint.test_dev_as_false]
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
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
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
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"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|