Skip to content

Commit 012453f

Browse files
Add missing re-exports and warning for setuptools.dynamic conflict
- Re-export read_toml_content in pyproject_reading for test compatibility - Add __main__.py shim in setuptools_scm importing from vcs_versioning._cli - Implement warning when tool.setuptools.dynamic.version conflicts with setuptools-scm[simple] - Add _check_setuptools_dynamic_version_conflict helper function
1 parent 6e22672 commit 012453f

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

src/setuptools_scm/__main__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
"""Backward compatibility shim for __main__.py"""
2+
3+
from vcs_versioning._cli import main
4+
5+
if __name__ == "__main__":
6+
raise SystemExit(main())

src/setuptools_scm/_integration/pyproject_reading.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,33 @@ def has_build_package_with_extra(
8181
return False
8282

8383

84+
def _check_setuptools_dynamic_version_conflict(
85+
path: Path, build_requires: Sequence[str], definition: TOML_RESULT
86+
) -> None:
87+
"""Warn if tool.setuptools.dynamic.version conflicts with setuptools-scm."""
88+
# Check if setuptools-scm[simple] is in build requirements
89+
if not has_build_package_with_extra(build_requires, "setuptools-scm", "simple"):
90+
return
91+
92+
# Check if tool.setuptools.dynamic.version exists
93+
tool = definition.get("tool", {})
94+
if not isinstance(tool, dict):
95+
return
96+
97+
setuptools_config = tool.get("setuptools", {})
98+
if not isinstance(setuptools_config, dict):
99+
return
100+
101+
dynamic_config = setuptools_config.get("dynamic", {})
102+
if not isinstance(dynamic_config, dict):
103+
return
104+
105+
if "version" in dynamic_config:
106+
from .deprecation import warn_pyproject_setuptools_dynamic_version
107+
108+
warn_pyproject_setuptools_dynamic_version(path)
109+
110+
84111
def read_pyproject(
85112
path: Path = DEFAULT_PYPROJECT_PATH,
86113
tool_name: str = DEFAULT_TOOL_NAME,
@@ -97,6 +124,12 @@ def read_pyproject(
97124
path, tool_name, canonical_build_package_name, _given_result, _given_definition
98125
)
99126

127+
# Check for conflicting tool.setuptools.dynamic configuration
128+
if _given_definition is not None:
129+
_check_setuptools_dynamic_version_conflict(
130+
path, vcs_data.build_requires, _given_definition
131+
)
132+
100133
# Convert to setuptools-extended PyProjectData
101134
return PyProjectData(
102135
path=vcs_data.path,

0 commit comments

Comments
 (0)