Commit a76a61d4 authored by Guido van Rossum's avatar Guido van Rossum

Add PyErr_WarnExplicit(), which calls warnings.warn_explicit(), with

explicit filename, lineno etc. arguments.
parent 04dc4c37
...@@ -623,6 +623,48 @@ PyErr_Warn(PyObject *category, char *message) ...@@ -623,6 +623,48 @@ PyErr_Warn(PyObject *category, char *message)
} }
} }
/* Warning with explicit origin */
int
PyErr_WarnExplicit(PyObject *category, char *message,
char *filename, int lineno,
char *module, PyObject *registry)
{
PyObject *mod, *dict, *func = NULL;
mod = PyImport_ImportModule("warnings");
if (mod != NULL) {
dict = PyModule_GetDict(mod);
func = PyDict_GetItemString(dict, "warn_explicit");
Py_DECREF(mod);
}
if (func == NULL) {
PySys_WriteStderr("warning: %s\n", message);
return 0;
}
else {
PyObject *args, *res;
if (category == NULL)
category = PyExc_RuntimeWarning;
if (registry == NULL)
registry = Py_None;
args = Py_BuildValue("(sOsizO)", message, category,
filename, lineno, module, registry);
if (args == NULL)
return -1;
res = PyEval_CallObject(func, args);
Py_DECREF(args);
if (res == NULL)
return -1;
Py_DECREF(res);
return 0;
}
}
/* XXX There's a comment missing here */
void void
PyErr_SyntaxLocation(char *filename, int lineno) PyErr_SyntaxLocation(char *filename, int lineno)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment