Skip to main content

A flake8 plugin that helps you write tidier imports.

Project description

Flake8 Tidy Imports

https://img.shields.io/pypi/v/flake8-tidy-imports.svg https://img.shields.io/travis/adamchainz/flake8-tidy-imports.svg https://img.shields.io/badge/code%20style-black-000000.svg

A flake8 plugin that helps you write tidier imports.

Installation

Install from pip with:

pip install flake8-tidy-imports

Python 3.5-3.8 supported.

When installed it will automatically be run as part of flake8; you can check it is being picked up with:

$ flake8 --version
2.4.1 (pep8: 1.7.0, pyflakes: 0.8.1, flake8-tidy-imports: 1.0.0, mccabe: 0.3.1) CPython 2.7.11 on Darwin

Options

banned-modules

Config for rule I201 (see below). A map where each line is a banned import string, followed by ‘=’, then the message to use when encountering that banned import. Note that despite the name, you can ban imported objects too, since the syntax is the same, such as decimal.Decimal.

There is also a special directive to ban a preselected list of removed/moved modules between Python 2 and Python 3, recommending replacements, from six where possible. It can be turned on by adding {python2to3} to the list of banned-modules.

Whilst the option can be passed on the commandline, it’s much easier to configure it in your config file, such as setup.cfg, for example:

[flake8]
banned-modules = mock = use unittest.mock!
                 urlparse = use six.moves.urllib.parse!
                 {python2to3}

ban-relative-imports

Enables rule I202, which bans relative imports. See below.

[flake8]
ban-relative-imports = true

Rules

Currently this plugin has two rules.

I200: Unnecessary import alias

Complains about unnecessary import aliasing of three forms:

  • import foo as foo -> import foo

  • import foo.bar as bar -> from foo import bar

  • from foo import bar as bar -> from foo import bar

The message includes the suggested rewrite (which may not be correct at current), for example:

$ flake8 file.py
file.py:1:1: I200 Unnecessary import alias - rewrite as 'from foo import bar'.

I201: Banned import ‘foo’ used

Complains about importing of banned imports. This might be useful when refactoring code, for example when moving from Python 2 to 3. By default there are no imports banned - you should configure them with banned-modules as described above in ‘Options’.

The message includes a user-defined part that comes from the configuration. For example:

$ flake8 file.py
file.py:1:1: I201 Banned import 'mock' used - use unittest.mock instead.

I202: Relative imports are banned.

Complains about use of relative imports:

  • from . import foo

  • from .bar import foo

Needs enabling with ban-relative-imports configuration option.

History

3.1.0 (2019-11-15)

  • Support Python 3.8.

  • Converted setuptools metadata to configuration file. This meant removing the __version__ attribute from the package. If you want to inspect the installed version, use importlib.metadata.version("flake8-tidy-imports") (docs / backport).

  • Add dependency on importlib-metadata.

3.0.0 (2019-10-15)

  • Add rule I202 to ban relative imports, when activated with the new ban-relative-imports configuration option.

  • Update Python support to 3.5-3.7, as 3.4 has reached its end of life.

  • Update Flake8 support to 3.0+ only. 3.0.0 was released in 2016 and the plugin hasn’t been tested with it since.

2.0.0 (2019-02-02)

  • Drop Python 2 support, only Python 3.4+ is supported now.

1.1.0 (2017-07-10)

  • Added a big list of python 2 to 3 import bans for I201, which can be activated by adding {python2to3} to the banned-modules option.

1.0.6 (2017-03-07)

  • Fixed the whitespace in the help message for --banned-modules.

1.0.5 (2017-01-13)

  • Changed the error message for I201 to be about the banned import instead of module.

  • Fix a bug introduced in 1.0.4 that broke parsing relative imports.

1.0.4 (2017-01-12)

  • Don’t allow installation with Flake8 3.2.0 which doesn’t enable the plugin. This bug was fixed in Flake8 3.2.1.

  • Use the most specific message available for a banned import.

1.0.3 (2016-11-05)

  • Fixed reading config from flake8 3+

1.0.2 (2016-07-04)

  • Fixed I201 rule to detect banned imports like from x import y.

1.0.1 (2016-07-01)

  • I201 rule that allows you to configure complaining about certain modules being imported, e.g. if you are moving from Python 2 to 3 you could stop urlparse being imported in favour of six.moves.urllib.parse.

1.0.0 (2016-01-23)

  • First release on PyPI.

  • I200 rule that complains about unnecessary import aliasing, e.g. from foo import bar as bar.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flake8-tidy-imports-3.1.0.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flake8_tidy_imports-3.1.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file flake8-tidy-imports-3.1.0.tar.gz.

File metadata

  • Download URL: flake8-tidy-imports-3.1.0.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.4

File hashes

Hashes for flake8-tidy-imports-3.1.0.tar.gz
Algorithm Hash digest
SHA256 4b8a9e9a2fc4e8825d57e41315ff17ab046f31243ab0bda5527f973378e9892e
MD5 1e6c55ecc0a19664435cd5a8ac3c9667
BLAKE2b-256 1587b59c2e594056d0132659a1ba78f6eb81d903bb5d7ed980f95ed842c03bd3

See more details on using hashes here.

File details

Details for the file flake8_tidy_imports-3.1.0-py3-none-any.whl.

File metadata

  • Download URL: flake8_tidy_imports-3.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.4

File hashes

Hashes for flake8_tidy_imports-3.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1aae368561f79b5db7687e78015981a854fa4656158bf1f3f12c7ff597672140
MD5 52f315a49e77883d770b9f1a15c156e9
BLAKE2b-256 b717f76c7c0fa2507880aa2add0b78998ea6bcf3c166df72b987e2a808db9811

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page