diff options
author | Ian Lee <IanLee1521@gmail.com> | 2016-02-24 19:54:18 -0800 |
---|---|---|
committer | Ian Lee <IanLee1521@gmail.com> | 2016-02-24 19:54:18 -0800 |
commit | c8e0911f5df9d587e16bccf70cd48cac05d9c49d (patch) | |
tree | a86d59e3a056360ab31a5659a1c8d1bd9a6eca89 | |
parent | 4fb305e7319b65cfa8fca5a1313d581c1e01b39a (diff) | |
parent | 394a061457ab6a591c7cad5bcb0d33de8a0209d2 (diff) | |
download | pep8-c8e0911f5df9d587e16bccf70cd48cac05d9c49d.tar.gz |
Merge pull request #485 from sigmavirus24/bug/484
Identify binary operators used as unary operators
-rwxr-xr-x | pep8.py | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -1018,6 +1018,8 @@ def break_around_binary_operator(logical_line, tokens): Okay: foo(x,\n -y) Okay: foo(x, # comment\n -y) Okay: var = (1 &\n ~2) + Okay: var = (1 /\n -2) + Okay: var = (1 +\n -1 +\n -2) """ def is_binary_operator(token_type, text): # The % character is strictly speaking a binary operator, but the @@ -1028,6 +1030,9 @@ def break_around_binary_operator(logical_line, tokens): line_break = False unary_context = True + # Previous non-newline token types and text + previous_token_type = None + previous_text = None for token_type, text, start, end, line in tokens: if token_type == tokenize.COMMENT: continue @@ -1035,10 +1040,14 @@ def break_around_binary_operator(logical_line, tokens): line_break = True else: if (is_binary_operator(token_type, text) and line_break and - not unary_context): + not unary_context and + not is_binary_operator(previous_token_type, + previous_text)): yield start, "W503 line break before binary operator" unary_context = text in '([{,;' line_break = False + previous_token_type = token_type + previous_text = text def comparison_to_singleton(logical_line, noqa): |