[Python-Dev] PEP 538 warning at startup: please remove it

Victor Stinner victor.stinner at gmail.com
Tue Jun 13 05:48:11 EDT 2017

2017-06-13 8:51 GMT+02:00 Nick Coghlan <ncoghlan at gmail.com>:
> If we turned the warning off by default, but retained an easy
> "on-switch" for the warning to help track places where locale coercion
> is triggering unexpectedly (e.g. "PYTHONCOERCECLOCALE=warn"), that
> would probably give us the best of both worlds.

Hum, it reminds me when I proposed to add a new "locale" encoding
which would be used to explicitly use the locale encoding. My intent
was to emit a warning when the locale encoding was used implicitely...
The problem is that the locale encoding is basically used *everywhere*
in the standard library and *it's fine* :-)

Really, using the locale encoding is the right encoding is many use
cases. Especially when you work on Windows!

Ok, when I proposed the idea, distutils still needed to use UTF-8
explicitly instead of the implicit locale encoding, but you may know
how painful it was to change anything in distutils: write a PEP and/or
discuss it on distutils-sig, handle backward compatibility, etc. The
good news is that these issues are now fixed :-)


While I'm not opposed to PYTHONCOERCECLOCALE=warn, I'm not sure that
*developers* will use it. Usually, developers don't care of Unicode
until enough users complain that their application don't work on a
specific configuration on a specific platform :-) So I'm not sure that
it's useful.

We already have many PYTHON* environment variables. I'm not sure that
all of them are used. We should be careful when adding new ones ;-)

It's already possible to implement manually a check in an application
to complain if the LC_CTYPE locale "C", no?

haypo at selma$ cat > x.py
import locale
if locale.setlocale(locale.LC_CTYPE, None) == 'C':
  print("Don't use the C locale")

haypo at selma$ LANG= python2 x.py
Don't use the C locale

haypo at selma$ LANG= python3 x.py
Don't use the C locale


More information about the Python-Dev mailing list