v440 2.0.0.dev10__tar.gz → 2.0.0.dev12__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 (33) hide show
  1. {v440-2.0.0.dev10/src/v440.egg-info → v440-2.0.0.dev12}/PKG-INFO +1 -1
  2. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/pyproject.toml +1 -1
  3. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/_utils/VList.py +17 -19
  4. v440-2.0.0.dev12/src/v440/_utils/WList.py +15 -0
  5. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/_utils/utils.py +0 -8
  6. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/core/Base.py +4 -6
  7. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/core/Local.py +5 -0
  8. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/core/Pre.py +5 -7
  9. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/core/Qualification.py +4 -6
  10. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/core/Release.py +5 -0
  11. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/core/Version.py +8 -10
  12. {v440-2.0.0.dev10 → v440-2.0.0.dev12/src/v440.egg-info}/PKG-INFO +1 -1
  13. v440-2.0.0.dev10/src/v440/_utils/WList.py +0 -24
  14. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/LICENSE.txt +0 -0
  15. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/MANIFEST.in +0 -0
  16. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/README.rst +0 -0
  17. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/setup.cfg +0 -0
  18. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/__init__.py +0 -0
  19. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/_utils/Digest.py +0 -0
  20. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/_utils/Pattern.py +0 -0
  21. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/_utils/SimpleQualifierParser.py +0 -0
  22. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/_utils/__init__.py +0 -0
  23. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/core/Public.py +0 -0
  24. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/core/VersionError.py +0 -0
  25. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/core/__init__.py +0 -0
  26. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/tests/__init__.py +0 -0
  27. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/tests/test_testdata.py +0 -0
  28. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/tests/test_version.py +0 -0
  29. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440/tests/testdata.toml +0 -0
  30. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440.egg-info/SOURCES.txt +0 -0
  31. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440.egg-info/dependency_links.txt +0 -0
  32. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/src/v440.egg-info/requires.txt +0 -0
  33. {v440-2.0.0.dev10 → v440-2.0.0.dev12}/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.dev10
3
+ Version: 2.0.0.dev12
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.dev10"
37
+ version = "2.0.0.dev12"
38
38
 
39
39
  [project.license]
40
40
  file = "LICENSE.txt"
@@ -5,6 +5,13 @@ from datahold import OkayList
5
5
  from v440.core.VersionError import VersionError
6
6
 
7
7
 
8
+ def clone(value: Any) -> Any:
9
+ if isinstance(value, VList):
10
+ return list(map(clone, value))
11
+ else:
12
+ return value
13
+
14
+
8
15
  class VList(OkayList):
9
16
  def __eq__(self: Self, other: Any) -> bool:
10
17
  "This magic method implements self==other."
@@ -38,10 +45,6 @@ class VList(OkayList):
38
45
  self.data = self.data * other
39
46
  return self
40
47
 
41
- def __init__(self: Any, data: Any = None) -> None:
42
- "This magic method initializes self."
43
- self.data = data
44
-
45
48
  def __le__(self: Self, other: Any, /) -> bool:
46
49
  "This magic method implements self<=other."
47
50
  ans: bool
@@ -53,24 +56,19 @@ class VList(OkayList):
53
56
  ans = self._data <= alt._data
54
57
  return ans
55
58
 
56
- def __setattr__(self: Self, name: str, value: Any) -> None:
57
- "This magic method implements setattr(self, name, value)."
58
- if name.startswith("_"):
59
- object.__setattr__(self, name, value)
60
- return
61
- cls: type = type(self)
62
- attr: Any = getattr(cls, name)
63
- if type(attr) is not property:
64
- msg: str = "%r is not a property"
65
- msg %= name
66
- raise AttributeError(msg)
59
+ def __setattr__(self: Self, name: str, value: Any) -> Any:
60
+ if name not in type(self).__annotations__.keys():
61
+ return object.__setattr__(self, name, value)
62
+ backup: list = clone(self)
63
+ exc: BaseException
67
64
  try:
68
65
  object.__setattr__(self, name, value)
69
- except VersionError:
70
- raise
71
- except:
66
+ except BaseException as exc:
67
+ self.data = backup
68
+ if isinstance(exc, VersionError):
69
+ raise
72
70
  msg: str = "%r is an invalid value for %r"
73
- msg %= (value, cls.__name__ + "." + name)
71
+ msg %= (value, type(self).__name__ + "." + name)
74
72
  raise VersionError(msg)
75
73
 
76
74
  def __sorted__(self: Any, /, **kwargs: Any) -> Self:
@@ -0,0 +1,15 @@
1
+ from typing import *
2
+
3
+ from v440._utils.VList import VList
4
+
5
+ __all__ = ["WList"]
6
+
7
+
8
+ class WList(VList):
9
+ @property
10
+ def data(self: Self) -> list:
11
+ return list(self._data)
12
+
13
+ @data.setter
14
+ def data(self: Self, value: Any) -> None:
15
+ self._data = value
@@ -5,17 +5,9 @@ import string
5
5
  from typing import *
6
6
 
7
7
  from v440._utils.Digest import Digest
8
- from v440._utils.VList import VList
9
8
  from v440.core.VersionError import VersionError
10
9
 
11
10
 
12
- def clone(value: Any) -> Any:
13
- if isinstance(value, VList):
14
- return list(map(clone, value))
15
- else:
16
- return value
17
-
18
-
19
11
  def literal(value: Any, /) -> str:
20
12
  v: Any = segment(value)
21
13
  if type(v) is str:
@@ -80,11 +80,11 @@ class Base(WList):
80
80
  return self.format()
81
81
 
82
82
  @property
83
- def data(self: Self) -> list:
84
- return [self.epoch, self.release]
83
+ def _data(self: Self) -> tuple:
84
+ return self.epoch, self.release
85
85
 
86
- @data.setter
87
- def data(self: Self, value: Any) -> None:
86
+ @_data.setter
87
+ def _data(self: Self, value: Any) -> None:
88
88
  self.epoch, self.release = parse_data(value)
89
89
 
90
90
  @property
@@ -109,5 +109,3 @@ class Base(WList):
109
109
  @release.setter
110
110
  def release(self: Self, value: Any) -> None:
111
111
  self._release.data = value
112
-
113
- _data = data # why is this necessary?
@@ -14,6 +14,11 @@ class Local(VList):
14
14
 
15
15
  data: list[int | str]
16
16
 
17
+ def __init__(self: Any, data: Any = None) -> None:
18
+ "This magic method initializes self."
19
+ self._data = list()
20
+ self.data = data
21
+
17
22
  def __le__(self: Self, other: Iterable) -> bool:
18
23
  "This magic method implements self<=other."
19
24
  ans: bool
@@ -83,14 +83,12 @@ class Pre(WList):
83
83
  return ans
84
84
 
85
85
  @property
86
- def data(self: Self) -> list:
87
- return [self._phase, self._subphase]
86
+ def _data(self: Self) -> tuple:
87
+ return self._phase, self._subphase
88
88
 
89
- @data.setter
90
- def data(self: Self, value: Any) -> None:
89
+ @_data.setter
90
+ def _data(self: Self, value: Any) -> None:
91
91
  self._phase, self._subphase = parse_data(value)
92
92
 
93
93
  def isempty(self: Self) -> bool:
94
- return self._data == [None, None]
95
-
96
- _data = data
94
+ return set(self._data) == {None}
@@ -99,11 +99,11 @@ class Qualification(WList):
99
99
  return ans
100
100
 
101
101
  @property
102
- def data(self: Self) -> list:
103
- return [self.pre, self.post, self.dev]
102
+ def _data(self: Self) -> tuple:
103
+ return self.pre, self.post, self.dev
104
104
 
105
- @data.setter
106
- def data(self: Self, value: Any) -> None:
105
+ @_data.setter
106
+ def _data(self: Self, value: Any) -> None:
107
107
  self.pre, self.post, self.dev = parse_data(value)
108
108
 
109
109
  @property
@@ -141,5 +141,3 @@ class Qualification(WList):
141
141
  @pre.setter
142
142
  def pre(self: Self, value: Any) -> None:
143
143
  self._pre.data = value
144
-
145
- _data = data
@@ -60,6 +60,11 @@ class Release(VList):
60
60
  ans: list = list(m)
61
61
  return ans
62
62
 
63
+ def __init__(self: Any, data: Any = None) -> None:
64
+ "This magic method initializes self."
65
+ self._data = list()
66
+ self.data = data
67
+
63
68
  @Overloadable
64
69
  def __setitem__(self: Self, key: Any, value: Any) -> bool:
65
70
  return type(key) is slice
@@ -61,6 +61,14 @@ class Version(WList):
61
61
  def __str__(self: Self) -> str:
62
62
  return self.format()
63
63
 
64
+ @property
65
+ def _data(self: Self) -> tuple:
66
+ return (self.public, self.local)
67
+
68
+ @_data.setter
69
+ def _data(self: Self, value: Any) -> None:
70
+ self.public, self.local = parse_data(value)
71
+
64
72
  @property
65
73
  def base(self: Self) -> Base:
66
74
  return self.public.base
@@ -69,14 +77,6 @@ class Version(WList):
69
77
  def base(self: Self, value: Any) -> None:
70
78
  self.base.data = value
71
79
 
72
- @property
73
- def data(self: Self) -> str:
74
- return [self.public, self.local]
75
-
76
- @data.setter
77
- def data(self: Self, value: Any) -> None:
78
- self.public, self.local = parse_data(value)
79
-
80
80
  @property
81
81
  def dev(self: Self) -> Optional[int]:
82
82
  return self.qualification.dev
@@ -172,5 +172,3 @@ class Version(WList):
172
172
  m: str = "%r is not a property"
173
173
  m %= x
174
174
  raise AttributeError(m)
175
-
176
- _data = data
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: v440
3
- Version: 2.0.0.dev10
3
+ Version: 2.0.0.dev12
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)
@@ -1,24 +0,0 @@
1
- from typing import *
2
-
3
- from v440._utils import utils
4
- from v440._utils.VList import VList
5
- from v440.core.VersionError import VersionError
6
-
7
- __all__ = ["WList"]
8
-
9
-
10
- class WList(VList):
11
- def __setattr__(self: Self, name: str, value: Any) -> Any:
12
- if name not in type(self).__annotations__.keys():
13
- return object.__setattr__(self, name, value)
14
- backup: list = utils.clone(self)
15
- exc: BaseException
16
- try:
17
- object.__setattr__(self, name, value)
18
- except BaseException as exc:
19
- self.data = backup
20
- if isinstance(exc, VersionError):
21
- raise
22
- msg: str = "%r is an invalid value for %r"
23
- msg %= (value, type(self).__name__ + "." + name)
24
- raise VersionError(msg)
File without changes
File without changes
File without changes
File without changes