mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-29 13:25:17 +00:00
352 lines
8 KiB
Python
352 lines
8 KiB
Python
"""
|
|
Violation:
|
|
|
|
Prefer TypeError when relevant.
|
|
"""
|
|
|
|
|
|
def incorrect_basic(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
def incorrect_multiple_type_check(some_arg):
|
|
if isinstance(some_arg, (int, str)):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
class MyClass:
|
|
pass
|
|
|
|
|
|
def incorrect_with_issubclass(some_arg):
|
|
if issubclass(some_arg, MyClass):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
def incorrect_with_callable(some_arg):
|
|
if callable(some_arg):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
def incorrect_ArithmeticError(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise ArithmeticError("...") # should be typeerror
|
|
|
|
|
|
def incorrect_AssertionError(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise AssertionError("...") # should be typeerror
|
|
|
|
|
|
def incorrect_AttributeError(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise AttributeError("...") # should be typeerror
|
|
|
|
|
|
def incorrect_BufferError(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise BufferError # should be typeerror
|
|
|
|
|
|
def incorrect_EOFError(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise EOFError("...") # should be typeerror
|
|
|
|
|
|
def incorrect_ImportError(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise ImportError("...") # should be typeerror
|
|
|
|
|
|
def incorrect_LookupError(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise LookupError("...") # should be typeerror
|
|
|
|
|
|
def incorrect_MemoryError(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
# should be typeerror
|
|
# not multiline is on purpose for fix
|
|
raise MemoryError(
|
|
"..."
|
|
)
|
|
|
|
|
|
def incorrect_NameError(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise NameError("...") # should be typeerror
|
|
|
|
|
|
def incorrect_ReferenceError(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise ReferenceError("...") # should be typeerror
|
|
|
|
|
|
def incorrect_RuntimeError(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise RuntimeError("...") # should be typeerror
|
|
|
|
|
|
def incorrect_SyntaxError(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise SyntaxError("...") # should be typeerror
|
|
|
|
|
|
def incorrect_SystemError(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise SystemError("...") # should be typeerror
|
|
|
|
|
|
def incorrect_ValueError(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise ValueError("...") # should be typeerror
|
|
|
|
|
|
def incorrect_not_operator_isinstance(some_arg):
|
|
if not isinstance(some_arg):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
def incorrect_and_operator_isinstance(arg1, arg2):
|
|
if isinstance(some_arg) and isinstance(arg2):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
def incorrect_or_operator_isinstance(arg1, arg2):
|
|
if isinstance(some_arg) or isinstance(arg2):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
def incorrect_multiple_operators_isinstance(arg1, arg2, arg3):
|
|
if not isinstance(arg1) and isinstance(arg2) or isinstance(arg3):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
def incorrect_not_operator_callable(some_arg):
|
|
if not callable(some_arg):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
def incorrect_and_operator_callable(arg1, arg2):
|
|
if callable(some_arg) and callable(arg2):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
def incorrect_or_operator_callable(arg1, arg2):
|
|
if callable(some_arg) or callable(arg2):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
def incorrect_multiple_operators_callable(arg1, arg2, arg3):
|
|
if not callable(arg1) and callable(arg2) or callable(arg3):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
def incorrect_not_operator_issubclass(some_arg):
|
|
if not issubclass(some_arg):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
def incorrect_and_operator_issubclass(arg1, arg2):
|
|
if issubclass(some_arg) and issubclass(arg2):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
def incorrect_or_operator_issubclass(arg1, arg2):
|
|
if issubclass(some_arg) or issubclass(arg2):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
def incorrect_multiple_operators_issubclass(arg1, arg2, arg3):
|
|
if not issubclass(arg1) and issubclass(arg2) or issubclass(arg3):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
def incorrect_multi_conditional(arg1, arg2):
|
|
if isinstance(arg1, int):
|
|
pass
|
|
elif isinstance(arg2, int):
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
def multiple_is_instance_checks(some_arg):
|
|
if isinstance(some_arg, str):
|
|
pass
|
|
elif isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise Exception("...") # should be typeerror
|
|
|
|
|
|
class MyCustomTypeValidation(Exception):
|
|
pass
|
|
|
|
|
|
def correct_custom_exception(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise MyCustomTypeValidation("...") # that's correct, because it's not vanilla
|
|
|
|
|
|
def correct_complex_conditional(val):
|
|
if val is not None and (not isinstance(val, int) or val < 0):
|
|
raise ValueError(...) # fine if this is not a TypeError
|
|
|
|
|
|
def correct_multi_conditional(some_arg):
|
|
if some_arg == 3:
|
|
pass
|
|
elif isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise Exception("...") # fine if this is not a TypeError
|
|
|
|
|
|
def correct_should_ignore(some_arg):
|
|
if isinstance(some_arg, int):
|
|
pass
|
|
else:
|
|
raise TypeError("...")
|
|
|
|
|
|
def check_body(some_args):
|
|
if isinstance(some_args, int):
|
|
raise ValueError("...") # should be typeerror
|
|
|
|
|
|
def check_body_correct(some_args):
|
|
if isinstance(some_args, int):
|
|
raise TypeError("...") # correct
|
|
|
|
|
|
def multiple_elifs(some_args):
|
|
if not isinstance(some_args, int):
|
|
raise ValueError("...") # should be typerror
|
|
elif some_args < 3:
|
|
raise ValueError("...") # this is ok
|
|
elif some_args > 10:
|
|
raise ValueError("...") # this is ok if we don't simplify
|
|
else:
|
|
pass
|
|
|
|
|
|
def multiple_ifs(some_args):
|
|
if not isinstance(some_args, int):
|
|
raise ValueError("...") # should be typerror
|
|
else:
|
|
if some_args < 3:
|
|
raise ValueError("...") # this is ok
|
|
else:
|
|
if some_args > 10:
|
|
raise ValueError("...") # this is ok if we don't simplify
|
|
else:
|
|
pass
|
|
|
|
|
|
def else_body(obj):
|
|
if isinstance(obj, datetime.timedelta):
|
|
return "TimeDelta"
|
|
elif isinstance(obj, relativedelta.relativedelta):
|
|
return "RelativeDelta"
|
|
elif isinstance(obj, CronExpression):
|
|
return "CronExpression"
|
|
else:
|
|
raise Exception(f"Unknown object type: {obj.__class__.__name__}")
|
|
|
|
|
|
def early_return():
|
|
if isinstance(this, some_type):
|
|
if x in this:
|
|
return
|
|
|
|
raise ValueError(f"{this} has a problem") # this is ok
|
|
|
|
|
|
def early_break():
|
|
for x in this:
|
|
if isinstance(this, some_type):
|
|
if x in this:
|
|
break
|
|
|
|
raise ValueError(f"{this} has a problem") # this is ok
|
|
|
|
|
|
def early_continue():
|
|
for x in this:
|
|
if isinstance(this, some_type):
|
|
if x in this:
|
|
continue
|
|
|
|
raise ValueError(f"{this} has a problem") # this is ok
|
|
|
|
|
|
def early_return_else():
|
|
if isinstance(this, some_type):
|
|
pass
|
|
else:
|
|
if x in this:
|
|
return
|
|
|
|
raise ValueError(f"{this} has a problem") # this is ok
|