Source code for jaypore_ci.config

import os
import tomllib
from typing import NamedTuple
import importlib.metadata
from pathlib import Path


[docs]class Version(NamedTuple): major: int minor: int patch: int trail: str = None def __repr__(self): if self.trail: return f"{self.major}.{self.minor}.{self.patch}-{self.trail}" return f"{self.major}.{self.minor}.{self.patch}" def __str__(self): return self.__repr__()
[docs] @classmethod def parse(cls, inp: str) -> "Version": if inp is None or inp == "": return None trail = None major, minor, patch = inp.split(".") major = major[1:] if major[0].lower() == "v" else major assert major.isdigit() assert minor.isdigit() if "-" in patch: patch, trail = patch.split("-", 1) assert patch.isdigit() return cls(major=int(major), minor=int(minor), patch=int(patch), trail=trail)
[docs]def get_version() -> Version: try: return Version.parse(importlib.metadata.version(__package__ or __name__)) except importlib.metadata.PackageNotFoundError: try: with open( (Path(__file__) / "../../pyproject.toml").resolve(), "rb", ) as fl: data = tomllib.load(fl) return Version.parse(data["tool"]["poetry"]["version"]) except FileNotFoundError: return None
[docs]class Const(NamedTuple): expected_version: Version = Version.parse( os.environ.get("EXPECTED_JAYPORECI_VERSION") ) version: Version = get_version()
const = Const()