flake8-import-order-spoqa
This extends flake8-import-order to implement Spoqa's import order convention. It basically follows PEP 8 with our some additional rules:
-
Standard libraries shouldn't be imported using
from ... import ...
statement. It's because standard libraries tend to use general terms likeopen
. We instead use always qualified imports to eliminate name pollution:import sys # Yes from sys import version_info # No
However, there are few exceptions like
typing
module. They can be imported in both ways:import typing from typing import Optional # `from ... import ...` must be latter
-
All other than standard libraries should be imported using
from ... import ...
statement:from flask import Flask # Yes import flask # No
-
Deeper relative imports should go former. This rule makes consistent even when relative imports are rewritten as absolute imports.
from ..deeper import former from ...deepest import later
-
Imported names are splited to three categories:
CONSTANT_NAME
,ClassName
, andnormal_names
, and follow that order:from something import CONST_A, CONST_B, ClassA, ClassB, any_func, any_var
Usage
Install the flake8-import-order-spoqa
using pip, and then specify
--import-order-style=spoqa
option. Or you can specify it on the config
file as well:
[flake8]
import-order-style = spoqa
Because runtime extensible styles is introduced from flake-import-order 0.12, you need to install flake-import-order 0.12 or later.
Distribution
Written by Hong Minhee, and distributed under GPLv3 or later.
Changelog
Version 1.5.1
To be released.
Version 1.5.0
Released on August 31, 2018.
- The
dataclasses
module, liketyping
, now can be imported without a qualifier (e.g.,from dataclasses import ...
).
Version 1.4.1
Released on August 6, 2018.
- Python 3.7 can be supported by updating flake8-import-order to 0.18. See its changelog to know more about updates.
Version 1.4.0
Released on May 22, 2018.
- Python 3.3 became no more supported.
Version 1.3.0
Released on February 12, 2018.
- Older versions than flake8-import-order 0.17 are now unsupported.
(Under the hood, since flake8-import-order 0.17 refactored their internals
so that constants like
IMPORT_3RD_PARTY
,IMPORT_APP
,IMPORT_APP_PACKAGE
,IMPORT_APP_RELATIVE
, andIMPORT_STDLIB
are evolved toImportType
enum type, flake8-import-order-spoqa also became to follow that.) [#3]
Version 1.2.0
Released on November 27, 2017.
- Older versions than flake8-import-order 0.16 are now unsupported.
(Under the hood, since flake8-import-order 0.16 refactored their internals
so that no more
Style.check()
method andStyle.imports
property exist, flake8-import-order-spoqa also became to follow that.)
Version 1.1.0
Released on October 31, 2017.
- Older versions than flake8-import-order 0.14.2 are now unsupported.
Version 1.0.2
Released on October 31, 2017.
- Fixed incompatibility with flake8-import-order 0.14.1 or higher.
Version 1.0.1
Released on July 15, 2017.
- Fixed a bug that wrong order of names (e.g.
from ... import second, first
) had been not warned.
Version 1.0.0
Initial release. Released on February 12, 2017.