diff --git a/setup.py b/setup.py index 7eaaf76ea1f..413e533aa4c 100644 --- a/setup.py +++ b/setup.py @@ -16,18 +16,25 @@ from typing import Dict, List, Tuple from setuptools import find_packages, setup +from utils.artifacts import get_release_and_version -# default variables to be overwritten by the version.py file -is_release = None -is_dev = None -version = "unknown" -version_major_minor = version +package_path = os.path.join( + os.path.dirname(os.path.realpath(__file__)), "src", "sparseml" +) +( + is_release, + is_dev, + version, + version_major, + version_minor, + version_bug, +) = get_release_and_version(package_path) # load and overwrite version and release info from sparseml package exec(open(os.path.join("src", "sparseml", "version.py")).read()) print(f"loaded version {version} from src/sparseml/version.py") -version_nm_deps = f"{version_major_minor}.0" +version_nm_deps = f"{version_major}.{version_minor}.0" if is_release: _PACKAGE_NAME = "sparseml" diff --git a/src/sparseml/version.py b/src/sparseml/version.py index ffe77da583a..1279a498a4b 100644 --- a/src/sparseml/version.py +++ b/src/sparseml/version.py @@ -16,16 +16,20 @@ Functionality for storing and setting the version info for SparseML """ -from datetime import date - - version_base = "1.8.0" is_release = False # change to True to set the generated version as a release version is_dev = False dev_number = None -def _generate_version(): +def _generate_version( + is_release: bool, + is_dev: bool, + version_base: str, + dev_number: str, +): + from datetime import date + if is_release: return version_base elif is_dev: @@ -45,7 +49,7 @@ def _generate_version(): "version_build", "version_major_minor", ] -__version__ = _generate_version() +__version__ = _generate_version(is_release, is_dev, version_base, dev_number) version = __version__ version_major, version_minor, version_bug, version_build = version.split(".") + ( diff --git a/utils/artifacts.py b/utils/artifacts.py new file mode 100644 index 00000000000..a93bda61122 --- /dev/null +++ b/utils/artifacts.py @@ -0,0 +1,46 @@ +# Copyright (c) 2021 - present / Neuralmagic, Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import os +from typing import Tuple + + +def get_release_and_version(package_path: str) -> Tuple[bool, bool, str, str, str, str]: + """ + Load version and release info from deepsparse package + """ + # deepsparse/src/deepsparse/version.py always exists, default source of truth + version_path = os.path.join(package_path, "version.py") + + # exec() cannot set local variables so need to manually + locals_dict = {} + exec(open(version_path).read(), globals(), locals_dict) + is_release = locals_dict.get("is_release", False) + is_dev = locals_dict.get("is_dev", False) + version = locals_dict.get("version", "unknown") + version_major = locals_dict.get("version_major", "unknown") + version_minor = locals_dict.get("version_minor", "unknown") + version_bug = locals_dict.get("version_bug", "unknown") + + print(f"Loaded version {version} from {version_path}") + + return ( + is_release, + is_dev, + version, + version_major, + version_minor, + version_bug, + )