gh-134160: Split extension module init from PyModule docs; emphasize multi-phase init #135126
+385
−210
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
#134764 moved a section around; I don't think that's enough.
Split extension module init from
PyModule
docs; emphasize multi-phase initThere's a difference between working with module objects in general
(which just needs garden-variety API docs), and defining the init
function (which covers things like correctly exporting a function
defined by the user, and lots of behaviour that's unrelated to generic
module objects).
Document behaviour of single-phase init. Call it "legacy".
Reorganize
PyModule
docs.Move PyInit_modulename docs from the tutorial, and PyMODINIT_FUNC docs
from the generic macros section, to the new page.
Add docs
Add doc stubs for
PYTHON_API_VERSION
&PYTHON_ABI_VERSION
Remove incorrect
refcounts.dat
entry forPyModuleDef_Init
;instead note that the function sometimes returns a borrowed reference,
sometimes as strong one.
(IMO, it's best to pretend
PyModuleDef
isn't aPyObject
at all,but, reference docs should be correct.)
📚 Documentation preview 📚: https://cpython-previews--135126.org.readthedocs.build/