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:
- Remove unused imports
- Sort imports
- Reformat with
Black
- Run
flake8
andpylint
linters - Search for deadcode with
vulture
Obeys .flake8
, .pylintrc
and whitelist.py
config files in the current directory.
It meant be be executed in the root of the project.
Usage
- install
pipx
:
python3 -m pip install --user pipx
python3 -m pipx ensurepath
- Install
gadd
withpipx
:
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 withpipx
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
isort
s 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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | d7a53c6a448ae6683f106f1a2c878b319bdb46dd8d319e6f8836679471e6bc43 |
|
MD5 | 498a88edaedc3cb38cd3d363eef22749 |
|
BLAKE2b-256 | 62f69c898098f29237fb79ca7b9c7c257dd0877b1279d97ac4d6a66f609db3f4 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 797ed5dc0575783247686e390cd128246cecf9df7a41c1d8d431b785e702c1ca |
|
MD5 | dc4c1f97eb9824f166cd5652271f67ba |
|
BLAKE2b-256 | 8c272d8ff16f27a4115fb81dc395cfbd2ac601e4f332a74ec66f7246272bf239 |