From: Mike Bayer Date: Tue, 30 Mar 2021 02:38:09 +0000 (-0400) Subject: Adapt for importlib_metadata changes X-Git-Tag: rel_1_4_4~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2c2e01a0c6d0847f5648fd0120c8fa0bd5f6268f;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git 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 --- 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()