aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sources/pyside2/PySide2/support/signature/mapping.py2
-rw-r--r--sources/shiboken2/shibokenmodule/support/signature/mapping.py15
2 files changed, 13 insertions, 4 deletions
diff --git a/sources/pyside2/PySide2/support/signature/mapping.py b/sources/pyside2/PySide2/support/signature/mapping.py
index c39821f05..61fa2d41f 100644
--- a/sources/pyside2/PySide2/support/signature/mapping.py
+++ b/sources/pyside2/PySide2/support/signature/mapping.py
@@ -311,6 +311,8 @@ def init_QtXmlPatterns():
def init_QtMultimedia():
import PySide2.QtMultimediaWidgets
+ # Check if foreign import is valid. See mapping.py in shiboken2.
+ check_module(PySide2.QtMultimediaWidgets)
type_map.update({
"QGraphicsVideoItem": PySide2.QtMultimediaWidgets.QGraphicsVideoItem,
"QVideoWidget": PySide2.QtMultimediaWidgets.QVideoWidget,
diff --git a/sources/shiboken2/shibokenmodule/support/signature/mapping.py b/sources/shiboken2/shibokenmodule/support/signature/mapping.py
index f638bc42b..0195f0280 100644
--- a/sources/shiboken2/shibokenmodule/support/signature/mapping.py
+++ b/sources/shiboken2/shibokenmodule/support/signature/mapping.py
@@ -175,10 +175,7 @@ class Reloader(object):
import_name = prefix + mod_name
if import_name in sys.modules:
# check if this is a real module
- obj = sys.modules[import_name]
- if not getattr(obj, "__file__", None) or os.path.isdir(obj.__file__):
- raise ImportError("Module '{mod_name}' is at most a "
- "namespace!".format(**locals()))
+ check_module(sys.modules[import_name])
# module is real
self.uninitialized.remove(mod_name)
proc_name = "init_" + mod_name
@@ -193,6 +190,16 @@ class Reloader(object):
# Modules are in place, we can update the type_map.
g.update(g[proc_name]())
+def check_module(mod):
+ # During a build, there exist the modules already as directories,
+ # although the '*.so' was not yet created. This causes a problem
+ # in Python 3, because it accepts folders as namespace modules
+ # without enforcing an '__init__.py'.
+ if not getattr(mod, "__file__", None) or os.path.isdir(mod.__file__):
+ mod_name = mod.__name__
+ raise ImportError("Module '{mod_name}' is at most a namespace!"
+ .format(**locals()))
+
update_mapping = Reloader().update
type_map = {}