Skip to main content

Sort imports, remove unused imports, run Black, flake8, pylint, vulture in one go for al staged .py files

Project description

gadd

Very opinionated formatting python files after git add

Intent

I needed a small tool to reformat and lint all the staged .py files according to the specific rules. I wanted it to be able to pip install it and available in the PATH. Also, I wanted to clearly see what changes are made by the formatter and be able to reverse it. It is called gadd because you run it after git add command. It will do:

Obeys .flake8, .pylintrc and whitelist.py config files in the current directory.

It meant be be executed in the root of the project.

Usage

python3 -m pip install --user pipx
python3 -m pipx ensurepath
  • Install gadd with pipx:
pipx install gadd
  • Stage file to test:
git add some_file.py
gadd

Publish to pip with poetry

Make it pip installable with CLI command.

Make and publish pip package with poetry:

  • Install poetry. I would highly recommend to install it with pipx
cd gadd
pipx install poetry
poetry init
  • Modify pyproject.toml file:
 [tool.poetry]
name = "gadd"
version = "0.1.0"
description = "Sort imports, remove unused imports, run Black, flake8, pylint, vulture in one go for al staged .py files"
authors = ["Almaz Kunpeissov <hello@akun.dev>"]
keywords = ["Black", "Sort imports", "analysis", "automation", "autopep8", "code", "flake8", "formatter", "gofmt", "lint", "linter", "pyfmt", "pylint", "python", "remove unused imports", "rustfmt", "static", "vulture", "yapf"]
readme = "README.md"
license = "MIT"
homepage = "https://github.com/almazkun/gadd"
repository = "https://github.com/almazkun/gadd"
documentation = "https://github.com/almazkun/gadd"
include = [
    "LICENSE",
]
classifiers = [
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Topic :: Software Development :: Quality Assurance",
    "Topic :: Software Development :: Debuggers",
]

[tool.poetry.dependencies]
python = "^3.6"
autoflake = "^1.4"
black = "^21"
flake8 =  "^4.0"
gitpython = "^3.1"
isort =  "^5.10"
pylint = "^2.11"
vulture = "^2.3"

[tool.poetry.dev-dependencies]

[tool.poetry.scripts]
gadd = 'gadd:main'

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
  • Poetry build wheels:
poetry build
  • Poetry publish:
poetry publish

TODO

  • load from .conf file for vulture
  • make it async
  • remove python warnings (PYLINTHOME is now '.cache/pylint' but obsolescent '.pylint.d' is found; you can safely remove the latter)
  • Fix isorts output

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

gadd-0.2.3.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

gadd-0.2.3-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file gadd-0.2.3.tar.gz.

File metadata

  • Download URL: gadd-0.2.3.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.8.9 Darwin/21.1.0

File hashes

Hashes for gadd-0.2.3.tar.gz
Algorithm Hash digest
SHA256 d7a53c6a448ae6683f106f1a2c878b319bdb46dd8d319e6f8836679471e6bc43
MD5 498a88edaedc3cb38cd3d363eef22749
BLAKE2b-256 62f69c898098f29237fb79ca7b9c7c257dd0877b1279d97ac4d6a66f609db3f4

See more details on using hashes here.

File details

Details for the file gadd-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: gadd-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.8.9 Darwin/21.1.0

File hashes

Hashes for gadd-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 797ed5dc0575783247686e390cd128246cecf9df7a41c1d8d431b785e702c1ca
MD5 dc4c1f97eb9824f166cd5652271f67ba
BLAKE2b-256 8c272d8ff16f27a4115fb81dc395cfbd2ac601e4f332a74ec66f7246272bf239

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