gh-141004: Document PyImport_Inittab (GH-141844)

Co-authored-by: Stan Ulbrych <stan@ulbrych.org>
Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
Peter Bierma 2025-11-24 11:38:18 -05:00 committed by GitHub
parent 71126ab19c
commit 5f35702bb6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 11 additions and 4 deletions

View file

@ -314,6 +314,13 @@ Importing Modules
initialization.
.. c:var:: struct _inittab *PyImport_Inittab
The table of built-in modules used by Python initialization. Do not use this directly;
use :c:func:`PyImport_AppendInittab` and :c:func:`PyImport_ExtendInittab`
instead.
.. c:function:: PyObject* PyImport_ImportModuleAttr(PyObject *mod_name, PyObject *attr_name)
Import the module *mod_name* and get its attribute *attr_name*.

View file

@ -426,7 +426,7 @@ A pointer to the module definition must be returned via :c:func:`PyModuleDef_Ini
so that the import machinery can create the module and store it in ``sys.modules``.
When embedding Python, the :c:func:`!PyInit_spam` function is not called
automatically unless there's an entry in the :c:data:`!PyImport_Inittab` table.
automatically unless there's an entry in the :c:data:`PyImport_Inittab` table.
To add the module to the initialization table, use :c:func:`PyImport_AppendInittab`,
optionally followed by an import of the module::

View file

@ -4931,7 +4931,7 @@ Patch by Gabriele N. Tornetta
.. nonce: 3p14JB
.. section: C API
:c:func:`Py_RunMain` now resets :c:data:`!PyImport_Inittab` to its initial
:c:func:`Py_RunMain` now resets :c:data:`PyImport_Inittab` to its initial
value at exit. It must be possible to call :c:func:`PyImport_AppendInittab`
or :c:func:`PyImport_ExtendInittab` at each Python initialization. Patch by
Victor Stinner.

View file

@ -35,11 +35,11 @@ Update bundled libexpat to 2.5.0
.. nonce: ik4iOv
.. section: Core and Builtins
The docs clearly say that ``PyImport_Inittab``,
The docs clearly say that :c:data:`PyImport_Inittab`,
:c:func:`PyImport_AppendInittab`, and :c:func:`PyImport_ExtendInittab`
should not be used after :c:func:`Py_Initialize` has been called. We now
enforce this for the two functions. Additionally, the runtime now uses an
internal copy of ``PyImport_Inittab``, to guard against modification.
internal copy of :c:data:`PyImport_Inittab`, to guard against modification.
..