diff options
author | Nick Coghlan <ncoghlan@gmail.com> | 2018-03-25 10:44:30 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-25 10:44:30 (GMT) |
commit | bc77eff8b96be4f035e665ab35c1d06e22f46491 (patch) | |
tree | 68ca923578c2ac466dace4ce07b1571c77bae519 /Doc/c-api | |
parent | d02ac25ab0879f1a6de6937573bf00a16b7bd22e (diff) | |
download | cpython-bc77eff8b96be4f035e665ab35c1d06e22f46491.zip cpython-bc77eff8b96be4f035e665ab35c1d06e22f46491.tar.gz cpython-bc77eff8b96be4f035e665ab35c1d06e22f46491.tar.bz2 |
bpo-33042: Fix pre-initialization sys module configuration (GH-6157)
- new test case for pre-initialization of sys.warnoptions and sys._xoptions
- restored ability to call these APIs prior to Py_Initialize
- updated the docs for the affected APIs to make it clear they can be
called before Py_Initialize
- also enhanced the existing embedding test cases
to check for expected settings in the sys module
Diffstat (limited to 'Doc/c-api')
-rw-r--r-- | Doc/c-api/init.rst | 3 | ||||
-rw-r--r-- | Doc/c-api/sys.rst | 15 |
2 files changed, 15 insertions, 3 deletions
diff --git a/Doc/c-api/init.rst b/Doc/c-api/init.rst index f2564c4..694b466 100644 --- a/Doc/c-api/init.rst +++ b/Doc/c-api/init.rst @@ -31,6 +31,9 @@ The following functions can be safely called before Python is initialized: * :c:func:`Py_SetProgramName` * :c:func:`Py_SetPythonHome` * :c:func:`Py_SetStandardStreamEncoding` + * :c:func:`PySys_AddWarnOption` + * :c:func:`PySys_AddXOption` + * :c:func:`PySys_ResetWarnOptions` * Informative functions: diff --git a/Doc/c-api/sys.rst b/Doc/c-api/sys.rst index e4da96c..994509a 100644 --- a/Doc/c-api/sys.rst +++ b/Doc/c-api/sys.rst @@ -205,16 +205,24 @@ accessible to C code. They all work with the current interpreter thread's .. c:function:: void PySys_ResetWarnOptions() - Reset :data:`sys.warnoptions` to an empty list. + Reset :data:`sys.warnoptions` to an empty list. This function may be + called prior to :c:func:`Py_Initialize`. .. c:function:: void PySys_AddWarnOption(const wchar_t *s) - Append *s* to :data:`sys.warnoptions`. + 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. .. c:function:: void PySys_AddWarnOptionUnicode(PyObject *unicode) Append *unicode* to :data:`sys.warnoptions`. + Note: this function is not currently usable from outside the CPython + implementation, as it must be called prior to the implicit import of + :mod:`warnings` in :c:func:`Py_Initialize` to be effective, but can't be + called until enough of the runtime has been initialized to permit the + creation of Unicode objects. + .. c:function:: void PySys_SetPath(const wchar_t *path) Set :data:`sys.path` to a list object of paths found in *path* which should @@ -260,7 +268,8 @@ accessible to C code. They all work with the current interpreter thread's .. c:function:: void PySys_AddXOption(const wchar_t *s) Parse *s* as a set of :option:`-X` options and add them to the current - options mapping as returned by :c:func:`PySys_GetXOptions`. + options mapping as returned by :c:func:`PySys_GetXOptions`. This function + may be called prior to :c:func:`Py_Initialize`. .. versionadded:: 3.2 |