summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lee <IanLee1521@gmail.com>2016-02-24 19:54:18 -0800
committerIan Lee <IanLee1521@gmail.com>2016-02-24 19:54:18 -0800
commitc8e0911f5df9d587e16bccf70cd48cac05d9c49d (patch)
treea86d59e3a056360ab31a5659a1c8d1bd9a6eca89
parent4fb305e7319b65cfa8fca5a1313d581c1e01b39a (diff)
parent394a061457ab6a591c7cad5bcb0d33de8a0209d2 (diff)
downloadpep8-c8e0911f5df9d587e16bccf70cd48cac05d9c49d.tar.gz
Merge pull request #485 from sigmavirus24/bug/484
Identify binary operators used as unary operators
-rwxr-xr-xpep8.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/pep8.py b/pep8.py
index bfbea7f..39eb426 100755
--- a/pep8.py
+++ b/pep8.py
@@ -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):