| [case testUndefinedVariableInGlobalStatement] | |
| import typing | |
| x | |
| y | |
| [out] | |
| main:2: error: Name "x" is not defined | |
| main:3: error: Name "y" is not defined | |
| [case testUndefinedVariableWithinFunctionContext] | |
| import typing | |
| def f() -> None: | |
| x | |
| y | |
| [out] | |
| main:3: error: Name "x" is not defined | |
| main:4: error: Name "y" is not defined | |
| [case testMethodScope] | |
| import typing | |
| class A: | |
| def f(self): pass | |
| f | |
| [out] | |
| main:4: error: Name "f" is not defined | |
| [case testMethodScope2] | |
| import typing | |
| class A: | |
| def f(self): pass | |
| class B: | |
| def g(self) -> None: | |
| f # error | |
| g # error | |
| [out] | |
| main:6: error: Name "f" is not defined | |
| main:7: error: Name "g" is not defined | |
| [case testInvalidType] | |
| import typing | |
| x = None # type: X | |
| [out] | |
| main:2: error: Name "X" is not defined | |
| [case testInvalidGenericArg] | |
| from typing import TypeVar, Generic | |
| t = TypeVar('t') | |
| class A(Generic[t]): pass | |
| x = 0 # type: A[y] | |
| [out] | |
| main:4: error: Name "y" is not defined | |
| [case testInvalidNumberOfGenericArgsInTypeDecl] | |
| from typing import TypeVar, Generic | |
| t = TypeVar('t') | |
| class A: pass | |
| class B(Generic[t]): pass | |
| x = 0 # type: B[A, A] | |
| y = 0 # type: A[A] | |
| [out] | |
| main:5: error: "B" expects 1 type argument, but 2 given | |
| main:6: error: "A" expects no type arguments, but 1 given | |
| [case testInvalidNumberOfGenericArgsInUndefinedArg] | |
| class A: pass | |
| x = None # type: A[int] # E: "A" expects no type arguments, but 1 given | |
| [out] | |
| [case testInvalidNumberOfGenericArgsInNestedBlock] | |
| class A: pass | |
| class B: | |
| def f(self) -> None: | |
| while 1: | |
| x = None # type: A[int] \ | |
| # E: "A" expects no type arguments, but 1 given | |
| [out] | |
| [case testInvalidNumberOfGenericArgsInSignature] | |
| import typing | |
| class A: pass | |
| def f() -> A[int]: pass # E: "A" expects no type arguments, but 1 given | |
| [out] | |
| [case testInvalidNumberOfGenericArgsInOverloadedSignature] | |
| from typing import overload | |
| class A: pass | |
| @overload | |
| def f(): pass | |
| @overload | |
| def f(x: A[int]) -> None: pass # E: "A" expects no type arguments, but 1 given | |
| def f(*args): pass | |
| [out] | |
| [case testInvalidNumberOfGenericArgsInBaseType] | |
| import typing | |
| class A: pass | |
| class B(A[int]): pass # E: "A" expects no type arguments, but 1 given | |
| [out] | |
| [case testInvalidNumberOfGenericArgsInCast] | |
| from typing import cast | |
| class A: pass | |
| x = cast(A[int], 1) # E: "A" expects no type arguments, but 1 given | |
| [out] | |
| [case testInvalidNumberOfGenericArgsInNestedGenericType] | |
| from typing import TypeVar, Generic | |
| T = TypeVar('T') | |
| class A(Generic[T]): pass | |
| class B: pass | |
| def f() -> A[B[int]]: pass # E: "B" expects no type arguments, but 1 given | |
| [out] | |
| [case testInvalidNumberOfGenericArgsInTupleType] | |
| from typing import Tuple | |
| class A: pass | |
| x = None # type: Tuple[A[int]] # E: "A" expects no type arguments, but 1 given | |
| [builtins fixtures/tuple.pyi] | |
| [out] | |
| [case testInvalidNumberOfGenericArgsInFunctionType] | |
| from typing import Callable | |
| class A: pass | |
| x = None # type: Callable[[A[int]], int] # E: "A" expects no type arguments, but 1 given | |
| y = None # type: Callable[[], A[int]] # E: "A" expects no type arguments, but 1 given | |
| [out] | |
| [case testVarOrFuncAsType] | |
| import typing | |
| def f(): pass | |
| x = 1 | |
| y = 0 # type: f | |
| z = 0 # type: x | |
| [out] | |
| main:5: error: Function "__main__.f" is not valid as a type | |
| main:5: note: Perhaps you need "Callable[...]" or a callback protocol? | |
| main:6: error: Variable "__main__.x" is not valid as a type | |
| main:6: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases | |
| [case testGlobalVarRedefinition] | |
| import typing | |
| class A: pass | |
| x = 0 # type: A | |
| x = 0 # type: A | |
| [out] | |
| main:4: error: Name "x" already defined on line 3 | |
| [case testLocalVarRedefinition] | |
| import typing | |
| class A: pass | |
| def f() -> None: | |
| x = 0 # type: A | |
| x = 0 # type: A | |
| [out] | |
| main:5: error: Name "x" already defined on line 4 | |
| [case testClassVarRedefinition] | |
| import typing | |
| class A: | |
| x = 0 # type: object | |
| x = 0 # type: object | |
| [out] | |
| main:4: error: Name "x" already defined on line 3 | |
| [case testMultipleClassDefinitions] | |
| import typing | |
| class A: pass | |
| class A: pass | |
| [out] | |
| main:3: error: Name "A" already defined on line 2 | |
| [case testMultipleMixedDefinitions] | |
| import typing | |
| x = 1 | |
| def x(): pass | |
| class x: pass | |
| [out] | |
| main:3: error: Name "x" already defined on line 2 | |
| main:4: error: Name "x" already defined on line 2 | |
| [case testNameNotImported] | |
| import typing | |
| from m import y | |
| x | |
| [file m.py] | |
| x = y = 1 | |
| [out] | |
| main:3: error: Name "x" is not defined | |
| [case testMissingNameInImportFrom] | |
| import typing | |
| from m import y | |
| [file m.py] | |
| x = 1 | |
| [out] | |
| main:2: error: Module "m" has no attribute "y" | |
| [case testMissingModule] | |
| import typing | |
| import m | |
| [out] | |
| main:2: error: Cannot find implementation or library stub for module named "m" | |
| main:2: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports | |
| [case testMissingModule2] | |
| import typing | |
| from m import x | |
| [out] | |
| main:2: error: Cannot find implementation or library stub for module named "m" | |
| main:2: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports | |
| [case testMissingModule3] | |
| import typing | |
| from m import * | |
| [out] | |
| main:2: error: Cannot find implementation or library stub for module named "m" | |
| main:2: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports | |
| [case testMissingModuleRelativeImport] | |
| import typing | |
| import m | |
| [file m/__init__.py] | |
| from .x import y | |
| [out] | |
| tmp/m/__init__.py:1: error: Cannot find implementation or library stub for module named "m.x" | |
| tmp/m/__init__.py:1: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports | |
| [case testMissingModuleRelativeImport2] | |
| import typing | |
| import m.a | |
| [file m/__init__.py] | |
| [file m/a.py] | |
| from .x import y | |
| [out] | |
| tmp/m/a.py:1: error: Cannot find implementation or library stub for module named "m.x" | |
| tmp/m/a.py:1: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports | |
| [case testModuleNotImported] | |
| import typing | |
| import _m | |
| _n.x | |
| [file _m.py] | |
| import _n | |
| [file _n.py] | |
| x = 1 | |
| [out] | |
| main:3: error: Name "_n" is not defined | |
| [case testImportAsteriskPlusUnderscore] | |
| import typing | |
| from _m import * | |
| _x | |
| __x__ | |
| [file _m.py] | |
| _x = __x__ = 1 | |
| [out] | |
| main:3: error: Name "_x" is not defined | |
| main:4: error: Name "__x__" is not defined | |
| [case testRelativeImportAtTopLevelModule] | |
| from . import m | |
| [out] | |
| main:1: error: No parent module -- cannot perform relative import | |
| [case testRelativeImportAtTopLevelModule2] | |
| from .. import m | |
| [out] | |
| main:1: error: No parent module -- cannot perform relative import | |
| [case testUndefinedTypeWithQualifiedName] | |
| import typing | |
| import m | |
| def f() -> m.c: pass | |
| def g() -> n.c: pass | |
| [file m.py] | |
| [out] | |
| main:3: error: Name "m.c" is not defined | |
| main:4: error: Name "n" is not defined | |
| [case testMissingPackage] | |
| import typing | |
| import m.n | |
| [out] | |
| main:2: error: Cannot find implementation or library stub for module named "m.n" | |
| main:2: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports | |
| main:2: error: Cannot find implementation or library stub for module named "m" | |
| [case testMissingPackage2] | |
| import typing | |
| from m.n import x | |
| from a.b import * | |
| [out] | |
| main:2: error: Cannot find implementation or library stub for module named "m.n" | |
| main:2: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports | |
| main:3: error: Cannot find implementation or library stub for module named "a.b" | |
| [case testMissingModuleFuzzyMatchThirdParty] | |
| import numpyy | |
| [out] | |
| main:1: error: Cannot find implementation or library stub for module named "numpyy" | |
| main:1: note: Did you mean "numpy"? | |
| main:1: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports | |
| [case testMissingModuleFuzzyMatchFromImport] | |
| from numpyy import array | |
| [out] | |
| main:1: error: Cannot find implementation or library stub for module named "numpyy" | |
| main:1: note: Did you mean "numpy"? | |
| main:1: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports | |
| [case testMissingModuleFuzzyMatchStdlib] | |
| import ittertools | |
| [out] | |
| main:1: error: Cannot find implementation or library stub for module named "ittertools" | |
| main:1: note: Did you mean "itertools"? | |
| main:1: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports | |
| [case testMissingModuleFuzzyMatchNoSuggestion] | |
| import xyzabc123 | |
| [out] | |
| main:1: error: Cannot find implementation or library stub for module named "xyzabc123" | |
| main:1: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports | |
| [case testMissingModuleFuzzyMatchUnderscorePrefix] | |
| import _pytest.fixtures | |
| [out] | |
| main:1: error: Cannot find implementation or library stub for module named "_pytest.fixtures" | |
| main:1: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports | |
| [case testMissingModuleFuzzyMatchTypeIgnore] | |
| import numpyy # type: ignore | |
| [out] | |
| [case testErrorInImportedModule] | |
| import m | |
| [file m.py] | |
| import typing | |
| x = y | |
| [out] | |
| tmp/m.py:2: error: Name "y" is not defined | |
| [case testErrorInImportedModule2] | |
| import m.n | |
| [file m/__init__.py] | |
| [file m/n.py] | |
| import k | |
| [file k.py] | |
| import typing | |
| x = y | |
| [out] | |
| tmp/k.py:2: error: Name "y" is not defined | |
| [case testPackageWithoutInitFile] | |
| # flags: --no-namespace-packages | |
| import typing | |
| import m.n | |
| m.n.x | |
| [file m/n.py] | |
| x = 1 | |
| [out] | |
| main:3: error: Cannot find implementation or library stub for module named "m.n" | |
| main:3: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports | |
| main:3: error: Cannot find implementation or library stub for module named "m" | |
| [case testBreakOutsideLoop] | |
| break | |
| def f(): | |
| break | |
| [out] | |
| main:1: error: "break" outside loop | |
| main:3: error: "break" outside loop | |
| [case testContinueOutsideLoop] | |
| continue | |
| def f(): | |
| continue | |
| [out] | |
| main:1: error: "continue" outside loop | |
| main:3: error: "continue" outside loop | |
| [case testReturnOutsideFunction] | |
| def f(): pass | |
| return | |
| return 1 | |
| [out] | |
| main:2: error: "return" outside function | |
| main:3: error: "return" outside function | |
| [case testYieldOutsideFunction] | |
| yield 1 | |
| yield | |
| [out] | |
| main:1: error: "yield" outside function | |
| main:2: error: "yield" outside function | |
| [case testInvalidLvalues1] | |
| 1 = 1 | |
| [out] | |
| main:1: error: Invalid assignment target | |
| [case testInvalidLvalues2] | |
| (1) = 1 | |
| [out] | |
| main:1: error: Invalid assignment target | |
| [case testInvalidLvalues3] | |
| (1, 1) = 1 | |
| [out] | |
| main:1: error: Invalid assignment target | |
| [case testInvalidLvalues4] | |
| [1, 1] = 1 | |
| [out] | |
| main:1: error: Invalid assignment target | |
| [case testInvalidLvalues6] | |
| x = y = z = 1 # ok | |
| x, (y, 1) = 1 | |
| [out] | |
| main:2: error: Invalid assignment target | |
| [case testInvalidLvalues7] | |
| x, [y, 1] = 1 | |
| [out] | |
| main:1: error: Invalid assignment target | |
| [case testInvalidLvalues8] | |
| x, [y, [z, 1]] = 1 | |
| [out] | |
| main:1: error: Invalid assignment target | |
| [case testInvalidLvalues9] | |
| x, (y) = 1 # ok | |
| x, (y, (z, z)) = 1 # ok | |
| x, (y, (z, 1)) = 1 | |
| [out] | |
| main:3: error: Invalid assignment target | |
| [case testInvalidLvalues10] | |
| x + x = 1 | |
| [out] | |
| main:1: error: Invalid assignment target | |
| [case testInvalidLvalues11] | |
| -x = 1 | |
| [out] | |
| main:1: error: Invalid assignment target | |
| [case testInvalidLvalues12] | |
| 1.1 = 1 | |
| [out] | |
| main:1: error: Invalid assignment target | |
| [case testInvalidLvalues13] | |
| 'x' = 1 | |
| [out] | |
| main:1: error: Invalid assignment target | |
| [case testInvalidLvalues14] | |
| x() = 1 | |
| [out] | |
| main:1: error: Invalid assignment target | |
| [case testTwoStarExpressions] | |
| a, *b, *c = 1 | |
| *a, (*b, c) = 1 | |
| a, (*b, *c) = 1 | |
| [*a, *b] = 1 | |
| [out] | |
| main:1: error: Two starred expressions in assignment | |
| main:3: error: Two starred expressions in assignment | |
| main:4: error: Two starred expressions in assignment | |
| [case testTwoStarExpressionsInForStmt] | |
| z = 1 | |
| for a, *b, *c in z: | |
| pass | |
| for *a, (*b, c) in z: | |
| pass | |
| for a, (*b, *c) in z: | |
| pass | |
| for [*a, *b] in z: | |
| pass | |
| [out] | |
| main:2: error: Two starred expressions in assignment | |
| main:6: error: Two starred expressions in assignment | |
| main:8: error: Two starred expressions in assignment | |
| [case testTwoStarExpressionsInGeneratorExpr] | |
| (a for a, *b, *c in []) | |
| (a for *a, (*b, c) in []) | |
| (a for a, (*b, *c) in []) | |
| [out] | |
| main:1: error: Name "a" is not defined | |
| main:1: error: Two starred expressions in assignment | |
| main:3: error: Two starred expressions in assignment | |
| [case testStarExpressionRhs] | |
| b = 1 | |
| c = 1 | |
| d = 1 | |
| a = *b | |
| [out] | |
| main:4: error: can't use starred expression here | |
| [case testStarExpressionInExp] | |
| a = 1 | |
| *a + 1 | |
| [out] | |
| main:2: error: can't use starred expression here | |
| [case testInvalidDel1] | |
| x = 1 | |
| del x(1) | |
| [out] | |
| main:2: error: Invalid delete target | |
| [case testInvalidDel2] | |
| x = 1 | |
| del x + 1 | |
| [out] | |
| main:2: error: Invalid delete target | |
| [case testInvalidDel3] | |
| del z # E: Name "z" is not defined | |
| [case testFunctionTvarScope] | |
| from typing import TypeVar | |
| t = TypeVar('t') | |
| def f(x: t) -> t: pass | |
| x = 0 # type: t | |
| [out] | |
| main:5: error: Type variable "__main__.t" is unbound | |
| main:5: note: (Hint: Use "Generic[t]" or "Protocol[t]" base class to bind "t" inside a class) | |
| main:5: note: (Hint: Use "t" in function signature to bind "t" inside a function) | |
| [case testClassTvarScope] | |
| from typing import Generic, TypeVar | |
| t = TypeVar('t') | |
| class c(Generic[t]): pass | |
| x = 0 # type: t | |
| [out] | |
| main:5: error: Type variable "__main__.t" is unbound | |
| main:5: note: (Hint: Use "Generic[t]" or "Protocol[t]" base class to bind "t" inside a class) | |
| main:5: note: (Hint: Use "t" in function signature to bind "t" inside a function) | |
| [case testExpressionRefersToTypeVariable] | |
| from typing import TypeVar, Generic | |
| t = TypeVar('t') | |
| class c(Generic[t]): | |
| def f(self) -> None: x = t | |
| def f(y: t): x = t | |
| [out] | |
| main:4: error: "t" is a type variable and only valid in type context | |
| main:5: error: "t" is a type variable and only valid in type context | |
| [case testInvalidBaseClass] | |
| import typing | |
| class A(B): pass | |
| [out] | |
| main:2: error: Name "B" is not defined | |
| [case testSuperOutsideClass] | |
| class A: pass | |
| super().x | |
| def f() -> None: super().y | |
| [out] | |
| main:2: error: "super" used outside class | |
| main:3: error: "super" used outside class | |
| [case testMultipleMethodDefinition] | |
| import typing | |
| class A: | |
| def f(self) -> None: pass | |
| def g(self) -> None: pass | |
| def f(self, x: object) -> None: pass | |
| [out] | |
| main:5: error: Name "f" already defined on line 3 | |
| [case testInvalidGlobalDecl] | |
| import typing | |
| def f() -> None: | |
| global x | |
| x = None | |
| [out] | |
| main:4: error: Name "x" is not defined | |
| [case testInvalidNonlocalDecl] | |
| import typing | |
| def f(): | |
| def g() -> None: | |
| nonlocal x | |
| x = None | |
| [out] | |
| main:4: error: No binding for nonlocal "x" found | |
| main:5: error: Name "x" is not defined | |
| [case testNonlocalDeclNotMatchingGlobal] | |
| import typing | |
| x = None | |
| def f() -> None: | |
| nonlocal x | |
| x = None | |
| [out] | |
| main:4: error: No binding for nonlocal "x" found | |
| main:5: error: Name "x" is not defined | |
| [case testNonlocalDeclConflictingWithParameter] | |
| import typing | |
| def g(): | |
| x = None | |
| def f(x) -> None: | |
| nonlocal x | |
| x = None | |
| [out] | |
| main:5: error: Name "x" is already defined in local scope before nonlocal declaration | |
| [case testNonlocalDeclOutsideFunction] | |
| x = 2 | |
| nonlocal x | |
| [out] | |
| main:2: error: nonlocal declaration not allowed at module level | |
| [case testGlobalAndNonlocalDecl] | |
| import typing | |
| x = 1 | |
| def f(): | |
| x = 1 | |
| def g() -> None: | |
| global x | |
| nonlocal x | |
| x = None | |
| [out] | |
| main:7: error: Name "x" is nonlocal and global | |
| [case testNonlocalAndGlobalDecl] | |
| import typing | |
| x = 1 | |
| def f(): | |
| x = 1 | |
| def g() -> None: | |
| nonlocal x | |
| global x | |
| x = None | |
| [out] | |
| main:7: error: Name "x" is nonlocal and global | |
| [case testNestedFunctionAndScoping] | |
| import typing | |
| def f(x) -> None: | |
| def g(y): | |
| z = x | |
| z | |
| y | |
| x | |
| [out] | |
| main:5: error: Name "z" is not defined | |
| main:6: error: Name "y" is not defined | |
| [case testMultipleNestedFunctionDef] | |
| import typing | |
| def f(x) -> None: | |
| def g(): pass | |
| x = 1 | |
| def g(): pass | |
| [out] | |
| main:5: error: Name "g" already defined on line 3 | |
| [case testRedefinedOverloadedFunction] | |
| from typing import overload, Any | |
| def f() -> None: | |
| @overload | |
| def p(o: object) -> None: pass # no error | |
| @overload | |
| def p(o: Any) -> None: pass # no error | |
| x = 1 | |
| def p(): pass # fail | |
| [out] | |
| main:3: error: An overloaded function outside a stub file must have an implementation | |
| main:8: error: Name "p" already defined on line 3 | |
| [case testNestedFunctionInMethod] | |
| import typing | |
| class A: | |
| def f(self) -> None: | |
| def g() -> None: | |
| x | |
| y | |
| [out] | |
| main:5: error: Name "x" is not defined | |
| main:6: error: Name "y" is not defined | |
| [case testImportScope] | |
| import typing | |
| def f() -> None: | |
| import x | |
| x.y # E: Name "x" is not defined | |
| [file x.py] | |
| y = 1 | |
| [out] | |
| [case testImportScope2] | |
| import typing | |
| def f() -> None: | |
| from x import y | |
| y | |
| y # E: Name "y" is not defined | |
| [file x.py] | |
| y = 1 | |
| [out] | |
| [case testImportScope3] | |
| import typing | |
| def f() -> None: | |
| from x import * | |
| y | |
| y # E: Name "y" is not defined | |
| [file x.py] | |
| y = 1 | |
| [out] | |
| [case testImportScope4] | |
| import typing | |
| class A: | |
| from x import * | |
| y | |
| y # E: Name "y" is not defined | |
| [file x.py] | |
| y = 1 | |
| [out] | |
| [case testScopeOfNestedClass] | |
| import typing | |
| def f(): | |
| class A: pass | |
| A | |
| A # E: Name "A" is not defined | |
| [out] | |
| [case testScopeOfNestedClass2] | |
| import typing | |
| class A: | |
| class B: pass | |
| B # E: Name "B" is not defined | |
| [out] | |
| [case testScopeOfNestedClass3] | |
| import typing | |
| class A: | |
| def f(self): | |
| class B: pass | |
| B # E: Name "B" is not defined | |
| B # E: Name "B" is not defined | |
| [out] | |
| [case testInvalidNestedClassReferenceInDecl] | |
| import typing | |
| class A: pass | |
| foo = 0 # type: A.x # E: Name "A.x" is not defined | |
| [out] | |
| [case testTvarScopingWithNestedClass] | |
| from typing import TypeVar, Generic | |
| t = TypeVar('t') | |
| s = TypeVar('s') | |
| class A(Generic[t]): | |
| class B(Generic[s]): | |
| x = 0 # type: A[s] | |
| y = 0 # type: A[t] # E: Type variable "__main__.t" is unbound \ | |
| # N: (Hint: Use "Generic[t]" or "Protocol[t]" base class to bind "t" inside a class) \ | |
| # N: (Hint: Use "t" in function signature to bind "t" inside a function) | |
| z = 0 # type: A[s] # E: Type variable "__main__.s" is unbound \ | |
| # N: (Hint: Use "Generic[s]" or "Protocol[s]" base class to bind "s" inside a class) \ | |
| # N: (Hint: Use "s" in function signature to bind "s" inside a function) | |
| a = 0 # type: A[t] | |
| [out] | |
| [case testTestExtendPrimitives] | |
| # Extending bool is not checked here as it should be typed | |
| # as final meaning the type checker will detect it. | |
| class C(bool): pass # ok | |
| class A(int): pass # ok | |
| class B(float): pass # ok | |
| class D(str): pass # ok | |
| [builtins fixtures/primitives.pyi] | |
| [out] | |
| [case testCyclicInheritance1] | |
| class A(A): pass # E: Cannot resolve name "A" (possible cyclic definition) | |
| [out] | |
| [case testCyclicInheritance2] | |
| class A(B): pass # E: Cannot resolve name "B" (possible cyclic definition) | |
| class B(A): pass | |
| [out] | |
| [case testAssignToTypeDef] | |
| import typing | |
| class A: pass | |
| A = None # E: Cannot assign to a type | |
| [out] | |
| [case testInvalidCastTargetSyntax] | |
| from typing import cast, TypeVar, Generic | |
| t = TypeVar('t') | |
| class C(Generic[t]): pass | |
| cast(str + str, None) # E: Cast target is not a type | |
| cast(C[str][str], None) # E: Cast target is not a type | |
| cast(C[str + str], None) # E: Cast target is not a type | |
| cast([int], None) # E: Bracketed expression "[...]" is not valid as a type \ | |
| # N: Did you mean "List[...]"? | |
| [out] | |
| [case testInvalidCastTargetType] | |
| from typing import cast | |
| x = 0 | |
| cast(x, None) # E: Variable "__main__.x" is not valid as a type \ | |
| # N: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases | |
| cast(t, None) # E: Name "t" is not defined | |
| cast(__builtins__.x, None) # E: Name "__builtins__.x" is not defined | |
| [out] | |
| [case testInvalidCastTargetType2] | |
| from typing import cast | |
| x = 0 | |
| cast(str[str], None) # E: "str" expects no type arguments, but 1 given | |
| [out] | |
| [case testInvalidNumberOfArgsToCast] | |
| from typing import cast | |
| cast(str) # E: "cast" expects 2 arguments | |
| cast(str, None, None) # E: "cast" expects 2 arguments | |
| [out] | |
| [case testInvalidKindsOfArgsToCast] | |
| from typing import cast | |
| cast(str, *None) # E: "cast" must be called with 2 positional arguments | |
| cast(str, target=None) # E: "cast" must be called with 2 positional arguments | |
| [out] | |
| [case testInvalidAssertType] | |
| from typing import assert_type | |
| assert_type(1, type=int) # E: "assert_type" must be called with 2 positional arguments | |
| assert_type(1, *int) # E: "assert_type" must be called with 2 positional arguments | |
| assert_type() # E: "assert_type" expects 2 arguments | |
| assert_type(1, int, "hello") # E: "assert_type" expects 2 arguments | |
| assert_type(int, 1) # E: Invalid type: try using Literal[1] instead? | |
| assert_type(1, int[int]) # E: "int" expects no type arguments, but 1 given | |
| [case testInvalidAnyCall] | |
| from typing import Any | |
| Any(str, None) # E: Any(...) is no longer supported. Use cast(Any, ...) instead | |
| Any(arg=str) # E: Any(...) is no longer supported. Use cast(Any, ...) instead | |
| [out] | |
| [case testTypeListAsType] | |
| def f(x: [int]) -> None: # E: Bracketed expression "[...]" is not valid as a type \ | |
| # N: Did you mean "List[...]"? | |
| pass | |
| [out] | |
| [case testInvalidFunctionType] | |
| from typing import Callable | |
| x = None # type: Callable[int, str] | |
| y = None # type: Callable[int] | |
| z = None # type: Callable[int, int, int] | |
| [out] | |
| main:2: error: The first argument to Callable must be a list of types, parameter specification, or "..." | |
| main:2: note: See https://mypy.readthedocs.io/en/stable/kinds_of_types.html#callable-types-and-lambdas | |
| main:3: error: Please use "Callable[[<parameters>], <return type>]" or "Callable" | |
| main:4: error: Please use "Callable[[<parameters>], <return type>]" or "Callable" | |
| [case testAbstractGlobalFunction] | |
| import typing | |
| from abc import abstractmethod | |
| @abstractmethod | |
| def foo(): pass | |
| [out] | |
| main:3: error: "abstractmethod" used with a non-method | |
| [case testAbstractNestedFunction] | |
| import typing | |
| from abc import abstractmethod | |
| def g() -> None: | |
| @abstractmethod | |
| def foo(): pass | |
| [out] | |
| main:4: error: "abstractmethod" used with a non-method | |
| [case testInvalidTypeDeclaration] | |
| import typing | |
| def f(): pass | |
| f() = 1 # type: int | |
| [out] | |
| main:3: error: Invalid assignment target | |
| [case testIndexedAssignmentWithTypeDeclaration] | |
| import typing | |
| None[1] = 1 # type: int | |
| [out] | |
| main:2: error: Unexpected type declaration | |
| [case testNonSelfMemberAssignmentWithTypeDeclaration] | |
| import typing | |
| None.x = 1 # type: int | |
| [out] | |
| main:2: error: Type cannot be declared in assignment to non-self attribute | |
| [case testNonSelfMemberAssignmentWithTypeDeclarationInMethod] | |
| import typing | |
| class A: | |
| def f(self, x) -> None: | |
| x.y = 1 # type: int | |
| [out] | |
| main:4: error: Type cannot be declared in assignment to non-self attribute | |
| [case testInvalidTypeInTypeApplication] | |
| from typing import TypeVar, Generic | |
| t = TypeVar('t') | |
| class A(Generic[t]): pass | |
| A[TypeVar] # E: Variable "typing.TypeVar" is not valid as a type \ | |
| # N: See https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases | |
| [out] | |
| [case testInvalidTypeInTypeApplication2] | |
| from typing import TypeVar, Generic | |
| t = TypeVar('t') | |
| class A(Generic[t]): pass | |
| A[1] # E: Invalid type: try using Literal[1] instead? | |
| [out] | |
| [case testVariableDeclWithInvalidNumberOfTypes] | |
| x, y = 1, 2 # type: int, str, int # E: Incompatible number of tuple items | |
| [builtins fixtures/tuple.pyi] | |
| [out] | |
| [case testVariableDeclWithInvalidNumberOfTypesNested] | |
| x, (y, z) = 1, (2, 3) # type: int, (str, int, int) # E: Incompatible number of tuple items | |
| [builtins fixtures/tuple.pyi] | |
| [out] | |
| [case testVariableDeclWithInvalidNumberOfTypesNested2] | |
| x, (y, z) = 1, (2, 3) # type: int, (str, ) # E: Incompatible number of tuple items | |
| [builtins fixtures/tuple.pyi] | |
| [out] | |
| [case testVariableDeclWithInvalidNumberOfTypesNested3] | |
| x, (y, z) = 1, (2, 3) # type: int, str # E: Tuple type expected for multiple variables | |
| [builtins fixtures/tuple.pyi] | |
| [out] | |
| [case testVariableDeclWithInvalidNumberOfTypesNested4] | |
| x, (y, z) = 1, (2, 3) # type: int, str, int # E: Incompatible number of tuple items | |
| [builtins fixtures/tuple.pyi] | |
| [out] | |
| [case testVariableDeclWithInvalidNumberOfTypesNested5] | |
| x, (y, ) = 1, (2, ) # type: int, str # E: Tuple type expected for multiple variables | |
| [builtins fixtures/tuple.pyi] | |
| [out] | |
| [case testVariableDeclWithInvalidType] | |
| x, y = 1, 2 # type: int # E: Tuple type expected for multiple variables | |
| [out] | |
| [case testInvalidLvalueWithExplicitType] | |
| a = 1 | |
| a() = None # type: int | |
| [out] | |
| main:2: error: Invalid assignment target | |
| [case testInvalidLvalueWithExplicitType2] | |
| a = 1 | |
| a[1] = None # type: int # E: Unexpected type declaration | |
| a.x = None # type: int \ | |
| # E: Type cannot be declared in assignment to non-self attribute | |
| [out] | |
| [case testInvalidLvalueWithExplicitType3] | |
| a = 1 | |
| a.y, a.x = None, None # type: int, int \ | |
| # E: Type cannot be declared in assignment to non-self attribute | |
| a[1], a[2] = None, None # type: int, int \ | |
| # E: Unexpected type declaration | |
| [builtins fixtures/tuple.pyi] | |
| [out] | |
| [case testMissingGenericImport] | |
| from typing import TypeVar | |
| T = TypeVar('T') | |
| class A(Generic[T]): pass | |
| [out] | |
| main:3: error: Name "Generic" is not defined | |
| [case testInvalidTypeWithinGeneric] | |
| from typing import Generic | |
| class A(Generic[int]): pass # E: Free type variable expected in Generic[...] | |
| [out] | |
| [case testInvalidTypeWithinNestedGenericClass] | |
| from typing import Generic, TypeVar | |
| T = TypeVar('T') | |
| class A(Generic[T]): | |
| class B(Generic[T]): pass \ | |
| # E: Free type variable expected in Generic[...] | |
| [out] | |
| [case testRedeclaredTypeVarWithinNestedGenericClass] | |
| from typing import Generic, Iterable, TypeVar | |
| T = TypeVar('T') | |
| class A(Generic[T]): | |
| class B(Iterable[T]): pass # E: Type variable "T" is bound by an outer class | |
| [case testIncludingGenericTwiceInBaseClassList] | |
| from typing import Generic, TypeVar | |
| T = TypeVar('T') | |
| S = TypeVar('S') | |
| class A(Generic[T], Generic[S]): pass \ | |
| # E: Only single Generic[...] or Protocol[...] can be in bases | |
| [out] | |
| [case testInvalidMetaclass] | |
| class A(metaclass=x): pass # E: Name "x" is not defined | |
| [out] | |
| [case testInvalidQualifiedMetaclass] | |
| import abc | |
| class A(metaclass=abc.Foo): pass # E: Name "abc.Foo" is not defined | |
| [out] | |
| [case testNonClassMetaclass] | |
| def f(): pass | |
| class A(metaclass=f): pass # E: Invalid metaclass "f" | |
| [out] | |
| [case testInvalidTypevarArguments] | |
| from typing import TypeVar | |
| a = TypeVar() # E: Too few arguments for TypeVar() | |
| b = TypeVar(x='b') # E: TypeVar() expects a string literal as first argument | |
| c = TypeVar(1) # E: TypeVar() expects a string literal as first argument | |
| T = TypeVar(b'T') # E: TypeVar() expects a string literal as first argument | |
| d = TypeVar('D') # E: String argument 1 "D" to TypeVar(...) does not match variable name "d" | |
| e = TypeVar('e', int, str, x=1) # E: Unexpected argument to "TypeVar()": "x" | |
| f = TypeVar('f', (int, str), int) # E: Type expected | |
| g = TypeVar('g', int) # E: Type variable must have at least two constrained types | |
| h = TypeVar('h', x=(int, str)) # E: Unexpected argument to "TypeVar()": "x" | |
| i = TypeVar('i', bound=1) # E: TypeVar "bound" must be a type | |
| j = TypeVar('j', covariant=None) # E: TypeVar "covariant" may only be a literal bool | |
| k = TypeVar('k', contravariant=1) # E: TypeVar "contravariant" may only be a literal bool | |
| [out] | |
| [case testMoreInvalidTypevarArguments] | |
| from typing import TypeVar | |
| T = TypeVar('T', int, str, bound=bool) # E: TypeVar cannot have both values and an upper bound | |
| S = TypeVar('S', covariant=True, contravariant=True) \ | |
| # E: TypeVar cannot be both covariant and contravariant | |
| [builtins fixtures/bool.pyi] | |
| [case testInvalidTypevarArgumentsGenericConstraint] | |
| from typing import Generic, List, TypeVar | |
| from typing_extensions import Self | |
| T = TypeVar("T") | |
| def f(x: T) -> None: | |
| Bad = TypeVar("Bad", int, List[T]) # E: TypeVar constraint type cannot be parametrized by type variables | |
| class C(Generic[T]): | |
| Bad = TypeVar("Bad", int, List[T]) # E: TypeVar constraint type cannot be parametrized by type variables | |
| class D: | |
| Bad = TypeVar("Bad", int, List[Self]) # E: TypeVar constraint type cannot be parametrized by type variables | |
| S = TypeVar("S", int, List[T]) # E: Type variable "__main__.T" is unbound \ | |
| # N: (Hint: Use "Generic[T]" or "Protocol[T]" base class to bind "T" inside a class) \ | |
| # N: (Hint: Use "T" in function signature to bind "T" inside a function) | |
| [case testInvalidTypevarValues] | |
| from typing import TypeVar | |
| b = TypeVar('b', *[int]) # E: Unexpected argument to "TypeVar()" | |
| c = TypeVar('c', int, 2) # E: Invalid type: try using Literal[2] instead? | |
| [out] | |
| [case testObsoleteTypevarValuesSyntax] | |
| from typing import TypeVar | |
| a = TypeVar('a', values=(int, str)) | |
| [out] | |
| main:2: error: TypeVar "values" argument not supported | |
| main:2: error: Use TypeVar('T', t, ...) instead of TypeVar('T', values=(t, ...)) | |
| [case testLocalTypevarScope] | |
| from typing import TypeVar | |
| def f() -> None: | |
| T = TypeVar('T') | |
| def g(x: T) -> None: pass # E: Name "T" is not defined | |
| [out] | |
| [case testClassTypevarScope] | |
| from typing import TypeVar | |
| class A: | |
| T = TypeVar('T') | |
| def g(x: T) -> None: pass # E: Name "T" is not defined | |
| [out] | |
| [case testRedefineVariableAsTypevar] | |
| from typing import TypeVar | |
| x = 0 | |
| x = TypeVar('x') # E: Cannot redefine "x" as a type variable | |
| [out] | |
| [case testTypevarWithType] | |
| from typing import TypeVar | |
| x = TypeVar('x') # type: int # E: Cannot declare the type of a TypeVar or similar construct | |
| [out] | |
| [case testRedefineTypevar] | |
| from typing import TypeVar | |
| t = TypeVar('t') | |
| t = 1 # E: Invalid assignment target | |
| [out] | |
| [case testRedefineTypevar2] | |
| from typing import TypeVar | |
| t = TypeVar('t') | |
| def t(): pass # E: Name "t" already defined on line 2 | |
| [out] | |
| [case testRedefineTypevar3] | |
| from typing import TypeVar | |
| t = TypeVar('t') | |
| class t: pass # E: Name "t" already defined on line 2 | |
| [out] | |
| [case testRedefineTypevar4] | |
| from typing import TypeVar | |
| t = TypeVar('t') | |
| from typing import Generic as t # E: Name "t" already defined on line 2 | |
| [out] | |
| [case testInvalidStrLiteralType] | |
| def f(x: 'foo'): pass # E: Name "foo" is not defined | |
| [out] | |
| [case testInvalidStrLiteralStrayBrace] | |
| def f(x: 'int['): pass # E: Invalid type comment or annotation | |
| [out] | |
| [case testInvalidStrLiteralSpaces] | |
| def f(x: 'A B'): pass # E: Invalid type comment or annotation | |
| [out] | |
| [case testInvalidMultilineLiteralType] | |
| def f() -> "A\nB": pass # E: Invalid type comment or annotation | |
| [out] | |
| [case testInconsistentOverload] | |
| from typing import overload | |
| def dec(x): pass | |
| @dec # E: The implementation for an overloaded function must come last | |
| def f(): pass | |
| @overload | |
| def f(): pass | |
| [out] | |
| [case testInconsistentOverload2] | |
| from typing import overload | |
| def dec(x): pass | |
| @dec # E: The implementation for an overloaded function must come last | |
| def f(): pass | |
| @overload | |
| def f(): pass | |
| [out] | |
| [case testMissingOverloadDecorator] | |
| from typing import overload | |
| def dec(x): pass | |
| @dec | |
| def f(): pass | |
| @dec # E: Name "f" already defined on line 3 | |
| def f(): pass | |
| [out] | |
| [case testIncompatibleSignatureInComment] | |
| import typing | |
| def f(): # type: (int) -> int | |
| pass | |
| def g(x): # type: () -> int | |
| pass | |
| [out] | |
| main:2: error: Type signature has too many parameters | |
| main:4: error: Type signature has too few parameters | |
| [case testStaticmethodAndNonMethod] | |
| import typing | |
| @staticmethod | |
| def f(): pass | |
| class A: | |
| def g(self) -> None: | |
| @staticmethod | |
| def h(): pass | |
| [builtins fixtures/staticmethod.pyi] | |
| [out] | |
| main:2: error: "staticmethod" used with a non-method | |
| main:6: error: "staticmethod" used with a non-method | |
| [case testClassmethodAndNonMethod] | |
| import typing | |
| @classmethod | |
| def f(): pass | |
| class A: | |
| def g(self) -> None: | |
| @classmethod | |
| def h(): pass | |
| [builtins fixtures/classmethod.pyi] | |
| [out] | |
| main:2: error: "classmethod" used with a non-method | |
| main:6: error: "classmethod" used with a non-method | |
| [case testNonMethodProperty] | |
| import typing | |
| @property # E: "property" used with a non-method | |
| def f() -> int: pass | |
| [builtins fixtures/property.pyi] | |
| [out] | |
| [case testOverloadedProperty] | |
| from typing import overload | |
| class A: | |
| @overload # E: Decorators on top of @property are not supported | |
| @property | |
| def f(self) -> int: pass | |
| @property # E: Only supported top decorators are "@f.setter" and "@f.deleter" | |
| @overload | |
| def f(self) -> int: pass | |
| [builtins fixtures/property.pyi] | |
| [out] | |
| [case testOverloadedProperty2] | |
| from typing import overload | |
| class A: | |
| @overload # E: An overloaded function outside a stub file must have an implementation | |
| def f(self) -> int: pass | |
| @property # E: An overload can not be a property | |
| @overload | |
| def f(self) -> int: pass | |
| [builtins fixtures/property.pyi] | |
| [out] | |
| [case testDecoratedProperty] | |
| import typing | |
| def dec(f): pass | |
| class A: | |
| @dec # E: Decorators on top of @property are not supported | |
| @property | |
| def f(self) -> int: pass | |
| @property # OK | |
| @dec | |
| def g(self) -> int: pass | |
| @dec # type: ignore[misc] | |
| @property | |
| def h(self) -> int: pass | |
| @dec # type: ignore[prop-decorator] | |
| @property | |
| def i(self) -> int: pass | |
| [builtins fixtures/property.pyi] | |
| [out] | |
| [case testImportTwoModulesWithSameNameInFunction] | |
| import typing | |
| def f() -> None: | |
| import x | |
| import y as x # E: Name "x" already defined (by an import) | |
| x.y | |
| [file x.py] | |
| y = 1 | |
| [file y.py] | |
| [out] | |
| [case testImportTwoModulesWithSameNameInGlobalContext] | |
| import typing | |
| import x | |
| import y as x # E: Name "x" already defined (by an import) | |
| x.y | |
| [file x.py] | |
| y = 1 | |
| [file y.py] | |
| [out] | |
| [case testListTypeAliasWithoutImport] | |
| import typing | |
| def f() -> List[int]: pass | |
| [builtins fixtures/list.pyi] | |
| [out] | |
| main:2: error: Name "List" is not defined | |
| main:2: note: Did you forget to import it from "typing"? (Suggestion: "from typing import List") | |
| [case testInvalidWithTarget] | |
| def f(): pass | |
| with f() as 1: pass | |
| [out] | |
| main:2: error: Invalid assignment target | |
| [case testInvalidTypeAnnotation] | |
| import typing | |
| def f() -> None: | |
| 1[2] = 1 # type: int | |
| [out] | |
| main:3: error: Unexpected type declaration | |
| [case testInvalidTypeAnnotation2] | |
| import typing | |
| def f() -> None: | |
| f() = 1 # type: int | |
| [out] | |
| main:3: error: Invalid assignment target | |
| [case testInvalidReferenceToAttributeOfOuterClass] | |
| class A: | |
| class X: pass | |
| class B: | |
| y = X # E: Name "X" is not defined | |
| [out] | |
| [case testStubPackage] | |
| from m import x | |
| from m import y # E: Module "m" has no attribute "y" | |
| [file m/__init__.pyi] | |
| x = 1 | |
| [out] | |
| [case testStubPackageSubModule] | |
| from m import x | |
| from m import y # E: Module "m" has no attribute "y" | |
| from m.m2 import y | |
| from m.m2 import z # E: Module "m.m2" has no attribute "z" | |
| [file m/__init__.pyi] | |
| x = 1 | |
| [file m/m2.pyi] | |
| y = 1 | |
| [out] | |
| [case testListComprehensionSpecialScoping] | |
| class A: | |
| x = 1 | |
| y = 1 | |
| z = 1 | |
| [x for i in z if y] | |
| [out] | |
| main:5: error: Name "x" is not defined | |
| main:5: error: Name "y" is not defined | |
| [case testTypeRedeclarationNoSpuriousWarnings] | |
| from typing import Tuple | |
| a = 1 # type: int | |
| a = 's' # type: str | |
| a = ('spam', 'spam', 'eggs', 'spam') # type: Tuple[str] | |
| [builtins fixtures/tuple.pyi] | |
| [out] | |
| main:3: error: Name "a" already defined on line 2 | |
| main:4: error: Name "a" already defined on line 2 | |
| [case testDuplicateDefFromImport] | |
| from m import A | |
| class A: # E: Name "A" already defined (possibly by an import) | |
| pass | |
| [file m.py] | |
| class A: | |
| pass | |
| [out] | |
| [case testDuplicateDefDec] | |
| from typing import Any | |
| def dec(x: Any) -> Any: | |
| return x | |
| @dec | |
| def f() -> None: | |
| pass | |
| @dec # E: Name "f" already defined on line 4 | |
| def f() -> None: | |
| pass | |
| [out] | |
| [case testDuplicateDefOverload] | |
| from typing import overload, Any | |
| if 1: | |
| @overload | |
| def f(x: int) -> None: | |
| pass | |
| @overload | |
| def f(x: str) -> None: | |
| pass | |
| def f(x: Any) -> None: | |
| pass | |
| else: | |
| def f(x: str) -> None: # E: Name "f" already defined on line 3 | |
| pass | |
| [out] | |
| [case testDuplicateDefNT] | |
| from typing import NamedTuple | |
| N = NamedTuple('N', [('a', int), | |
| ('b', str)]) | |
| class N: # E: Name "N" already defined on line 2 | |
| pass | |
| [builtins fixtures/tuple.pyi] | |
| [out] | |
| [case testDuplicateDefTypedDict] | |
| from typing import TypedDict | |
| Point = TypedDict('Point', {'x': int, 'y': int}) | |
| class Point: # E: Name "Point" already defined on line 2 | |
| pass | |
| [builtins fixtures/dict.pyi] | |
| [typing fixtures/typing-typeddict.pyi] | |
| [out] | |
| [case testTypeVarClassDup] | |
| from typing import TypeVar | |
| T = TypeVar('T') | |
| class T: ... # E: Name "T" already defined on line 2 | |
| [out] | |
| [case testAliasDup] | |
| from typing import List | |
| A = List[int] | |
| class A: ... # E: Name "A" already defined on line 2 | |
| [builtins fixtures/list.pyi] | |
| [out] | |
| [case testNoInvalidTypeInDynamicFunctions] | |
| from typing import Dict, TypeVar | |
| T = TypeVar('T') | |
| def f(): # Note no annotation | |
| x: Dict[str, T] = {} | |
| y: T | |
| z: x | |
| def nested(): pass | |
| t: nested | |
| def g() -> None: | |
| x: Dict[str, T] = {} # E: Type variable "__main__.T" is unbound \ | |
| # N: (Hint: Use "Generic[T]" or "Protocol[T]" base class to bind "T" inside a class) \ | |
| # N: (Hint: Use "T" in function signature to bind "T" inside a function) | |
| [builtins fixtures/dict.pyi] | |
| [out] | |
| [case testParamSpec] | |
| from typing_extensions import ParamSpec | |
| TParams = ParamSpec('TParams') | |
| TP = ParamSpec('?') # E: String argument 1 "?" to ParamSpec(...) does not match variable name "TP" | |
| TP2: int = ParamSpec('TP2') # E: Cannot declare the type of a TypeVar or similar construct | |
| [out] | |
| [case testBaseClassAnnotatedWithoutArgs] | |
| # https://github.com/python/mypy/issues/11808 | |
| from typing_extensions import Annotated | |
| # Next line should not crash: | |
| class A(Annotated): pass # E: Annotated[...] must have exactly one type argument and at least one annotation | |
| [case testInvalidUnpackTypes] | |
| from typing_extensions import Unpack | |
| from typing import Tuple | |
| heterogenous_tuple: Tuple[Unpack[Tuple[int, str]]] | |
| homogeneous_tuple: Tuple[Unpack[Tuple[int, ...]]] | |
| bad: Tuple[Unpack[int]] # E: "int" cannot be unpacked (must be tuple or TypeVarTuple) | |
| [builtins fixtures/tuple.pyi] | |
| [case testTypeVarTupleErrors] | |
| from typing import Generic | |
| from typing_extensions import TypeVarTuple, Unpack | |
| TVariadic = TypeVarTuple('TVariadic') | |
| TVariadic2 = TypeVarTuple('TVariadic2') | |
| TP = TypeVarTuple('?') # E: String argument 1 "?" to TypeVarTuple(...) does not match variable name "TP" | |
| TP2: int = TypeVarTuple('TP2') # E: Cannot declare the type of a TypeVar or similar construct | |
| TP3 = TypeVarTuple() # E: Too few arguments for TypeVarTuple() | |
| TP4 = TypeVarTuple('TP4', 'TP4') # E: Too many positional arguments for "TypeVarTuple" | |
| TP5 = TypeVarTuple(t='TP5') # E: TypeVarTuple() expects a string literal as first argument | |
| TP6 = TypeVarTuple('TP6', bound=int) # E: Unexpected keyword argument "bound" for "TypeVarTuple" | |
| x: TVariadic # E: TypeVarTuple "TVariadic" is unbound | |
| y: Unpack[TVariadic] # E: Unpack is only valid in a variadic position | |
| class Variadic(Generic[Unpack[TVariadic], Unpack[TVariadic2]]): # E: Can only use one type var tuple in a class def | |
| pass | |
| def bad_args(*args: TVariadic): # E: TypeVarTuple "TVariadic" is only valid with an unpack | |
| pass | |
| def bad_kwargs(**kwargs: Unpack[TVariadic]): # E: Unpack item in ** parameter must be a TypedDict | |
| pass | |
| [builtins fixtures/dict.pyi] |