[Python-Dev] Issue #26204: compiler now emits a SyntaxWarning on constant statement (original) (raw)
Steven D'Aprano steve at pearwood.info
Mon Feb 8 20:02:02 EST 2016
- Previous message (by thread): [Python-Dev] Issue #26204: compiler now emits a SyntaxWarning on constant statement
- Next message (by thread): [Python-Dev] Issue #26204: compiler now emits a SyntaxWarning on constant statement
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mon, Feb 08, 2016 at 05:43:25PM -0500, Yury Selivanov wrote:
On 2016-02-08 5:19 PM, Terry Reedy wrote: >On 2/8/2016 4:51 PM, Victor Stinner wrote: >>2016-02-08 22:28 GMT+01:00 Alexander Walters <tritium-list at sdamon.com>: >>>What incantation do you need to do to make that behavior apparent? >> >>I didn't know. I just checked. It's assert used with a non-empty tuple: >> >>>>>assert ("tuple",) >>:1: SyntaxWarning: assertion is always true, perhaps remove >>parentheses? > >I think this should be left to linters also. > I agree. I'd remove that warning.
Please don't remove the warning, it is very useful.
Compare an assertion written correctly:
py> assert 1==2, "Error in arithmetic" Traceback (most recent call last): File "", line 1, in AssertionError: Error in arithmetic
with the simple mistake of wrapping the "tuple" in parens:
py> assert (1==2, "Error in arithmetic") :1: SyntaxWarning: assertion is always true, perhaps remove parentheses? py>
This especially hurts people who think that assert is a function. In Python 2.5 and older, you get no warning, and can write wrong code:
py> x = 2 py> assert(x==1, 'expected 1 but got %s' % x) py>
Removing this warning would be a regression.
-- Steve
- Previous message (by thread): [Python-Dev] Issue #26204: compiler now emits a SyntaxWarning on constant statement
- Next message (by thread): [Python-Dev] Issue #26204: compiler now emits a SyntaxWarning on constant statement
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]