Skip to content

Commit a23d5fe

Browse files
Add a "only-version" version scheme (#1005)
* Add "just-tag" * docs too * rename * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Rename * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Dont autoformat this * docs warning --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent ac3b6e1 commit a23d5fe

File tree

4 files changed

+38
-0
lines changed

4 files changed

+38
-0
lines changed

docs/extending.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,11 @@ representing the version.
8484
`no-guess-dev`
8585
: Does no next version guessing, just adds `.post1.devN`
8686

87+
`only-version`
88+
: Only use the version from the tag, as given.
89+
90+
!!! warning "This means version is no longer pseudo unique per commit"
91+
8792

8893
### `setuptools_scm.local_scheme`
8994
Configures how the local part of a version is rendered given a

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ PKG-INFO = "setuptools_scm.fallbacks:parse_pkginfo"
9898
"calver-by-date" = "setuptools_scm.version:calver_by_date"
9999
"guess-next-dev" = "setuptools_scm.version:guess_next_dev_version"
100100
"no-guess-dev" = "setuptools_scm.version:no_guess_dev_version"
101+
"only-version" = "setuptools_scm.version:only_version"
101102
"post-release" = "setuptools_scm.version:postrelease_version"
102103
"python-simplified-semver" = "setuptools_scm.version:simplified_semver_version"
103104
"release-branch-semver" = "setuptools_scm.version:release_branch_semver_version"

src/setuptools_scm/version.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,10 @@ def release_branch_semver(version: ScmVersion) -> str:
299299
return release_branch_semver_version(version)
300300

301301

302+
def only_version(version: ScmVersion) -> str:
303+
return version.format_with("{tag}")
304+
305+
302306
def no_guess_dev_version(version: ScmVersion) -> str:
303307
if version.exact:
304308
return version.format_with("{tag}")

testing/test_version.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from setuptools_scm.version import guess_next_version
1616
from setuptools_scm.version import meta
1717
from setuptools_scm.version import no_guess_dev_version
18+
from setuptools_scm.version import only_version
1819
from setuptools_scm.version import release_branch_semver_version
1920
from setuptools_scm.version import ScmVersion
2021
from setuptools_scm.version import simplified_semver_version
@@ -170,6 +171,33 @@ def test_bump_dev_version_nonzero_raises() -> None:
170171
guess_next_version(m("1.0.dev1"))
171172

172173

174+
@pytest.mark.parametrize(
175+
"version",
176+
[
177+
"1.dev0",
178+
"1.0.dev456",
179+
"1.0a1",
180+
"1.0a2.dev456",
181+
"1.0a12.dev456",
182+
"1.0a12",
183+
"1.0b1.dev456",
184+
"1.0b2",
185+
"1.0b2.post345.dev456",
186+
"1.0b2.post345",
187+
"1.0rc1.dev456",
188+
"1.0rc1",
189+
"1.0",
190+
"1.0.post456.dev34",
191+
"1.0.post456",
192+
"1.0.15",
193+
"1.1.dev1",
194+
],
195+
)
196+
def test_only_version(version: str) -> None:
197+
assert version == only_version(meta(version, config=c))
198+
assert version == only_version(meta(version, distance=2, config=c))
199+
200+
173201
@pytest.mark.parametrize(
174202
("tag", "expected"),
175203
[

0 commit comments

Comments
 (0)