| // Entry point of the Python C API. | |
| // C extensions should only #include <Python.h>, and not include directly | |
| // the other Python header files included by <Python.h>. | |
| #ifndef Py_PYTHON_H | |
| #define Py_PYTHON_H | |
| // Since this is a "meta-include" file, "#ifdef __cplusplus / extern "C" {" | |
| // is not needed. | |
| // Include Python configuration headers | |
| #include "patchlevel.h" // the Python version | |
| #include "pyconfig.h" // information from configure | |
| #include "pymacconfig.h" // overrides for pyconfig | |
| #include "pyabi.h" // feature/ABI selection | |
| // 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 | |
| #include <math.h> // HUGE_VAL | |
| #include <stdarg.h> // va_list | |
| #include <string.h> // memcpy() | |
| #include <wchar.h> // wchar_t | |
| #ifdef HAVE_SYS_TYPES_H | |
| # include <sys/types.h> // ssize_t | |
| #endif | |
| // <errno.h>, <stdio.h> and <stdlib.h> headers are no longer used | |
| // by Python, but kept for the backward compatibility of existing third party C | |
| // extensions. They are not included by limited C API version 3.11 and newer. | |
| // | |
| // The <ctype.h> and <unistd.h> headers are not included by limited C API | |
| // version 3.13 and newer. | |
| #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000 | |
| # include <errno.h> // errno | |
| # include <stdio.h> // FILE* | |
| # include <stdlib.h> // getenv() | |
| #endif | |
| #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030d0000 | |
| # include <ctype.h> // tolower() | |
| # ifndef MS_WINDOWS | |
| # include <unistd.h> // close() | |
| # endif | |
| #endif | |
| #if !defined(Py_LIMITED_API) | |
| # if defined(Py_GIL_DISABLED) | |
| # if defined(_MSC_VER) || defined(__MINGW32__) | |
| # include <intrin.h> // __readgsqword() | |
| # endif | |
| # endif | |
| #endif // Py_GIL_DISABLED | |
| #ifdef _MSC_VER | |
| // Ignore MSC warning C4201: "nonstandard extension used: nameless | |
| // struct/union". (Only generated for C standard versions less than C11, which | |
| // we don't *officially* support.) | |
| __pragma(warning(push)) | |
| __pragma(warning(disable: 4201)) | |
| #endif | |
| // Include Python header files | |
| #include "pyport.h" | |
| #include "exports.h" | |
| #include "pymacro.h" | |
| #include "pymath.h" | |
| #include "pymem.h" | |
| #include "pytypedefs.h" | |
| #include "pybuffer.h" | |
| #include "pystats.h" | |
| #include "pyatomic.h" | |
| #include "cpython/pylock.h" | |
| #include "critical_section.h" | |
| #include "object.h" | |
| #include "refcount.h" | |
| #include "objimpl.h" | |
| #include "slots.h" | |
| #include "slots_generated.h" | |
| #include "pyhash.h" | |
| #include "cpython/pydebug.h" | |
| #include "bytearrayobject.h" | |
| #include "bytesobject.h" | |
| #include "unicodeobject.h" | |
| #include "pyerrors.h" | |
| #include "longobject.h" | |
| #include "cpython/longintrepr.h" | |
| #include "boolobject.h" | |
| #include "floatobject.h" | |
| #include "complexobject.h" | |
| #include "rangeobject.h" | |
| #include "memoryobject.h" | |
| #include "tupleobject.h" | |
| #include "listobject.h" | |
| #include "dictobject.h" | |
| #include "cpython/odictobject.h" | |
| #include "enumobject.h" | |
| #include "setobject.h" | |
| #include "methodobject.h" | |
| #include "moduleobject.h" | |
| #include "cpython/monitoring.h" | |
| #include "cpython/funcobject.h" | |
| #include "cpython/classobject.h" | |
| #include "fileobject.h" | |
| #include "pycapsule.h" | |
| #include "cpython/code.h" | |
| #include "pyframe.h" | |
| #include "traceback.h" | |
| #include "sliceobject.h" | |
| #include "cpython/cellobject.h" | |
| #include "iterobject.h" | |
| #include "cpython/initconfig.h" | |
| #include "pystate.h" | |
| #include "cpython/genobject.h" | |
| #include "descrobject.h" | |
| #include "genericaliasobject.h" | |
| #include "cpython/sentinelobject.h" | |
| #include "warnings.h" | |
| #include "weakrefobject.h" | |
| #include "structseq.h" | |
| #include "cpython/picklebufobject.h" | |
| #include "cpython/pytime.h" | |
| #include "codecs.h" | |
| #include "pythread.h" | |
| #include "cpython/context.h" | |
| #include "modsupport.h" | |
| #include "compile.h" | |
| #include "pythonrun.h" | |
| #include "pylifecycle.h" | |
| #include "ceval.h" | |
| #include "sysmodule.h" | |
| #include "audit.h" | |
| #include "osmodule.h" | |
| #include "intrcheck.h" | |
| #include "import.h" | |
| #include "abstract.h" | |
| #include "bltinmodule.h" | |
| #include "cpython/pyctype.h" | |
| #include "pystrtod.h" | |
| #include "pystrcmp.h" | |
| #include "fileutils.h" | |
| #include "cpython/pyfpe.h" | |
| #include "cpython/tracemalloc.h" | |
| #ifdef _MSC_VER | |
| __pragma(warning(pop)) // warning(disable: 4201) | |
| #endif | |
| #endif /* !Py_PYTHON_H */ |