all2md.linter.registry

Rule registry for the linter.

Mirrors the singleton pattern used by all2md.transforms.registry.TransformRegistry: __new__-based singleton, lazy plugin discovery via entry points, and a small lookup/listing API. Built-in rules register themselves when all2md.linter.rules (the rule package) is imported.

class all2md.linter.registry.RuleRegistry

Bases: object

Singleton registry mapping rule codes to LintRule classes.

Return the process-wide singleton instance.

static __new__(cls) RuleRegistry

Return the process-wide singleton instance.

register(rule_cls: type[LintRule]) None

Register a rule class by its code attribute.

unregister(code: str) bool

Remove a registered rule by code. Returns True if found.

get_rule(code: str) type[LintRule]

Return the rule class for code or raise KeyError.

has_rule(code: str) bool

Return True if code is registered.

list_rules(category: str | None = None) list[str]

List all registered rule codes, optionally filtered by category.

get_all_rules() list[type[LintRule]]

Return all registered rule classes, sorted by code.

iter_rules() Iterable[type[LintRule]]

Iterate over registered rule classes.

clear() None

Remove every registered rule and reset initialisation state.

Primarily intended for tests that need a clean slate.

discover_plugins() int

Load rule classes from the all2md.lint_rules entry point group.

Each entry point is expected to return a LintRule subclass. Failures are logged but do not abort discovery.