]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Adapt for importlib_metadata changes
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 30 Mar 2021 02:38:09 +0000 (22:38 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 30 Mar 2021 02:38:09 +0000 (22:38 -0400)
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 [new file with mode: 0644]
lib/sqlalchemy/util/compat.py
lib/sqlalchemy/util/langhelpers.py

diff --git a/doc/build/changelog/unreleased_14/imp_met.rst b/doc/build/changelog/unreleased_14/imp_met.rst
new file mode 100644 (file)
index 0000000..0663b64
--- /dev/null
@@ -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.
+
index ad419cba2a1ea6107ec9d75c8482402edce82e4d..ca92fb12503f33a37b4b420b697c23314b00513d 100644 (file)
@@ -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
index eb582b5284c66f439b53dd9dd650cd286ac5f251..51b9071d565bb0f3fee67da004a3d6673549042d 100644 (file)
@@ -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()