Skip to main content

Tool to automatically fix some issues reported by flake8 (forked from autoflake).

Project description

autoflake8

Build

Introduction

autoflake8 removes unused imports and unused variables from Python code. It makes use of pyflakes to do this.

By default, autoflake8 only removes unused imports for modules that are part of the standard library. (Other modules may have side effects that make them unsafe to remove automatically.) Removal of unused variables is also disabled by default.

autoflake8 also removes useless pass statements.

It's a maintained fork of autoflake.

Example

Running autoflake8 on the below example::

$ autoflake8 --in-place --remove-unused-variables example.py
import math
import re
import os
import random
import multiprocessing
import grp, pwd, platform
import subprocess, sys


def foo():
    from abc import ABCMeta, WeakSet
    try:
        import multiprocessing
        print(multiprocessing.cpu_count())
    except ImportError as exception:
        print(sys.version)
    return math.pi

Results in:

import math
import sys


def foo():
    try:
        import multiprocessing
        print(multiprocessing.cpu_count())
    except ImportError:
        print(sys.version)
    return math.pi

Installation

$ pip install --upgrade autoflake8

Advanced usage

To remove unused variables, use the --remove-unused-variables option.

Below is the full listing of options::

% poetry run autoflake8 --help
usage: autoflake [-h] [-c] [-r] [--exclude globs] [--expand-star-imports] [--remove-duplicate-keys] [--remove-unused-variables] [--version] [-v] [-i | -s] files [files ...]

positional arguments:
  files                 files to format

optional arguments:
  -h, --help            show this help message and exit
  -c, --check           return error code if changes are needed
  -r, --recursive       drill down directories recursively
  --exclude globs       exclude file/directory names that match these comma-separated globs
  --expand-star-imports
                        expand wildcard star imports with undefined names; this only triggers if there is only one star import in the file; this is skipped if there are any uses of `__all__` or `del` in the file
  --remove-duplicate-keys
                        remove all duplicate keys in objects
  --remove-unused-variables
                        remove unused variables
  --version             show program's version number and exit
  -v, --verbose         print more verbose logs (you can repeat `-v` to make it more verbose)
  -i, --in-place        make changes to files instead of printing diffs
  -s, --stdout          print changed text to stdout. defaults to true when formatting stdin, or to false otherwise

Tests

To run the unit tests::

$ poetry run pytest

There is also a fuzz test, which runs against any collection of given Python files. It tests autoflake8 against the files and checks how well it does by running pyflakes on the file before and after. The test fails if the pyflakes results change for the worse. (This is done in memory. The actual files are left untouched.)::

$ poetry run scripts/test_fuzz.py

Excluding specific lines

It might be the case that you have some imports for their side effects, even if you are not using them directly in that file.

That is common, for example, in Flask based applications. In where you import Python modules (files) that imported a main app, to have them included in the routes.

For example:

from .endpoints import role, token, user, utils

To prevent that, without having to exclude the entire file, you can add a # noqa comment at the end of the line, like:

from .endpoints import role, token, user, utils  # noqa

That line will instruct autoflake8 to let that specific line as is.

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

autoflake8-0.1.1.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

autoflake8-0.1.1-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

Details for the file autoflake8-0.1.1.tar.gz.

File metadata

  • Download URL: autoflake8-0.1.1.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.8 CPython/3.9.6 Linux/5.8.0-1040-azure

File hashes

Hashes for autoflake8-0.1.1.tar.gz
Algorithm Hash digest
SHA256 0c49226430280e0b798ba3d60dba41ffd5ac654cdf55a702fe6b73291cae5f51
MD5 695c9de3965389fb56ff975984820def
BLAKE2b-256 22555c9df06ee14667470efa1f157d51d84aac6f39bfa0bfcfdfcd7d03146b08

See more details on using hashes here.

File details

Details for the file autoflake8-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: autoflake8-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 17.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.8 CPython/3.9.6 Linux/5.8.0-1040-azure

File hashes

Hashes for autoflake8-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 edc98e970a60b2050be4f6c7074a30c04bd0e405bff892a97b89e1c61384d5f7
MD5 aef161c7d1608ff70010f57fa0fb796d
BLAKE2b-256 9d379a901eb112c8470ea6101d8410d08785740fedbba64930b3698ccfea1b36

See more details on using hashes here.

Supported by

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