On Sun, Jan 10, 2021 at 9:27 PM Serhiy Storchaka email@example.com wrote:
Because it will not produce compile-time error when you include that header files directly.
The division of these declarations on few files is a deep implementation detail. Header file "cpython/fileobject.h" is not a part of API and we do not want users to use them directly and then fail because in next feature (or even bugfix) release some declarations have been moved to other files.
Yeah, the cpython/ subdirectory is the API which is excluded from the limited C API (Py_LIMITED_API macro). But for end users, #include "Python.h" should be enough.
#ifndef Py_CPYTHON_FILEOBJECT_H # error "this header file must not be included directly" #endif
This is to prevent users to include the API by mistake. Only the parent header file must be used, like #include "fileobject.h".