Skip to main content

A unified CLI tool for code formatting, linting, and quality assurance

Project description

Lintro

Lintro Logo

A comprehensive CLI tool that unifies various code formatting, linting, and quality assurance tools under a single command-line interface.

Tests CI Docker Coverage

Release PyPI Python License

CodeQL OpenSSF Scorecard OpenSSF Best Practices SBOM SBOM Status

🚀 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: 88 once, 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

Tool Language Auto-fix
Ruff 🐍 Python
Black 🐍 Python
Mypy 🐍 Python -
Bandit 🐍 Python -
Prettier 🟨 JS/TS · 🧾 JSON
Biome 🟨 JS/TS · 🧾 JSON/CSS
Yamllint 🧾 YAML -
Hadolint 🐳 Dockerfile -
Actionlint ⚙️ GitHub Actions -
Markdownlint 📝 Markdown -
Clippy 🦀 Rust
Darglint 🐍 Python -

📋 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:

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

📄 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

lintro-0.25.0.tar.gz (1.6 MB view details)

Uploaded Source

Built Distribution

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

lintro-0.25.0-py3-none-any.whl (337.7 kB view details)

Uploaded Python 3

File details

Details for the file lintro-0.25.0.tar.gz.

File metadata

  • Download URL: lintro-0.25.0.tar.gz
  • Upload date:
  • Size: 1.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lintro-0.25.0.tar.gz
Algorithm Hash digest
SHA256 d70afeb49ac547eb2b0c3ea066f0e950955a2e978ba09ae0c87d6f8741083b18
MD5 5c7ce8380be43914ef23a4c956e925d8
BLAKE2b-256 f6f3032d6fae5a633cecf2859a06a80002465912a9d099fb5dd289fb3352d84e

See more details on using hashes here.

Provenance

The following attestation bundles were made for lintro-0.25.0.tar.gz:

Publisher: publish-pypi-on-tag.yml on TurboCoder13/py-lintro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lintro-0.25.0-py3-none-any.whl.

File metadata

  • Download URL: lintro-0.25.0-py3-none-any.whl
  • Upload date:
  • Size: 337.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lintro-0.25.0-py3-none-any.whl
Algorithm Hash digest
SHA256 abddae8b27763bedcb27a32e4df1e494f96aaf75873096a70c56bd3a8e4f3fb9
MD5 33a0400acb70ee49a4c82213ccc43e5a
BLAKE2b-256 d5e3d0c2b61359b6e1e7f12751a4ff6b06e12e718f1586e3f1d6f91392f02dc3

See more details on using hashes here.

Provenance

The following attestation bundles were made for lintro-0.25.0-py3-none-any.whl:

Publisher: publish-pypi-on-tag.yml on TurboCoder13/py-lintro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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