summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorŁukasz Rogalski <rogalski.91@gmail.com>2016-03-23 23:24:51 +0100
committerŁukasz Rogalski <rogalski.91@gmail.com>2016-03-29 18:42:30 +0200
commitb7bf8c80608baa9ebbc6ab5c7692a58243c6f775 (patch)
treee4b985a471511fb1b78f7337bd3d7392e03a45e2
parent2e151c544a4312ec9721c6abedd0f1e4067f9231 (diff)
downloadpep8-b7bf8c80608baa9ebbc6ab5c7692a58243c6f775.tar.gz
complain about missing space before opening parentheses of import statement
Solves issue #489
-rw-r--r--docs/intro.rst2
-rwxr-xr-xpep8.py17
-rw-r--r--testsuite/E27.py14
3 files changed, 33 insertions, 0 deletions
diff --git a/docs/intro.rst b/docs/intro.rst
index 6d1b191..e26daf7 100644
--- a/docs/intro.rst
+++ b/docs/intro.rst
@@ -313,6 +313,8 @@ This is the current list of error and warning codes:
+------------+----------------------------------------------------------------------+
| E274 | tab before keyword |
+------------+----------------------------------------------------------------------+
+| E275 | missing whitespace after keyword |
++------------+----------------------------------------------------------------------+
+------------+----------------------------------------------------------------------+
| **E3** | *Blank line* |
+------------+----------------------------------------------------------------------+
diff --git a/pep8.py b/pep8.py
index 39eb426..ec19dc5 100755
--- a/pep8.py
+++ b/pep8.py
@@ -325,6 +325,23 @@ def whitespace_around_keywords(logical_line):
yield match.start(2), "E271 multiple spaces after keyword"
+def missing_whitespace_after_import_keyword(logical_line):
+ r"""Multiple imports in form from x import (a, b, c) should have space
+ between import statement and parenthesised name list.
+
+ Okay: from foo import (bar, baz)
+ E275: from foo import(bar, baz)
+ E275: from importable.module import(bar, baz)
+ """
+ line = logical_line
+ indicator = ' import('
+ if line.startswith('from '):
+ found = line.find(indicator)
+ if -1 < found:
+ pos = found + len(indicator) - 1
+ yield pos, "E275 missing whitespace after keyword"
+
+
def missing_whitespace(logical_line):
r"""Each comma, semicolon or colon should be followed by whitespace.
diff --git a/testsuite/E27.py b/testsuite/E27.py
index f9d3e8e..888b3a8 100644
--- a/testsuite/E27.py
+++ b/testsuite/E27.py
@@ -28,3 +28,17 @@ a and b
a and b
#: E273 E274
this and False
+#: Okay
+from u import (a, b)
+from v import c, d
+#: E271
+from w import (e, f)
+#: E275
+from w import(e, f)
+#: E275
+from importable.module import(e, f)
+#: E275
+try:
+ from importable.module import(e, f)
+except ImportError:
+ pass