diff options
author | Simon Gomizelj <simon@vodik.xyz> | 2016-06-02 11:41:48 -0700 |
---|---|---|
committer | Ian Cordasco <graffatcolmingov@gmail.com> | 2017-01-25 19:48:10 -0600 |
commit | 08a6d8a3c69ebef67172a70db6581469285a295b (patch) | |
tree | 25e46061c7243c8a806c9b88a8e68f642ff3d228 | |
parent | 860369c7e8178779fdc33fb74c2d12b2674c6762 (diff) | |
download | pep8-08a6d8a3c69ebef67172a70db6581469285a295b.tar.gz |
Allow all dunder variables above imports
Closes #394
-rwxr-xr-x | pycodestyle.py | 3 | ||||
-rw-r--r-- | testsuite/E40.py | 10 |
2 files changed, 12 insertions, 1 deletions
diff --git a/pycodestyle.py b/pycodestyle.py index e0df43f..96d2da3 100755 --- a/pycodestyle.py +++ b/pycodestyle.py @@ -134,6 +134,7 @@ STARTSWITH_INDENT_STATEMENT_REGEX = re.compile( 'while', ))) ) +DUNDER_REGEX = re.compile(r'^__([^\s]+)__ = ') # Work around Python < 2.6 behaviour, which does not generate NL after # a comment which is on a line by itself. @@ -955,6 +956,8 @@ def module_imports_on_top_of_file( if line.startswith('import ') or line.startswith('from '): if checker_state.get('seen_non_imports', False): 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 diff --git a/testsuite/E40.py b/testsuite/E40.py index 18ac73a..f9a18fc 100644 --- a/testsuite/E40.py +++ b/testsuite/E40.py @@ -11,11 +11,19 @@ from foo.bar.yourclass import YourClass import myclass import foo.bar.yourclass -#: E402 +#: Okay __all__ = ['abc'] import foo #: Okay +__version__ = "42" + +import foo +#: Okay +__author__ = "Simon Gomizelj" + +import foo +#: Okay try: import foo except ImportError: |