Library for managing git hooks
Project description
Autohooks
Library for managing and writing git hooks in Python.
Looking for automatic formatting or linting, e.g., with black and pylint, while creating a git commit using a pure Python implementation? Welcome to autohooks!
Why?
Several outstanding libraries for managing and executing git hooks exist already. To name a few: husky, lint-staged, precise-commits or pre-commit.
However, they either need another interpreter besides python (like husky) or are too ambiguous (like pre-commit). pre-commit is written in python but has support hooks written in all kind of languages. Additionally, it maintains the dependencies by itself and does not install them in the current environment.
Solution
autohooks is a pure python library that installs a minimal executable git hook. It allows the decision of how to maintain the hook dependencies by supporting different modes.
Requirements
Python 3.7+ is required for autohooks.
Plugins
-
Python code formatting via black
-
Python code formatting via autopep8
-
Python code linting via pylint
-
Python code linting via flake8
-
Python import sorting via isort
-
Running tests via pytest
Installing autohooks
Quick installation of pylint and black plugins using poetry:
poetry add --dev autohooks autohooks-plugin-black autohooks-plugin-pylint
poetry run autohooks activate --mode poetry
poetry run autohooks plugins add autohooks.plugins.black autohooks.plugins.pylint
The output of autohooks activate
should be similar to
✓ autohooks pre-commit hook installed at /autohooks-test/.git/hooks/pre-commit using poetry mode.
Autohooks has an extensible plugin model. Each plugin provides different functionality which often requires to install additional dependencies.
For managing these dependencies currently three modes are supported by autohooks:
pythonpath
for dependency management via pippoetry
for dependency management via poetry (recommended)pipenv
for dependency management via pipenv
These modes handle how autohooks, the plugins and their dependencies are loaded during git hook execution.
If no mode is specified in the pyproject.toml
config file
and no mode is set during activation, autohooks
will use the pythonpath mode by default.
For more details on using pip, poetry or pipenv in conjunction with these modes see the documentation.
Maintainer
This project is maintained by Greenbone Networks GmbH.
Contributing
Your contributions are highly appreciated. Please create a pull request on GitHub. Bigger changes need to be discussed with the development team via the issues section at GitHub first.
License
Copyright (C) 2019 - 2022 Greenbone Networks GmbH
Licensed under the GNU General Public License v3.0 or later.
Project details
Release history Release notifications | RSS feed
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 autohooks-22.8.1.tar.gz
.
File metadata
- Download URL: autohooks-22.8.1.tar.gz
- Upload date:
- Size: 70.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4e68f8b615e32ea6da4b2576c2cfa459b81ee46ea98eaac80a05d59e0ffaa803 |
|
MD5 | 41fa8a804afafc147fcc56b7c936e978 |
|
BLAKE2b-256 | 5c0285c49ea145f1e90937d2c8170da3f1a1cf0c9a5f41f4d9a8b2ae78355368 |
Provenance
File details
Details for the file autohooks-22.8.1-py3-none-any.whl
.
File metadata
- Download URL: autohooks-22.8.1-py3-none-any.whl
- Upload date:
- Size: 40.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3343c8f50e00c9f6d3fc5e69f23f938d32dcac9d86bfcf667213c9836e07560b |
|
MD5 | 04b9a6dca72ccc089f826fcbd796d365 |
|
BLAKE2b-256 | ef6a8eedc548b7f62730b00d8d093a1ddf63721d9438932cb4260e3e837d0e6d |