[Python-Dev] PEP 538 warning at startup: please remove it (original) (raw)

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


Ok, if you want to have a more concrete example of regression introduced by this warning, look at test_tracemalloc failures on this FreeBSD buildbot: http://buildbot.python.org/all/builders/AMD64%20FreeBSD%20CURRENT%20Debug%203.x/builds/419/steps/test/logs/stdio

I expect that a lot of tests using stderr will be broken by this warning.

I'm not interested to discuss if the CI is properly configured or not. The thing is the warning can easily be seen as a regression: the test pass on 3.6 on the same platform ;-)

One example:

====================================================================== FAIL: test_conflicting_envvar_and_command_line (test.test_warnings.CEnvironmentVariableTests)

Traceback (most recent call last): File "/usr/home/buildbot/python/3.x.koobs-freebsd-current/build/Lib/test/test_warnings/init.py", line 1062, in test_conflicting_envvar_and_command_line b"DeprecationWarning: Message"]) AssertionError: Lists differ: [b'Python runtime initialized with LC_CTYPE=[305 chars]age'] != [b'Traceback (most recent call last):', b' [65 chars]age']

First differing element 0: b'Python runtime initialized with LC_CTYPE=[190 chars]ded.' b'Traceback (most recent call last):'

First list contains 1 additional elements. First extra element 3: b'DeprecationWarning: Message'

Victor

2017-06-12 10:56 GMT+02:00 Victor Stinner <victor.stinner at gmail.com>:

Hi,

Nick Coghlan pushed his implementation of his PEP 538: nice! Nice step forward to UTF-8 everywhere ;-) I would prefer to not be annoyed by warning messages about encodings at startup if possible: "Python detected LCCTYPE=C: LCCTYPE coerced to C.UTF-8 (set another locale or PYTHONCOERCECLOCALE=0 to disable this locale coercion behavior)."

Python 3.7 is the only programming language that I know that complains about encoding at startup. Even if my code is 100% valid, PEP 8 compliant, don't emit any warning, etc. I will get the warning. It is not possible to ignore the warning... Like "yeah, I know that my locale is C, but it's not like I'm able to configure it." haypo at selma$ export LANG= haypo at selma$ locale LANG= LCCTYPE="POSIX" ... haypo at selma$ ./python -c 'print("Hello World!")' # Python 3.7 Python detected LCCTYPE=C: LCCTYPE coerced to C.UTF-8 (set another locale or PYTHONCOERCECLOCALE=0 to disable this locale coercion behavior). Hello World! haypo at selma$ python2 -c 'print("Hello World!")' # Python 2.7 Hello World! haypo at selma$ perl -e 'print "Hello, world!\n"' # Perl 5.24 Hello, world! haypo at selma$ ./c # C Hello World! ... Note: I don't consider that 2>/dev/null is a good practice to ignore a single warning, since it will ignore all message written into stderr, including useful warnings like ResourceWarning or "Exception ignored ...". Victor



More information about the Python-Dev mailing list