Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions Include/warnings.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ extern "C" {
#ifndef Py_LIMITED_API
PyAPI_FUNC(PyObject*) _PyWarnings_Init(void);
#endif
#ifdef Py_BUILD_CORE
PyAPI_FUNC(PyObject*) _PyWarnings_InitWithConfig(const _PyCoreConfig *config);
#endif

PyAPI_FUNC(int) PyErr_WarnEx(
PyObject *category,
Expand Down
25 changes: 3 additions & 22 deletions Modules/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1151,27 +1151,6 @@ pymain_get_program_name(_PyMain *pymain)
}


/* Initialize the main interpreter.
*
* Replaces previous call to Py_Initialize()
*
* Return 0 on success.
* Set pymain->err and return -1 on error.
*/
static int
pymain_init_main_interpreter(_PyMain *pymain)
{
_PyInitError err;

err = _Py_InitializeMainInterpreter(&pymain->config);
if (_Py_INIT_FAILED(err)) {
pymain->err = err;
return -1;
}
return 0;
}


static void
pymain_header(_PyMain *pymain)
{
Expand Down Expand Up @@ -2357,7 +2336,9 @@ pymain_init_python_main(_PyMain *pymain)
return -1;
}

if (pymain_init_main_interpreter(pymain)) {
err = _Py_InitializeMainInterpreter(&pymain->config);
if (_Py_INIT_FAILED(err)) {
pymain->err = err;
return -1;
}

Expand Down
17 changes: 4 additions & 13 deletions Python/_warnings.c
Original file line number Diff line number Diff line change
Expand Up @@ -1173,7 +1173,7 @@ create_filter(PyObject *category, _Py_Identifier *id)


static PyObject *
init_filters(const _PyCoreConfig *config)
init_filters(void)
{
#ifdef Py_DEBUG
/* Py_DEBUG builds show all warnings by default */
Expand Down Expand Up @@ -1218,8 +1218,8 @@ static struct PyModuleDef warningsmodule = {
};


PyObject*
_PyWarnings_InitWithConfig(const _PyCoreConfig *config)
PyMODINIT_FUNC
_PyWarnings_Init(void)
{
PyObject *m;

Expand All @@ -1228,7 +1228,7 @@ _PyWarnings_InitWithConfig(const _PyCoreConfig *config)
return NULL;

if (_PyRuntime.warnings.filters == NULL) {
_PyRuntime.warnings.filters = init_filters(config);
_PyRuntime.warnings.filters = init_filters();
if (_PyRuntime.warnings.filters == NULL)
return NULL;
}
Expand Down Expand Up @@ -1259,12 +1259,3 @@ _PyWarnings_InitWithConfig(const _PyCoreConfig *config)
_PyRuntime.warnings.filters_version = 0;
return m;
}


PyMODINIT_FUNC
_PyWarnings_Init(void)
{
PyInterpreterState *interp = PyThreadState_GET()->interp;
const _PyCoreConfig *config = &interp->core_config;
return _PyWarnings_InitWithConfig(config);
}
12 changes: 10 additions & 2 deletions Python/pylifecycle.c
Original file line number Diff line number Diff line change
Expand Up @@ -737,7 +737,7 @@ _Py_InitializeCore(const _PyCoreConfig *core_config)
}

/* Initialize _warnings. */
if (_PyWarnings_InitWithConfig(&interp->core_config) == NULL) {
if (_PyWarnings_Init() == NULL) {
return _Py_INIT_ERR("can't initialize warnings");
}

Expand Down Expand Up @@ -847,7 +847,9 @@ _Py_InitializeMainInterpreter(const _PyMainInterpreterConfig *config)
}

/* Initialize warnings. */
if (PySys_HasWarnOptions()) {
if (interp->config.warnoptions != NULL &&
PyList_Size(interp->config.warnoptions) > 0)
{
PyObject *warnings_module = PyImport_ImportModule("warnings");
if (warnings_module == NULL) {
fprintf(stderr, "'import warnings' failed; traceback:\n");
Expand Down Expand Up @@ -1021,9 +1023,15 @@ Py_FinalizeEx(void)

/* Copy the core config, PyInterpreterState_Delete() free
the core config memory */
#ifdef Py_REF_DEBUG
int show_ref_count = interp->core_config.show_ref_count;
#endif
#ifdef Py_TRACE_REFS
int dump_refs = interp->core_config.dump_refs;
#endif
#ifdef WITH_PYMALLOC
int malloc_stats = interp->core_config.malloc_stats;
#endif

/* Remaining threads (e.g. daemon threads) will automatically exit
after taking the GIL (in PyEval_RestoreThread()). */
Expand Down