Message344764
I agree with Raymond that third party libraries are not ready for this.
My biggest issue is that the way Python warns about this makes it very difficult for library authors to fix this. Most won't even notice. The problem is the warnings are only shown once, when the file is compiled. So if you run the code in any way that causes Python to compile it, a further run of 'python -Wd' will show nothing. I don't know if it's reasonable, but it would be nice if Python recompiled when given -Wd, or somehow saved the warning so it could be shown if that flag is given later.
As an anecdote, for SymPy's CI, we went through five (if I am counting correctly) iterations of trying to test this. Each of the first four were subtly incorrect, until we finally managed to find the correct one (for reference, 'python -We:invalid -m compileall -f -q module/'). So most library authors who will attempt to add tests against this will get it wrong. Simply adding -Wd as you would expect is wrong. If the code is already compiled (which it probably is, e.g., if you ran setup.py), it won't show the warnings. At the very least the "correct" way to test this should be documented.
Things would probably be improved if the warnings were always shown, as at least then devs will see the error once (although most will probably be confused when the warning doesn't repeat).
Another problem is the information in the warnings. It seems the line number of the string is now shown, which is an improvement (https://bugs.python.org/issue28128). It would be nice if it showed the actual line and column number in the file of the invalid escape. This is especially annoying when an escape appears in a docstring. It just shows """ as the offending line.
We have a lot of LaTeX in our docstrings in SymPy, so we had quite a few of these to fix. SymPy doesn't have invalid escapes anymore because I was proactive about it, but from what I've seen, most library authors haven't been.
By the way, this looks like a bug (python 3.8b1):
$ cat test.py
"""
a
\p
"""
$ python -We:invalid test.py
File "test.py", line 2
^
SyntaxError: invalid escape sequence \p
$
It might not be possible to see in what I pasted, but it filled my terminal with spaces. |
|
Date |
User |
Action |
Args |
2019-06-05 20:09:45 | asmeurer | set | recipients:
+ asmeurer, rhettinger, ncoghlan, r.david.murray, serhiy.storchaka, abarry |
2019-06-05 20:09:45 | asmeurer | set | messageid: <1559765385.64.0.571278581934.issue32912@roundup.psfhosted.org> |
2019-06-05 20:09:45 | asmeurer | link | issue32912 messages |
2019-06-05 20:09:45 | asmeurer | create | |
|