From 2c2e01a0c6d0847f5648fd0120c8fa0bd5f6268f Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 29 Mar 2021 22:38:09 -0400 Subject: [PATCH] Adapt for importlib_metadata changes importlib_metadata deprecates the .get() method and provides a different method .select() as of 3.7.1. Work around the deprecation warning in this case. Change-Id: I0f1849219e13a1c546f7bd24047d447823a15552 --- doc/build/changelog/unreleased_14/imp_met.rst | 7 +++++++ lib/sqlalchemy/util/compat.py | 13 +++++++++++++ lib/sqlalchemy/util/langhelpers.py | 4 +--- 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 doc/build/changelog/unreleased_14/imp_met.rst diff --git a/doc/build/changelog/unreleased_14/imp_met.rst b/doc/build/changelog/unreleased_14/imp_met.rst new file mode 100644 index 0000000000..0663b64b4f --- /dev/null +++ b/doc/build/changelog/unreleased_14/imp_met.rst @@ -0,0 +1,7 @@ +.. change:: + :tags: bug, misc + + Adjusted the usage of the ``importlib_metadata`` library for loading + setuptools entrypoints in order to accommodate for some deprecation + changes. + diff --git a/lib/sqlalchemy/util/compat.py b/lib/sqlalchemy/util/compat.py index ad419cba2a..ca92fb1250 100644 --- a/lib/sqlalchemy/util/compat.py +++ b/lib/sqlalchemy/util/compat.py @@ -111,9 +111,22 @@ def inspect_getfullargspec(func): if py38: from importlib import metadata as importlib_metadata + + def importlib_metadata_get(group): + return importlib_metadata.entry_points().get(group, ()) + + else: import importlib_metadata # noqa + def importlib_metadata_get(group): + ep = importlib_metadata.entry_points() + if hasattr(ep, "select"): + return ep.select(group=group) + else: + return ep.get(group, ()) + + if py3k: import base64 import builtins diff --git a/lib/sqlalchemy/util/langhelpers.py b/lib/sqlalchemy/util/langhelpers.py index eb582b5284..51b9071d56 100644 --- a/lib/sqlalchemy/util/langhelpers.py +++ b/lib/sqlalchemy/util/langhelpers.py @@ -331,9 +331,7 @@ class PluginLoader(object): self.impls[name] = loader return loader() - for impl in compat.importlib_metadata.entry_points().get( - self.group, () - ): + for impl in compat.importlib_metadata_get(self.group): if impl.name == name: self.impls[name] = impl.load return impl.load() -- 2.47.2