mirror of
https://github.com/python/cpython.git
synced 2025-08-18 07:41:05 +00:00

gh-98608: Move PyInterpreterConfig to pylifecycle.h (GH-107191)
Move PyInterpreterConfig structure and associated macros from
initconfig.h to pylifecycle.h: it's not related to the Python
Initialization Configuration.
(cherry picked from commit e717b47ed8
)
Co-authored-by: Victor Stinner <vstinner@python.org>
111 lines
3.3 KiB
C
111 lines
3.3 KiB
C
#ifndef Py_CPYTHON_PYLIFECYCLE_H
|
|
# error "this header file must not be included directly"
|
|
#endif
|
|
|
|
/* Py_FrozenMain is kept out of the Limited API until documented and present
|
|
in all builds of Python */
|
|
PyAPI_FUNC(int) Py_FrozenMain(int argc, char **argv);
|
|
|
|
/* Only used by applications that embed the interpreter and need to
|
|
* override the standard encoding determination mechanism
|
|
*/
|
|
Py_DEPRECATED(3.11) PyAPI_FUNC(int) Py_SetStandardStreamEncoding(
|
|
const char *encoding,
|
|
const char *errors);
|
|
|
|
/* PEP 432 Multi-phase initialization API (Private while provisional!) */
|
|
|
|
PyAPI_FUNC(PyStatus) Py_PreInitialize(
|
|
const PyPreConfig *src_config);
|
|
PyAPI_FUNC(PyStatus) Py_PreInitializeFromBytesArgs(
|
|
const PyPreConfig *src_config,
|
|
Py_ssize_t argc,
|
|
char **argv);
|
|
PyAPI_FUNC(PyStatus) Py_PreInitializeFromArgs(
|
|
const PyPreConfig *src_config,
|
|
Py_ssize_t argc,
|
|
wchar_t **argv);
|
|
|
|
PyAPI_FUNC(int) _Py_IsCoreInitialized(void);
|
|
|
|
|
|
/* Initialization and finalization */
|
|
|
|
PyAPI_FUNC(PyStatus) Py_InitializeFromConfig(
|
|
const PyConfig *config);
|
|
PyAPI_FUNC(PyStatus) _Py_InitializeMain(void);
|
|
|
|
PyAPI_FUNC(int) Py_RunMain(void);
|
|
|
|
|
|
PyAPI_FUNC(void) _Py_NO_RETURN Py_ExitStatusException(PyStatus err);
|
|
|
|
/* Restore signals that the interpreter has called SIG_IGN on to SIG_DFL. */
|
|
PyAPI_FUNC(void) _Py_RestoreSignals(void);
|
|
|
|
PyAPI_FUNC(int) Py_FdIsInteractive(FILE *, const char *);
|
|
PyAPI_FUNC(int) _Py_FdIsInteractive(FILE *fp, PyObject *filename);
|
|
|
|
Py_DEPRECATED(3.11) PyAPI_FUNC(void) _Py_SetProgramFullPath(const wchar_t *);
|
|
|
|
PyAPI_FUNC(const char *) _Py_gitidentifier(void);
|
|
PyAPI_FUNC(const char *) _Py_gitversion(void);
|
|
|
|
PyAPI_FUNC(int) _Py_IsFinalizing(void);
|
|
PyAPI_FUNC(int) _Py_IsInterpreterFinalizing(PyInterpreterState *interp);
|
|
|
|
/* Random */
|
|
PyAPI_FUNC(int) _PyOS_URandom(void *buffer, Py_ssize_t size);
|
|
PyAPI_FUNC(int) _PyOS_URandomNonblock(void *buffer, Py_ssize_t size);
|
|
|
|
/* Legacy locale support */
|
|
PyAPI_FUNC(int) _Py_CoerceLegacyLocale(int warn);
|
|
PyAPI_FUNC(int) _Py_LegacyLocaleDetected(int warn);
|
|
PyAPI_FUNC(char *) _Py_SetLocaleFromEnv(int category);
|
|
|
|
/* --- PyInterpreterConfig ------------------------------------ */
|
|
|
|
#define PyInterpreterConfig_DEFAULT_GIL (0)
|
|
#define PyInterpreterConfig_SHARED_GIL (1)
|
|
#define PyInterpreterConfig_OWN_GIL (2)
|
|
|
|
typedef struct {
|
|
// XXX "allow_object_sharing"? "own_objects"?
|
|
int use_main_obmalloc;
|
|
int allow_fork;
|
|
int allow_exec;
|
|
int allow_threads;
|
|
int allow_daemon_threads;
|
|
int check_multi_interp_extensions;
|
|
int gil;
|
|
} PyInterpreterConfig;
|
|
|
|
#define _PyInterpreterConfig_INIT \
|
|
{ \
|
|
.use_main_obmalloc = 0, \
|
|
.allow_fork = 0, \
|
|
.allow_exec = 0, \
|
|
.allow_threads = 1, \
|
|
.allow_daemon_threads = 0, \
|
|
.check_multi_interp_extensions = 1, \
|
|
.gil = PyInterpreterConfig_OWN_GIL, \
|
|
}
|
|
|
|
#define _PyInterpreterConfig_LEGACY_INIT \
|
|
{ \
|
|
.use_main_obmalloc = 1, \
|
|
.allow_fork = 1, \
|
|
.allow_exec = 1, \
|
|
.allow_threads = 1, \
|
|
.allow_daemon_threads = 1, \
|
|
.check_multi_interp_extensions = 0, \
|
|
.gil = PyInterpreterConfig_SHARED_GIL, \
|
|
}
|
|
|
|
PyAPI_FUNC(PyStatus) Py_NewInterpreterFromConfig(
|
|
PyThreadState **tstate_p,
|
|
const PyInterpreterConfig *config);
|
|
|
|
typedef void (*atexit_datacallbackfunc)(void *);
|
|
PyAPI_FUNC(int) _Py_AtExit(
|
|
PyInterpreterState *, atexit_datacallbackfunc, void *);
|