#include "Python.h"
+#include "pycore_initconfig.h"
#include "pycore_pyerrors.h"
#include "pycore_pystate.h"
#include "frameobject.h"
/* Given a module object, get its per-module state. */
static WarningsState *
-_Warnings_GetState()
+warnings_get_state(void)
{
PyThreadState *tstate = _PyThreadState_GET();
if (tstate == NULL) {
_PyErr_SetString(tstate, PyExc_RuntimeError,
- "_Warnings_GetState: could not identify "
+ "warnings_get_state: could not identify "
"current interpreter");
return NULL;
}
/* Clear the given warnings module state. */
static void
-_Warnings_ClearState(WarningsState *st)
+warnings_clear_state(WarningsState *st)
{
Py_CLEAR(st->filters);
Py_CLEAR(st->once_registry);
/* Initialize the given warnings module state. */
static int
-_Warnings_InitState(WarningsState *st)
+warnings_init_state(WarningsState *st)
{
if (st->filters == NULL) {
st->filters = init_filters();
return 0;
error:
- _Warnings_ClearState(st);
+ warnings_clear_state(st);
return -1;
}
Py_ssize_t i;
PyObject *warnings_filters;
_Py_IDENTIFIER(filters);
- WarningsState *st = _Warnings_GetState();
+ WarningsState *st = warnings_get_state();
if (st == NULL) {
return NULL;
}
if (key == NULL)
return -1;
- WarningsState *st = _Warnings_GetState();
+ WarningsState *st = warnings_get_state();
if (st == NULL) {
return -1;
}
if (_PyUnicode_EqualToASCIIString(action, "once")) {
if (registry == NULL || registry == Py_None) {
- WarningsState *st = _Warnings_GetState();
+ WarningsState *st = warnings_get_state();
if (st == NULL) {
goto cleanup;
}
static PyObject *
warnings_filters_mutated(PyObject *self, PyObject *args)
{
- WarningsState *st = _Warnings_GetState();
+ WarningsState *st = warnings_get_state();
if (st == NULL) {
return NULL;
}
};
+PyStatus
+_PyWarnings_InitState(PyThreadState *tstate)
+{
+ if (warnings_init_state(&tstate->interp->warnings) < 0) {
+ return _PyStatus_ERR("can't initialize warnings");
+ }
+ return _PyStatus_OK();
+}
+
+
PyMODINIT_FUNC
_PyWarnings_Init(void)
{
return NULL;
}
- WarningsState *st = _Warnings_GetState();
+ WarningsState *st = warnings_get_state();
if (st == NULL) {
goto error;
}
- if (_Warnings_InitState(st) < 0) {
+ if (warnings_init_state(st) < 0) {
goto error;
}
error:
if (st != NULL) {
- _Warnings_ClearState(st);
+ warnings_clear_state(st);
}
Py_DECREF(m);
return NULL;
void
_PyWarnings_Fini(PyInterpreterState *interp)
{
- _Warnings_ClearState(&interp->warnings);
+ warnings_clear_state(&interp->warnings);
}