Skip to content

Commit de68870

Browse files
Use setuptools-scm for dynamic versions (#227)
* Use setuptools-scm for dynamic versions * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent bd9b5d3 commit de68870

6 files changed

Lines changed: 32 additions & 6 deletions

File tree

.github/workflows/testing-and-deployment.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ jobs:
2323

2424
steps:
2525
- uses: actions/checkout@v4
26+
with:
27+
fetch-depth: 0
2628

2729
- name: Set up Python ${{ matrix.python-version }}
2830
uses: actions/setup-python@v6

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
# Pip generated folders #
1616
#########################
1717
keepa.egg-info/
18+
src/*.egg-info/
19+
src/keepa/_version.py
1820
build/
1921
dist/
2022
keepa/__pycache__/

docs/source/conf.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# import pydata_sphinx_theme # noqa
44
from datetime import datetime
55
import importlib
6+
import importlib.metadata
67
import inspect
78
from pathlib import Path
89

@@ -15,6 +16,19 @@
1516
with (PROJECT_ROOT / "pyproject.toml").open("rb") as project_file:
1617
project_metadata = tomllib.load(project_file)["project"]
1718

19+
20+
def get_release() -> str:
21+
"""Return the installed package version for Sphinx."""
22+
try:
23+
return importlib.metadata.version("keepa")
24+
except importlib.metadata.PackageNotFoundError:
25+
try:
26+
from setuptools_scm import get_version
27+
except ModuleNotFoundError:
28+
return "0.0.0"
29+
return get_version(root=PROJECT_ROOT, fallback_version="1.5.0.dev0")
30+
31+
1832
# If your documentation needs a minimal Sphinx version, state it here.
1933
#
2034
# needs_sphinx = '1.0'
@@ -109,7 +123,7 @@ def linkcode_resolve(domain: str, info: dict[str, str]) -> str | None:
109123
#
110124
# The full version, including alpha/beta/rc tags.
111125
# The short X.Y version.
112-
release = project_metadata["version"]
126+
release = get_release()
113127
version = ".".join(release.split(".")[:2])
114128

115129
# The language for content autogenerated by Sphinx. Refer to documentation

pyproject.toml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[build-system]
2-
build-backend = "flit_core.buildapi"
3-
requires = ["flit_core >=3,<4"]
2+
build-backend = "setuptools.build_meta"
3+
requires = ["setuptools >=64", "setuptools-scm >=8"]
44

55
[project]
66
authors = [
@@ -26,11 +26,11 @@ dependencies = [
2626
"pydantic >=2"
2727
]
2828
description = "Interfaces with keepa.com's API."
29+
dynamic = ["version"]
2930
keywords = ["keepa"]
3031
name = "keepa"
3132
readme = "README.rst"
3233
requires-python = ">=3.10"
33-
version = "1.5.dev0"
3434

3535
[project.optional-dependencies]
3636
doc = [
@@ -70,3 +70,12 @@ line-length = 100
7070
[tool.ruff.lint]
7171
ignore = []
7272
select = ["E", "F", "W", "I001"] # pyflakes, pycodestyle, isort
73+
74+
[tool.setuptools.packages.find]
75+
where = ["src"]
76+
77+
[tool.setuptools_scm]
78+
fallback_version = "1.5.0.dev0"
79+
git_describe_command = "git describe --dirty --tags --long --match v*"
80+
tag_regex = "^v(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+(?:[abrc][0-9]+)?(?:\\.post[0-9]+)?(?:\\.dev[0-9]+)?)$"
81+
version_file = "src/keepa/_version.py"

src/keepa/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from importlib.metadata import PackageNotFoundError, version
44

5-
# single source versioning from the installed package (stored in pyproject.toml)
5+
# Single source versioning from installed package metadata.
66
try:
77
__version__ = version("keepa")
88
except PackageNotFoundError:

uv.lock

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)