Source code for pylav.nodes.api.responses.misc
from __future__ import annotations
import dataclasses
import typing
from packaging.version import Version as _Version
from packaging.version import parse
from pylav.constants.regex import GIT_SHA1, SEMANTIC_VERSIONING
from pylav.constants.versions import API_DEVELOPMENT_VERSION
[docs]
@dataclasses.dataclass(repr=True, frozen=True, kw_only=True, slots=True)
class Version:
semver: str
major: int
minor: int
patch: int
preRelease: str | None = None
def __post_init__(self) -> None:
if not SEMANTIC_VERSIONING.match(self.semver):
sha1 = GIT_SHA1.search(self.semver)
sha1 = sha1.group("sha1") if sha1 else "unknown"
version = _Version(f"{API_DEVELOPMENT_VERSION}+{sha1}")
else:
version = typing.cast(_Version, parse(self.semver))
object.__setattr__(self, "semver", version)
[docs]
@dataclasses.dataclass(repr=True, frozen=True, kw_only=True, slots=True)
class Git:
branch: str
commit: str
commitTime: int
[docs]
@dataclasses.dataclass(repr=True, frozen=True, kw_only=True, slots=True)
class Plugin:
name: str
version: str