diff --git a/.gitignore b/.gitignore index aab48ec..d7294f5 100644 --- a/.gitignore +++ b/.gitignore @@ -142,3 +142,6 @@ cython_debug/ .DS_Store .vscode + +# Version file generated by setuptools-scm +src/targetdb/_version.py diff --git a/pyproject.toml b/pyproject.toml index 2a84401..79c6f14 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,11 +45,11 @@ source = "https://github.com/Subaru-PFS/ets_target_database" pfs-targetdb-cli = "targetdb.cli.cli_main:app" [project.optional-dependencies] -dev = ["ipython", "pytest", "black", "ruff"] +dev = ["ipython", "pytest", "black", "ruff", "setuptools-scm>=8.0"] doc = ["mkdocs", "mkdocs-material[imaging]", "mkdocstrings-python"] [build-system] -requires = ["setuptools", "wheel"] +requires = ["setuptools>=64", "setuptools-scm>=8.0", "wheel"] build-backend = "setuptools.build_meta" [tool.black] @@ -98,5 +98,6 @@ ignore = [ package-dir = { "" = "src" } include-package-data = true -[tool.setuptools.dynamic] -version = { attr = "targetdb.__version__" } +[tool.setuptools_scm] +version_file = "src/targetdb/_version.py" +tag_regex = "^v\\.?(\\d+\\.\\d+\\.\\d+)$" diff --git a/src/targetdb/__init__.py b/src/targetdb/__init__.py index 2f0aa7e..33216f8 100644 --- a/src/targetdb/__init__.py +++ b/src/targetdb/__init__.py @@ -2,6 +2,10 @@ from .targetdb import TargetDB -__version__ = "0.8.0" +try: + from ._version import version as __version__ +except ImportError: + # Fallback for development without build + __version__ = "0.0.0+unknown" __all__ = ["TargetDB", "__version__"] diff --git a/uv.lock b/uv.lock index d4075bd..a5341d8 100644 --- a/uv.lock +++ b/uv.lock @@ -300,6 +300,7 @@ dependencies = [ { name = "pandas" }, { name = "psycopg2-binary" }, { name = "pyarrow" }, + { name = "requests" }, { name = "sqlalchemy" }, { name = "sqlalchemy-utils" }, { name = "tabulate" }, @@ -312,6 +313,7 @@ dev = [ { name = "ipython" }, { name = "pytest" }, { name = "ruff" }, + { name = "setuptools-scm" }, ] doc = [ { name = "mkdocs" }, @@ -319,6 +321,11 @@ doc = [ { name = "mkdocstrings-python" }, ] +[package.dev-dependencies] +dev = [ + { name = "setuptools-scm" }, +] + [package.metadata] requires-dist = [ { name = "alembic" }, @@ -335,7 +342,9 @@ requires-dist = [ { name = "psycopg2-binary" }, { name = "pyarrow" }, { name = "pytest", marker = "extra == 'dev'" }, + { name = "requests" }, { name = "ruff", marker = "extra == 'dev'" }, + { name = "setuptools-scm", marker = "extra == 'dev'", specifier = ">=8.0" }, { name = "sqlalchemy" }, { name = "sqlalchemy-utils" }, { name = "tabulate" }, @@ -344,6 +353,9 @@ requires-dist = [ ] provides-extras = ["dev", "doc"] +[package.metadata.requires-dev] +dev = [{ name = "setuptools-scm", specifier = ">=9.2.2" }] + [[package]] name = "executing" version = "2.2.1" @@ -1168,6 +1180,28 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/30/bd/4168a751ddbbf43e86544b4de8b5c3b7be8d7167a2a5cb977d274e04f0a1/ruff-0.14.4-py3-none-win_arm64.whl", hash = "sha256:dd09c292479596b0e6fec8cd95c65c3a6dc68e9ad17b8f2382130f87ff6a75bb", size = 12663065, upload-time = "2025-11-06T22:07:42.603Z" }, ] +[[package]] +name = "setuptools" +version = "80.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958, upload-time = "2025-05-27T00:56:51.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, +] + +[[package]] +name = "setuptools-scm" +version = "9.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7b/b1/19587742aad604f1988a8a362e660e8c3ac03adccdb71c96d86526e5eb62/setuptools_scm-9.2.2.tar.gz", hash = "sha256:1c674ab4665686a0887d7e24c03ab25f24201c213e82ea689d2f3e169ef7ef57", size = 203385, upload-time = "2025-10-19T22:08:05.608Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/ea/ac2bf868899d0d2e82ef72d350d97a846110c709bacf2d968431576ca915/setuptools_scm-9.2.2-py3-none-any.whl", hash = "sha256:30e8f84d2ab1ba7cb0e653429b179395d0c33775d54807fc5f1dd6671801aef7", size = 62975, upload-time = "2025-10-19T22:08:04.007Z" }, +] + [[package]] name = "shellingham" version = "1.5.4"