Prerequisites
Node.js Version
3.12
Environment
Development
Current Behavior
The project currently uses multiple legacy tools for linting and formatting:
- Black (v24.10.0) - Code formatting
- isort (v5.13.2) - Import sorting
- Pylint (v3.3.2) - Linting
- Flake8 (if installed) - Linting
This creates:
- Dependency bloat with 4+ separate tools
- Slower CI/CD pipelines
- Configuration fragmentation across multiple sections
- Potential conflicts between tools (e.g., ISC001 warning)
Expected Behavior
Consolidate to Ruff (v0.7.1+) as the single tool for:
- Code formatting (replaces Black)
- Import sorting (replaces isort)
- Linting (replaces Pylint/Flake8)
Benefits:
- 10-100x faster than existing tools
- Single configuration section
- Unified pre-commit hooks
- Reduced dependency count
Steps To Reproduce
- Check
pyproject.toml [project.optional-dependencies] section
- See Black, isort, Pylint listed
- Check
[tool.black] and [tool.isort] configurations
- Check
.pre-commit-config.yaml for multiple formatter/linter hooks
Error Logs
This is causing frequent IDE crashes.
Additional Context
Migration Checklist
1. Update Dependencies
# Remove legacy packages
uv pip uninstall black isort pylint flake8
# Reinstall with updated dev dependencies
uv pip install -e ".[dev]"
2. Configuration Changes
3. Pre-commit Hooks
4. CI/CD Updates
5. Documentation Updates
6. Validation
# Format all code
ruff format .
# Run linter with auto-fix
ruff check . --fix
# Verify pre-commit hooks
pre-commit install
pre-commit run --all-files
# Run tests to ensure no breakage
pytest
Configuration Reference
Ruff Configuration (pyproject.toml)
[tool.ruff]
line-length = 88
target-version = "py312"
[tool.ruff.lint]
select = ["E", "F", "I", "N", "W", "UP", "B", "A", "C4", "DTZ", "T10", "EM", "ISC", "ICN", "PIE", "PT", "Q", "RSE", "RET", "SIM", "TID", "ARG", "PTH", "PD", "PL", "TRY", "RUF"]
ignore = ["E501", "ISC001", "TRY003", "PLR0913", "PLR2004"]
[tool.ruff.lint.isort]
known-first-party = ["src"]
Prerequisites
Node.js Version
3.12
Environment
Development
Current Behavior
The project currently uses multiple legacy tools for linting and formatting:
This creates:
Expected Behavior
Consolidate to Ruff (v0.7.1+) as the single tool for:
Benefits:
Steps To Reproduce
pyproject.toml[project.optional-dependencies]section[tool.black]and[tool.isort]configurations.pre-commit-config.yamlfor multiple formatter/linter hooksError Logs
Additional Context
Migration Checklist
1. Update Dependencies
2. Configuration Changes
black,isort,pylintfrompyproject.tomldev dependencies[tool.black]configuration section[tool.isort]configuration section[tool.ruff],[tool.ruff.lint],[tool.ruff.format]sectionsISC001to ignore list to prevent formatter conflicts3. Pre-commit Hooks
.pre-commit-config.yaml.pre-commit-config.yamlastral-sh/ruff-pre-commitwith bothruffandruff-formathooks4. CI/CD Updates
ruff checkinstead ofblack --checkandisort --check-onlyruff format --checkfor format validation5. Documentation Updates
6. Validation
Configuration Reference
Ruff Configuration (pyproject.toml)