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 using pyproject.toml for its settings.

Looking for automatic formatting and linting, e.g., with black and [ruff], while creating a git commit using a pure Python implementation? Do you just want to have your git hook settings in the pyproject.toml file too?

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 need another interpreter besides python (like husky), require a different config file besides pyproject.toml 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 and stores its settings in the well known pyproject.toml file.

Autohooks

Requirements

Python 3.9+ is required for autohooks.

Plugins

  • Python code formatting via black

  • Python code formatting via autopep8

  • Python code linting via ruff

  • Python code linting via pylint

  • Python code linting via flake8

  • Python code linting via mypy

  • Python import sorting via isort

  • Running tests via pytest

Installing autohooks

Quick installation of [ruff] and black plugins using poetry:

poetry add --dev autohooks autohooks-plugin-black autohooks-plugin-ruff
poetry run autohooks activate --mode poetry
poetry run autohooks plugins add autohooks.plugins.black autohooks.plugins.ruff

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 AG.

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 - 2024 Greenbone AG

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-24.1.0.tar.gz (73.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

autohooks-24.1.0-py3-none-any.whl (35.2 kB view details)

Uploaded Python 3

File details

Details for the file autohooks-24.1.0.tar.gz.

File metadata

  • Download URL: autohooks-24.1.0.tar.gz
  • Upload date:
  • Size: 73.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for autohooks-24.1.0.tar.gz
Algorithm Hash digest
SHA256 0d6e2c8f564f752c916e93e31c4e528a715245cf1043f02f6b5b02e1a333be37
MD5 5ad2389a7b5d2e7504e3a1f5a3348e79
BLAKE2b-256 6724ceeb2043dcfa311ce0c9d1ec17d5ee702d3cdefeee8dd439cc8470e57f16

See more details on using hashes here.

File details

Details for the file autohooks-24.1.0-py3-none-any.whl.

File metadata

  • Download URL: autohooks-24.1.0-py3-none-any.whl
  • Upload date:
  • Size: 35.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for autohooks-24.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a3f253b764a2bfb5a0f257c973e5d8b603aac8cdbbeddc78a4b9a8e0e9098193
MD5 d358c055b2ae0783c2c2ad99e2bdcf1d
BLAKE2b-256 13f9908d2ba6633feffd5dd903a0ecc99f774b8098c6376b622169cc80561f44

See more details on using hashes here.

Supported by

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