summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-06-12 00:43:51 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-06-12 00:43:51 +0000
commitfbb0ef52ee9103c02617827d31971db3688f1ed8 (patch)
tree00b349c02f82c5eaa16f2d07fb0f1c4aaba5722a
parenta9b673cd4a9a5ee64d8d04f5e3c03978a799f837 (diff)
downloadlasso-fbb0ef52ee9103c02617827d31971db3688f1ed8.tar.gz
lasso-fbb0ef52ee9103c02617827d31971db3688f1ed8.tar.xz
lasso-fbb0ef52ee9103c02617827d31971db3688f1ed8.zip
Binding python: find a work around for random behaviour of PyImport_ImportModule
* it seems that PyImport_ImportModule is not deterministic. Sometimes it returns True for modules which we know are present ('logging'). Importing 'sys' first seems to make 'logging' accessible (complete cargo cult programming).
-rw-r--r--bindings/python/wrapper_top.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/bindings/python/wrapper_top.c b/bindings/python/wrapper_top.c
index 09ceff84..76d9da95 100644
--- a/bindings/python/wrapper_top.c
+++ b/bindings/python/wrapper_top.c
@@ -611,6 +611,10 @@ static PyObject *get_logger_object() {
if (_logger_object)
goto exit;
}
+ /* XXX: needed so that PyImport_ImportModule("logging") always works */
+ logging_module = PyImport_ImportModule("sys");
+ if (logging_module)
+ Py_DECREF(logging_module);
logging_module = PyImport_ImportModule("logging");
if (logging_module) {
_logger_object = PyObject_CallMethod(logging_module, "getLogger",
@@ -633,8 +637,8 @@ lasso_python_log(G_GNUC_UNUSED const char *domain, GLogLevelFlags log_level, con
char *method = NULL;
if (! logger_object) {
- PyErr_SetString(PyExc_RuntimeError, "both lasso.logger and "
- "loggin.getLogger('lasso') did not return a logger");
+ PyErr_SetString(PyExc_RuntimeError, "neither lasso.logger nor "
+ "logging.getLogger('lasso') did return a logger");
return;
}
switch (log_level) {