Skip to main content

Library for managing git hooks

Project description

Greenbone Logo

Autohooks

PyPI release Build and test Python package codecov

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.

Autohooks

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 pip
  • poetry 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


Download files

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

Source Distribution

autohooks-22.8.1.tar.gz (70.5 kB view details)

Uploaded Source

Built Distribution

autohooks-22.8.1-py3-none-any.whl (40.1 kB view details)

Uploaded Python 3

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

Hashes for autohooks-22.8.1.tar.gz
Algorithm Hash digest
SHA256 4e68f8b615e32ea6da4b2576c2cfa459b81ee46ea98eaac80a05d59e0ffaa803
MD5 41fa8a804afafc147fcc56b7c936e978
BLAKE2b-256 5c0285c49ea145f1e90937d2c8170da3f1a1cf0c9a5f41f4d9a8b2ae78355368

See more details on using hashes here.

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

Hashes for autohooks-22.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3343c8f50e00c9f6d3fc5e69f23f938d32dcac9d86bfcf667213c9836e07560b
MD5 04b9a6dca72ccc089f826fcbd796d365
BLAKE2b-256 ef6a8eedc548b7f62730b00d8d093a1ddf63721d9438932cb4260e3e837d0e6d

See more details on using hashes here.

Provenance

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