diff options
Diffstat (limited to 'codegen/codegen.py')
-rw-r--r-- | codegen/codegen.py | 9 |
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') |