Skip to content

Commit 62ae640

Browse files
Merge pull request #1120 from RonnyPfannschmidt/ronny/fix-1119-consider-full-version
fixes #1119: consider all version parts for version tuple
2 parents bd598d8 + 0a783ef commit 62ae640

File tree

4 files changed

+32
-1
lines changed

4 files changed

+32
-1
lines changed

CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Changelog
22

3+
## v8.2.1
4+
5+
### Fixed
6+
7+
- fix #1119: also include pre/post release details in version_tuple
8+
9+
310
## v8.2.0
411

512
### Added

pyproject.toml

-1
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@ force-single-line = true
128128
from-first = false
129129
lines-between-types = 1
130130
order-by-type = true
131-
132131
[tool.repo-review]
133132
ignore = ["PP305", "GH103", "GH212", "MY100", "PC111", "PC160", "PC170", "PC180", "PC901"]
134133

src/setuptools_scm/_version_cls.py

+9
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,17 @@ def _version_as_tuple(version_str: str) -> tuple[int | str, ...]:
5252
return (version_str,)
5353
else:
5454
version_fields: tuple[int | str, ...] = parsed_version.release
55+
if parsed_version.epoch:
56+
version_fields = (f"{parsed_version.epoch}!", *version_fields)
57+
if parsed_version.pre is not None:
58+
version_fields += (f"{parsed_version.pre[0]}{parsed_version.pre[1]}",)
59+
60+
if parsed_version.post is not None:
61+
version_fields += (f"post{parsed_version.post}",)
62+
5563
if parsed_version.dev is not None:
5664
version_fields += (f"dev{parsed_version.dev}",)
65+
5766
if parsed_version.local is not None:
5867
version_fields += (parsed_version.local,)
5968
return version_fields

testing/test_regressions.py

+16
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from importlib.metadata import EntryPoint
99
from importlib.metadata import distribution
1010
from pathlib import Path
11+
from typing import Sequence
1112

1213
import pytest
1314

@@ -130,3 +131,18 @@ def test_write_to_absolute_path_passes_when_subdir_of_root(tmp_path: Path) -> No
130131
match=r".*VERSION.py' .* .*subdir.*",
131132
):
132133
write_version_files(replace(c, root=subdir), "1.0", v)
134+
135+
136+
@pytest.mark.parametrize(
137+
("input", "expected"),
138+
[
139+
("1.0", (1, 0)),
140+
("1.0a2", (1, 0, "a2")),
141+
("1.0.b2dev1", (1, 0, "b2", "dev1")),
142+
("1.0.dev1", (1, 0, "dev1")),
143+
],
144+
)
145+
def test_version_as_tuple(input: str, expected: Sequence[int | str]) -> None:
146+
from setuptools_scm._version_cls import _version_as_tuple
147+
148+
assert _version_as_tuple(input) == expected

0 commit comments

Comments
 (0)