Skip to main content

Python hooks for Claude Code

Project description

python-claude

Python hooks for Claude Code for projects using:

  • poetry
  • ruff
  • mypy
  • pytest

The hooks ensure that the quality tools are automatically used:

Each time a file is edited:

  • Reformat with ruff format
  • Type-check with mypy
  • Record the file

When claude is ready to stop:

  • Repair lints of edited files with ruff check --fix. (We do not do this while editing files, becaue it Claude tends to add import statements in a dedicated edit, ahead of adding the code that uses it. In this case, ruff check --fix would erase the "unused" import.)
  • Run the tests with pytest.

Installation

poetry add python-claude

Usage

This package provides hooks that can be used with Claude Code's hook system.

Available Commands

  • edited - Tracks edited Python files for deferred processing
  • git status - Shows git status
  • mypy - Runs mypy type checking on edited files when used as a PostToolUse hook or all files when used as a Stop hook
  • pytest - Runs pytest
  • ruff check - Runs ruff check on collected files with auto-fix
  • ruff format - Runs ruff format on edited files
  • session start - Prints introductory message about automatic hooks

Claude Code Settings

Add hooks to your Claude Code settings.json:

{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "poetry run python-claude session start"
          },
          {
            "type": "command",
            "command": "poetry run python-claude git status"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "poetry run python-claude ruff check"
          },
          {
            "type": "command",
            "command": "poetry run python-claude mypy"
          },
          {
            "type": "command",
            "command": "poetry run python-claude pytest"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "poetry run python-claude ruff format"
          },
          {
            "type": "command",
            "command": "poetry run python-claude edited"
          },
          {
            "type": "command",
            "command": "poetry run python-claude mypy"
          }
        ]
      }
    ]
  }
}

Development

poetry install
poetry run pytest
poetry run ruff check
poetry run mypy src

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

python_claude-0.2.0.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

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

python_claude-0.2.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file python_claude-0.2.0.tar.gz.

File metadata

  • Download URL: python_claude-0.2.0.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.13.3 Darwin/25.1.0

File hashes

Hashes for python_claude-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a754761611e78be6c01195f04389131cd19f24fa6726fb60592f3454b836a833
MD5 7e585d26e3e7255ef7c429569fe6cbe5
BLAKE2b-256 7038076e32d9816be478bcb2f34d71a0274ca470f10b78182558ba67408fa52a

See more details on using hashes here.

File details

Details for the file python_claude-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: python_claude-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.13.3 Darwin/25.1.0

File hashes

Hashes for python_claude-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2cbb91674d7bf15b7a416e17b5b512e319099d4a612563efd1ae335f117934ad
MD5 661956c434eba6adf17b45fa49222f75
BLAKE2b-256 e70a47adcfd6e6a205248fa8c9122bcdd75ff8007a5717847cc25a9a73ba9596

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