From c59fa4c47931497dc787feed4f297cf7b5aa7345 Mon Sep 17 00:00:00 2001 From: Arthur Meyre Date: Mon, 24 Mar 2025 11:45:55 +0100 Subject: [PATCH] chore(ci): make version formatting more resilient --- scripts/utils/utils.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/scripts/utils/utils.py b/scripts/utils/utils.py index d7e12de6a..b1c547404 100644 --- a/scripts/utils/utils.py +++ b/scripts/utils/utils.py @@ -1,4 +1,5 @@ from pathlib import Path +import re try: import tomllib # Python v3.11+ @@ -19,11 +20,15 @@ def get_tfhe_version() -> str: tfhe_cargo_toml = tomllib.load(f) return tfhe_cargo_toml["package"]["version"] +# from https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string +def semver_regex(version_str: str): + return re.match( + r"^(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)(?:-(?P(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$", + string=version_str, + flags=re.M, + ) -def format_version_major_minor(version: str) -> str: - hyphenated_version = "v" + version.replace(".", "_") - if hyphenated_version.count("_") == 1: - return hyphenated_version - else: - return hyphenated_version.rsplit("_", maxsplit=1)[0] +def format_version_major_minor(version_str: str) -> str: + parsed = semver_regex(version_str) + return f"v{parsed.group('major')}_{parsed.group('minor')}"