diff --git a/src/pluggy/_manager.py b/src/pluggy/_manager.py index 84717e6e..a984d1d7 100644 --- a/src/pluggy/_manager.py +++ b/src/pluggy/_manager.py @@ -1,6 +1,5 @@ from __future__ import annotations -import importlib.metadata import inspect import types import warnings @@ -11,6 +10,7 @@ from typing import Iterable from typing import Mapping from typing import Sequence +from typing import TYPE_CHECKING from . import _tracing from ._callers import _multicall @@ -26,6 +26,10 @@ from ._hooks import normalize_hookimpl_opts from ._result import Result +if TYPE_CHECKING: + # importtlib.metadata import is slow, defer it. + import importlib.metadata + _BeforeTrace = Callable[[str, Sequence[HookImpl], Mapping[str, Any]], None] _AfterTrace = Callable[[Result[Any], str, Sequence[HookImpl], Mapping[str, Any]], None] @@ -384,6 +388,8 @@ def load_setuptools_entrypoints(self, group: str, name: str | None = None) -> in :return: The number of plugins loaded by this call. """ + import importlib.metadata + count = 0 for dist in list(importlib.metadata.distributions()): for ep in dist.entry_points: