git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Python-Dev] New Python Initialization API


Maybe I should clarify in the PEP 587 Rationale what are the use cases for
the API. Embeding Python is one kind of use case, but writing your own
Python with a specific config like "isolated Python" or "system Python" is
also a valid use case. For a custom Python, you might want to get C locale
coercion and UTF-8 Mode.

The most common case is to embed Python in an application like Blender or
vim: the application already executes a lot of code and manipulated strings
and encoding before Python is initialized, so Python must not coerce the C
locale in that case. That's why Nick and me decided to disable C loclae
coercion and UTF-8 Mode by default when the C API is used.

Victor

Le samedi 6 avril 2019, Inada Naoki <songofacandy at gmail.com> a ?crit :
> On Sat, Apr 6, 2019 at 1:13 AM Victor Stinner <vstinner at redhat.com> wrote:
>>
>> > > ``PyPreConfig`` fields:
>> > >
>> > > * ``coerce_c_locale_warn``: if non-zero, emit a warning if the C
locale
>> > >   is coerced.
>> > > * ``coerce_c_locale``: if equals to 2, coerce the C locale; if
equals to
>> > >   1, read the LC_CTYPE to decide if it should be coerced.
>> >
>> > Can we use another value for coerce_c_locale to determine whether to
>> > warn or not? Save a field.
>>
>> coerce_c_locale is already complex, it can have 4 values: -1, 0, 1 and 2.
>> I prefer keep a separated field.
>>
>> Moreover, I understood that you might want to coerce the C locale *and*
>> get the warning, or get the warning but *not* coerce the locale.
>>
>
> Are these configurations are really needed?
>
> Applications embedding Python may not initialize Python interpreter at
first.
> For example, vim initializes Python when Python is used first time.
>
> On the other hand, C locale coercion should be done ASAP application
starts.
>
> I think dedicated API for coercing C locale is better than preconfig.
>
> // When application starts:
> Py_CoerceCLocale(warn=0);
>
> // later...
> Py_Initialize();
>
> --
> Inada Naoki  <songofacandy at gmail.com>
>

-- 
Night gathers, and now my watch begins. It shall not end until my death.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20190406/39bde335/attachment.html>