summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--_own_version_helper.py29
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: