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
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.
Written by Hong Minhee, and distributed under GPLv3 or later.
To be released.
Released on August 31, 2018.
- The
dataclasses
module, liketyping
, now can be imported without a qualifier (e.g.,from dataclasses import ...
).
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.
Released on May 22, 2018.
- Python 3.3 became no more supported.
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]
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.)
Released on October 31, 2017.
- Older versions than flake8-import-order 0.14.2 are now unsupported.
Released on October 31, 2017.
- Fixed incompatibility with flake8-import-order 0.14.1 or higher.
Released on July 15, 2017.
- Fixed a bug that wrong order of names (e.g.
from ... import second, first
) had been not warned.
Initial release. Released on February 12, 2017.