diff options
author | Ian Stapleton Cordasco <graffatcolmingov@gmail.com> | 2018-11-22 07:36:39 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-22 07:36:39 -0600 |
commit | d288c073eb3ff268bab619961253ec41f3b97201 (patch) | |
tree | c10b7d716fa2fb483a2173c8c0a8fe98dac1389c | |
parent | b49f5e75be2e942f264f75acc6a7713c593c5615 (diff) | |
parent | e5a057982bfd68cd825eeea6bd8dce5bc0759e9f (diff) | |
download | pep8-d288c073eb3ff268bab619961253ec41f3b97201.tar.gz |
Merge pull request #818 from mgedmin/accurate-multiline-position
Make W605 point to the invalid sequence
-rwxr-xr-x | pycodestyle.py | 9 | ||||
-rw-r--r-- | testsuite/W60.py | 13 |
2 files changed, 17 insertions, 5 deletions
diff --git a/pycodestyle.py b/pycodestyle.py index 8b608b0..f0ae6dc 100755 --- a/pycodestyle.py +++ b/pycodestyle.py @@ -1522,7 +1522,7 @@ def python_3000_invalid_escape_sequence(logical_line, tokens): for token_type, text, start, end, line in tokens: if token_type == tokenize.STRING: - orig_start = start + start_line, start_col = start quote = text[-3:] if text[-3:] in ('"""', "'''") else text[-1] # Extract string modifiers (e.g. u or r) quote_pos = text.index(quote) @@ -1535,8 +1535,13 @@ def python_3000_invalid_escape_sequence(logical_line, tokens): while pos >= 0: pos += 1 if string[pos] not in valid: + line = start_line + string.count('\n', 0, pos) + if line == start_line: + col = start_col + len(prefix) + len(quote) + pos + else: + col = pos - string.rfind('\n', 0, pos) - 1 yield ( - orig_start, + (line, col - 1), "W605 invalid escape sequence '\\%s'" % string[pos], ) diff --git a/testsuite/W60.py b/testsuite/W60.py index 1b03099..4cbaad9 100644 --- a/testsuite/W60.py +++ b/testsuite/W60.py @@ -13,16 +13,23 @@ if x <> 0: x = 0 #: W604 val = `1 + 2` -#: W605:1:9 +#: W605:1:10 regex = '\.png$' -#: W605:1:9 +#: W605:2:1 regex = ''' \.png$ ''' -#: W605:2:5 +#: W605:2:6 f( '\_' ) +#: W605:4:6 +""" +multi-line +literal +with \_ somewhere +in the middle +""" #: Okay regex = r'\.png$' regex = '\\.png$' |