diff options
author | Spencer Chang <schang412@gmail.com> | 2023-02-10 03:18:34 -0800 |
---|---|---|
committer | Spencer Chang <schang412@gmail.com> | 2023-02-10 03:18:34 -0800 |
commit | 01bc64e54afb0381405bf049e3df4548d59d5ff1 (patch) | |
tree | 1c27545a6616c2069a59b12ab35e03d123bf1443 | |
parent | fb249b7af2e127e4bb62d877eb87599979817718 (diff) | |
download | setuptools-scm-01bc64e54afb0381405bf049e3df4548d59d5ff1.tar.gz |
use importlib_metadata.EntryPoint to try and execute qualified function path
-rw-r--r-- | src/setuptools_scm/version.py | 12 |
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)): |