summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Cordasco <graffatcolmingov@gmail.com>2014-08-07 13:39:18 -0500
committerIan Cordasco <graffatcolmingov@gmail.com>2014-08-07 13:39:18 -0500
commit397719c883b0a334585e8b902de725ad029e5ca4 (patch)
treeac69a6ae996b8a9627b3eac378fb30943b6ce9a7
parent4c5bf00cb613be617c7f48d3b2b82a1c7b895ac1 (diff)
downloadpep8-397719c883b0a334585e8b902de725ad029e5ca4.tar.gz
Fix #311. Add regex to check for field assignment
-rwxr-xr-xpep8.py5
-rw-r--r--testsuite/E73.py3
2 files changed, 7 insertions, 1 deletions
diff --git a/pep8.py b/pep8.py
index b31a978..f9a3d5e 100755
--- a/pep8.py
+++ b/pep8.py
@@ -108,6 +108,7 @@ COMPARE_TYPE_REGEX = re.compile(r'(?:[=!]=|is(?:\s+not)?)\s*type(?:s.\w+Type'
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')
+FIELD_ASSIGNMENT_REGEX = re.compile('\s*.+\..+\s=')
HUNK_REGEX = re.compile(r'^@@ -\d+(?:,\d+)? \+(\d+)(?:,(\d+))? @@.*$')
# Work around Python < 2.6 behaviour, which does not generate NL after
@@ -872,7 +873,9 @@ def compound_statements(logical_line):
before.count('[') <= before.count(']') and # [1:2] (slice)
before.count('(') <= before.count(')'))): # (annotation)
if LAMBDA_REGEX.search(before):
- yield 0, "E731 do not assign a lambda expression, use a def"
+ if not FIELD_ASSIGNMENT_REGEX.search(before):
+ yield 0, ("E731 do not assign a lambda expression, use a"
+ " def")
break
if before.startswith('def '):
yield 0, "E704 multiple statements on one line (def)"
diff --git a/testsuite/E73.py b/testsuite/E73.py
index 0673e0f..ede1403 100644
--- a/testsuite/E73.py
+++ b/testsuite/E73.py
@@ -5,3 +5,6 @@ f = lambda x: 2*x
#: E731:2:5
while False:
this = lambda y, z: 2 * x
+#: Okay
+f = object()
+f.method = lambda: 'Method'