From b03b30d776913da1605df0a96fbf0eec0b25355f Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 19 Jun 2019 02:57:22 +0200 Subject: [PATCH] bpo-36710: Remove PyImport_Cleanup() function * Rename PyImport_Cleanup() to _PyImport_Cleanup() and move it to the internal C API. Add 'tstate' parameters. * Remove documentation of _PyImport_Init(), PyImport_Cleanup(), _PyImport_Fini(). All three were documented as "For internal use only.". --- Doc/c-api/import.rst | 15 --------------- Doc/whatsnew/3.9.rst | 3 +++ Include/import.h | 1 - Include/internal/pycore_import.h | 1 + Python/import.c | 3 +-- Python/pylifecycle.c | 4 ++-- 6 files changed, 7 insertions(+), 20 deletions(-) diff --git a/Doc/c-api/import.rst b/Doc/c-api/import.rst index 86cc4031610b7d..3bc50609714a5b 100644 --- a/Doc/c-api/import.rst +++ b/Doc/c-api/import.rst @@ -223,21 +223,6 @@ Importing Modules Return a new reference to the finder object. -.. c:function:: void _PyImport_Init() - - Initialize the import mechanism. For internal use only. - - -.. c:function:: void PyImport_Cleanup() - - Empty the module table. For internal use only. - - -.. c:function:: void _PyImport_Fini() - - Finalize the import mechanism. For internal use only. - - .. c:function:: int PyImport_ImportFrozenModuleObject(PyObject *name) Load a frozen module named *name*. Return ``1`` for success, ``0`` if the diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst index 446c8b9719e0fa..24fbe1870c87e2 100644 --- a/Doc/whatsnew/3.9.rst +++ b/Doc/whatsnew/3.9.rst @@ -122,6 +122,9 @@ Deprecated Removed ======= +* The C function ``PyImport_Cleanup()`` has been removed. It was documented as: + "Empty the module table. For internal use only." + * ``_dummy_thread`` and ``dummy_threading`` modules have been removed. These modules were deprecated since Python 3.7 which requires threading support. (Contributed by Victor Stinner in :issue:`37312`.) diff --git a/Include/import.h b/Include/import.h index c50767d904de1b..735533ee7a79ac 100644 --- a/Include/import.h +++ b/Include/import.h @@ -72,7 +72,6 @@ PyAPI_FUNC(PyObject *) PyImport_ImportModuleLevelObject( PyAPI_FUNC(PyObject *) PyImport_GetImporter(PyObject *path); PyAPI_FUNC(PyObject *) PyImport_Import(PyObject *name); PyAPI_FUNC(PyObject *) PyImport_ReloadModule(PyObject *m); -PyAPI_FUNC(void) PyImport_Cleanup(void); #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 PyAPI_FUNC(int) PyImport_ImportFrozenModuleObject( PyObject *name diff --git a/Include/internal/pycore_import.h b/Include/internal/pycore_import.h index bbcd170ab1358d..5d3203e5b97fdf 100644 --- a/Include/internal/pycore_import.h +++ b/Include/internal/pycore_import.h @@ -11,6 +11,7 @@ PyAPI_FUNC(PyObject *) _PyImport_FindBuiltin( ); extern void _PyImport_ReInitLock(void); +extern void _PyImport_Cleanup(PyThreadState *tstate); #ifdef __cplusplus } diff --git a/Python/import.c b/Python/import.c index 5606d3bea45699..dc0d5b8b901ca0 100644 --- a/Python/import.c +++ b/Python/import.c @@ -413,9 +413,8 @@ static const char * const sys_files[] = { /* Un-initialize things, as good as we can */ void -PyImport_Cleanup(void) +_PyImport_Cleanup(PyThreadState *tstate) { - PyThreadState *tstate = _PyThreadState_GET(); PyInterpreterState *interp = tstate->interp; PyObject *modules = interp->modules; if (modules == NULL) { diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index 4a97295102f793..c0b34507899f93 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -1225,7 +1225,7 @@ Py_FinalizeEx(void) _PySys_ClearAuditHooks(); /* Destroy all modules */ - PyImport_Cleanup(); + _PyImport_Cleanup(tstate); /* Print debug stats if any */ _PyEval_Fini(); @@ -1589,7 +1589,7 @@ Py_EndInterpreter(PyThreadState *tstate) if (tstate != interp->tstate_head || tstate->next != NULL) Py_FatalError("Py_EndInterpreter: not the last thread"); - PyImport_Cleanup(); + _PyImport_Cleanup(tstate); PyInterpreterState_Clear(interp); PyThreadState_Swap(NULL); PyInterpreterState_Delete(interp); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy