This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author ncoghlan
Recipients koobs, ncoghlan, ned.deily, vstinner
Date 2018-12-19.10:48:17
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1545216498.74.0.788709270274.issue34589@psf.upfronthosting.co.za>
In-reply-to
Content
I still think the current Python 3.7 behaviour makes the CPython runtime a badly behaved C library, since we may end up changing the active libc locale even when it isn't the main application, and a change hasn't been explicitly requested by the embedding app.

However, the only way to encounter that misbehaviour is to be running a Unicode-unfriendly embedding application that leaves the C locale in place on a Unicode-unfriendly operating system that doesn't set a more sensible locale in the first place.

I've also gone through a few iterations on https://github.com/python/cpython/pull/9257 now, and respecting the -E and -I options *without* deferring locale coercion until the same point where UTF-8 mode is checked for turns out to require duplication of an irritatingly large amount of argument processing code (as even if all you're checking for is two options that don't take arguments, you still need to correctly skip over all the other permitted arguments, stop at the arguments that terminate the python option list, and find the options of interest even when they're in a combined option string like "-vI").

Accordingly, I no longer think it's worth pursuing this change purely to assuage my sense of responsibility to developers of applications embedding the Python runtime - instead, we can leave the Python 3.7.0 solution in place for 3.8 as well, until such time as we have embedding application authors actually reporting bug reports against the Python 3.7 behaviour.

To be completely honest, I expect the odds of that actually happening in practice to be incredibly low, and even if it does happen, our answer may well be to point to the in-development multi-phase configuration API rather than allowing it to be disabled when using Py_Initialize() and/or Py_Main().
History
Date User Action Args
2018-12-19 10:48:18ncoghlansetrecipients: + ncoghlan, vstinner, ned.deily, koobs
2018-12-19 10:48:18ncoghlansetmessageid: <1545216498.74.0.788709270274.issue34589@psf.upfronthosting.co.za>
2018-12-19 10:48:18ncoghlanlinkissue34589 messages
2018-12-19 10:48:17ncoghlancreate