diff --git a/cuda_python/setup.py b/cuda_python/setup.py index dad8a596c95..7e7155e1541 100644 --- a/cuda_python/setup.py +++ b/cuda_python/setup.py @@ -8,34 +8,44 @@ from setuptools import setup from setuptools_scm import get_version -version = get_version( - root="..", - relative_to=__file__, - # Preserve a/b pre-release suffixes, but intentionally strip rc suffixes. - tag_regex="^(?Pv\\d+\\.\\d+\\.\\d+(?:[ab]\\d+)?)", - git_describe_command=["git", "describe", "--dirty", "--tags", "--long", "--match", "v*[0-9]*"], -) +def get_version_for_module(module_name: str | None = None) -> str: + if module_name is None: + module_name = "" + else: + module_name = f"{module_name}-" + return get_version( + root="..", + relative_to=__file__, + # Preserve a/b pre-release suffixes, but intentionally strip rc suffixes. + tag_regex=f"^{module_name}(?Pv\\d+\\.\\d+\\.\\d+(?:[ab]\\d+)?)", + git_describe_command=["git", "describe", "--dirty", "--tags", "--long", "--match", f"{module_name}v[0-9]*"], + version_scheme="post-release", + ) + + +install_requires: list[str] = [] +extras_require: dict[str, list[str]] = {} + +for module in ["cuda-bindings", "cuda-core", "cuda-pathfinder"]: + if module == "cuda-bindings": + module_prefix = None + else: + module_prefix = module + version = get_version_for_module(module_prefix) + base_version: str = Version(version).base_version -base_version = Version(version).base_version + if module == "cuda-pathfinder": + base_version = base_version.rsplit(".", 1)[0] + install_requires.append(f"{module}~={base_version}") -if base_version == version: - # Tagged release - matcher = "~=" -else: - # Pre-release version - matcher = "==" + if module == "cuda-bindings": + extras_require["all"] = [f"{module}[all]~={base_version}"] setup( version=version, - install_requires=[ - f"cuda-bindings{matcher}{version}", - "cuda-core~=1.0.0", - "cuda-pathfinder~=1.1", - ], - extras_require={ - "all": [f"cuda-bindings[all]{matcher}{version}"], - }, + install_requires=install_requires, + extras_require=extras_require, )