You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
-W command line options and PYTHONWARNINGS environmental variable should not override -b / -bb command line options #64560
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=<Date2017-12-12.22:01:13.847>created_at=<Date2014-01-23.09:19:49.506>labels= ['interpreter-core', 'type-bug', '3.7']
title='-W command line options and PYTHONWARNINGS environmental variable should not override -b / -bb command line options'updated_at=<Date2018-01-23.12:30:55.712>user='https://bugs.python.org/Arfrever'
Currently -W command line options and PYTHONWARNINGS environmental variable non-intuitively override settings specified by -b / -bb command line options.
$ python3.4 -c 'print("" == b"")'
False
$ python3.4 -b -c 'print("" == b"")'
-c:1: BytesWarning: Comparison between bytes and string
False
$ python3.4 -bb -c 'print("" == b"")'
Traceback (most recent call last):
File "<string>", line 1, in <module>BytesWarning: Comparison between bytes and string
$ python3.4 -We -b -c 'print("" == b"")'
Traceback (most recent call last):
File "<string>", line 1, in <module>BytesWarning: Comparison between bytes and string
$ python3.4 -Wd -bb -c 'print("" == b"")'
-c:1: BytesWarning: Comparison between bytes and string
False
$ python3.4 -Wi -b -c 'print("" == b"")'
False
$ python3.4 -Wi -bb -c 'print("" == b"")'
False
$
I suggest to increase priority of -b / -bb command line options.
The attached patch should be applied after patch from issue bpo-20355.
(Test suite of Python triggers some BytesWarnings, so firstly they will have to be fixed.)
By the way, Tools/scripts/run_tests.py (used by 'test' target in Makefile) passes '-W default -bb', which currently fails work as intended (i.e. treating BytesWarnings as errors).
The patch is a bit problematic, because Py_BytesWarningFlag may also be set by e.g. an application embedding Python, but then Python's main.c won't be executed.
The approach I've taken in my PR is similar to the one that Arfrever proposed (albeit different in the details due to other changes in the startup code since that patch was written).
For the embedding case, I've simply noted in the What's New section of the porting guide that embedding applications need to configure a error::BytesWarning filter explicitly if they want to treat BytesWarning as errors (in addition to setting the flag to request that the warnings be emitted in the first place).
Activity
Arfrever commentedon Jan 23, 2014
Currently -W command line options and PYTHONWARNINGS environmental variable non-intuitively override settings specified by -b / -bb command line options.
$ python3.4 -c 'print("" == b"")' False $ python3.4 -b -c 'print("" == b"")' -c:1: BytesWarning: Comparison between bytes and string False $ python3.4 -bb -c 'print("" == b"")' Traceback (most recent call last): File "<string>", line 1, in <module> BytesWarning: Comparison between bytes and string $ python3.4 -We -b -c 'print("" == b"")' Traceback (most recent call last): File "<string>", line 1, in <module> BytesWarning: Comparison between bytes and string $ python3.4 -Wd -bb -c 'print("" == b"")' -c:1: BytesWarning: Comparison between bytes and string False $ python3.4 -Wi -b -c 'print("" == b"")' False $ python3.4 -Wi -bb -c 'print("" == b"")' False $I suggest to increase priority of -b / -bb command line options.
The attached patch should be applied after patch from issue bpo-20355.
(Test suite of Python triggers some BytesWarnings, so firstly they will have to be fixed.)
Arfrever commentedon Jan 23, 2014
By the way, Tools/scripts/run_tests.py (used by 'test' target in Makefile) passes '-W default -bb', which currently fails work as intended (i.e. treating BytesWarnings as errors).
serhiy-storchaka commentedon Feb 24, 2014
Final patch should remove a workaround in Tools/scripts/run_tests.py.
pitrou commentedon Apr 28, 2014
The patch is a bit problematic, because Py_BytesWarningFlag may also be set by e.g. an application embedding Python, but then Python's main.c won't be executed.
ncoghlan commentedon Dec 7, 2017
The approach I've taken in my PR is similar to the one that Arfrever proposed (albeit different in the details due to other changes in the startup code since that patch was written).
For the embedding case, I've simply noted in the What's New section of the porting guide that embedding applications need to configure a
error::BytesWarningfilter explicitly if they want to treat BytesWarning as errors (in addition to setting the flag to request that the warnings be emitted in the first place).vstinner commentedon Dec 12, 2017
New changeset 747f48e by Victor Stinner in branch 'master':
bpo-32230: Set sys.warnoptions with -X dev (bpo-4820)
747f48e
vstinner commentedon Dec 12, 2017
Ok, I merged Nick's PR: -b and -bb options now have the highest priority. I close the issue.
vstinner commentedon Jan 23, 2018
New changeset dc6b946 by Victor Stinner in branch 'master':
bpo-20361: Remove workaround for a now fixed bug (bpo-5283)
dc6b946