void * pbs_python_ext_namespace_init( struct python_interpreter_data *interp_data) { static char func_id[] = "pbs_python_namespace_init"; #ifdef PYTHON /* --- BEGIN PYTHON BLOCK --- */ PyObject *namespace_dict = (PyObject *) NULL; namespace_dict = PyDict_New(); /* New Refrence MUST Decref */ if (!namespace_dict) { pbs_python_write_error_to_log(func_id); goto ERROR_EXIT; } /* * setup our namespace, by including all the modules that are needed to * run the python scripts */ if ((PyDict_SetItemString(namespace_dict, "__builtins__", PyEval_GetBuiltins()) == -1) ) { pbs_python_write_error_to_log(func_id); goto ERROR_EXIT; } /* * Now, add our extension object/module to the namespace. */ if ((PyDict_SetItemString(namespace_dict, PBS_PYTHON_V1_MODULE_EXTENSION_NAME, pbs_v1_module_init()) == -1) ) { snprintf(log_buffer, LOG_BUF_SIZE-1, "%s|adding extension object", func_id); log_buffer[LOG_BUF_SIZE-1] = '\0'; pbs_python_write_error_to_log(func_id); goto ERROR_EXIT; } return namespace_dict; ERROR_EXIT: if (namespace_dict) { PyDict_Clear(namespace_dict); Py_CLEAR(namespace_dict); } return namespace_dict; #else /* !PYTHON */ return (void *) NULL; #endif /* --- END PYTHON BLOCK --- */ }
PyMODINIT_FUNC init_pbs_v1(void) { (void) pbs_v1_module_init(); return; }
/** * @brief * The below is for embedded interpreter puts it in the __main__ * module. * */ void pbs_v1_module_inittab(void) { (void) pbs_v1_module_init(); return; }