bpo-44113: Deprecate old functions to config Python init (GH-26060)
Deprecate the following functions to configure the Python initialization: * PySys_AddWarnOption() * PySys_AddWarnOptionUnicode() * PySys_AddXOption() * PySys_HasWarnOptions() * Py_SetPath() * Py_SetProgramName() * Py_SetPythonHome() * Py_SetStandardStreamEncoding() * _Py_SetProgramFullPath() Use the new PyConfig API of the Python Initialization Configuration instead (PEP 587).
This commit is contained in:
parent
504ffdae4e
commit
6cd0446ef7
@ -323,6 +323,11 @@ Process-wide parameters
|
|||||||
single: main()
|
single: main()
|
||||||
triple: stdin; stdout; sdterr
|
triple: stdin; stdout; sdterr
|
||||||
|
|
||||||
|
This API is kept for backward compatibility: setting
|
||||||
|
:c:member:`PyConfig.stdio_encoding` and :c:member:`PyConfig.stdio_errors`
|
||||||
|
should be used instead, see :ref:`Python Initialization Configuration
|
||||||
|
<init-config>`.
|
||||||
|
|
||||||
This function should be called before :c:func:`Py_Initialize`, if it is
|
This function should be called before :c:func:`Py_Initialize`, if it is
|
||||||
called at all. It specifies which encoding and error handling to use
|
called at all. It specifies which encoding and error handling to use
|
||||||
with standard IO, with the same meanings as in :func:`str.encode`.
|
with standard IO, with the same meanings as in :func:`str.encode`.
|
||||||
@ -345,6 +350,8 @@ Process-wide parameters
|
|||||||
|
|
||||||
.. versionadded:: 3.4
|
.. versionadded:: 3.4
|
||||||
|
|
||||||
|
.. deprecated:: 3.11
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: void Py_SetProgramName(const wchar_t *name)
|
.. c:function:: void Py_SetProgramName(const wchar_t *name)
|
||||||
|
|
||||||
@ -353,6 +360,10 @@ Process-wide parameters
|
|||||||
single: main()
|
single: main()
|
||||||
single: Py_GetPath()
|
single: Py_GetPath()
|
||||||
|
|
||||||
|
This API is kept for backward compatibility: setting
|
||||||
|
:c:member:`PyConfig.program_name` should be used instead, see :ref:`Python
|
||||||
|
Initialization Configuration <init-config>`.
|
||||||
|
|
||||||
This function should be called before :c:func:`Py_Initialize` is called for
|
This function should be called before :c:func:`Py_Initialize` is called for
|
||||||
the first time, if it is called at all. It tells the interpreter the value
|
the first time, if it is called at all. It tells the interpreter the value
|
||||||
of the ``argv[0]`` argument to the :c:func:`main` function of the program
|
of the ``argv[0]`` argument to the :c:func:`main` function of the program
|
||||||
@ -367,6 +378,8 @@ Process-wide parameters
|
|||||||
Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
|
Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
|
||||||
:c:type:`wchar_*` string.
|
:c:type:`wchar_*` string.
|
||||||
|
|
||||||
|
.. deprecated:: 3.11
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: wchar* Py_GetProgramName()
|
.. c:function:: wchar* Py_GetProgramName()
|
||||||
|
|
||||||
@ -495,6 +508,11 @@ Process-wide parameters
|
|||||||
single: path (in module sys)
|
single: path (in module sys)
|
||||||
single: Py_GetPath()
|
single: Py_GetPath()
|
||||||
|
|
||||||
|
This API is kept for backward compatibility: setting
|
||||||
|
:c:member:`PyConfig.module_search_paths` and
|
||||||
|
:c:member:`PyConfig.module_search_paths_set` should be used instead, see
|
||||||
|
:ref:`Python Initialization Configuration <init-config>`.
|
||||||
|
|
||||||
Set the default module search path. If this function is called before
|
Set the default module search path. If this function is called before
|
||||||
:c:func:`Py_Initialize`, then :c:func:`Py_GetPath` won't attempt to compute a
|
:c:func:`Py_Initialize`, then :c:func:`Py_GetPath` won't attempt to compute a
|
||||||
default search path but uses the one provided instead. This is useful if
|
default search path but uses the one provided instead. This is useful if
|
||||||
@ -518,6 +536,8 @@ Process-wide parameters
|
|||||||
The program full path is now used for :data:`sys.executable`, instead
|
The program full path is now used for :data:`sys.executable`, instead
|
||||||
of the program name.
|
of the program name.
|
||||||
|
|
||||||
|
.. deprecated:: 3.11
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: const char* Py_GetVersion()
|
.. c:function:: const char* Py_GetVersion()
|
||||||
|
|
||||||
@ -617,6 +637,9 @@ Process-wide parameters
|
|||||||
Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
|
Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
|
||||||
:c:type:`wchar_*` string.
|
:c:type:`wchar_*` string.
|
||||||
|
|
||||||
|
See also :c:member:`PyConfig.orig_argv` and :c:member:`PyConfig.argv`
|
||||||
|
members of the :ref:`Python Initialization Configuration <init-config>`.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
It is recommended that applications embedding the Python interpreter
|
It is recommended that applications embedding the Python interpreter
|
||||||
for purposes other than executing a single script pass ``0`` as *updatepath*,
|
for purposes other than executing a single script pass ``0`` as *updatepath*,
|
||||||
@ -644,11 +667,18 @@ Process-wide parameters
|
|||||||
Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
|
Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
|
||||||
:c:type:`wchar_*` string.
|
:c:type:`wchar_*` string.
|
||||||
|
|
||||||
|
See also :c:member:`PyConfig.orig_argv` and :c:member:`PyConfig.argv`
|
||||||
|
members of the :ref:`Python Initialization Configuration <init-config>`.
|
||||||
|
|
||||||
.. versionchanged:: 3.4 The *updatepath* value depends on :option:`-I`.
|
.. versionchanged:: 3.4 The *updatepath* value depends on :option:`-I`.
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: void Py_SetPythonHome(const wchar_t *home)
|
.. c:function:: void Py_SetPythonHome(const wchar_t *home)
|
||||||
|
|
||||||
|
This API is kept for backward compatibility: setting
|
||||||
|
:c:member:`PyConfig.home` should be used instead, see :ref:`Python
|
||||||
|
Initialization Configuration <init-config>`.
|
||||||
|
|
||||||
Set the default "home" directory, that is, the location of the standard
|
Set the default "home" directory, that is, the location of the standard
|
||||||
Python libraries. See :envvar:`PYTHONHOME` for the meaning of the
|
Python libraries. See :envvar:`PYTHONHOME` for the meaning of the
|
||||||
argument string.
|
argument string.
|
||||||
@ -661,6 +691,8 @@ Process-wide parameters
|
|||||||
Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
|
Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
|
||||||
:c:type:`wchar_*` string.
|
:c:type:`wchar_*` string.
|
||||||
|
|
||||||
|
.. deprecated:: 3.11
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: w_char* Py_GetPythonHome()
|
.. c:function:: w_char* Py_GetPythonHome()
|
||||||
|
|
||||||
|
@ -476,6 +476,8 @@ Customize Memory Allocators
|
|||||||
the :c:func:`PyMem_SetupDebugHooks` function must be called to reinstall the
|
the :c:func:`PyMem_SetupDebugHooks` function must be called to reinstall the
|
||||||
debug hooks on top on the new allocator.
|
debug hooks on top on the new allocator.
|
||||||
|
|
||||||
|
See also :c:member:`PyPreConfig.allocator` and :ref:`Preinitialize Python
|
||||||
|
with PyPreConfig <c-preinit>`.
|
||||||
|
|
||||||
.. c:function:: void PyMem_SetupDebugHooks(void)
|
.. c:function:: void PyMem_SetupDebugHooks(void)
|
||||||
|
|
||||||
|
@ -237,11 +237,21 @@ accessible to C code. They all work with the current interpreter thread's
|
|||||||
|
|
||||||
.. c:function:: void PySys_AddWarnOption(const wchar_t *s)
|
.. c:function:: void PySys_AddWarnOption(const wchar_t *s)
|
||||||
|
|
||||||
|
This API is kept for backward compatibility: setting
|
||||||
|
:c:member:`PyConfig.warnoptions` should be used instead, see :ref:`Python
|
||||||
|
Initialization Configuration <init-config>`.
|
||||||
|
|
||||||
Append *s* to :data:`sys.warnoptions`. This function must be called prior
|
Append *s* to :data:`sys.warnoptions`. This function must be called prior
|
||||||
to :c:func:`Py_Initialize` in order to affect the warnings filter list.
|
to :c:func:`Py_Initialize` in order to affect the warnings filter list.
|
||||||
|
|
||||||
|
.. deprecated:: 3.11
|
||||||
|
|
||||||
.. c:function:: void PySys_AddWarnOptionUnicode(PyObject *unicode)
|
.. c:function:: void PySys_AddWarnOptionUnicode(PyObject *unicode)
|
||||||
|
|
||||||
|
This API is kept for backward compatibility: setting
|
||||||
|
:c:member:`PyConfig.warnoptions` should be used instead, see :ref:`Python
|
||||||
|
Initialization Configuration <init-config>`.
|
||||||
|
|
||||||
Append *unicode* to :data:`sys.warnoptions`.
|
Append *unicode* to :data:`sys.warnoptions`.
|
||||||
|
|
||||||
Note: this function is not currently usable from outside the CPython
|
Note: this function is not currently usable from outside the CPython
|
||||||
@ -250,6 +260,8 @@ accessible to C code. They all work with the current interpreter thread's
|
|||||||
called until enough of the runtime has been initialized to permit the
|
called until enough of the runtime has been initialized to permit the
|
||||||
creation of Unicode objects.
|
creation of Unicode objects.
|
||||||
|
|
||||||
|
.. deprecated:: 3.11
|
||||||
|
|
||||||
.. c:function:: void PySys_SetPath(const wchar_t *path)
|
.. c:function:: void PySys_SetPath(const wchar_t *path)
|
||||||
|
|
||||||
Set :data:`sys.path` to a list object of paths found in *path* which should
|
Set :data:`sys.path` to a list object of paths found in *path* which should
|
||||||
@ -294,12 +306,18 @@ accessible to C code. They all work with the current interpreter thread's
|
|||||||
|
|
||||||
.. c:function:: void PySys_AddXOption(const wchar_t *s)
|
.. c:function:: void PySys_AddXOption(const wchar_t *s)
|
||||||
|
|
||||||
|
This API is kept for backward compatibility: setting
|
||||||
|
:c:member:`PyConfig.xoptions` should be used instead, see :ref:`Python
|
||||||
|
Initialization Configuration <init-config>`.
|
||||||
|
|
||||||
Parse *s* as a set of :option:`-X` options and add them to the current
|
Parse *s* as a set of :option:`-X` options and add them to the current
|
||||||
options mapping as returned by :c:func:`PySys_GetXOptions`. This function
|
options mapping as returned by :c:func:`PySys_GetXOptions`. This function
|
||||||
may be called prior to :c:func:`Py_Initialize`.
|
may be called prior to :c:func:`Py_Initialize`.
|
||||||
|
|
||||||
.. versionadded:: 3.2
|
.. versionadded:: 3.2
|
||||||
|
|
||||||
|
.. deprecated:: 3.11
|
||||||
|
|
||||||
.. c:function:: PyObject *PySys_GetXOptions()
|
.. c:function:: PyObject *PySys_GetXOptions()
|
||||||
|
|
||||||
Return the current dictionary of :option:`-X` options, similarly to
|
Return the current dictionary of :option:`-X` options, similarly to
|
||||||
|
@ -139,3 +139,19 @@ Removed
|
|||||||
* :c:func:`PyFrame_BlockSetup` and :c:func:`PyFrame_BlockPop` have been
|
* :c:func:`PyFrame_BlockSetup` and :c:func:`PyFrame_BlockPop` have been
|
||||||
removed.
|
removed.
|
||||||
(Contributed by Mark Shannon in :issue:`40222`.)
|
(Contributed by Mark Shannon in :issue:`40222`.)
|
||||||
|
|
||||||
|
* Deprecate the following functions to configure the Python initialization:
|
||||||
|
|
||||||
|
* :c:func:`PySys_AddWarnOptionUnicode`
|
||||||
|
* :c:func:`PySys_AddWarnOption`
|
||||||
|
* :c:func:`PySys_AddXOption`
|
||||||
|
* :c:func:`PySys_HasWarnOptions`
|
||||||
|
* :c:func:`Py_SetPath`
|
||||||
|
* :c:func:`Py_SetProgramName`
|
||||||
|
* :c:func:`Py_SetPythonHome`
|
||||||
|
* :c:func:`Py_SetStandardStreamEncoding`
|
||||||
|
* :c:func:`_Py_SetProgramFullPath`
|
||||||
|
|
||||||
|
Use the new :c:type:`PyConfig` API of the :ref:`Python Initialization Configuration
|
||||||
|
<init-config>` instead (:pep:`587`).
|
||||||
|
(Contributed by Victor Stinner in :issue:`44113`.)
|
||||||
|
@ -5,7 +5,8 @@
|
|||||||
/* Only used by applications that embed the interpreter and need to
|
/* Only used by applications that embed the interpreter and need to
|
||||||
* override the standard encoding determination mechanism
|
* override the standard encoding determination mechanism
|
||||||
*/
|
*/
|
||||||
PyAPI_FUNC(int) Py_SetStandardStreamEncoding(const char *encoding,
|
Py_DEPRECATED(3.11) PyAPI_FUNC(int) Py_SetStandardStreamEncoding(
|
||||||
|
const char *encoding,
|
||||||
const char *errors);
|
const char *errors);
|
||||||
|
|
||||||
/* PEP 432 Multi-phase initialization API (Private while provisional!) */
|
/* PEP 432 Multi-phase initialization API (Private while provisional!) */
|
||||||
@ -41,7 +42,7 @@ PyAPI_FUNC(void) _Py_RestoreSignals(void);
|
|||||||
PyAPI_FUNC(int) Py_FdIsInteractive(FILE *, const char *);
|
PyAPI_FUNC(int) Py_FdIsInteractive(FILE *, const char *);
|
||||||
PyAPI_FUNC(int) _Py_FdIsInteractive(FILE *fp, PyObject *filename);
|
PyAPI_FUNC(int) _Py_FdIsInteractive(FILE *fp, PyObject *filename);
|
||||||
|
|
||||||
PyAPI_FUNC(void) _Py_SetProgramFullPath(const wchar_t *);
|
Py_DEPRECATED(3.11) PyAPI_FUNC(void) _Py_SetProgramFullPath(const wchar_t *);
|
||||||
|
|
||||||
PyAPI_FUNC(const char *) _Py_gitidentifier(void);
|
PyAPI_FUNC(const char *) _Py_gitidentifier(void);
|
||||||
PyAPI_FUNC(const char *) _Py_gitversion(void);
|
PyAPI_FUNC(const char *) _Py_gitversion(void);
|
||||||
|
@ -37,10 +37,10 @@ PyAPI_FUNC(int) Py_FrozenMain(int argc, char **argv);
|
|||||||
PyAPI_FUNC(int) Py_BytesMain(int argc, char **argv);
|
PyAPI_FUNC(int) Py_BytesMain(int argc, char **argv);
|
||||||
|
|
||||||
/* In pathconfig.c */
|
/* In pathconfig.c */
|
||||||
PyAPI_FUNC(void) Py_SetProgramName(const wchar_t *);
|
Py_DEPRECATED(3.11) PyAPI_FUNC(void) Py_SetProgramName(const wchar_t *);
|
||||||
PyAPI_FUNC(wchar_t *) Py_GetProgramName(void);
|
PyAPI_FUNC(wchar_t *) Py_GetProgramName(void);
|
||||||
|
|
||||||
PyAPI_FUNC(void) Py_SetPythonHome(const wchar_t *);
|
Py_DEPRECATED(3.11) PyAPI_FUNC(void) Py_SetPythonHome(const wchar_t *);
|
||||||
PyAPI_FUNC(wchar_t *) Py_GetPythonHome(void);
|
PyAPI_FUNC(wchar_t *) Py_GetPythonHome(void);
|
||||||
|
|
||||||
PyAPI_FUNC(wchar_t *) Py_GetProgramFullPath(void);
|
PyAPI_FUNC(wchar_t *) Py_GetProgramFullPath(void);
|
||||||
@ -48,7 +48,7 @@ PyAPI_FUNC(wchar_t *) Py_GetProgramFullPath(void);
|
|||||||
PyAPI_FUNC(wchar_t *) Py_GetPrefix(void);
|
PyAPI_FUNC(wchar_t *) Py_GetPrefix(void);
|
||||||
PyAPI_FUNC(wchar_t *) Py_GetExecPrefix(void);
|
PyAPI_FUNC(wchar_t *) Py_GetExecPrefix(void);
|
||||||
PyAPI_FUNC(wchar_t *) Py_GetPath(void);
|
PyAPI_FUNC(wchar_t *) Py_GetPath(void);
|
||||||
PyAPI_FUNC(void) Py_SetPath(const wchar_t *);
|
Py_DEPRECATED(3.11) PyAPI_FUNC(void) Py_SetPath(const wchar_t *);
|
||||||
#ifdef MS_WINDOWS
|
#ifdef MS_WINDOWS
|
||||||
int _Py_CheckPython3(void);
|
int _Py_CheckPython3(void);
|
||||||
#endif
|
#endif
|
||||||
|
@ -22,11 +22,11 @@ PyAPI_FUNC(void) PySys_FormatStdout(const char *format, ...);
|
|||||||
PyAPI_FUNC(void) PySys_FormatStderr(const char *format, ...);
|
PyAPI_FUNC(void) PySys_FormatStderr(const char *format, ...);
|
||||||
|
|
||||||
PyAPI_FUNC(void) PySys_ResetWarnOptions(void);
|
PyAPI_FUNC(void) PySys_ResetWarnOptions(void);
|
||||||
PyAPI_FUNC(void) PySys_AddWarnOption(const wchar_t *);
|
Py_DEPRECATED(3.11) PyAPI_FUNC(void) PySys_AddWarnOption(const wchar_t *);
|
||||||
PyAPI_FUNC(void) PySys_AddWarnOptionUnicode(PyObject *);
|
Py_DEPRECATED(3.11) PyAPI_FUNC(void) PySys_AddWarnOptionUnicode(PyObject *);
|
||||||
PyAPI_FUNC(int) PySys_HasWarnOptions(void);
|
Py_DEPRECATED(3.11) PyAPI_FUNC(int) PySys_HasWarnOptions(void);
|
||||||
|
|
||||||
PyAPI_FUNC(void) PySys_AddXOption(const wchar_t *);
|
Py_DEPRECATED(3.11) PyAPI_FUNC(void) PySys_AddXOption(const wchar_t *);
|
||||||
PyAPI_FUNC(PyObject *) PySys_GetXOptions(void);
|
PyAPI_FUNC(PyObject *) PySys_GetXOptions(void);
|
||||||
|
|
||||||
#ifndef Py_LIMITED_API
|
#ifndef Py_LIMITED_API
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
Deprecate the following functions to configure the Python initialization:
|
||||||
|
|
||||||
|
* :c:func:`PySys_AddWarnOptionUnicode`
|
||||||
|
* :c:func:`PySys_AddWarnOption`
|
||||||
|
* :c:func:`PySys_AddXOption`
|
||||||
|
* :c:func:`PySys_HasWarnOptions`
|
||||||
|
* :c:func:`Py_SetPath`
|
||||||
|
* :c:func:`Py_SetProgramName`
|
||||||
|
* :c:func:`Py_SetPythonHome`
|
||||||
|
* :c:func:`Py_SetStandardStreamEncoding`
|
||||||
|
* :c:func:`_Py_SetProgramFullPath`
|
||||||
|
|
||||||
|
Use the new :c:type:`PyConfig` API of the :ref:`Python Initialization
|
||||||
|
Configuration <init-config>` instead (:pep:`587`).
|
@ -22,6 +22,11 @@
|
|||||||
/* Use path starting with "./" avoids a search along the PATH */
|
/* Use path starting with "./" avoids a search along the PATH */
|
||||||
#define PROGRAM_NAME L"./_testembed"
|
#define PROGRAM_NAME L"./_testembed"
|
||||||
|
|
||||||
|
// Ignore Py_DEPRECATED() compiler warnings: deprecated functions are
|
||||||
|
// tested on purpose here.
|
||||||
|
_Py_COMP_DIAG_PUSH
|
||||||
|
_Py_COMP_DIAG_IGNORE_DEPR_DECLS
|
||||||
|
|
||||||
static void _testembed_Py_Initialize(void)
|
static void _testembed_Py_Initialize(void)
|
||||||
{
|
{
|
||||||
Py_SetProgramName(PROGRAM_NAME);
|
Py_SetProgramName(PROGRAM_NAME);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user