Open sun1ch opened 2 years ago
The warning comes from a later test: koans/about_none.py:50
:
self.assertEqual(__, None is not 0)
self.assertEqual(__, None is not False)
This is the old python2 syntax and with python3 it should be !=
:
...
Python 3.9.10 (main, Jan 15 2022, 11:40:53)
...
>>> None is not 0
<stdin>:1: SyntaxWarning: "is not" with a literal. Did you mean "!="?
True
>>> None != 0
True
However the !=
version will generate a false positive warning by flake8 and similar tools
comparison to None should be 'if cond is not None:'
The warning comes from a later test:
koans/about_none.py:50
:self.assertEqual(__, None is not 0) self.assertEqual(__, None is not False)
This is the old python2 syntax and with python3 it should be
!=
:... Python 3.9.10 (main, Jan 15 2022, 11:40:53) ... >>> None is not 0 <stdin>:1: SyntaxWarning: "is not" with a literal. Did you mean "!="? True >>> None != 0 True
However the
!=
version will generate a false positive warning by flake8 and similar tools
comparison to None should be 'if cond is not None:'
Hey @minusf Is there a way to work around that? For example adding # flake8: noqa
to that line if we have the != operator? I am not sure what the other tools you mentioned are, so could you list them, if possible? I was thinking a try/except block might be useful here to catch the SyntaxWarning and print the other form if needed. What do you think?
i think the fix in #256 is fine...
I would leave noqa
out of the code intended for beginners, it's could be confusing.
It's okay for some of these to produce Flake8 warnings, they're introducing concepts, and aren't necessarily something you would use in production code.
I would remove the runtime SyntaxWarning
to avoid confusing beginners, and this still illustrates "None is distinct from other things which are False":
-self.assertEqual(__, None is not 0)
-self.assertEqual(__, None is not False)
+self.assertEqual(__, None != False)
+self.assertEqual(__, None != 0)
Please see PR https://github.com/gregmalcolm/python_koans/pull/277 for this.
I would leave
noqa
out of the code intended for beginners, it's could be confusing.It's okay for some of these to produce Flake8 warnings, they're introducing concepts, and aren't necessarily something you would use in production code.
I would remove the runtime
SyntaxWarning
to avoid confusing beginners, and this still illustrates "None is distinct from other things which are False":-self.assertEqual(__, None is not 0) -self.assertEqual(__, None is not False) +self.assertEqual(__, None != False) +self.assertEqual(__, None != 0)
Please see PR #277 for this.
That's true, but I was just wondering if we could do the ignore thing if we absolutely wanted no errors at all. The best thing would probably be just using != or even a try/except block to try both the versions.
I'm trying to run
My python version is 3.9.5 on Ubuntu 21.04