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:
Victor Stinner 2019-03-28 22:05:34 +01:00 committed by Nick Coghlan
parent fcb7ffeb5e
commit f350734f80
1 changed files with 13 additions and 17 deletions

View File

@ -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
===========================