v440 2.0.0.dev43__tar.gz → 2.0.0.dev44__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.dev43/src/v440.egg-info → v440-2.0.0.dev44}/PKG-INFO +2 -1
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/pyproject.toml +2 -1
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/_utils/SlotList.py +17 -6
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/_utils/VList.py +6 -5
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/core/Base.py +5 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/core/Local.py +6 -3
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/core/Public.py +4 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/core/Qual.py +5 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/core/Release.py +14 -1
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/core/Version.py +6 -1
- {v440-2.0.0.dev43 → v440-2.0.0.dev44/src/v440.egg-info}/PKG-INFO +2 -1
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440.egg-info/requires.txt +1 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/LICENSE.txt +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/MANIFEST.in +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/README.rst +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/setup.cfg +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/__init__.py +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/_utils/BaseList.py +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/_utils/Cfg.py +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/_utils/Digest.py +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/_utils/Pattern.py +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/_utils/__init__.py +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/_utils/cfg.toml +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/_utils/qualparse.py +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/_utils/utils.py +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/core/VersionError.py +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/core/__init__.py +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/tests/__init__.py +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/tests/test_testdata.py +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/tests/test_version.py +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440/tests/testdata.toml +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440.egg-info/SOURCES.txt +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/src/v440.egg-info/dependency_links.txt +0 -0
- {v440-2.0.0.dev43 → v440-2.0.0.dev44}/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.
|
|
3
|
+
Version: 2.0.0.dev44
|
|
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)
|
|
@@ -47,6 +47,7 @@ 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
49
|
Requires-Dist: scaevola<2.0,>=1.1
|
|
50
|
+
Requires-Dist: setdoc<2,>=1.2
|
|
50
51
|
Requires-Dist: tofunc<2,>=1.0.0
|
|
51
52
|
Dynamic: license-file
|
|
52
53
|
|
|
@@ -27,6 +27,7 @@ dependencies = [
|
|
|
27
27
|
"overloadable>=1.0.5,<2.0",
|
|
28
28
|
"packaging>=23.2",
|
|
29
29
|
"scaevola>=1.1,<2.0",
|
|
30
|
+
"setdoc>=1.2,<2",
|
|
30
31
|
"tofunc>=1.0.0,<2",
|
|
31
32
|
]
|
|
32
33
|
description = "This project provides mutable version objects in accordance with PEP440."
|
|
@@ -34,7 +35,7 @@ keywords = []
|
|
|
34
35
|
name = "v440"
|
|
35
36
|
readme = "README.rst"
|
|
36
37
|
requires-python = ">=3.11"
|
|
37
|
-
version = "2.0.0.
|
|
38
|
+
version = "2.0.0.dev44"
|
|
38
39
|
|
|
39
40
|
[project.license]
|
|
40
41
|
file = "LICENSE.txt"
|
|
@@ -4,6 +4,7 @@ from abc import abstractmethod
|
|
|
4
4
|
from typing import *
|
|
5
5
|
|
|
6
6
|
import scaevola
|
|
7
|
+
import setdoc
|
|
7
8
|
from datarepr import datarepr
|
|
8
9
|
from unhash import unhash
|
|
9
10
|
|
|
@@ -19,11 +20,12 @@ class SlotList(collections.abc.Collection, BaseList):
|
|
|
19
20
|
|
|
20
21
|
data: list
|
|
21
22
|
|
|
23
|
+
@setdoc.basic
|
|
22
24
|
def __contains__(self: Self, other: Any) -> bool:
|
|
23
25
|
return other in self.data
|
|
24
26
|
|
|
27
|
+
@setdoc.basic
|
|
25
28
|
def __eq__(self: Self, other: Any) -> bool:
|
|
26
|
-
"This magic method implements self==other."
|
|
27
29
|
try:
|
|
28
30
|
alt: Self = type(self)(other)
|
|
29
31
|
except VersionError:
|
|
@@ -31,15 +33,16 @@ class SlotList(collections.abc.Collection, BaseList):
|
|
|
31
33
|
else:
|
|
32
34
|
return self.data == alt.data
|
|
33
35
|
|
|
36
|
+
@setdoc.basic
|
|
34
37
|
def __format__(self: Self, format_spec: Any = "", /) -> str:
|
|
35
|
-
"This magic method implements format(self, format_spec)."
|
|
36
38
|
return format(str(self), str(format_spec))
|
|
37
39
|
|
|
40
|
+
@setdoc.basic
|
|
38
41
|
def __getitem__(self: Self, key: Any) -> Any:
|
|
39
42
|
return self.data[key]
|
|
40
43
|
|
|
44
|
+
@setdoc.basic
|
|
41
45
|
def __ge__(self: Self, other: Any, /) -> bool:
|
|
42
|
-
"This magic method implements self<=other."
|
|
43
46
|
alt: Self
|
|
44
47
|
try:
|
|
45
48
|
alt = type(self)(other)
|
|
@@ -48,8 +51,8 @@ class SlotList(collections.abc.Collection, BaseList):
|
|
|
48
51
|
else:
|
|
49
52
|
return self._cmp() >= alt._cmp()
|
|
50
53
|
|
|
54
|
+
@setdoc.basic
|
|
51
55
|
def __gt__(self: Self, other: Any, /) -> bool:
|
|
52
|
-
"This magic method implements self<=other."
|
|
53
56
|
alt: Self
|
|
54
57
|
try:
|
|
55
58
|
alt = type(self)(other)
|
|
@@ -60,14 +63,16 @@ class SlotList(collections.abc.Collection, BaseList):
|
|
|
60
63
|
|
|
61
64
|
__hash__ = unhash
|
|
62
65
|
|
|
66
|
+
@setdoc.basic
|
|
63
67
|
def __init__(self: Self, data: Any = None) -> None:
|
|
64
68
|
self.data = data
|
|
65
69
|
|
|
70
|
+
@setdoc.basic
|
|
66
71
|
def __iter__(self: Self) -> Any:
|
|
67
72
|
return iter(self.data)
|
|
68
73
|
|
|
74
|
+
@setdoc.basic
|
|
69
75
|
def __le__(self: Self, other: Any, /) -> bool:
|
|
70
|
-
"This magic method implements self<=other."
|
|
71
76
|
alt: Self
|
|
72
77
|
try:
|
|
73
78
|
alt = type(self)(other)
|
|
@@ -76,11 +81,12 @@ class SlotList(collections.abc.Collection, BaseList):
|
|
|
76
81
|
else:
|
|
77
82
|
return self._cmp() <= alt._cmp()
|
|
78
83
|
|
|
84
|
+
@setdoc.basic
|
|
79
85
|
def __len__(self: Self) -> int:
|
|
80
86
|
return len(type(self).__slots__)
|
|
81
87
|
|
|
88
|
+
@setdoc.basic
|
|
82
89
|
def __lt__(self: Self, other: Any, /) -> bool:
|
|
83
|
-
"This magic method implements self<=other."
|
|
84
90
|
alt: Self
|
|
85
91
|
try:
|
|
86
92
|
alt = type(self)(other)
|
|
@@ -89,20 +95,25 @@ class SlotList(collections.abc.Collection, BaseList):
|
|
|
89
95
|
else:
|
|
90
96
|
return self._cmp() < alt._cmp()
|
|
91
97
|
|
|
98
|
+
@setdoc.basic
|
|
92
99
|
def __ne__(self: Self, other: Any) -> bool:
|
|
93
100
|
return not (self == other)
|
|
94
101
|
|
|
102
|
+
@setdoc.basic
|
|
95
103
|
def __repr__(self: Self) -> str:
|
|
96
104
|
return datarepr(type(self).__name__, self.data)
|
|
97
105
|
|
|
106
|
+
@setdoc.basic
|
|
98
107
|
def __reversed__(self: Self) -> Iterable:
|
|
99
108
|
return reversed(self.data)
|
|
100
109
|
|
|
110
|
+
@setdoc.basic
|
|
101
111
|
def __setitem__(self: Self, key: Any, value: Any) -> None:
|
|
102
112
|
data: list = self.data
|
|
103
113
|
data[key] = value
|
|
104
114
|
self.data = data
|
|
105
115
|
|
|
116
|
+
@setdoc.basic
|
|
106
117
|
def __str__(self: Self) -> str:
|
|
107
118
|
return NotImplemented
|
|
108
119
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from typing import *
|
|
2
2
|
|
|
3
|
+
import setdoc
|
|
3
4
|
from datahold import OkayList
|
|
4
5
|
|
|
5
6
|
from v440._utils.BaseList import BaseList
|
|
@@ -8,8 +9,8 @@ from v440.core.VersionError import VersionError
|
|
|
8
9
|
|
|
9
10
|
class VList(OkayList, BaseList):
|
|
10
11
|
|
|
12
|
+
@setdoc.basic
|
|
11
13
|
def __eq__(self: Self, other: Any) -> bool:
|
|
12
|
-
"This magic method implements self==other."
|
|
13
14
|
ans: bool
|
|
14
15
|
try:
|
|
15
16
|
alt: Self = type(self)(other)
|
|
@@ -19,8 +20,8 @@ class VList(OkayList, BaseList):
|
|
|
19
20
|
ans = self._data == alt._data
|
|
20
21
|
return ans
|
|
21
22
|
|
|
23
|
+
@setdoc.basic
|
|
22
24
|
def __ge__(self: Self, other: Any, /) -> bool:
|
|
23
|
-
"This magic method implements self>=other."
|
|
24
25
|
ans: bool
|
|
25
26
|
try:
|
|
26
27
|
alt: Self = type(self)(other)
|
|
@@ -30,18 +31,18 @@ class VList(OkayList, BaseList):
|
|
|
30
31
|
ans = alt <= self
|
|
31
32
|
return ans
|
|
32
33
|
|
|
34
|
+
@setdoc.basic
|
|
33
35
|
def __iadd__(self: Self, other: Any, /) -> Self:
|
|
34
|
-
"This magic method implements self+=other."
|
|
35
36
|
self.data += type(self)(other).data
|
|
36
37
|
return self
|
|
37
38
|
|
|
39
|
+
@setdoc.basic
|
|
38
40
|
def __imul__(self: Self, other: Any, /) -> Self:
|
|
39
|
-
"This magic method implements self*=other."
|
|
40
41
|
self.data = self.data * other
|
|
41
42
|
return self
|
|
42
43
|
|
|
44
|
+
@setdoc.basic
|
|
43
45
|
def __le__(self: Self, other: Any, /) -> bool:
|
|
44
|
-
"This magic method implements self<=other."
|
|
45
46
|
ans: bool
|
|
46
47
|
try:
|
|
47
48
|
alt: Self = type(self)(other)
|
|
@@ -2,6 +2,8 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import *
|
|
4
4
|
|
|
5
|
+
import setdoc
|
|
6
|
+
|
|
5
7
|
from v440._utils.Digest import Digest
|
|
6
8
|
from v440._utils.SlotList import SlotList
|
|
7
9
|
from v440._utils.utils import guard
|
|
@@ -72,15 +74,18 @@ class Base(SlotList):
|
|
|
72
74
|
epoch: int
|
|
73
75
|
release: Release
|
|
74
76
|
|
|
77
|
+
@setdoc.basic
|
|
75
78
|
def __init__(self: Self, data: Any = None) -> None:
|
|
76
79
|
self._epoch = 0
|
|
77
80
|
self._release = Release()
|
|
78
81
|
self.data = data
|
|
79
82
|
|
|
83
|
+
@setdoc.basic
|
|
80
84
|
def __str__(self: Self) -> str:
|
|
81
85
|
return self.format()
|
|
82
86
|
|
|
83
87
|
@property
|
|
88
|
+
@setdoc.basic
|
|
84
89
|
def data(self: Self) -> list:
|
|
85
90
|
return [self.epoch, self.release]
|
|
86
91
|
|
|
@@ -3,6 +3,8 @@ from __future__ import annotations
|
|
|
3
3
|
import functools
|
|
4
4
|
from typing import *
|
|
5
5
|
|
|
6
|
+
import setdoc
|
|
7
|
+
|
|
6
8
|
from v440._utils import utils
|
|
7
9
|
from v440._utils.Digest import Digest
|
|
8
10
|
from v440._utils.utils import guard
|
|
@@ -15,13 +17,13 @@ class Local(VList):
|
|
|
15
17
|
|
|
16
18
|
data: list[int | str]
|
|
17
19
|
|
|
20
|
+
@setdoc.basic
|
|
18
21
|
def __init__(self: Any, data: Any = None) -> None:
|
|
19
|
-
"This magic method initializes self."
|
|
20
22
|
self._data = list()
|
|
21
23
|
self.data = data
|
|
22
24
|
|
|
25
|
+
@setdoc.basic
|
|
23
26
|
def __le__(self: Self, other: Iterable) -> bool:
|
|
24
|
-
"This magic method implements self<=other."
|
|
25
27
|
ans: bool
|
|
26
28
|
try:
|
|
27
29
|
alt: Self = type(self)(other)
|
|
@@ -31,8 +33,8 @@ class Local(VList):
|
|
|
31
33
|
ans = self._cmp() <= alt._cmp()
|
|
32
34
|
return ans
|
|
33
35
|
|
|
36
|
+
@setdoc.basic
|
|
34
37
|
def __str__(self: Self) -> str:
|
|
35
|
-
"This magic method implements str(self)."
|
|
36
38
|
return ".".join(map(str, self))
|
|
37
39
|
|
|
38
40
|
def _cmp(self: Self) -> list:
|
|
@@ -73,6 +75,7 @@ class Local(VList):
|
|
|
73
75
|
return type(value) is int, value
|
|
74
76
|
|
|
75
77
|
@property
|
|
78
|
+
@setdoc.basic
|
|
76
79
|
def data(self: Self) -> list[int | str]:
|
|
77
80
|
return list(self._data)
|
|
78
81
|
|
|
@@ -2,6 +2,8 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import *
|
|
4
4
|
|
|
5
|
+
import setdoc
|
|
6
|
+
|
|
5
7
|
from v440._utils.Digest import Digest
|
|
6
8
|
from v440._utils.Pattern import Pattern
|
|
7
9
|
from v440._utils.SlotList import SlotList
|
|
@@ -44,6 +46,7 @@ class Public(SlotList):
|
|
|
44
46
|
base: Base
|
|
45
47
|
qual: Qual
|
|
46
48
|
|
|
49
|
+
@setdoc.basic
|
|
47
50
|
def __init__(self: Self, data: Any = None) -> None:
|
|
48
51
|
self._base = Base()
|
|
49
52
|
self._qual = Qual()
|
|
@@ -62,6 +65,7 @@ class Public(SlotList):
|
|
|
62
65
|
self.base.data = value
|
|
63
66
|
|
|
64
67
|
@property
|
|
68
|
+
@setdoc.basic
|
|
65
69
|
def data(self: Self) -> list:
|
|
66
70
|
return [self.base, self.qual]
|
|
67
71
|
|
|
@@ -2,6 +2,8 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import *
|
|
4
4
|
|
|
5
|
+
import setdoc
|
|
6
|
+
|
|
5
7
|
from v440._utils import qualparse
|
|
6
8
|
from v440._utils.SlotList import SlotList
|
|
7
9
|
from v440._utils.utils import guard
|
|
@@ -19,6 +21,7 @@ class Qual(SlotList):
|
|
|
19
21
|
post: Optional[int]
|
|
20
22
|
dev: Optional[int]
|
|
21
23
|
|
|
24
|
+
@setdoc.basic
|
|
22
25
|
def __init__(self: Self, data: Any = None) -> None:
|
|
23
26
|
self._prephase = None
|
|
24
27
|
self._presubphase = None
|
|
@@ -26,6 +29,7 @@ class Qual(SlotList):
|
|
|
26
29
|
self._dev = None
|
|
27
30
|
self.data = data
|
|
28
31
|
|
|
32
|
+
@setdoc.basic
|
|
29
33
|
def __str__(self: Self) -> str:
|
|
30
34
|
ans: str = ""
|
|
31
35
|
if self.prephase is not None:
|
|
@@ -53,6 +57,7 @@ class Qual(SlotList):
|
|
|
53
57
|
return ans
|
|
54
58
|
|
|
55
59
|
@property
|
|
60
|
+
@setdoc.basic
|
|
56
61
|
def data(self: Self) -> list:
|
|
57
62
|
return [self.prephase, self.presubphase, self.post, self.dev]
|
|
58
63
|
|
|
@@ -4,6 +4,7 @@ import operator
|
|
|
4
4
|
import string
|
|
5
5
|
from typing import *
|
|
6
6
|
|
|
7
|
+
import setdoc
|
|
7
8
|
from keyalias import keyalias
|
|
8
9
|
from overloadable import Overloadable
|
|
9
10
|
|
|
@@ -22,6 +23,7 @@ class Release(VList):
|
|
|
22
23
|
micro: int
|
|
23
24
|
patch: int
|
|
24
25
|
|
|
26
|
+
@setdoc.basic
|
|
25
27
|
def __add__(self: Self, other: Any, /) -> Self:
|
|
26
28
|
opp: Self = type(self)(other)
|
|
27
29
|
ans: Self = self.copy()
|
|
@@ -29,16 +31,19 @@ class Release(VList):
|
|
|
29
31
|
return ans
|
|
30
32
|
|
|
31
33
|
@Overloadable
|
|
34
|
+
@setdoc.basic
|
|
32
35
|
def __delitem__(self: Self, key: Any) -> bool:
|
|
33
36
|
return type(key) is slice
|
|
34
37
|
|
|
35
38
|
@__delitem__.overload(False)
|
|
39
|
+
@setdoc.basic
|
|
36
40
|
def __delitem__(self: Self, key: SupportsIndex) -> None:
|
|
37
41
|
i: int = operator.index(key)
|
|
38
42
|
if i < len(self):
|
|
39
43
|
del self._data[i]
|
|
40
44
|
|
|
41
45
|
@__delitem__.overload(True)
|
|
46
|
+
@setdoc.basic
|
|
42
47
|
def __delitem__(self: Self, key: Any) -> None:
|
|
43
48
|
r: range = utils.torange(key, len(self))
|
|
44
49
|
l: list = [k for k in r if k < len(self)]
|
|
@@ -47,41 +52,48 @@ class Release(VList):
|
|
|
47
52
|
del self._data[k]
|
|
48
53
|
|
|
49
54
|
@Overloadable
|
|
55
|
+
@setdoc.basic
|
|
50
56
|
def __getitem__(self: Self, key: Any) -> bool:
|
|
51
57
|
return type(key) is slice
|
|
52
58
|
|
|
53
59
|
@__getitem__.overload(False)
|
|
60
|
+
@setdoc.basic
|
|
54
61
|
def __getitem__(self: Self, key: Any) -> int:
|
|
55
62
|
i: int = operator.index(key)
|
|
56
63
|
ans: int = self._getitem_int(i)
|
|
57
64
|
return ans
|
|
58
65
|
|
|
59
66
|
@__getitem__.overload(True)
|
|
67
|
+
@setdoc.basic
|
|
60
68
|
def __getitem__(self: Self, key: Any) -> list:
|
|
61
69
|
r: range = utils.torange(key, len(self))
|
|
62
70
|
m: map = map(self._getitem_int, r)
|
|
63
71
|
ans: list = list(m)
|
|
64
72
|
return ans
|
|
65
73
|
|
|
74
|
+
@setdoc.basic
|
|
66
75
|
def __init__(self: Any, data: Any = None) -> None:
|
|
67
|
-
"This magic method initializes self."
|
|
68
76
|
self._data = list()
|
|
69
77
|
self.data = data
|
|
70
78
|
|
|
71
79
|
@Overloadable
|
|
80
|
+
@setdoc.basic
|
|
72
81
|
def __setitem__(self: Self, key: Any, value: Any) -> bool:
|
|
73
82
|
return type(key) is slice
|
|
74
83
|
|
|
75
84
|
@__setitem__.overload(False)
|
|
85
|
+
@setdoc.basic
|
|
76
86
|
def __setitem__(self: Self, key: SupportsIndex, value: Any) -> Any:
|
|
77
87
|
i: int = operator.index(key)
|
|
78
88
|
self._setitem_int(i, value)
|
|
79
89
|
|
|
80
90
|
@__setitem__.overload(True)
|
|
91
|
+
@setdoc.basic
|
|
81
92
|
def __setitem__(self: Self, key: SupportsIndex, value: Any) -> Any:
|
|
82
93
|
k: range = utils.torange(key, len(self))
|
|
83
94
|
self._setitem_range(k, value)
|
|
84
95
|
|
|
96
|
+
@setdoc.basic
|
|
85
97
|
def __str__(self: Self) -> str:
|
|
86
98
|
return self.format()
|
|
87
99
|
|
|
@@ -190,6 +202,7 @@ class Release(VList):
|
|
|
190
202
|
self.data = self.data[: i + 1]
|
|
191
203
|
|
|
192
204
|
@property
|
|
205
|
+
@setdoc.basic
|
|
193
206
|
def data(self: Self) -> list:
|
|
194
207
|
return list(self._data)
|
|
195
208
|
|
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
from typing import *
|
|
4
4
|
|
|
5
5
|
import packaging.version
|
|
6
|
+
import setdoc
|
|
6
7
|
|
|
7
8
|
from v440._utils.Digest import Digest
|
|
8
9
|
from v440._utils.SlotList import SlotList
|
|
@@ -45,15 +46,18 @@ class Version(SlotList):
|
|
|
45
46
|
local: Local
|
|
46
47
|
public: Public
|
|
47
48
|
|
|
48
|
-
|
|
49
|
+
@setdoc.basic
|
|
50
|
+
def __init__(self: Self, data: Any = None) -> None:
|
|
49
51
|
self._public = Public()
|
|
50
52
|
self._local = Local()
|
|
51
53
|
self.data = data
|
|
52
54
|
|
|
55
|
+
@setdoc.basic
|
|
53
56
|
def __str__(self: Self) -> str:
|
|
54
57
|
return self.format()
|
|
55
58
|
|
|
56
59
|
@property
|
|
60
|
+
@setdoc.basic
|
|
57
61
|
def data(self: Self) -> list:
|
|
58
62
|
return [self.public, self.local]
|
|
59
63
|
|
|
@@ -78,6 +82,7 @@ class Version(SlotList):
|
|
|
78
82
|
self.local.data = value
|
|
79
83
|
|
|
80
84
|
def packaging(self: Self) -> packaging.version.Version:
|
|
85
|
+
"This method returns an eqivalent packaging.version.Version object."
|
|
81
86
|
return packaging.version.Version(str(self))
|
|
82
87
|
|
|
83
88
|
@property
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: v440
|
|
3
|
-
Version: 2.0.0.
|
|
3
|
+
Version: 2.0.0.dev44
|
|
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)
|
|
@@ -47,6 +47,7 @@ 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
49
|
Requires-Dist: scaevola<2.0,>=1.1
|
|
50
|
+
Requires-Dist: setdoc<2,>=1.2
|
|
50
51
|
Requires-Dist: tofunc<2,>=1.0.0
|
|
51
52
|
Dynamic: license-file
|
|
52
53
|
|
|
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
|