https://github.com/python/cpython/commit/1bb2ae503b11be9e3e656d96a734ae96d720d344 commit: 1bb2ae503b11be9e3e656d96a734ae96d720d344 branch: 3.13 author: Miss Islington (bot) <31488909+miss-isling...@users.noreply.github.com> committer: AA-Turner <9087854+aa-tur...@users.noreply.github.com> date: 2025-08-05T22:16:24+01:00 summary:
[3.13] gh-136823: Update documentation on excluded headers in Python.h (GH-136824) (#137438) Co-authored-by: Sina Zel taat <111974143+szelt...@users.noreply.github.com> Co-authored-by: Adam Turner <9087854+aa-tur...@users.noreply.github.com> files: M Doc/extending/extending.rst M Include/Python.h diff --git a/Doc/extending/extending.rst b/Doc/extending/extending.rst index fd63495674651b..c0a7a3ac678a7f 100644 --- a/Doc/extending/extending.rst +++ b/Doc/extending/extending.rst @@ -75,12 +75,37 @@ the module and a copyright notice if you like). See :ref:`arg-parsing-string-and-buffers` for a description of this macro. All user-visible symbols defined by :file:`Python.h` have a prefix of ``Py`` or -``PY``, except those defined in standard header files. For convenience, and -since they are used extensively by the Python interpreter, ``"Python.h"`` -includes a few standard header files: ``<stdio.h>``, ``<string.h>``, -``<errno.h>``, and ``<stdlib.h>``. If the latter header file does not exist on -your system, it declares the functions :c:func:`malloc`, :c:func:`free` and -:c:func:`realloc` directly. +``PY``, except those defined in standard header files. + +.. tip:: + + For backward compatibility, :file:`Python.h` includes several standard header files. + C extensions should include the standard headers that they use, + and should not rely on these implicit includes. + If using the limited C API version 3.13 or newer, the implicit includes are: + + * ``<assert.h>`` + * ``<intrin.h>`` (on Windows) + * ``<inttypes.h>`` + * ``<limits.h>`` + * ``<math.h>`` + * ``<stdarg.h>`` + * ``<wchar.h>`` + * ``<sys/types.h>`` (if present) + + If :c:macro:`Py_LIMITED_API` is not defined, or is set to version 3.12 or older, + the headers below are also included: + + * ``<ctype.h>`` + * ``<unistd.h>`` (on POSIX) + + If :c:macro:`Py_LIMITED_API` is not defined, or is set to version 3.10 or older, + the headers below are also included: + + * ``<errno.h>`` + * ``<stdio.h>`` + * ``<stdlib.h>`` + * ``<string.h>`` The next thing we add to our module file is the C function that will be called when the Python expression ``spam.system(string)`` is evaluated (we'll see diff --git a/Include/Python.h b/Include/Python.h index fb2d32d7110447..0f75de6cb42f42 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -16,6 +16,7 @@ // Include standard header files +// When changing these files, remember to update Doc/extending/extending.rst. #include <assert.h> // assert() #include <inttypes.h> // uintptr_t #include <limits.h> // INT_MAX _______________________________________________ Python-checkins mailing list -- python-checkins@python.org To unsubscribe send an email to python-checkins-le...@python.org https://mail.python.org/mailman3//lists/python-checkins.python.org Member address: arch...@mail-archive.com