from pathlib import Path import pytest from clint.config import Config from clint.index import SymbolIndex from clint.linter import Position, Range, lint_file from clint.rules.unknown_mlflow_arguments import UnknownMlflowArguments def test_unknown_mlflow_arguments(index: SymbolIndex) -> None: code = ''' def bad(): """ .. code-block:: python import mlflow mlflow.log_param(foo="bar") """ def good(): """ .. code-block:: python import mlflow mlflow.log_param(key="k", value="v") """ ''' config = Config( select={UnknownMlflowArguments.name}, example_rules=[UnknownMlflowArguments.name], ) violations = lint_file(Path("test.py"), code, config, index) assert len(violations) == 1 assert all(isinstance(v.rule, UnknownMlflowArguments) for v in violations) assert violations[0].range == Range(Position(7, 8)) @pytest.mark.parametrize("suffix", [".md", ".mdx"]) def test_unknown_mlflow_arguments_markdown(index: SymbolIndex, suffix: str) -> None: code = """ # Bad ```python import mlflow mlflow.log_param(foo="bar") ``` # Good ```python import mlflow mlflow.log_param(key="k", value="v") ``` """ config = Config( select={UnknownMlflowArguments.name}, example_rules=[UnknownMlflowArguments.name], ) violations = lint_file(Path("test").with_suffix(suffix), code, config, index) assert len(violations) == 1 assert all(isinstance(v.rule, UnknownMlflowArguments) for v in violations) assert violations[0].range == Range(Position(6, 0))