PEP 587: Clarify relationship with PEP 432 (#955)
* PEP 587: Clarify relationship with PEP 432 * Update pep-0587.rst Co-Authored-By: vstinner <vstinner@redhat.com>
This commit is contained in:
parent
fcb7ffeb5e
commit
f350734f80
30
pep-0587.rst
30
pep-0587.rst
|
@ -1,6 +1,6 @@
|
|||
PEP: 587
|
||||
Title: Python Initialization Configuration
|
||||
Author: Victor Stinner <vstinner@redhat.com>
|
||||
Author: Nick Coghlan <ncoghlan@gmail.com>, Victor Stinner <vstinner@redhat.com>
|
||||
Discussions-To: python-dev@python.org
|
||||
Status: Draft
|
||||
Type: Standards Track
|
||||
|
@ -29,6 +29,12 @@ The C API of Python 3.7 Initialization takes ``wchar_t*`` strings as
|
|||
input whereas the Python filesystem encoding is set during the
|
||||
initialization.
|
||||
|
||||
This PEP is a partial implementation of PEP 432 which is the overall
|
||||
design. New fields can be added later to ``PyConfig`` structure to
|
||||
finish the implementation of the PEP 432 (add a new partial
|
||||
initialization which allows to configure Python using Python objects to
|
||||
finish the full initialization).
|
||||
|
||||
|
||||
Python Initialization C API
|
||||
===========================
|
||||
|
@ -63,6 +69,10 @@ New macros (6):
|
|||
* ``Py_INIT_EXIT(EXITCODE)``
|
||||
* ``Py_INIT_FAILED(err)``
|
||||
|
||||
This PEP also adds ``_PyRuntimeState.preconfig`` (``PyPreConfig``) and
|
||||
``PyInterpreterState.config`` (``PyConfig``) fields to these internal
|
||||
structures. They become the new reference configuration.
|
||||
|
||||
|
||||
PyWideCharList
|
||||
--------------
|
||||
|
@ -334,7 +344,8 @@ This PEP is still a draft with open questions which should be answered:
|
|||
* The PEP 432 stores ``PYTHONCASEOK`` into the config. Do we need
|
||||
to add something for that into ``PyConfig``? How would it be exposed
|
||||
at the Python level for ``importlib``? Passed as an argument to
|
||||
``importlib._bootstrap._setup()`` maybe?
|
||||
``importlib._bootstrap._setup()`` maybe? It can be added later if
|
||||
needed.
|
||||
|
||||
|
||||
Backwards Compatibility
|
||||
|
@ -344,21 +355,6 @@ This PEP only adds a new API: it leaves the existing API unchanged and
|
|||
has no impact on the backwards compatibility.
|
||||
|
||||
|
||||
Alternative: PEP 432
|
||||
====================
|
||||
|
||||
This PEP is inspired by Nick Coghlan's PEP 432 with a main difference:
|
||||
it only allows to configure Python before its initialization.
|
||||
|
||||
The PEP 432 uses three initialization phases: Pre-Initialization,
|
||||
Initializing, Initialized. It is possible to configure Python between
|
||||
Initializing and Initialized phases using Python objects.
|
||||
|
||||
This PEP only uses C types like ``int`` and ``wchar_t*`` (and
|
||||
``PyWideCharList`` structure). All parameters must be configured at once
|
||||
before the Python initialization using the ``PyConfig`` structure.
|
||||
|
||||
|
||||
Annex: Python Configuration
|
||||
===========================
|
||||
|
||||
|
|
Loading…
Reference in New Issue