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. 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) .. c:function:: PyObject* PyImport_ImportModuleAttr(PyObject *mod_name, PyObject *attr_name)
Import the module *mod_name* and get its attribute *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``. 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 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`, To add the module to the initialization table, use :c:func:`PyImport_AppendInittab`,
optionally followed by an import of the module:: optionally followed by an import of the module::

View file

@ -4931,7 +4931,7 @@ Patch by Gabriele N. Tornetta
.. nonce: 3p14JB .. nonce: 3p14JB
.. section: C API .. 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` value at exit. It must be possible to call :c:func:`PyImport_AppendInittab`
or :c:func:`PyImport_ExtendInittab` at each Python initialization. Patch by or :c:func:`PyImport_ExtendInittab` at each Python initialization. Patch by
Victor Stinner. Victor Stinner.

View file

@ -35,11 +35,11 @@ Update bundled libexpat to 2.5.0
.. nonce: ik4iOv .. nonce: ik4iOv
.. section: Core and Builtins .. 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` :c:func:`PyImport_AppendInittab`, and :c:func:`PyImport_ExtendInittab`
should not be used after :c:func:`Py_Initialize` has been called. We now 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 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.
.. ..