From adf944c05c11972ec89a69750c644f230ed8fa75 Mon Sep 17 00:00:00 2001 From: Gabriel Rasskin <43894452+grasskin@users.noreply.github.com> Date: Fri, 12 Jan 2024 19:43:25 +0100 Subject: [PATCH] Add `version()` API to unify with Keras and KerasNLP (#2199) * Unify `version` API with keras and keras_nlp * Formatting * Update to keep `version` parity with KerasNLP, support nightly version string * Update version_utils.py * Update version_utils.py --- keras_cv/__init__.py | 4 ++-- keras_cv/version_utils.py | 23 +++++++++++++++++++++++ pip_build.py | 13 ++++++++++++- setup.py | 20 ++++++++++++++++++++ 4 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 keras_cv/version_utils.py diff --git a/keras_cv/__init__.py b/keras_cv/__init__.py index 1c9e7bcdf3..36c7d3511b 100644 --- a/keras_cv/__init__.py +++ b/keras_cv/__init__.py @@ -41,5 +41,5 @@ from keras_cv.core import FactorSampler from keras_cv.core import NormalFactorSampler from keras_cv.core import UniformFactorSampler - -__version__ = "0.8.2" +from keras_cv.version_utils import __version__ +from keras_cv.version_utils import version diff --git a/keras_cv/version_utils.py b/keras_cv/version_utils.py new file mode 100644 index 0000000000..527546c643 --- /dev/null +++ b/keras_cv/version_utils.py @@ -0,0 +1,23 @@ +# Copyright 2023 The KerasCV Authors +# +# 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 +# +# https://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. + +from keras_cv.api_export import keras_cv_export + +# Unique source of truth for the version number. +__version__ = "0.8.2" + + +@keras_cv_export("keras_cv.version") +def version(): + return __version__ diff --git a/pip_build.py b/pip_build.py index 29f574001f..ba61963697 100644 --- a/pip_build.py +++ b/pip_build.py @@ -64,11 +64,22 @@ def export_version_string(version, is_nightly=False): ) f.write(setup_contents) + # Overwrite the version string with our package version. + with open(os.path.join(package, "src", "version_utils.py")) as f: + version_contents = f.readlines() + with open(os.path.join(package, "src", "version_utils.py"), "w") as f: + for line in version_contents: + if line.startswith("__version__"): + f.write(f'__version__ = "{version}"\n') + else: + f.write(line) + # Make sure to export the __version__ string with open(os.path.join(package, "__init__.py")) as f: init_contents = f.read() with open(os.path.join(package, "__init__.py"), "w") as f: - f.write(init_contents + "\n\n" + f'__version__ = "{version}"\n') + f.write(init_contents) + f.write("from keras_cv.src.version_utils import __version__\n") def copy_source_to_build_directory(root_path): diff --git a/setup.py b/setup.py index ffe7cbb4a8..19dc42248c 100644 --- a/setup.py +++ b/setup.py @@ -21,6 +21,21 @@ from setuptools import setup from setuptools.dist import Distribution + +def read(rel_path): + here = os.path.abspath(os.path.dirname(__file__)) + with open(os.path.join(here, rel_path)) as fp: + return fp.read() + + +def get_version(rel_path): + for line in read(rel_path).splitlines(): + if line.startswith("__version__"): + delim = '"' if '"' in line else "'" + return line.split(delim)[1] + raise RuntimeError("Unable to find version string.") + + BUILD_WITH_CUSTOM_OPS = ( "BUILD_WITH_CUSTOM_OPS" in os.environ and os.environ["BUILD_WITH_CUSTOM_OPS"] == "true" @@ -28,6 +43,10 @@ HERE = pathlib.Path(__file__).parent README = (HERE / "README.md").read_text() +if os.path.exists("keras_cv/version_utils.py"): + VERSION = get_version("keras_cv/version_utils.py") +else: + VERSION = get_version("keras_cv/src/version_utils.py") class BinaryDistribution(Distribution): @@ -45,6 +64,7 @@ def is_pure(self): description="Industry-strength computer Vision extensions for Keras.", long_description=README, long_description_content_type="text/markdown", + version=VERSION, url="https://github.com/keras-team/keras-cv", author="Keras team", author_email="keras-cv@google.com",