From a6583ceccf77d0b9776879634cb31e492c4d61a2 Mon Sep 17 00:00:00 2001 From: John Pennycook Date: Thu, 3 Apr 2025 17:12:15 +0100 Subject: [PATCH 1/4] Use importlib to determine codebasin version Signed-off-by: John Pennycook --- codebasin/__main__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/codebasin/__main__.py b/codebasin/__main__.py index d881412..afb2cc8 100755 --- a/codebasin/__main__.py +++ b/codebasin/__main__.py @@ -6,6 +6,7 @@ """ import argparse +import importlib.metadata import logging import os import sys @@ -14,7 +15,7 @@ from codebasin._detail.logging import Formatter, WarningAggregator log = logging.getLogger("codebasin") -version = "1.2.0" +version = importlib.metadata.version("codebasin") _traceback = False From bd1bd89f6751dfcc2ff877af1e936f5579f24eae Mon Sep 17 00:00:00 2001 From: John Pennycook Date: Thu, 3 Apr 2025 17:23:09 +0100 Subject: [PATCH 2/4] Configure setuptools-scm to generate version Signed-off-by: John Pennycook --- pyproject.toml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 59b8bc7..f71307f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,15 +2,14 @@ # SPDX-License-Identifier: BSD-3-Clause [build-system] build-backend = "setuptools.build_meta" -requires = ["setuptools >= 61.0"] +requires = ["setuptools>=64", "setuptools-scm>=8"] [project] authors = [ {"name" = "S. John Pennycook", "email" = "john.pennycook@intel.com"}, ] description = "Code Base Investigator" -version = "1.2.0" -dynamic = ["readme"] +dynamic = ["version", "readme"] keywords = ["performance", "portability", "productivity"] name = "codebasin" requires-python = ">=3.9" @@ -61,6 +60,9 @@ include = ["codebasin*"] [tool.setuptools.dynamic] readme = {file = ["README.md"]} +[tool.setuptools_scm] +# Deliberately empty to enable setuptools-scm + [tool.coverage.run] command_line = "-m unittest" source = ["codebasin"] From 63df3e81254549643ed31d821a30d950442b93cd Mon Sep 17 00:00:00 2001 From: John Pennycook Date: Fri, 4 Apr 2025 09:22:12 +0100 Subject: [PATCH 3/4] Expose package version as __version__ Many other packages use this convention. Signed-off-by: John Pennycook --- codebasin/__init__.py | 3 +++ codebasin/__main__.py | 12 ++++++------ codebasin/coverage/__main__.py | 13 ++++--------- codebasin/tree.py | 8 ++++---- 4 files changed, 17 insertions(+), 19 deletions(-) diff --git a/codebasin/__init__.py b/codebasin/__init__.py index 16d6ee5..9889466 100644 --- a/codebasin/__init__.py +++ b/codebasin/__init__.py @@ -1,5 +1,6 @@ # Copyright (C) 2019-2024 Intel Corporation # SPDX-License-Identifier: BSD-3-Clause +import importlib.metadata import os import shlex import warnings @@ -19,6 +20,8 @@ DeprecationWarning, ) +__version__ = importlib.metadata.version("codebasin") + class CompileCommand: """ diff --git a/codebasin/__main__.py b/codebasin/__main__.py index afb2cc8..1d7849f 100755 --- a/codebasin/__main__.py +++ b/codebasin/__main__.py @@ -6,16 +6,14 @@ """ import argparse -import importlib.metadata import logging import os import sys -from codebasin import CodeBase, config, finder, report, util +from codebasin import CodeBase, __version__, config, finder, report, util from codebasin._detail.logging import Formatter, WarningAggregator log = logging.getLogger("codebasin") -version = importlib.metadata.version("codebasin") _traceback = False @@ -60,7 +58,7 @@ def _help_string(*lines: str, is_long=False, is_last=False): def _main(): # Read command-line arguments parser = argparse.ArgumentParser( - description="Code Base Investigator " + str(version), + description="Code Base Investigator " + str(__version__), formatter_class=argparse.RawTextHelpFormatter, add_help=False, ) @@ -73,7 +71,7 @@ def _main(): parser.add_argument( "--version", action="version", - version=f"Code Base Investigator {version}", + version=f"Code Base Investigator {__version__}", help=_help_string("Display version information and exit."), ) parser.add_argument( @@ -181,7 +179,9 @@ def _main(): log.addHandler(file_handler) if args.debug: - log.debug(f"Code Base Investigator {version}; Python {sys.version}") + log.debug( + f"Code Base Investigator {__version__}; Python {sys.version}", + ) # Inform the user that a log file has been created. # 'print' instead of 'log' to ensure the message is visible in the output. diff --git a/codebasin/coverage/__main__.py b/codebasin/coverage/__main__.py index 8c221c7..e13a004 100755 --- a/codebasin/coverage/__main__.py +++ b/codebasin/coverage/__main__.py @@ -9,15 +9,10 @@ import os import sys -from codebasin import CodeBase, config, finder, util +from codebasin import CodeBase, __version__, config, finder, util # TODO: Refactor to avoid imports from __main__ -from codebasin.__main__ import ( - Formatter, - WarningAggregator, - _help_string, - version, -) +from codebasin.__main__ import Formatter, WarningAggregator, _help_string from codebasin.preprocessor import CodeNode log = logging.getLogger("codebasin") @@ -28,7 +23,7 @@ def _build_parser() -> argparse.ArgumentParser: Build argument parser. """ parser = argparse.ArgumentParser( - description="CBI Coverage Tool " + version, + description="CBI Coverage Tool " + __version__, formatter_class=argparse.RawTextHelpFormatter, add_help=False, ) @@ -42,7 +37,7 @@ def _build_parser() -> argparse.ArgumentParser: parser.add_argument( "--version", action="version", - version=f"CBI Coverage Tool {version}", + version=f"CBI Coverage Tool {__version__}", help="Display version information and exit.", ) diff --git a/codebasin/tree.py b/codebasin/tree.py index c6a2408..72918a5 100755 --- a/codebasin/tree.py +++ b/codebasin/tree.py @@ -7,10 +7,10 @@ import os import sys -from codebasin import CodeBase, config, finder, report, util +from codebasin import CodeBase, __version__, config, finder, report, util # TODO: Refactor to avoid imports from __main__ -from codebasin.__main__ import Formatter, _help_string, version +from codebasin.__main__ import Formatter, _help_string log = logging.getLogger("codebasin") @@ -20,7 +20,7 @@ def _build_parser() -> argparse.ArgumentParser: Build argument parser. """ parser = argparse.ArgumentParser( - description="CBI Tree Tool " + version, + description="CBI Tree Tool " + __version__, formatter_class=argparse.RawTextHelpFormatter, add_help=False, ) @@ -33,7 +33,7 @@ def _build_parser() -> argparse.ArgumentParser: parser.add_argument( "--version", action="version", - version=f"CBI Coverage Tool {version}", + version=f"CBI Coverage Tool {__version__}", help=_help_string("Display version information and exit."), ) parser.add_argument( From 1895b0d25c991ffa54084ad389e168a4042011e9 Mon Sep 17 00:00:00 2001 From: John Pennycook Date: Fri, 4 Apr 2025 09:48:32 +0100 Subject: [PATCH 4/4] Fix bug in cbi-tree --version string Copy-paste resulted in it identifying itself as cbi-cov. Signed-off-by: John Pennycook --- codebasin/tree.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codebasin/tree.py b/codebasin/tree.py index 72918a5..72af266 100755 --- a/codebasin/tree.py +++ b/codebasin/tree.py @@ -33,7 +33,7 @@ def _build_parser() -> argparse.ArgumentParser: parser.add_argument( "--version", action="version", - version=f"CBI Coverage Tool {__version__}", + version=f"CBI Tree Tool {__version__}", help=_help_string("Display version information and exit."), ) parser.add_argument(