summaryrefslogtreecommitdiff
path: root/dev-python/pygobject/files/pygobject-3.42.0-dynamicimporter-py310.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/pygobject/files/pygobject-3.42.0-dynamicimporter-py310.patch')
-rw-r--r--dev-python/pygobject/files/pygobject-3.42.0-dynamicimporter-py310.patch61
1 files changed, 61 insertions, 0 deletions
diff --git a/dev-python/pygobject/files/pygobject-3.42.0-dynamicimporter-py310.patch b/dev-python/pygobject/files/pygobject-3.42.0-dynamicimporter-py310.patch
new file mode 100644
index 000000000000..cf292ffbf7c6
--- /dev/null
+++ b/dev-python/pygobject/files/pygobject-3.42.0-dynamicimporter-py310.patch
@@ -0,0 +1,61 @@
+From dea457c0754550e210ab3cca9da8be1ae52d1d31 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
+Date: Tue, 18 May 2021 12:31:51 +0200
+Subject: [PATCH] Implement DynamicImporter.find_spec()
+
+On Python 3.10, the code raised an ImportWarning:
+
+ ImportWarning: DynamicImporter.find_spec() not found; falling back to find_module()
+
+See https://docs.python.org/3.10/whatsnew/3.10.html#deprecated
+
+> Starting in this release, there will be a concerted effort to begin cleaning
+> up old import semantics that were kept for Python 2.7 compatibility.
+> Specifically, find_loader()/find_module() (superseded by find_spec()),
+> load_module() (superseded by exec_module()), module_repr()
+> (which the import system takes care of for you),
+> the __package__ attribute (superseded by __spec__.parent),
+> the __loader__ attribute (superseded by __spec__.loader),
+> and the __cached__ attribute (superseded by __spec__.cached)
+> will slowly be removed (as well as other classes and methods in importlib).
+> ImportWarning and/or DeprecationWarning will be raised as appropriate to help
+> identify code which needs updating during this transition.
+
+Fixes https://gitlab.gnome.org/GNOME/pygobject/-/issues/473
+---
+ gi/importer.py | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/gi/importer.py b/gi/importer.py
+index 32967974..63788776 100644
+--- a/gi/importer.py
++++ b/gi/importer.py
+@@ -107,15 +107,20 @@ class DynamicImporter(object):
+ def __init__(self, path):
+ self.path = path
+
+- def find_module(self, fullname, path=None):
++ def _find_module_check(self, fullname):
+ if not fullname.startswith(self.path):
+- return
++ return False
+
+ path, namespace = fullname.rsplit('.', 1)
+- if path != self.path:
+- return
++ return path == self.path
++
++ def find_spec(self, fullname, path=None, target=None):
++ if self._find_module_check(fullname):
++ return importlib.util.spec_from_loader(fullname, self)
+
+- return self
++ def find_module(self, fullname, path=None):
++ if self._find_module_check(fullname):
++ return self
+
+ def load_module(self, fullname):
+ if fullname in sys.modules:
+--
+2.32.0
+