Skip to content

Commit dd12aa0

Browse files
authored
bpo-35134: Create Include/cpython/pylifecycle.h (GH-10731)
Move pylifecycle.h code surrounded by "#ifndef Py_LIMITED_API" to a new Include/cpython/pylifecycle.h header file.
1 parent 4060283 commit dd12aa0

File tree

2 files changed

+102
-97
lines changed

2 files changed

+102
-97
lines changed

Include/cpython/pylifecycle.h

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
#ifndef Py_CPYTHON_PYLIFECYCLE_H
2+
# error "this header file must not be included directly"
3+
#endif
4+
5+
#ifdef __cplusplus
6+
extern "C" {
7+
#endif
8+
9+
/* Only used by applications that embed the interpreter and need to
10+
* override the standard encoding determination mechanism
11+
*/
12+
PyAPI_FUNC(int) Py_SetStandardStreamEncoding(const char *encoding,
13+
const char *errors);
14+
15+
/* PEP 432 Multi-phase initialization API (Private while provisional!) */
16+
17+
PyAPI_FUNC(_PyInitError) _Py_InitializeCore(
18+
PyInterpreterState **interp,
19+
const _PyCoreConfig *);
20+
PyAPI_FUNC(int) _Py_IsCoreInitialized(void);
21+
22+
23+
PyAPI_FUNC(_PyInitError) _PyMainInterpreterConfig_Read(
24+
_PyMainInterpreterConfig *config,
25+
const _PyCoreConfig *core_config);
26+
PyAPI_FUNC(void) _PyMainInterpreterConfig_Clear(_PyMainInterpreterConfig *);
27+
PyAPI_FUNC(int) _PyMainInterpreterConfig_Copy(
28+
_PyMainInterpreterConfig *config,
29+
const _PyMainInterpreterConfig *config2);
30+
/* Used by _testcapi.get_main_config() */
31+
PyAPI_FUNC(PyObject*) _PyMainInterpreterConfig_AsDict(
32+
const _PyMainInterpreterConfig *config);
33+
34+
PyAPI_FUNC(_PyInitError) _Py_InitializeMainInterpreter(
35+
PyInterpreterState *interp,
36+
const _PyMainInterpreterConfig *);
37+
38+
/* Initialization and finalization */
39+
40+
PyAPI_FUNC(_PyInitError) _Py_InitializeFromConfig(
41+
const _PyCoreConfig *config);
42+
PyAPI_FUNC(void) _Py_NO_RETURN _Py_FatalInitError(_PyInitError err);
43+
44+
/* Py_PyAtExit is for the atexit module, Py_AtExit is for low-level
45+
* exit functions.
46+
*/
47+
PyAPI_FUNC(void) _Py_PyAtExit(void (*func)(PyObject *), PyObject *);
48+
49+
/* Restore signals that the interpreter has called SIG_IGN on to SIG_DFL. */
50+
PyAPI_FUNC(void) _Py_RestoreSignals(void);
51+
52+
PyAPI_FUNC(int) Py_FdIsInteractive(FILE *, const char *);
53+
54+
PyAPI_FUNC(void) _Py_SetProgramFullPath(const wchar_t *);
55+
56+
PyAPI_FUNC(const char *) _Py_gitidentifier(void);
57+
PyAPI_FUNC(const char *) _Py_gitversion(void);
58+
59+
/* Internal -- various one-time initializations */
60+
PyAPI_FUNC(PyObject *) _PyBuiltin_Init(void);
61+
PyAPI_FUNC(_PyInitError) _PySys_BeginInit(PyObject **sysmod);
62+
PyAPI_FUNC(int) _PySys_EndInit(PyObject *sysdict, PyInterpreterState *interp);
63+
PyAPI_FUNC(_PyInitError) _PyImport_Init(PyInterpreterState *interp);
64+
PyAPI_FUNC(void) _PyExc_Init(PyObject * bltinmod);
65+
PyAPI_FUNC(_PyInitError) _PyImportHooks_Init(void);
66+
PyAPI_FUNC(int) _PyFloat_Init(void);
67+
PyAPI_FUNC(int) PyByteArray_Init(void);
68+
PyAPI_FUNC(_PyInitError) _Py_HashRandomization_Init(const _PyCoreConfig *);
69+
70+
/* Various internal finalizers */
71+
72+
PyAPI_FUNC(void) PyMethod_Fini(void);
73+
PyAPI_FUNC(void) PyFrame_Fini(void);
74+
PyAPI_FUNC(void) PyCFunction_Fini(void);
75+
PyAPI_FUNC(void) PyDict_Fini(void);
76+
PyAPI_FUNC(void) PyTuple_Fini(void);
77+
PyAPI_FUNC(void) PyList_Fini(void);
78+
PyAPI_FUNC(void) PySet_Fini(void);
79+
PyAPI_FUNC(void) PyBytes_Fini(void);
80+
PyAPI_FUNC(void) PyByteArray_Fini(void);
81+
PyAPI_FUNC(void) PyFloat_Fini(void);
82+
PyAPI_FUNC(void) PyOS_FiniInterrupts(void);
83+
PyAPI_FUNC(void) PySlice_Fini(void);
84+
PyAPI_FUNC(void) PyAsyncGen_Fini(void);
85+
86+
PyAPI_FUNC(int) _Py_IsFinalizing(void);
87+
88+
/* Random */
89+
PyAPI_FUNC(int) _PyOS_URandom(void *buffer, Py_ssize_t size);
90+
PyAPI_FUNC(int) _PyOS_URandomNonblock(void *buffer, Py_ssize_t size);
91+
92+
/* Legacy locale support */
93+
PyAPI_FUNC(void) _Py_CoerceLegacyLocale(int warn);
94+
PyAPI_FUNC(int) _Py_LegacyLocaleDetected(void);
95+
PyAPI_FUNC(char *) _Py_SetLocaleFromEnv(int category);
96+
97+
#ifdef __cplusplus
98+
}
99+
#endif

