diff options
-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..5b66302 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[:pos].count('\n') + 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$' |