diff options
Diffstat (limited to 'src/setuptools_scm/_entrypoints.py')
-rw-r--r-- | src/setuptools_scm/_entrypoints.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/setuptools_scm/_entrypoints.py b/src/setuptools_scm/_entrypoints.py index c236434..0b0b32c 100644 --- a/src/setuptools_scm/_entrypoints.py +++ b/src/setuptools_scm/_entrypoints.py @@ -46,9 +46,11 @@ def _version_from_entrypoints( try: from importlib.metadata import entry_points # type: ignore + from importlib.metadata import EntryPoint except ImportError: try: from importlib_metadata import entry_points + from importlib_metadata import EntryPoint except ImportError: from collections import defaultdict @@ -59,6 +61,10 @@ except ImportError: ) return defaultdict(list) + class EntryPoint: # type: ignore + def __init__(self, *args: Any, **kwargs: Any): + pass # entry_points() already provides the warning + def iter_entry_points( group: str, name: str | None = None @@ -83,6 +89,13 @@ def _get_ep(group: str, name: str) -> Any | None: return None +def _get_from_object_reference_str(path: str) -> Any | None: + try: + return EntryPoint(path, path, None).load() + except (AttributeError, ModuleNotFoundError): + return None + + def _iter_version_schemes( entrypoint: str, scheme_value: _t.VERSION_SCHEMES, @@ -93,7 +106,8 @@ def _iter_version_schemes( if isinstance(scheme_value, str): scheme_value = cast( "_t.VERSION_SCHEMES", - _get_ep(entrypoint, scheme_value), + _get_ep(entrypoint, scheme_value) + or _get_from_object_reference_str(scheme_value), ) if isinstance(scheme_value, (list, tuple)): |