Include/pylifecycle.h

Lines changed: 3 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -7,47 +7,10 @@
77
extern "C" {
88
#endif
99

10-
#ifndef Py_LIMITED_API
11-
/* Only used by applications that embed the interpreter and need to
12-
* override the standard encoding determination mechanism
13-
*/
14-
PyAPI_FUNC(int) Py_SetStandardStreamEncoding(const char *encoding,
15-
const char *errors);
16-
#endif
17-
18-
19-
#ifndef Py_LIMITED_API
20-
/* PEP 432 Multi-phase initialization API (Private while provisional!) */
21-
PyAPI_FUNC(_PyInitError) _Py_InitializeCore(
22-
PyInterpreterState **interp,
23-
const _PyCoreConfig *);
24-
PyAPI_FUNC(int) _Py_IsCoreInitialized(void);
25-
26-
27-
PyAPI_FUNC(_PyInitError) _PyMainInterpreterConfig_Read(
28-
_PyMainInterpreterConfig *config,
29-
const _PyCoreConfig *core_config);
30-
PyAPI_FUNC(void) _PyMainInterpreterConfig_Clear(_PyMainInterpreterConfig *);
31-
PyAPI_FUNC(int) _PyMainInterpreterConfig_Copy(
32-
_PyMainInterpreterConfig *config,
33-
const _PyMainInterpreterConfig *config2);
34-
/* Used by _testcapi.get_main_config() */
35-
PyAPI_FUNC(PyObject*) _PyMainInterpreterConfig_AsDict(
36-
const _PyMainInterpreterConfig *config);
37-
38-
PyAPI_FUNC(_PyInitError) _Py_InitializeMainInterpreter(
39-
PyInterpreterState *interp,
40-
const _PyMainInterpreterConfig *);
41-
#endif
4210

4311
/* Initialization and finalization */
4412
PyAPI_FUNC(void) Py_Initialize(void);
4513
PyAPI_FUNC(void) Py_InitializeEx(int);
46-
#ifndef Py_LIMITED_API
47-
PyAPI_FUNC(_PyInitError) _Py_InitializeFromConfig(
48-
const _PyCoreConfig *config);
49-
PyAPI_FUNC(void) _Py_NO_RETURN _Py_FatalInitError(_PyInitError err);
50-
#endif
5114
PyAPI_FUNC(void) Py_Finalize(void);
5215
PyAPI_FUNC(int) Py_FinalizeEx(void);
5316
PyAPI_FUNC(int) Py_IsInitialized(void);
@@ -60,20 +23,10 @@ PyAPI_FUNC(void) Py_EndInterpreter(PyThreadState *);
6023
/* Py_PyAtExit is for the atexit module, Py_AtExit is for low-level
6124
* exit functions.
6225
*/
63-
#ifndef Py_LIMITED_API
64-
PyAPI_FUNC(void) _Py_PyAtExit(void (*func)(PyObject *), PyObject *);
65-
#endif
6626
PyAPI_FUNC(int) Py_AtExit(void (*func)(void));
6727

6828
PyAPI_FUNC(void) _Py_NO_RETURN Py_Exit(int);
6929

70-
/* Restore signals that the interpreter has called SIG_IGN on to SIG_DFL. */
71-
#ifndef Py_LIMITED_API
72-
PyAPI_FUNC(void) _Py_RestoreSignals(void);
73-
74-
PyAPI_FUNC(int) Py_FdIsInteractive(FILE *, const char *);
75-
#endif
76-
7730
/* Bootstrap __main__ (defined in Modules/main.c) */
7831
PyAPI_FUNC(int) Py_Main(int argc, wchar_t **argv);
7932

@@ -84,9 +37,6 @@ PyAPI_FUNC(wchar_t *) Py_GetProgramName(void);
8437
PyAPI_FUNC(void) Py_SetPythonHome(const wchar_t *);
8538
PyAPI_FUNC(wchar_t *) Py_GetPythonHome(void);
8639

87-
#ifndef Py_LIMITED_API
88-
PyAPI_FUNC(void) _Py_SetProgramFullPath(const wchar_t *);
89-
#endif
9040
PyAPI_FUNC(wchar_t *) Py_GetProgramFullPath(void);
9141

9242
PyAPI_FUNC(wchar_t *) Py_GetPrefix(void);
@@ -103,60 +53,16 @@ PyAPI_FUNC(const char *) Py_GetPlatform(void);
10353
PyAPI_FUNC(const char *) Py_GetCopyright(void);
10454
PyAPI_FUNC(const char *) Py_GetCompiler(void);
10555
PyAPI_FUNC(const char *) Py_GetBuildInfo(void);
106-
#ifndef Py_LIMITED_API
107-
PyAPI_FUNC(const char *) _Py_gitidentifier(void);
108-
PyAPI_FUNC(const char *) _Py_gitversion(void);
109-
#endif
110-
111-
/* Internal -- various one-time initializations */
112-
#ifndef Py_LIMITED_API
113-
PyAPI_FUNC(PyObject *) _PyBuiltin_Init(void);
114-
PyAPI_FUNC(_PyInitError) _PySys_BeginInit(PyObject **sysmod);
115-
PyAPI_FUNC(int) _PySys_EndInit(PyObject *sysdict, PyInterpreterState *interp);
116-
PyAPI_FUNC(_PyInitError) _PyImport_Init(PyInterpreterState *interp);
117-
PyAPI_FUNC(void) _PyExc_Init(PyObject * bltinmod);
118-
PyAPI_FUNC(_PyInitError) _PyImportHooks_Init(void);
119-
PyAPI_FUNC(int) _PyFloat_Init(void);
120-
PyAPI_FUNC(int) PyByteArray_Init(void);
121-
PyAPI_FUNC(_PyInitError) _Py_HashRandomization_Init(const _PyCoreConfig *);
122-
#endif
123-
124-
/* Various internal finalizers */
125-
126-
#ifndef Py_LIMITED_API
127-
PyAPI_FUNC(void) PyMethod_Fini(void);
128-
PyAPI_FUNC(void) PyFrame_Fini(void);
129-
PyAPI_FUNC(void) PyCFunction_Fini(void);
130-
PyAPI_FUNC(void) PyDict_Fini(void);
131-
PyAPI_FUNC(void) PyTuple_Fini(void);
132-
PyAPI_FUNC(void) PyList_Fini(void);
133-
PyAPI_FUNC(void) PySet_Fini(void);
134-
PyAPI_FUNC(void) PyBytes_Fini(void);
135-
PyAPI_FUNC(void) PyByteArray_Fini(void);
136-
PyAPI_FUNC(void) PyFloat_Fini(void);
137-
PyAPI_FUNC(void) PyOS_FiniInterrupts(void);
138-
PyAPI_FUNC(void) PySlice_Fini(void);
139-
PyAPI_FUNC(void) PyAsyncGen_Fini(void);
140-
141-
PyAPI_FUNC(int) _Py_IsFinalizing(void);
142-
#endif /* !Py_LIMITED_API */
14356

14457
/* Signals */
14558
typedef void (*PyOS_sighandler_t)(int);
14659
PyAPI_FUNC(PyOS_sighandler_t) PyOS_getsig(int);
14760
PyAPI_FUNC(PyOS_sighandler_t) PyOS_setsig(int, PyOS_sighandler_t);
14861

14962
#ifndef Py_LIMITED_API
150-
/* Random */
151-
PyAPI_FUNC(int) _PyOS_URandom(void *buffer, Py_ssize_t size);
152-
PyAPI_FUNC(int) _PyOS_URandomNonblock(void *buffer, Py_ssize_t size);
153-
#endif /* !Py_LIMITED_API */
154-
155-
/* Legacy locale support */
156-
#ifndef Py_LIMITED_API
157-
PyAPI_FUNC(void) _Py_CoerceLegacyLocale(int warn);
158-
PyAPI_FUNC(int) _Py_LegacyLocaleDetected(void);
159-
PyAPI_FUNC(char *) _Py_SetLocaleFromEnv(int category);
63+
# define Py_CPYTHON_PYLIFECYCLE_H
64+
# include "cpython/pylifecycle.h"
65+
# undef Py_CPYTHON_PYLIFECYCLE_H
16066
#endif
16167

16268
#ifdef __cplusplus

0 commit comments

Comments
 (0)