summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSpencer Chang <schang412@gmail.com>2023-02-10 03:18:34 -0800
committerSpencer Chang <schang412@gmail.com>2023-02-10 03:18:34 -0800
commit01bc64e54afb0381405bf049e3df4548d59d5ff1 (patch)
tree1c27545a6616c2069a59b12ab35e03d123bf1443
parentfb249b7af2e127e4bb62d877eb87599979817718 (diff)
downloadsetuptools-scm-01bc64e54afb0381405bf049e3df4548d59d5ff1.tar.gz
use importlib_metadata.EntryPoint to try and execute qualified function path
-rw-r--r--src/setuptools_scm/version.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/setuptools_scm/version.py b/src/setuptools_scm/version.py
index 114e16b..45647de 100644
--- a/src/setuptools_scm/version.py
+++ b/src/setuptools_scm/version.py
@@ -507,9 +507,19 @@ def _iter_version_schemes(
if _memo is None:
_memo = set()
if isinstance(scheme_value, str):
+ tscheme_val = _get_ep(entrypoint, scheme_value)
+ if tscheme_val is None:
+ try:
+ from importlib.metadata import EntryPoint
+ except ImportError:
+ from importlib_metadata import EntryPoint
+ try:
+ tscheme_val = EntryPoint(scheme_value, scheme_value, entrypoint).load()
+ except (AttributeError, ModuleNotFoundError):
+ pass
scheme_value = cast(
'str|List[str]|Tuple[str, ...]|Callable[["ScmVersion"], str]|None',
- _get_ep(entrypoint, scheme_value),
+ tscheme_val
)
if isinstance(scheme_value, (list, tuple)):