diff --git a/src/typeguard/_checkers.py b/src/typeguard/_checkers.py index df970d5..390b1f9 100644 --- a/src/typeguard/_checkers.py +++ b/src/typeguard/_checkers.py @@ -67,11 +67,14 @@ ) from typing_extensions import Any as SubclassableAny -if sys.version_info >= (3, 10): +if sys.version_info < (3,8): + from importlib_metadata import entry_points +else: from importlib.metadata import entry_points + +if sys.version_info >= (3, 10): from typing import ParamSpec else: - from importlib_metadata import entry_points from typing_extensions import ParamSpec TypeCheckerCallable: TypeAlias = Callable[ @@ -847,7 +850,12 @@ def load_plugins() -> None: ``TYPEGUARD_DISABLE_PLUGIN_AUTOLOAD`` environment variable is present. """ - for ep in entry_points(group="typeguard.checker_lookup"): + group = "typeguard.checker_lookup" + if sys.version_info >= (3, 10): + eps = entry_points(group=group) + else: + eps = entry_points().get(group, ()) + for ep in eps: try: plugin = ep.load() except Exception as exc: diff --git a/tests/test_plugins.py b/tests/test_plugins.py index f01a074..48e5cb5 100644 --- a/tests/test_plugins.py +++ b/tests/test_plugins.py @@ -1,3 +1,5 @@ +import sys + from pytest import MonkeyPatch from typeguard import load_plugins @@ -12,10 +14,13 @@ class FakeEntryPoint: def load(self): return lookup_func - - def fake_entry_points(group): - assert group == "typeguard.checker_lookup" - return [FakeEntryPoint()] + if sys.version_info >= (3, 10): + def fake_entry_points(group): + assert group == "typeguard.checker_lookup" + return [FakeEntryPoint()] + else: + def fake_entry_points(): + return {"typeguard.checker_lookup":[FakeEntryPoint()]} checker_lookup_functions = [] monkeypatch.setattr("typeguard._checkers.entry_points", fake_entry_points)