Files
mlflow--mlflow/dev/clint/tests/rules/test_isinstance_union_syntax.py
2026-07-13 13:22:34 +08:00

45 lines
1.2 KiB
Python

from pathlib import Path
from clint.config import Config
from clint.index import SymbolIndex
from clint.linter import Position, Range, lint_file
from clint.rules import IsinstanceUnionSyntax
def test_isinstance_union_syntax(index: SymbolIndex) -> None:
code = """
# Bad - basic union syntax
isinstance(obj, str | int)
isinstance(value, int | str | float)
# Bad - parenthesized union in tuple
isinstance(x, ((str | int),))
# Good - tuple syntax (recommended)
isinstance(obj, (str, int))
isinstance(value, (int, str, float))
# Good - single type
isinstance(obj, str)
isinstance(obj, int)
# Good - Union type annotation (different syntax)
isinstance(obj, Union[str, int])
# Good - other functions with union syntax
other_func(obj, str | int)
some_call(x | y)
# Good - invalid isinstance calls, not our concern
isinstance()
isinstance(obj)
"""
config = Config(select={IsinstanceUnionSyntax.name})
results = lint_file(Path("test.py"), code, config, index)
assert all(isinstance(r.rule, IsinstanceUnionSyntax) for r in results)
assert [r.range for r in results] == [
Range(Position(2, 0)),
Range(Position(3, 0)),
Range(Position(6, 0)),
]