Author yan12125
Recipients martin.panter, r.david.murray, serhiy.storchaka, yan12125
Date 2016-09-13.15:10:23
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1473779424.19.0.440456250628.issue28128@psf.upfronthosting.co.za>
In-reply-to
Content
In issue27364, invalid escape sequences in string literals are deprecated. Currently the deprecation message is not so useful when fixing lots of files in one or more large projects. For example, I have two files foo.py and bar.py:

# foo.py
import bar

# bar.py
print('\d')

It gives:
$ python3.6 -W error foo.py
Traceback (most recent call last):
  File "foo.py", line 1, in <module>
    import bar
DeprecationWarning: invalid escape sequence '\d'

My idea is that the warning message can be improved to provide more information. In http://bugs.python.org/issue27364#msg269373 it's proposed to let a linter check such misuses. It's useful within a single project. For a project that depends on lots of external projects, a linter is not enough. Things are worse when __import__, imp or importlib are involved, or sys.path is modified. I have to either add some codes or use a debugger to show which module is imported.

For above reasons, I propose to add at least the filename and the line number to the warning message. For example:

$ ./python -W error foo.py
Traceback (most recent call last):
  File "foo.py", line 1, in <module>
    import bar
  File "/home/yen/Projects/cpython/build/bar.py", line 1
    print('\d')
         ^
SyntaxError: (deprecated usage) invalid escape sequence '\d'

With that I can know which file or project I should blame.

Added some of reviewers from issue27364 to nosy list.
History
Date User Action Args
2016-09-13 15:10:24yan12125setrecipients: + yan12125, r.david.murray, martin.panter, serhiy.storchaka
2016-09-13 15:10:24yan12125setmessageid: <1473779424.19.0.440456250628.issue28128@psf.upfronthosting.co.za>
2016-09-13 15:10:24yan12125linkissue28128 messages
2016-09-13 15:10:23yan12125create