mirror of
https://github.com/python/cpython.git
synced 2025-07-07 19:35:27 +00:00
gh-133644: remove deprecated PyImport_ImportModuleNoBlock
(#133655)
This commit is contained in:
parent
26839eae20
commit
a2c4467d06
17 changed files with 20 additions and 34 deletions
|
@ -16,19 +16,6 @@ Importing Modules
|
|||
This is a wrapper around :c:func:`PyImport_Import()` which takes a
|
||||
:c:expr:`const char *` as an argument instead of a :c:expr:`PyObject *`.
|
||||
|
||||
.. c:function:: PyObject* PyImport_ImportModuleNoBlock(const char *name)
|
||||
|
||||
This function is a deprecated alias of :c:func:`PyImport_ImportModule`.
|
||||
|
||||
.. versionchanged:: 3.3
|
||||
This function used to fail immediately when the import lock was held
|
||||
by another thread. In Python 3.3 though, the locking scheme switched
|
||||
to per-module locks for most purposes, so this function's special
|
||||
behaviour isn't needed anymore.
|
||||
|
||||
.. deprecated-removed:: 3.13 3.15
|
||||
Use :c:func:`PyImport_ImportModule` instead.
|
||||
|
||||
|
||||
.. c:function:: PyObject* PyImport_ImportModuleEx(const char *name, PyObject *globals, PyObject *locals, PyObject *fromlist)
|
||||
|
||||
|
|
|
@ -1093,9 +1093,6 @@ PyImport_ImportModuleLevelObject:PyObject*:locals:0:???
|
|||
PyImport_ImportModuleLevelObject:PyObject*:fromlist:0:???
|
||||
PyImport_ImportModuleLevelObject:int:level::
|
||||
|
||||
PyImport_ImportModuleNoBlock:PyObject*::+1:
|
||||
PyImport_ImportModuleNoBlock:const char*:name::
|
||||
|
||||
PyImport_ReloadModule:PyObject*::+1:
|
||||
PyImport_ReloadModule:PyObject*:m:0:
|
||||
|
||||
|
|
1
Doc/data/stable_abi.dat
generated
1
Doc/data/stable_abi.dat
generated
|
@ -323,7 +323,6 @@ func,PyImport_ImportFrozenModuleObject,3.7,,
|
|||
func,PyImport_ImportModule,3.2,,
|
||||
func,PyImport_ImportModuleLevel,3.2,,
|
||||
func,PyImport_ImportModuleLevelObject,3.7,,
|
||||
func,PyImport_ImportModuleNoBlock,3.2,,
|
||||
func,PyImport_ReloadModule,3.2,,
|
||||
func,PyIndex_Check,3.8,,
|
||||
type,PyInterpreterState,3.2,,opaque
|
||||
|
|
|
@ -2,7 +2,7 @@ Pending removal in Python 3.15
|
|||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
* The bundled copy of ``libmpdecimal``.
|
||||
* The :c:func:`PyImport_ImportModuleNoBlock`:
|
||||
* The :c:func:`!PyImport_ImportModuleNoBlock`:
|
||||
Use :c:func:`PyImport_ImportModule` instead.
|
||||
* :c:func:`PyWeakref_GetObject` and :c:func:`PyWeakref_GET_OBJECT`:
|
||||
Use :c:func:`PyWeakref_GetRef` instead. The `pythoncapi-compat project
|
||||
|
|
|
@ -3043,7 +3043,7 @@ Changes to Python's build process and to the C API include:
|
|||
|
||||
* Importing modules simultaneously in two different threads no longer
|
||||
deadlocks; it will now raise an :exc:`ImportError`. A new API
|
||||
function, :c:func:`PyImport_ImportModuleNoBlock`, will look for a
|
||||
function, :c:func:`!PyImport_ImportModuleNoBlock`, will look for a
|
||||
module in ``sys.modules`` first, then try to import it after
|
||||
acquiring an import lock. If the import lock is held by another
|
||||
thread, an :exc:`ImportError` is raised.
|
||||
|
|
|
@ -870,7 +870,7 @@ to the C API.
|
|||
* :c:func:`!PyNumber_Coerce`, :c:func:`!PyNumber_CoerceEx`,
|
||||
:c:func:`!PyMember_Get`, and :c:func:`!PyMember_Set` C APIs are removed.
|
||||
|
||||
* New C API :c:func:`PyImport_ImportModuleNoBlock`, works like
|
||||
* New C API :c:func:`!PyImport_ImportModuleNoBlock`, works like
|
||||
:c:func:`PyImport_ImportModule` but won't block on the import lock
|
||||
(returning an error instead).
|
||||
|
||||
|
|
|
@ -2499,7 +2499,7 @@ Deprecated C APIs
|
|||
which return a :term:`borrowed reference`.
|
||||
(Soft deprecated as part of :pep:`667`.)
|
||||
|
||||
* Deprecate the :c:func:`PyImport_ImportModuleNoBlock` function,
|
||||
* Deprecate the :c:func:`!PyImport_ImportModuleNoBlock` function,
|
||||
which is just an alias to :c:func:`PyImport_ImportModule` since Python 3.3.
|
||||
(Contributed by Victor Stinner in :gh:`105396`.)
|
||||
|
||||
|
|
|
@ -164,3 +164,5 @@ Deprecated C APIs
|
|||
Removed C APIs
|
||||
--------------
|
||||
|
||||
* :c:func:`!PyImport_ImportModuleNoBlock`: deprecated alias
|
||||
of :c:func:`PyImport_ImportModule`.
|
||||
|
|
|
@ -829,7 +829,7 @@ Previous versions of CPython have always relied on a global import lock.
|
|||
This led to unexpected annoyances, such as deadlocks when importing a module
|
||||
would trigger code execution in a different thread as a side-effect.
|
||||
Clumsy workarounds were sometimes employed, such as the
|
||||
:c:func:`PyImport_ImportModuleNoBlock` C API function.
|
||||
:c:func:`!PyImport_ImportModuleNoBlock` C API function.
|
||||
|
||||
In Python 3.3, importing a module takes a per-module lock. This correctly
|
||||
serializes importation of a given module from multiple threads (preventing
|
||||
|
|
|
@ -51,9 +51,6 @@ PyAPI_FUNC(PyObject *) PyImport_AddModuleRef(
|
|||
PyAPI_FUNC(PyObject *) PyImport_ImportModule(
|
||||
const char *name /* UTF-8 encoded string */
|
||||
);
|
||||
Py_DEPRECATED(3.13) PyAPI_FUNC(PyObject *) PyImport_ImportModuleNoBlock(
|
||||
const char *name /* UTF-8 encoded string */
|
||||
);
|
||||
PyAPI_FUNC(PyObject *) PyImport_ImportModuleLevel(
|
||||
const char *name, /* UTF-8 encoded string */
|
||||
PyObject *globals,
|
||||
|
|
|
@ -134,7 +134,7 @@ class ImportTests(unittest.TestCase):
|
|||
# CRASHES importmodule(NULL)
|
||||
|
||||
def test_importmodulenoblock(self):
|
||||
# Test deprecated PyImport_ImportModuleNoBlock()
|
||||
# Test deprecated (stable ABI only) PyImport_ImportModuleNoBlock()
|
||||
importmodulenoblock = _testlimitedcapi.PyImport_ImportModuleNoBlock
|
||||
with check_warnings(('', DeprecationWarning)):
|
||||
self.check_import_func(importmodulenoblock)
|
||||
|
|
|
@ -1161,7 +1161,7 @@ no-op now.
|
|||
.. nonce: Lq2_gR
|
||||
.. section: C API
|
||||
|
||||
Replaced deprecated usage of :c:func:`PyImport_ImportModuleNoBlock` with
|
||||
Replaced deprecated usage of :c:func:`!PyImport_ImportModuleNoBlock` with
|
||||
:c:func:`PyImport_ImportModule` in stdlib modules. Patch by Kumar Aditya.
|
||||
|
||||
..
|
||||
|
|
|
@ -6538,7 +6538,7 @@ to hide implementation details. Patch by Victor Stinner.
|
|||
.. nonce: FQJG5B
|
||||
.. section: C API
|
||||
|
||||
Deprecate the :c:func:`PyImport_ImportModuleNoBlock` function which is just
|
||||
Deprecate the :c:func:`!PyImport_ImportModuleNoBlock` function which is just
|
||||
an alias to :c:func:`PyImport_ImportModule` since Python 3.3. Patch by
|
||||
Victor Stinner.
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Remove deprecated alias :c:func:`!PyImport_ImportModuleNoBlock` of
|
||||
:c:func:`PyImport_ImportModule`. Patch by Bénédikt Tran.
|
|
@ -888,6 +888,7 @@
|
|||
added = '3.2'
|
||||
[function.PyImport_ImportModuleNoBlock]
|
||||
added = '3.2'
|
||||
abi_only = true
|
||||
[function.PyImport_ReloadModule]
|
||||
added = '3.2'
|
||||
[function.PyInterpreterState_Clear]
|
||||
|
|
|
@ -108,20 +108,19 @@ pyimport_importmodule(PyObject *Py_UNUSED(module), PyObject *args)
|
|||
}
|
||||
|
||||
|
||||
/* Test PyImport_ImportModuleNoBlock() */
|
||||
/* Test PyImport_ImportModuleNoBlock() (removed in 3.15) */
|
||||
static PyObject *
|
||||
pyimport_importmodulenoblock(PyObject *Py_UNUSED(module), PyObject *args)
|
||||
{
|
||||
// Get the function from the stable ABI.
|
||||
PyAPI_FUNC(PyObject *) PyImport_ImportModuleNoBlock(const char *name);
|
||||
|
||||
const char *name;
|
||||
Py_ssize_t size;
|
||||
if (!PyArg_ParseTuple(args, "z#", &name, &size)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
_Py_COMP_DIAG_PUSH
|
||||
_Py_COMP_DIAG_IGNORE_DEPR_DECLS
|
||||
return PyImport_ImportModuleNoBlock(name);
|
||||
_Py_COMP_DIAG_POP
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -3434,8 +3434,10 @@ PyImport_ImportModule(const char *name)
|
|||
* ImportError instead of blocking.
|
||||
*
|
||||
* Returns the module object with incremented ref count.
|
||||
*
|
||||
* Removed in 3.15, but kept for stable ABI compatibility.
|
||||
*/
|
||||
PyObject *
|
||||
PyAPI_FUNC(PyObject *)
|
||||
PyImport_ImportModuleNoBlock(const char *name)
|
||||
{
|
||||
if (PyErr_WarnEx(PyExc_DeprecationWarning,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue