Skip to content

Commit eedf9cf

Browse files
committed
Update _VersionInfo
1 parent 11a6cf7 commit eedf9cf

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

src/hdf5plugin/_version.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,23 +31,26 @@
3131

3232
class _VersionInfo(NamedTuple):
3333
"""Version information as a namedtuple"""
34+
3435
major: int
3536
minor: int
3637
micro: int
3738
releaselevel: str = "final"
3839
serial: int = 0
3940

41+
@staticmethod
42+
def from_version(version: str) -> "_VersionInfo":
43+
pattern = r"(?P<major>\d+)\.(?P<minor>\d+)\.(?P<micro>\d+)((?P<prerelease>a|b|rc)(?P<serial>\d+))?"
44+
match = re.fullmatch(pattern, version, re.ASCII)
45+
fields = {k: v for k, v in match.groupdict().items() if v is not None}
46+
# Remove prerelease and convert it to releaselevel
47+
prerelease = fields.pop("prerelease", None)
48+
releaselevel = {"a": "alpha", "b": "beta", "rc": "candidate", None: "final"}[
49+
prerelease
50+
]
51+
version_fields = {k: int(v) for k, v in fields.items()}
4052

41-
def _version_info(version: str) -> _VersionInfo:
42-
pattern = r"(?P<major>\d+)\.(?P<minor>\d+)\.(?P<micro>\d+)((?P<prerelease>a|b|rc)(?P<serial>\d+))?"
43-
match = re.fullmatch(pattern, version, re.ASCII)
44-
fields = {k: v for k, v in match.groupdict().items() if v is not None}
45-
# Remove prerelease and convert it to releaselevel
46-
prerelease = fields.pop("prerelease", None)
47-
releaselevel = {"a": "alpha", "b": "beta", "rc": "candidate", None: "final"}[prerelease]
48-
version_fields = {k: int(v) for k, v in fields.items()}
49-
50-
return _VersionInfo(releaselevel=releaselevel, **version_fields)
53+
return _VersionInfo(releaselevel=releaselevel, **version_fields)
5154

5255

53-
version_info = _version_info(version)
56+
version_info = _VersionInfo.from_version(version)

0 commit comments

Comments
 (0)