Skip to content

Consider removing ruff from linting pipeline #23

@dandye

Description

@dandye

Background

Currently we use both ruff (for linting) and pyink (for formatting) in our pre-commit pipeline. Since we switched to pyink for formatting to support 2-space indentation, we should evaluate whether ruff is still providing enough value to justify the complexity.

Current Setup

  • ruff: Python linting (pycodestyle, pyflakes, etc.)
  • pyink: Python formatting with 2-space indentation
  • mypy: Type checking
  • bandit: Security scanning

Considerations

Pros of keeping ruff:

  • Very fast (Rust-based)
  • Comprehensive linting rules
  • Active development
  • Industry standard

Cons of keeping ruff:

  • Additional tool to configure and maintain
  • Some overlap with pyink's style checking
  • Added complexity for developers

Options to Evaluate

  1. Keep current setup - ruff + pyink + mypy
  2. Remove ruff entirely - rely on pyink + mypy + bandit
  3. Minimal ruff config - keep only basic error checking (F, E, W codes)
  4. Replace with flake8 - more traditional, potentially simpler

Success Criteria

  • Maintain code quality standards
  • Minimize developer friction
  • Keep CI/CD pipeline efficient
  • Ensure 2-space indentation is enforced

Next Steps

  • Benchmark current linting performance
  • Test pyink-only workflow on a branch
  • Gather developer feedback
  • Make decision and implement

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions