diff options
-rw-r--r-- | CHANGES.txt | 2 | ||||
-rwxr-xr-x | pep8.py | 16 | ||||
-rw-r--r-- | testsuite/E71.py | 5 |
3 files changed, 13 insertions, 10 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index 79a3454..3427e9b 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -36,6 +36,8 @@ Bug fixes: * Don't crash if os.path.expanduser() throws an ImportError. (Issue #297) +* Fix false positive E711/E712. (Issue #336) + 1.5.7 (2014-05-29) ------------------ @@ -106,10 +106,8 @@ ERRORCODE_REGEX = re.compile(r'\b[A-Z]\d{3}\b') DOCSTRING_REGEX = re.compile(r'u?r?["\']') EXTRANEOUS_WHITESPACE_REGEX = re.compile(r'[[({] | []}),;:]') WHITESPACE_AFTER_COMMA_REGEX = re.compile(r'[,;:]\s*(?: |\t)') -COMPARE_SINGLETON_REGEX = re.compile(r'(?P<op>[=!]=)\s*' - r'(?P<singleton>None|False|True)') -COMPARE_SINGLETON_REVERSE_REGEX = re.compile(r'(?P<singleton>None|False|True)' - r'\s*(?P<op>[=!]=)') +COMPARE_SINGLETON_REGEX = re.compile(r'\b(None|False|True)?\s*([=!]=)' + r'\s*(?(1)|(None|False|True))\b') COMPARE_NEGATIVE_REGEX = re.compile(r'\b(not)\s+[^[({ ]+\s+(in|is)\s') COMPARE_TYPE_REGEX = re.compile(r'(?:[=!]=|is(?:\s+not)?)\s*type(?:s.\w+Type' r'|\s*\(\s*([^)]*[^ )])\s*\))') @@ -998,12 +996,10 @@ def comparison_to_singleton(logical_line, noqa): set to some other value. The other value might have a type (such as a container) that could be false in a boolean context! """ - - match = not noqa and (COMPARE_SINGLETON_REGEX.search(logical_line) or - COMPARE_SINGLETON_REVERSE_REGEX.search(logical_line)) + match = not noqa and COMPARE_SINGLETON_REGEX.search(logical_line) if match: - singleton = match.group('singleton') - same = (match.group('op') == '==') + singleton = match.group(1) or match.group(3) + same = (match.group(2) == '==') msg = "'if cond is %s:'" % (('' if same else 'not ') + singleton) if singleton in ('None',): @@ -1013,7 +1009,7 @@ def comparison_to_singleton(logical_line, noqa): nonzero = ((singleton == 'True' and same) or (singleton == 'False' and not same)) msg += " or 'if %scond:'" % ('' if nonzero else 'not ') - yield match.start(1), ("%s comparison to %s should be %s" % + yield match.start(2), ("%s comparison to %s should be %s" % (code, singleton, msg)) diff --git a/testsuite/E71.py b/testsuite/E71.py index 3f07b1a..25a308f 100644 --- a/testsuite/E71.py +++ b/testsuite/E71.py @@ -55,4 +55,9 @@ if not (X in Y): pass if x is not y: pass + +if TrueElement.get_element(True) == TrueElement.get_element(False): + pass +if (True) == TrueElement or x == TrueElement: + pass #: |