A unified CLI tool for code formatting, linting, and quality assurance
Project description
Lintro
A comprehensive CLI tool that unifies various code formatting, linting, and quality assurance tools under a single command-line interface.
๐ Quick Start
pip install lintro # Install
lintro check . # Find issues
lintro format . # Fix issues
lintro check --output-format grid # Beautiful output
โจ Why Lintro?
- ๐ฏ Unified Interface - One command for all your linting and formatting tools
- ๐ Consistent Output - Beautiful, standardized output formats across all tools
- ๐ง Auto-fixing - Automatically fix issues where possible
- ๐ณ Docker Ready - Run in isolated containers for consistent environments
- ๐ Rich Reporting - Multiple formats: grid, JSON, HTML, CSV, Markdown
- โก Fast - Optimized parallel execution
๐ Works With Your Existing Configs
Lintro respects your native tool configurations. If you have a .prettierrc,
pyproject.toml [tool.ruff], or .yamllint, Lintro uses them automatically - no
migration required.
- Native configs are detected - Your existing
.prettierrc,.eslintrc, etc. work as-is - Enforce settings override consistently - Set
line_length: 88once, applied everywhere - Fallback defaults when needed - Tools without native configs use sensible defaults
See the Configuration Guide for details on the 4-tier config system.
๐ ๏ธ Supported Tools
๐ Requirements
Python Version
Python 3.11+ is required. Lintro uses modern Python features not available in older versions.
Bundled Tools
These Python tools are automatically installed with Lintro:
- Ruff - Fast Python linter and formatter
- Black - Python code formatter
- Bandit - Python security linter
- Mypy - Python static type checker
- Yamllint - YAML linter
- Darglint - Python docstring linter
Optional External Tools
For full functionality, install these additional tools:
- Prettier -
npm install -g prettier - Markdownlint-cli2 -
npm install -g markdownlint-cli2 - Hadolint - GitHub Releases
- Actionlint - GitHub Releases
- Semgrep -
pipx install semgrep,pip install semgrep, orbrew install semgrep - Gitleaks -
brew install gitleaksor GitHub Releases - ShellCheck -
brew install shellcheckor GitHub Releases - shfmt -
brew install shfmtor GitHub Releases - SQLFluff -
pip install sqlfluff - Taplo -
brew install taploor GitHub Releases
Check all tool versions with: lintro list-tools
๐ฆ Installation
# PyPI (recommended)
pip install lintro
# Homebrew (macOS binary)
brew tap TurboCoder13/tap && brew install lintro-bin
# Docker (includes all tools)
docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check
See Getting Started for detailed installation options.
๐ป Usage
# Check all files
lintro check .
# Auto-fix issues
lintro format .
# Grid output with grouping
lintro check --output-format grid --group-by file
# Run specific tools
lintro check --tools ruff,prettier,mypy
# Exclude directories
lintro check --exclude "node_modules,dist,venv"
# List available tools
lintro list-tools
๐ณ Docker
# Run from GHCR
docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check
# With formatting
docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check --output-format grid
๐ Documentation
| Guide | Description |
|---|---|
| Getting Started | Installation, first steps, requirements |
| Configuration | Tool configuration, options, presets |
| Docker Usage | Containerized development |
| GitHub Integration | CI/CD setup, workflows |
| Contributing | Development guide, adding tools |
| Troubleshooting | Common issues and solutions |
Advanced: Tool Analysis | Architecture | Security
๐จ Development
# Clone and install
git clone https://github.com/TurboCoder13/py-lintro.git
cd py-lintro
uv sync --dev
# Run tests
./scripts/local/run-tests.sh
# Run lintro on itself
./scripts/local/local-lintro.sh check --output-format grid
๐ค Community
- ๐ Bug Reports
- ๐ก Feature Requests
- โ Questions
- ๐ Contributing Guide
๐ License
MIT License - see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lintro-0.37.7.tar.gz.
File metadata
- Download URL: lintro-0.37.7.tar.gz
- Upload date:
- Size: 1.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eaffe517436e898caaca0e7ac9d372db9a568007f9642c1cc27c836b933eed34
|
|
| MD5 |
6baf1f3b703803be5d3425567fcafebf
|
|
| BLAKE2b-256 |
924605eb369baefe793b2ed9a427a609fc6d4d40bc378af6524ddcbc0fe42039
|
Provenance
The following attestation bundles were made for lintro-0.37.7.tar.gz:
Publisher:
publish-pypi-on-tag.yml on TurboCoder13/py-lintro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lintro-0.37.7.tar.gz -
Subject digest:
eaffe517436e898caaca0e7ac9d372db9a568007f9642c1cc27c836b933eed34 - Sigstore transparency entry: 852691969
- Sigstore integration time:
-
Permalink:
TurboCoder13/py-lintro@d929ee6fb6da3217c8ac7c1b95faaf9dc41d370a -
Branch / Tag:
refs/tags/v0.37.7 - Owner: https://github.com/TurboCoder13
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi-on-tag.yml@d929ee6fb6da3217c8ac7c1b95faaf9dc41d370a -
Trigger Event:
push
-
Statement type:
File details
Details for the file lintro-0.37.7-py3-none-any.whl.
File metadata
- Download URL: lintro-0.37.7-py3-none-any.whl
- Upload date:
- Size: 389.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a625e8e0c20717d794c3fe1ec364ecc0f346de5f57ce963549fc9d5f7b80c2d2
|
|
| MD5 |
5f983225192e11385fd893762e992fd0
|
|
| BLAKE2b-256 |
a015e1d5f931dcd5122d5c959e4b28f33b72eb399d20a1e3cf727f3fb1ac9272
|
Provenance
The following attestation bundles were made for lintro-0.37.7-py3-none-any.whl:
Publisher:
publish-pypi-on-tag.yml on TurboCoder13/py-lintro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lintro-0.37.7-py3-none-any.whl -
Subject digest:
a625e8e0c20717d794c3fe1ec364ecc0f346de5f57ce963549fc9d5f7b80c2d2 - Sigstore transparency entry: 852692053
- Sigstore integration time:
-
Permalink:
TurboCoder13/py-lintro@d929ee6fb6da3217c8ac7c1b95faaf9dc41d370a -
Branch / Tag:
refs/tags/v0.37.7 - Owner: https://github.com/TurboCoder13
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi-on-tag.yml@d929ee6fb6da3217c8ac7c1b95faaf9dc41d370a -
Trigger Event:
push
-
Statement type: