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