22 lines
697 B
Python
22 lines
697 B
Python
"""Canonical AIOS release-version parser shared by runtime and release tools."""
|
|
from __future__ import annotations
|
|
|
|
import re
|
|
|
|
|
|
# The suffix preserves already-supported annotated release names while the
|
|
# canonical VnRnCn namespace remains accepted exactly.
|
|
RELEASE_VERSION_PATTERN = r"^V[0-9]+R[0-9]+C[0-9]+(?:-[A-Za-z0-9_.-]+)?$"
|
|
RELEASE_VERSION_RE = re.compile(RELEASE_VERSION_PATTERN)
|
|
|
|
|
|
def parse_release_version(version: object) -> str:
|
|
value = str(version or "").strip()
|
|
if not RELEASE_VERSION_RE.fullmatch(value):
|
|
raise ValueError("invalid release version")
|
|
return value
|
|
|
|
|
|
def validate_release_version(version: object) -> str:
|
|
return parse_release_version(version)
|