From 111fc6e7ecb8e5eb665606cf79209495e874479b Mon Sep 17 00:00:00 2001 From: Michael Goin Date: Fri, 12 Jul 2024 18:52:15 -0400 Subject: [PATCH] [Misc] Add generated git commit hash as `vllm.__commit__` (#6386) --- .gitignore | 3 +++ setup.py | 24 ++++++++++++++++++++++++ tests/test_embedded_commit.py | 7 +++++++ vllm/__init__.py | 3 ++- vllm/version.py | 11 +++++++++++ 5 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 tests/test_embedded_commit.py diff --git a/.gitignore b/.gitignore index e077366d1e4a1..17184b19127ca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# vllm commit id, generated by setup.py +vllm/commit_id.py + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/setup.py b/setup.py index 067ad13fed71b..485cfe36b11d6 100644 --- a/setup.py +++ b/setup.py @@ -5,6 +5,7 @@ import re import subprocess import sys +import warnings from shutil import which from typing import Dict, List @@ -26,6 +27,29 @@ def load_module_from_path(module_name, path): ROOT_DIR = os.path.dirname(__file__) logger = logging.getLogger(__name__) + +def embed_commit_hash(): + try: + commit_id = subprocess.check_output(["git", "rev-parse", "HEAD"], + encoding="utf-8").strip() + commit_contents = f'__commit__ = "{commit_id}"\n' + + version_file = os.path.join(ROOT_DIR, "vllm", "commit_id.py") + with open(version_file, "w", encoding="utf-8") as f: + f.write(commit_contents) + + except subprocess.CalledProcessError as e: + warnings.warn(f"Failed to get commit hash:\n{e}", + RuntimeWarning, + stacklevel=2) + except Exception as e: + warnings.warn(f"Failed to embed commit hash:\n{e}", + RuntimeWarning, + stacklevel=2) + + +embed_commit_hash() + # cannot import envs directly because it depends on vllm, # which is not installed yet envs = load_module_from_path('envs', os.path.join(ROOT_DIR, 'vllm', 'envs.py')) diff --git a/tests/test_embedded_commit.py b/tests/test_embedded_commit.py new file mode 100644 index 0000000000000..17b01651e39af --- /dev/null +++ b/tests/test_embedded_commit.py @@ -0,0 +1,7 @@ +import vllm + + +def test_embedded_commit_defined(): + assert vllm.__commit__ != "COMMIT_HASH_PLACEHOLDER" + # 7 characters is the length of a short commit hash + assert len(vllm.__commit__) >= 7 diff --git a/vllm/__init__.py b/vllm/__init__.py index e217059873bf5..318f078fdbee7 100644 --- a/vllm/__init__.py +++ b/vllm/__init__.py @@ -12,9 +12,10 @@ from vllm.pooling_params import PoolingParams from vllm.sampling_params import SamplingParams -from .version import __version__ +from .version import __commit__, __version__ __all__ = [ + "__commit__", "__version__", "LLM", "ModelRegistry", diff --git a/vllm/version.py b/vllm/version.py index dd9b22cccc1fd..309f979541ebe 100644 --- a/vllm/version.py +++ b/vllm/version.py @@ -1 +1,12 @@ +import warnings + +try: + import vllm.commit_id + __commit__ = vllm.commit_id.__commit__ +except Exception as e: + warnings.warn(f"Failed to read commit hash:\n{e}", + RuntimeWarning, + stacklevel=2) + __commit__ = "COMMIT_HASH_PLACEHOLDER" + __version__ = "0.5.1"