Skip to content

explore: evaluate Ruff plugin integration for docvet enrichment rules #307

@Alberto-Codes

Description

@Alberto-Codes

Summary

Explore whether docvet's enrichment rules (missing-raises, missing-yields, missing-attributes, etc.) could be contributed to or integrated with Ruff as a plugin or rule set, gaining instant distribution to millions of Ruff users.

Motivation

Ruff has become the dominant Python linter. If docvet's enrichment rules shipped inside ruff, that's instant distribution. However, this is a partnership/political play, not just a technical one.

Key questions to answer

  1. Ruff plugin architecture — Does ruff support external rule plugins? What's the acceptance criteria for new rule sets?
  2. Technical feasibility — Enrichment rules use Python AST analysis, which aligns with ruff's approach (Rust AST). But ruff parses with a Rust-based parser — rules would need to be rewritten in Rust or use a plugin bridge.
  3. Scope boundaries — Freshness (git integration), coverage (filesystem), and griffe (rendering) rules are unlikely candidates. Only enrichment rules (pure AST) are portable.
  4. Existing overlap — pydoclint has an open issue for ruff integration (Implement pydoclint astral-sh/ruff#12434). What's the status? Is there room for docvet's differentiated rules?
  5. Partnership approach — Would Astral's team be receptive? What's the right way to engage?

What this is NOT

  • Not building a ruff plugin immediately
  • Not abandoning docvet as a standalone tool
  • An exploration to understand if this distribution channel is viable

Context

Emerged from party-mode discussion (2026-03-06). Parked as an exploration item — different kind of work than feature development. pydoclint currently occupies the "docstring accuracy" mindshare with 580+ stars and its own ruff integration discussion.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions