Skip to content

Commit 7b668cc

Browse files
Merge pull request #924 from RonnyPfannschmidt/fix-919-version-file-legacy
Fix 919 version file legacy
2 parents 4bc06ac + 39c91e7 commit 7b668cc

File tree

6 files changed

+36
-5
lines changed

6 files changed

+36
-5
lines changed

CHANGELOG.rst

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ v8.0.2
33

44
bugfix
55
------
6+
7+
* fix #919: restore legacy version-file behaviour for external callers + add Deprecation warning
8+
* fix #918: use packaging from setuptools for self-build
69
* fix #914: ignore the deprecated git archival plugin as its integrated now
710
* fix #912: ensure mypy safety of the version template + regression test
811
* fix #913: use 240s timeout instead of 20 for git unshallow

pyproject.toml

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
build-backend = "_own_version_helper"
55
requires = [
66
'importlib-metadata>=4.6; python_version < "3.10"',
7-
"packaging>=20",
87
"rich",
98
"setuptools>=61",
109
'tomli; python_version < "3.11"',

src/setuptools_scm/_cli.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def main(args: list[str] | None = None) -> None:
3131
)
3232
config = Configuration(inferred_root)
3333

34-
version = _get_version(config)
34+
version = _get_version(config, force_write_version_files=False)
3535
if version is None:
3636
raise SystemExit("ERROR: no version found for", opts)
3737
if opts.strip_dev:

src/setuptools_scm/_get_version_impl.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,20 @@ def write_version_files(
8484

8585

8686
def _get_version(
87-
config: Configuration, force_write_version_files: bool = False
87+
config: Configuration, force_write_version_files: bool | None = None
8888
) -> str | None:
8989
parsed_version = parse_version(config)
9090
if parsed_version is None:
9191
return None
9292
version_string = _format_version(parsed_version)
93+
if force_write_version_files is None:
94+
force_write_version_files = True
95+
warnings.warn(
96+
"force_write_version_files ought to be set,"
97+
" presuming the legacy True value",
98+
DeprecationWarning,
99+
)
100+
93101
if force_write_version_files:
94102
write_version_files(config, version=version_string, scm_version=parsed_version)
95103

src/setuptools_scm/_version_cls.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,12 @@
55
from typing import Type
66
from typing import Union
77

8-
from packaging.version import InvalidVersion
9-
from packaging.version import Version as Version
8+
try:
9+
from packaging.version import InvalidVersion
10+
from packaging.version import Version as Version
11+
except ImportError:
12+
from setuptools.extern.packaging.version import InvalidVersion # type: ignore
13+
from setuptools.extern.packaging.version import Version as Version # type: ignore
1014

1115

1216
class NonNormalizedVersion(Version):

testing/test_basic_api.py

+17
Original file line numberDiff line numberDiff line change
@@ -242,3 +242,20 @@ def __repr__(self) -> str:
242242
# to create a test?
243243
# monkeypatch.setenv(setuptools_scm.PRETEND_KEY, "1.0.1")
244244
# assert setuptools_scm.get_version(version_cls=MyVersion) == "1"
245+
246+
247+
def test_internal_get_version_warns_for_version_files(tmp_path: Path) -> None:
248+
tmp_path.joinpath("PKG-INFO").write_text("Version: 0.1")
249+
c = Configuration(root=tmp_path, fallback_root=tmp_path)
250+
with pytest.warns(
251+
DeprecationWarning,
252+
match="force_write_version_files ought to be set,"
253+
" presuming the legacy True value",
254+
):
255+
ver = setuptools_scm._get_version(c)
256+
assert ver == "0.1"
257+
258+
# force write won't write as no version file is configured
259+
assert setuptools_scm._get_version(c, force_write_version_files=False) == ver
260+
261+
assert setuptools_scm._get_version(c, force_write_version_files=True) == ver

0 commit comments

Comments
 (0)