diff options
author | Ronny Pfannschmidt <opensource@ronnypfannschmidt.de> | 2023-03-25 06:51:07 +0100 |
---|---|---|
committer | Ronny Pfannschmidt <opensource@ronnypfannschmidt.de> | 2023-03-29 17:04:12 +0200 |
commit | b247393fe97ef7165a8cbfb4292e50297c0b1617 (patch) | |
tree | d62228c205ec96b075cd5671ebf3f009f224e2c9 | |
parent | b773005ad28b3cdfc8baf4fba5f7b07ac6ef11a6 (diff) | |
download | setuptools-scm-b247393fe97ef7165a8cbfb4292e50297c0b1617.tar.gz |
own_version: also parse archival data
fixes #824
eventually this should be migrated to faking entrypoints from pyproject.toml
-rw-r--r-- | _own_version_helper.py | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/_own_version_helper.py b/_own_version_helper.py index e512dc2..f7dc4fe 100644 --- a/_own_version_helper.py +++ b/_own_version_helper.py @@ -4,6 +4,10 @@ to use the attribute for the versions """ from __future__ import annotations +import logging +from typing import Callable + +from setuptools_scm import _types as _t from setuptools_scm import Configuration from setuptools_scm import get_version from setuptools_scm import git @@ -13,12 +17,29 @@ from setuptools_scm.version import get_local_node_and_date from setuptools_scm.version import guess_next_dev_version from setuptools_scm.version import ScmVersion +log = logging.getLogger("setuptools_scm") + +# todo: take fake entrypoints from pyproject.toml +try_parse: list[Callable[[_t.PathT, Configuration], ScmVersion | None]] = [ + parse_pkginfo, + git.parse, + hg.parse, + git.parse_archival, + hg.parse_archival, +] + def parse(root: str, config: Configuration) -> ScmVersion | None: - try: - return parse_pkginfo(root, config) - except OSError: - return git.parse(root, config=config) or hg.parse(root, config=config) + for maybe_parse in try_parse: + try: + parsed = maybe_parse(root, config) + except OSError as e: + log.warning("parse with %s failed with: %s", maybe_parse, e) + else: + if parsed is not None: + return parsed + else: + return None def scm_version() -> str: |