From f6c81e4e26da4f1d4129c4d3f694c825dbbe71dc Mon Sep 17 00:00:00 2001 From: Will Chen Date: Fri, 12 Apr 2024 22:46:01 -0700 Subject: [PATCH] Add __version__ attribute so Mesop users can easily tell which version of Mesop they're using (#112) --- docs/internal/publishing.md | 2 +- mesop/BUILD | 1 + mesop/__init__.py | 3 +++ mesop/pip_package/BUILD | 7 +++++++ mesop/pip_package/build_pip_package.sh | 1 + mesop/pip_package/setup.py | 9 +++++++-- mesop/pip_package/version.py | 6 ++++++ 7 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 mesop/pip_package/version.py diff --git a/docs/internal/publishing.md b/docs/internal/publishing.md index 2198b13da..b9f68d96b 100644 --- a/docs/internal/publishing.md +++ b/docs/internal/publishing.md @@ -4,7 +4,7 @@ Follow these instructions for releasing a new version of Mesop publicly via PyPI ## Bump the version -Update `mesop/pip_package/setup.py` version field to the next version. +Update `mesop/version.py` by incrementing the version number. We follow semver. ## Install locally diff --git a/mesop/BUILD b/mesop/BUILD index bc471797f..9d9cf6b75 100644 --- a/mesop/BUILD +++ b/mesop/BUILD @@ -17,6 +17,7 @@ py_library( ], visibility = ["//build_defs:mesop_users"], deps = [ + "//mesop/pip_package:version", # REF(//scripts/scaffold_component.py):insert_component_import "//mesop/components/table:py", "//mesop/components/sidenav:py", diff --git a/mesop/__init__.py b/mesop/__init__.py index 00c061588..130e13eaa 100644 --- a/mesop/__init__.py +++ b/mesop/__init__.py @@ -113,10 +113,13 @@ ) from mesop.features import page as page from mesop.key import Key as Key +from mesop.pip_package.version import VERSION from mesop.runtime import runtime from mesop.server.colab_run import colab_run as colab_run from mesop.server.wsgi_app import wsgi_app +__version__ = VERSION + class _WsgiAppModule(types.ModuleType): def __call__( diff --git a/mesop/pip_package/BUILD b/mesop/pip_package/BUILD index ada50031a..a231db66b 100644 --- a/mesop/pip_package/BUILD +++ b/mesop/pip_package/BUILD @@ -9,6 +9,12 @@ package( licenses(["notice"]) +py_library( + name = "version", + srcs = ["version.py"], + visibility = ["//build_defs:mesop_internal"], +) + sh_binary( name = "build_pip_package", srcs = ["build_pip_package.sh"], @@ -19,6 +25,7 @@ sh_binary( "requirements.txt", "setup.cfg", "setup.py", + "version.py", ":deterministic_tar_gz", "//mesop", # Main Mesop target "//mesop/bin", # CLI binary diff --git a/mesop/pip_package/build_pip_package.sh b/mesop/pip_package/build_pip_package.sh index 37bacc333..65a4d75c5 100755 --- a/mesop/pip_package/build_pip_package.sh +++ b/mesop/pip_package/build_pip_package.sh @@ -79,6 +79,7 @@ build() ( mv -f "mesop/pip_package/requirements.txt" . mv -f "mesop/pip_package/setup.cfg" . mv -f "mesop/pip_package/setup.py" . + mv -f "mesop/pip_package/version.py" . rm -rf "mesop/pip_package" rm -f mesop/mesop # bazel py_binary sh wrapper diff --git a/mesop/pip_package/setup.py b/mesop/pip_package/setup.py index dcabac2a8..ecf18d2bf 100644 --- a/mesop/pip_package/setup.py +++ b/mesop/pip_package/setup.py @@ -13,9 +13,14 @@ # limitations under the License. # ============================================================================== - from setuptools import find_packages, setup +# Intentionally do not import "from mesop.pip_package.version" +# because this will drag in other modules through mesop/__init__.py +# incl. third-party packages like Flask which don't exist +# in this script environment. +from version import VERSION + def get_required_packages(): with open("requirements.txt") as f: @@ -35,7 +40,7 @@ def get_readme(): setup( name="mesop", - version="0.4.1", + version=VERSION, description="Build UIs in Python", long_description=get_readme(), url="https://github.com/google/mesop", diff --git a/mesop/pip_package/version.py b/mesop/pip_package/version.py new file mode 100644 index 000000000..ce3a25e89 --- /dev/null +++ b/mesop/pip_package/version.py @@ -0,0 +1,6 @@ +"""Contains the version string.""" + +VERSION = "0.4.1" + +if __name__ == "__main__": + print(VERSION)