[CASE test_transaction_atomic] from django.db import transaction with transaction.atomic(): pass with transaction.atomic(using="mydb"): pass with transaction.atomic(using="mydb", savepoint=False): pass @transaction.atomic() def decorated_func(param1: str, param2: int) -> bool: pass # Ensure that the function's type is preserved reveal_type(decorated_func) # E: Revealed type is 'def (param1: builtins.str, param2: builtins.int) -> builtins.bool' @transaction.atomic(using="mydb") def decorated_func_using(param1: str, param2: int) -> bool: pass # Ensure that the function's type is preserved reveal_type(decorated_func_using) # E: Revealed type is 'def (param1: builtins.str, param2: builtins.int) -> builtins.bool' class ClassWithAtomicMethod: # Bare decorator @transaction.atomic def atomic_method1(self, abc: int) -> str: pass @transaction.atomic(savepoint=True) def atomic_method2(self): pass @transaction.atomic(using="db", savepoint=True) def atomic_method3(self, myparam: str) -> int: pass ClassWithAtomicMethod().atomic_method1("abc") # E: Argument 1 to "atomic_method1" of "ClassWithAtomicMethod" has incompatible type "str"; expected "int" # Ensure that the method's type is preserved reveal_type(ClassWithAtomicMethod().atomic_method1) # E: Revealed type is 'def (abc: builtins.int) -> builtins.str' # Ensure that the method's type is preserved reveal_type(ClassWithAtomicMethod().atomic_method3) # E: Revealed type is 'def (myparam: builtins.str) -> builtins.int' [out]