Address corner case when generating version file (#641)

Address corner case for version file generation

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
Binyang Li
2025-10-07 14:32:33 -07:00
committed by GitHub
parent 3d94383696
commit ddca185add
6 changed files with 22 additions and 201 deletions

View File

@@ -5,59 +5,22 @@
import os
import warnings
import re
from functools import wraps
# Get version
def _get_version():
"""Get version from the best available source"""
if os.environ.get("MSCCLPP_HOME", None) is None:
os.environ["MSCCLPP_HOME"] = os.path.abspath(os.path.dirname(__file__))
# Try setuptools-scm generated _version.py (most reliable)
try:
from ._version import __version__
from ._version import __version__, __commit_id__
return __version__
except ImportError:
raise RuntimeError("Could not determine MSCCL++ version from setuptools-scm generated _version.py.")
# Parse version components
def _parse_version(version_string):
"""Parse version components from setuptools-scm generated version"""
# Pattern for versions like "0.7.0.dev36+g6e2360d69" (without .dYYYYMMDD)
pattern = r"^v?(?P<base>[\d\.]+)(?:\.dev(?P<distance>\d+))?(?:\+g(?P<commit>[a-f0-9]+))?(?P<dirty>\.dirty)?$"
match = re.match(pattern, version_string)
if match:
return {"base_version": match.group("base"), "git_commit": match.group("commit") or "unknown"}
else:
# Fallback parsing - try to extract what we can
base = version_string.split("+")[0].lstrip("v").split(".dev")[0]
commit = "unknown"
return {"base_version": base, "git_commit": commit}
__version__ = _get_version()
# Parse the version
_version_info = _parse_version(__version__)
__base_version__ = _version_info["base_version"]
__git_commit__ = _version_info["git_commit"]
version = {
"version": __version__,
"git_commit": __commit_id__,
}
def _version():
"""Get complete version information as a dictionary"""
return {
"version": __version__,
"base_version": __base_version__,
"git_commit": __git_commit__,
}
version: dict = _version()
from ._mscclpp import (
Env,
ErrorCode,
@@ -132,9 +95,6 @@ __all__ = [
"SmDevice2DeviceSemaphore",
]
if os.environ.get("MSCCLPP_HOME", None) is None:
os.environ["MSCCLPP_HOME"] = os.path.abspath(os.path.dirname(__file__))
def get_include() -> str:
"""Return the directory that contains the MSCCL++ headers."""