Source code for scitex_dev.linter

"""SciTeX Linter — enforce reproducible research patterns via AST analysis."""

from __future__ import annotations

try:
    from importlib.metadata import PackageNotFoundError
    from importlib.metadata import version as _v

    try:
        __version__ = _v("scitex-linter")
    except PackageNotFoundError:
        __version__ = "0.0.0+local"
    del _v, PackageNotFoundError
except ImportError:  # pragma: no cover — only on ancient Pythons
    __version__ = "0.0.0+local"


[docs] def list_rules(category: str = None) -> list: """Return all rules (built-in + plugin), optionally filtered by category. Parameters ---------- category : str, optional If provided, only return rules whose category matches this value. Returns ------- list of Rule All matching Rule objects from built-in definitions and loaded plugins. """ from ._plugin_loader import load_plugins from ._rules import ALL_RULES all_rules = dict(ALL_RULES) plugin_rules = load_plugins()["rules"] all_rules.update(plugin_rules) rules = list(all_rules.values()) if category is not None: rules = [r for r in rules if r.category == category] return rules
def _register_sweep_cli() -> None: """Attach the `sweep` subcommand to the lint CLI group.""" try: from . import _sweep_cli # noqa: F401 side-effect: registers `sweep` except Exception: # Optional: ecosystem registry may not be importable in minimal envs. pass _register_sweep_cli() __all__ = ["__version__", "list_rules"]