diff --git a/src/setuptools_scm/git.py b/src/setuptools_scm/git.py index 1aee95a1..27cb1592 100644 --- a/src/setuptools_scm/git.py +++ b/src/setuptools_scm/git.py @@ -295,10 +295,13 @@ def archival_to_version( return meta(versions[0], config=config) else: node = data.get("node") - if node is not None: - return meta("0.0", node=node, config=config) - else: + if node is None: return None + elif "$FORMAT" in node.upper(): + warnings.warn("unexported git archival found") + return None + else: + return meta("0.0", node=node, config=config) def parse_archival( diff --git a/testing/test_git.py b/testing/test_git.py index 674d9042..52384424 100644 --- a/testing/test_git.py +++ b/testing/test_git.py @@ -24,6 +24,7 @@ from setuptools_scm import NonNormalizedVersion from setuptools_scm.file_finder_git import git_find_files from setuptools_scm.git import archival_to_version +from setuptools_scm.utils import data_from_mime from setuptools_scm.utils import do from setuptools_scm.utils import has_command @@ -543,3 +544,14 @@ def test_git_archival_node_missing_no_version() -> None: config = Configuration() version = archival_to_version({}, config=config) assert version is None + + +def test_git_archhival_from_unfiltered() -> None: + config = Configuration() + + import setuptools_scm + + data = data_from_mime(Path(setuptools_scm.__file__).parent / ".git_archival.txt") + with pytest.warns(UserWarning, match="unexported git archival found"): + version = archival_to_version(data, config=config) + assert version is None