Example #1
0
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 --- */

}
Example #2
0
PyMODINIT_FUNC
init_pbs_v1(void)
{
	(void) pbs_v1_module_init();
	return;
}
Example #3
0
/**
 * @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;
}