summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Cousineau <eric.cousineau@tri.global>2019-01-30 10:27:12 -0500
committerEric Cousineau <eric.cousineau@tri.global>2019-01-30 12:14:32 -0500
commit1f8d5ca1a1ede54e6d7b67693b36b209b940573c (patch)
tree2dfe2912b54fe517af82fe09e0821601e32fb55a
parentac1c5e579c840e20544e9d65dbcebc1ecd9bf796 (diff)
downloadpep8-1f8d5ca1a1ede54e6d7b67693b36b209b940573c.tar.gz
E402: Add "with" statement to allowed keywords
-rwxr-xr-xpycodestyle.py8
-rw-r--r--testsuite/E40.py6
2 files changed, 10 insertions, 4 deletions
diff --git a/pycodestyle.py b/pycodestyle.py
index 0ecd7fd..278bf12 100755
--- a/pycodestyle.py
+++ b/pycodestyle.py
@@ -1067,7 +1067,7 @@ def module_imports_on_top_of_file(
line = line[1:]
return line and (line[0] == '"' or line[0] == "'")
- allowed_try_keywords = ('try', 'except', 'else', 'finally')
+ allowed_keywords = ('try', 'except', 'else', 'finally', 'with')
if indent_level: # Allow imports in conditional statement/function
return
@@ -1081,9 +1081,9 @@ def module_imports_on_top_of_file(
yield 0, "E402 module level import not at top of file"
elif re.match(DUNDER_REGEX, line):
return
- elif any(line.startswith(kw) for kw in allowed_try_keywords):
- # Allow try, except, else, finally keywords intermixed with
- # imports in order to support conditional importing
+ elif any(line.startswith(kw) for kw in allowed_keywords):
+ # Allow certain keywords intermixed with imports in order to
+ # support conditional or filtered importing
return
elif is_string_literal(line):
# The first literal is a docstring, allow it. Otherwise, report
diff --git a/testsuite/E40.py b/testsuite/E40.py
index f9a18fc..6d123b1 100644
--- a/testsuite/E40.py
+++ b/testsuite/E40.py
@@ -34,6 +34,12 @@ finally:
print('made attempt to import foo')
import bar
+#: Okay
+with warnings.catch_warnings():
+ warnings.filterwarnings("ignore", DeprecationWarning)
+ import foo
+
+import bar
#: E402
VERSION = '1.2.3'