fixit
A lint framework that writes better Python code for you.
What it is and what it does
Fixit is a linting framework that analyzes Python code using LibCST to detect style and quality issues, then suggests or automatically applies fixes. It's designed for teams that want to enforce custom coding standards beyond what standard linters provide, with support for hierarchical configuration and local rule definitions. The framework handles the heavy lifting of AST traversal and code transformation, letting you focus on defining what constitutes a violation and how to fix it.
The package is built around the idea that linting should be both configurable and actionable—rules can propose changes that developers accept interactively or automatically. Fixit 2.0 represents a significant rebuild from earlier versions, with improved configuration handling and better support for custom rules, though this means projects on older versions may need migration effort.
Use it for:
- Enforce team-specific code style rules that go beyond PEP 8 or standard linters like flake8.
- Auto-fix common code patterns across a large codebase with suggested changes for review.
- Build a custom linting layer for a framework or library to guide users toward best practices.
- Integrate lint rules into CI/CD pipelines with automatic fix application for low-risk violations.
- Create organization-wide lint rules that apply consistently across multiple projects.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Fixit is a configurable linting framework built on LibCST that detects code issues and generates suggested auto-fixes, which can be applied automatically or reviewed before acceptance.
Yes, if you need a customizable linting framework with auto-fix capability. Fixit is actively maintained, has low install friction, and is permissively licensed. The Alpha status and need to migrate from older versions are minor concerns; the real question is whether you need custom rules—if standard linters suffice, Fixit adds unnecessary complexity.
Install
fixit on PyPI
pip
pip install fixituv
uv add fixitpoetry
poetry add fixitInstalling fixit
Before you install
Low install friction with a pure-Python wheel and six runtime dependencies. Actively maintained with a recent release and ongoing repository activity; marked as Alpha in development status but in active use.
License in practice
MIT licensed under permissive terms, allowing commercial and private use with minimal restrictions. Includes additional Apache 2.0 license text in the package metadata.
Quickstart
pip install fixit
import fixit
from fixit.rules import Rule
# Define or use built-in rules, then run linter on code
Requires Python 3.9 or later.
Verify before relying
- Whether Fixit 2.0's configuration and custom rule API are stable or still subject to breaking changes despite active maintenance.
- Specific performance characteristics when linting large codebases or complex rule sets.
- Extent of built-in rule library versus reliance on writing custom rules.
Package facts
| License | MIT License Copyright (c) Facebook, Inc. and its affiliates. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the… (full text in the JSON record) (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 6 — click, libcst, moreorless, packaging, tomli, trailrunner |
| Maintenance | actively maintained — 275 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 417,754/month — #6,809 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: fixit-2.2.1-py3-none-any.whl
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
libcstlibcst parses Python source code into a…
permissive · top 1,000 on PyPI
rumdlA Rust-based Markdown linter and formatter that…
permissive · top 5,000 on PyPI
sphinx-lintSphinx Lint checks reStructuredText and Python…
permissive · top 15,000 on PyPI
gitlint-coreLints Git commit messages against configurable…
permissive · top 5,000 on PyPI
pytest-pylintIntegrates pylint code analysis into pytest,…
permissive · top 15,000 on PyPI
tclinttclint is a CLI linter, formatter, and language…
permissive · top 15,000 on PyPI
ruffRuff is a Python linter and code formatter…
permissive · top 1,000 on PyPI
salt-lintsalt-lint checks Salt State files (SLS) for…
permissive · top 15,000 on PyPI
wemake-python-styleguideA flake8 plugin that enforces strict,…
permissive · top 15,000 on PyPI
flake8-pytest-styleA flake8 plugin that detects and reports style…
unclear · top 15,000 on PyPI