summaryrefslogtreecommitdiff
path: root/codegen/codegen.py
diff options
context:
space:
mode:
Diffstat (limited to 'codegen/codegen.py')
-rw-r--r--codegen/codegen.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/codegen/codegen.py b/codegen/codegen.py
index 94148537..c510c30f 100644
--- a/codegen/codegen.py
+++ b/codegen/codegen.py
@@ -671,8 +671,15 @@ def write_source(parser, overrides, prefix, fp=FileOutput(sys.stdout)):
fp.write(' PyObject *moddict = PyModule_GetDict(module);\n\n')
for pyname, cname in bymod[module]:
fp.write(' _%s = (PyTypeObject *)PyDict_GetItemString(moddict, "%s");\n' % (cname, pyname))
+ fp.write(' if (_%s == NULL) {\n' % cname)
+ fp.write(' PyErr_SetString(PyExc_ImportError,\n')
+ fp.write(' "cannot import name %s from %s");\n'
+ % (pyname, module))
+ fp.write(' return;\n')
+ fp.write(' }\n')
fp.write(' } else {\n')
- fp.write(' Py_FatalError("could not import %s");\n' %module)
+ fp.write(' PyErr_SetString(PyExc_ImportError,\n')
+ fp.write(' "could not import %s");\n' % module)
fp.write(' return;\n')
fp.write(' }\n')
fp.write('\n')