An interactive QA tool for Python projects featuring parallel testing, database switching, and a rich terminal interface.
Phase: Planning & Analysis
This repository documents the extraction of a QA tool from another project. The analysis phase demonstrates systematic project planning, dependency mapping, and migration strategy development.
This project extracts and generalizes a custom QA tool originally built for internal use, transforming it into a standalone, reusable developer tool. The tool provides:
- Interactive Menu System - Single-key navigation for common QA tasks
- Parallel Test Execution - Configurable worker pools (Fibonacci sequence selection)
- Database Switching - Seamless SQLite/PostgreSQL test environment toggling
- Rich Terminal Output - Color-coded output with progress indicators
- Unified Formatting - Coordinated code (Ruff) and template (djlint) formatting
- Smart Integration - Project-specific configuration via
pyproject.toml
Planning documents available in docs/planning/
:
- CLI Commands Analysis - Complete command structure and user interaction flows
- Configuration Schema - PyPI-ready configuration design with validation
- Integration Analysis - Current usage patterns, dependencies, and migration strategy
- References Analysis - Full dependency mapping and impact assessment
qa i # Interactive menu with rerun options
qa check # Run all QA checks with results summary
qa check --fix # Auto-fix all issues
qa format # Code + template formatting
qa lint # Linting checks
qa typecheck # Type checking with mypy
qa test # Run test suite
qa newlines # Trailing newlines validation
[tool.qa]
lint_tool = ["ruff", "check"]
format_tool = ["ruff", "format"]
typecheck_tool = ["mypy"]
paths = ["src/", "tests/"]
template_paths = ["templates/"]
- Codebase scanning for dependencies and references
- Integration point mapping with CI/CD systems
- Migration impact assessment across documentation and workflows
- Backwards compatibility planning
- Tool Execution:
uv tool run
for isolated environments - Configuration:
pyproject.toml
with[tool.qa]
section - Extensibility: Plugin architecture for custom checks
- Distribution: PyPI package with global installation
- ✅ Phase 0: Analysis (Current) - Requirements gathering and documentation
- 🔄 Phase 1: Extraction - Code isolation and generalization
- 📋 Phase 2: Testing - Test coverage and validation
- 📋 Phase 3: Distribution - PyPI packaging and documentation
- 📋 Phase 4: Migration - Original project integration
- CLI Framework: Typer with Rich for terminal UI
- Testing: pytest with xdist for parallelization
- Type Checking: mypy with strict configuration
- Code Quality: Ruff for linting and formatting
- Template Support: djlint for Jinja2/HTML templates
- Package Management: uv for modern Python tooling
Once published to PyPI:
uv tool install qa
MIT License - See LICENSE for details
Jörn Preuß (joern.preuss@gmail.com)