summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony Sottile <asottile@umich.edu>2022-07-30 15:12:05 -0400
committerGitHub <noreply@github.com>2022-07-30 15:12:05 -0400
commitab806f3f9133ca24366b6254e499f0363f6bf5ec (patch)
tree626a7f2da008605cf902f8348ad7a12cfd47070f
parentd3566623bb451f6c7f1b65cc4f8538d2540da9e6 (diff)
parentc14bd2aac8e370bc84048a97f17a1ed906523bf9 (diff)
downloadpep8-ab806f3f9133ca24366b6254e499f0363f6bf5ec.tar.gz
Merge pull request #1085 from PyCQA/revert-1041
Revert "Merge pull request #1041 from asfaltboy/issue-830-e721-types-regex-incorrect"
-rwxr-xr-xpycodestyle.py13
-rw-r--r--testsuite/E72.py9
2 files changed, 12 insertions, 10 deletions
diff --git a/pycodestyle.py b/pycodestyle.py
index f866dd4..ee0a58f 100755
--- a/pycodestyle.py
+++ b/pycodestyle.py
@@ -134,10 +134,8 @@ COMPARE_SINGLETON_REGEX = re.compile(r'(\bNone|\bFalse|\bTrue)?\s*([=!]=)'
r'\s*(?(1)|(None|False|True))\b')
COMPARE_NEGATIVE_REGEX = re.compile(r'\b(?<!is\s)(not)\s+[^][)(}{ ]+\s+'
r'(in|is)\s')
-COMPARE_TYPE_REGEX = re.compile(
- r'(?:[=!]=|is(?:\s+not)?)\s+type(?:\s*\(\s*([^)]*[^ )])\s*\))' +
- r'|\btype(?:\s*\(\s*([^)]*[^ )])\s*\))\s+(?:[=!]=|is(?:\s+not)?)'
-)
+COMPARE_TYPE_REGEX = re.compile(r'(?:[=!]=|is(?:\s+not)?)\s+type(?:s.\w+Type'
+ r'|\s*\(\s*([^)]*[^ )])\s*\))')
KEYWORD_REGEX = re.compile(r'(\s*)\b(?:%s)\b(\s*)' % r'|'.join(KEYWORDS))
OPERATOR_REGEX = re.compile(r'(?:[^,\s])(\s*)(?:[-+*/|!<=>%&^]+|:=)(\s*)')
LAMBDA_REGEX = re.compile(r'\blambda\b')
@@ -1446,6 +1444,13 @@ def comparison_type(logical_line, noqa):
Okay: if isinstance(obj, int):
E721: if type(obj) is type(1):
+
+ When checking if an object is a string, keep in mind that it might
+ be a unicode string too! In Python 2.3, str and unicode have a
+ common base class, basestring, so you can do:
+
+ Okay: if isinstance(obj, basestring):
+ Okay: if type(a1) is type(b1):
"""
match = COMPARE_TYPE_REGEX.search(logical_line)
if match and not noqa:
diff --git a/testsuite/E72.py b/testsuite/E72.py
index 61e17eb..d127ff7 100644
--- a/testsuite/E72.py
+++ b/testsuite/E72.py
@@ -4,7 +4,7 @@ if type(res) == type(42):
#: E721
if type(res) != type(""):
pass
-#: Okay
+#: E721
import types
if res == types.IntType:
@@ -47,6 +47,8 @@ if isinstance(res, str):
pass
if isinstance(res, types.MethodType):
pass
+if type(a) != type(b) or type(a) == type(ccc):
+ pass
#: Okay
def func_histype(a, b, c):
pass
@@ -79,11 +81,6 @@ try:
except Exception:
pass
#: Okay
-from . import custom_types as types
-
-red = types.ColorTypeRED
-red is types.ColorType.RED
-#: Okay
from . import compute_type
if compute_type(foo) == 5: