summaryrefslogtreecommitdiff
path: root/src/setuptools_scm/_entrypoints.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/setuptools_scm/_entrypoints.py')
-rw-r--r--src/setuptools_scm/_entrypoints.py20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/setuptools_scm/_entrypoints.py b/src/setuptools_scm/_entrypoints.py
index 0b86b90..2efb9f8 100644
--- a/src/setuptools_scm/_entrypoints.py
+++ b/src/setuptools_scm/_entrypoints.py
@@ -6,18 +6,20 @@ from typing import Iterator
from typing import overload
from typing import TYPE_CHECKING
-from typing_extensions import Protocol
-
-from . import _types as _t
from .utils import function_has_arg
from .utils import trace
from .version import ScmVersion
if TYPE_CHECKING:
from .config import Configuration
+ from typing_extensions import Protocol
+ from . import _types as _t
else:
Configuration = Any
+ class Protocol:
+ pass
+
class MaybeConfigFunction(Protocol):
__name__: str
@@ -71,7 +73,17 @@ def _version_from_entrypoints(
try:
from importlib.metadata import entry_points # type: ignore
except ImportError:
- from importlib_metadata import entry_points
+ try:
+ from importlib_metadata import entry_points
+ except ImportError:
+ from collections import defaultdict
+
+ def entry_points() -> dict[str, list[_t.EntrypointProtocol]]:
+ warnings.warn(
+ "importlib metadata missing, "
+ "this may happen at build time for python3.7"
+ )
+ return defaultdict(list)
def iter_entry_points(