[pygobject] importer: raise ImportError in load_module() and not find_module(). See #213
- From: Christoph Reiter <creiter src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pygobject] importer: raise ImportError in load_module() and not find_module(). See #213
- Date: Thu, 3 May 2018 14:36:35 +0000 (UTC)
commit 9c671606cc93a06e6db3ee5ee5f0862a7bfc21f9
Author: Christoph Reiter <reiter christoph gmail com>
Date: Thu May 3 16:23:31 2018 +0200
importer: raise ImportError in load_module() and not find_module(). See #213
find_module() should either return None or a loader, but we raised ImportError
there in case we already knew that the namespace was missing.
Move that check to load_module() instead. While there shouldn't be any functional
difference, raising in find_module() under Python 3 resulted in a chained
exception with an unrelated error message printed first.
gi/importer.py | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
---
diff --git a/gi/importer.py b/gi/importer.py
index 4ed6196f..e14d47be 100644
--- a/gi/importer.py
+++ b/gi/importer.py
@@ -116,15 +116,7 @@ class DynamicImporter(object):
if path != self.path:
return
- # is_registered() is faster than enumerate_versions() and
- # in the common case of a namespace getting loaded before its
- # dependencies, is_registered() returns True for all dependencies.
- if repository.is_registered(namespace) or \
- repository.enumerate_versions(namespace):
- return self
- else:
- raise ImportError('cannot import name %s, '
- 'introspection typelib not found' % namespace)
+ return self
def load_module(self, fullname):
if fullname in sys.modules:
@@ -132,6 +124,14 @@ class DynamicImporter(object):
path, namespace = fullname.rsplit('.', 1)
+ # is_registered() is faster than enumerate_versions() and
+ # in the common case of a namespace getting loaded before its
+ # dependencies, is_registered() returns True for all dependencies.
+ if not repository.is_registered(namespace) and not \
+ repository.enumerate_versions(namespace):
+ raise ImportError('cannot import name %s, '
+ 'introspection typelib not found' % namespace)
+
stacklevel = get_import_stacklevel(import_hook=True)
with _check_require_version(namespace, stacklevel=stacklevel):
try:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]