Skip to main content

Rattle

Tests Documentation Status PyPI version Supported versions Downloads License: MIT

Rattle is a Python linting framework built on LibCST with support for autofixes, custom in-repo lint rules, and hierarchical configuration.

Rattle is a fork of Fixit.

Features

  • 48 built-in lint rules
  • Autofix support when a rule can safely rewrite code
  • Local custom rules that can live inside your repository
  • Hierarchical pyproject.toml configuration
  • Pre-commit integration for CI and local workflows
  • LSP support

Install

From PyPI

uv tool install rattle-lint
pip install rattle-lint

With editor/LSP support

uv tool install "rattle-lint[lsp]"
pip install "rattle-lint[lsp]"

Agent Skill

The official AI agent skill can be installed from this repo.

npx skills add https://github.com/zigai/rattle/tree/main/src/rattle/.agents/skills/create-rattle-lint-rules

or

uvx library-skills

Basic Usage

Rattle enables no rules by default. A practical baseline for a typical typed Python project is:

[tool.rattle]
root = true
enable = [
    "blank-line-after-control-block",
    "blank-line-after-terminal-control-block",
    "blank-line-before-branch",
    "blank-line-before-unrelated-block",
    "no-suite-leading-trailing-blank-lines",
    "module-all-at-bottom",
    "no-underscore-all-exports",
    "forbidden-call",
    "no-relative-imports",
    "no-underscore-import-aliases",
    "no-unsafe-tempfile-factories",
    "no-annotated-self",
    "no-exception-message-variables",
    "no-str-exception-translation",
    "no-underscore-class",
    "public-method-order",
    "no-bare-object-annotations",
    "no-named-tuple",
    "no-static-if-condition",
    "sorted-attributes",
    "use-callable-ellipsis",
]

[tool.rattle.options."forbidden-call"]
forbidden_calls = ["typing.cast"]

Adjust the list to match the project, then lint the repository:

rattle lint .

Apply available autofixes:

rattle fix .

Explain rule metadata, examples, and settings:

rattle explain no-bare-object-annotations
rattle explain --json no-bare-object-annotations

License

MIT

Download files

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

Source Distribution

rattle_lint-2.7.0.tar.gz (326.9 kB view details)

Uploaded Source

Built Distribution

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

rattle_lint-2.7.0-py3-none-any.whl (245.5 kB view details)

Uploaded Python 3

File details

Details for the file rattle_lint-2.7.0.tar.gz.

File metadata

  • Download URL: rattle_lint-2.7.0.tar.gz
  • Upload date:
  • Size: 326.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for rattle_lint-2.7.0.tar.gz
Algorithm Hash digest
SHA256 850cd54f3d46e15273f620b580a97794969e49804b6c8cd3f69c765b90155278
MD5 683120f123bd6c74c01a23e69723bb53
BLAKE2b-256 9eae00cb69f8e354392449af07f00f8fd2b315a5e3493e0f3a6fa525fa263d2c

See more details on using hashes here.

File details

Details for the file rattle_lint-2.7.0-py3-none-any.whl.

File metadata

  • Download URL: rattle_lint-2.7.0-py3-none-any.whl
  • Upload date:
  • Size: 245.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for rattle_lint-2.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 902026e2d4a775873a15e003421a966c12b607f2b034257aa8b80291f48340d2
MD5 09d1ad7d7cd0f6bfc53a372a17865a77
BLAKE2b-256 b949243b36d0724e7f2e27cb0637c04fd5911975fd135ad6b02243202bc4c1e1

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 Sentry Error logging StatusPage Status page