@@ -77,21 +77,32 @@ from typing import TypeVar, ParamSpec, List, Union, Callable, Tuple
77
77
from typing_extensions import TypeVarTuple, Unpack
78
78
79
79
T1 = TypeVar("T1", default=str)
80
+ T2 = TypeVar("T2", bound=str, default=str)
81
+ T3 = TypeVar("T3", bytes, str, default=str)
80
82
P1 = ParamSpec("P1", default=(int, str))
81
83
Ts1 = TypeVarTuple("Ts1", default=Unpack[Tuple[int, str]])
82
84
83
85
def callback1(x: str) -> None: ...
84
86
85
- def func1 (x: Union[int, T1]) -> List[T1] : ...
86
- reveal_type(func1 (2)) # N: Revealed type is "builtins.list[builtins. str] "
87
- reveal_type(func1 (2.1)) # N: Revealed type is "builtins.list[builtins. float] "
87
+ def func_a1 (x: Union[int, T1]) -> T1 : ...
88
+ reveal_type(func_a1 (2)) # N: Revealed type is "builtins.str"
89
+ reveal_type(func_a1 (2.1)) # N: Revealed type is "builtins.float"
88
90
89
- def func2(x: Union[int, Callable[P1, None]]) -> Callable[P1, None]: ...
91
+ def func_a2(x: Union[int, T1]) -> List[T1]: ...
92
+ reveal_type(func_a2(2)) # N: Revealed type is "builtins.list[builtins.str]"
93
+ reveal_type(func_a2(2.1)) # N: Revealed type is "builtins.list[builtins.float]"
90
94
91
- reveal_type(func2(callback1)) # N: Revealed type is "def (x: builtins.str)"
92
- reveal_type(func2 (2)) # N: Revealed type is "def ( builtins.int, builtins. str) "
95
+ def func_a3(x: Union[int, T2]) -> T2: ...
96
+ reveal_type(func_a3 (2)) # N: Revealed type is "builtins.str"
93
97
94
- def func3(x: Union[int, Callable[[Unpack[Ts1]], None]]) -> Tuple[Unpack[Ts1]]: ...
95
- # reveal_type(func3(callback1)) # Revealed type is "builtins.tuple[str]" # TODO
96
- # reveal_type(func3(2)) # Revealed type is "builtins.tuple[builtins.int, builtins.str]" # TODO
98
+ def func_a4(x: Union[int, T3]) -> T3: ...
99
+ reveal_type(func_a4(2)) # N: Revealed type is "builtins.str"
100
+
101
+ def func_b1(x: Union[int, Callable[P1, None]]) -> Callable[P1, None]: ...
102
+ reveal_type(func_b1(callback1)) # N: Revealed type is "def (x: builtins.str)"
103
+ reveal_type(func_b1(2)) # N: Revealed type is "def (builtins.int, builtins.str)"
104
+
105
+ def func_c1(x: Union[int, Callable[[Unpack[Ts1]], None]]) -> Tuple[Unpack[Ts1]]: ...
106
+ # reveal_type(func_c1(callback1)) # Revealed type is "builtins.tuple[str]" # TODO
107
+ # reveal_type(func_c1(2)) # Revealed type is "builtins.tuple[builtins.int, builtins.str]" # TODO
97
108
[builtins fixtures/tuple.pyi]
0 commit comments