Skip to content

Commit a6f4fcc

Browse files
Use typing.Unpack in tests
1 parent 049afbc commit a6f4fcc

File tree

1 file changed

+47
-40
lines changed

1 file changed

+47
-40
lines changed

test-data/unit/check-kwargs.test

Lines changed: 47 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -499,35 +499,38 @@ g(**m) # E: Argument 1 to "g" has incompatible type "**Mapping[str, object]"; e
499499
[builtins fixtures/dict.pyi]
500500

501501
[case testTupleExpressionWithUnionStarArgs]
502-
from typing import Union, List, Set, Tuple
502+
from typing import Union, List, Set, Tuple, Unpack
503503

504504
class A: pass
505505
class B: pass
506506
class C: pass
507507
class D: pass
508508

509-
# union of two fixed size types
510-
def test_fixed_size_union() -> None:
509+
510+
def test_union_same_size_tuple() -> None:
511511
# same size tuples
512512
x1: Union[tuple[A, B], tuple[None, None]]
513-
x2: Union[tuple[A, B], tuple[None, *tuple[None]]]
514-
x3: Union[tuple[A, B], tuple[None, None, *tuple[()]]]
515-
# different size tuples
516-
y1: Union[tuple[A, B], tuple[None, None, None]]
517-
y2: Union[tuple[A, B], tuple[None]]
513+
x2: Union[tuple[A, B], tuple[None, Unpack[tuple[None]]]]
514+
x3: Union[tuple[A, B], tuple[None, None, Unpack[tuple[()]]]]
518515
reveal_type( (*x1,) ) # N: Revealed type is "tuple[Union[__main__.A, None], Union[__main__.B, None]]"
519516
reveal_type( (*x2,) ) # N: Revealed type is "tuple[Union[__main__.A, None], Union[__main__.B, None]]"
520517
reveal_type( (*x3,) ) # N: Revealed type is "tuple[Union[__main__.A, None], Union[__main__.B, None]]"
518+
519+
def test_union_different_size_tuple() -> None:
520+
y1: Union[tuple[A, B], tuple[None, None, None]]
521+
y2: Union[tuple[A, B], tuple[None]]
522+
y3: Union[tuple[A, B], tuple[None, None, None, Unpack[tuple[()]]]]
521523
reveal_type( (*y1,) ) # N: Revealed type is "builtins.tuple[Union[__main__.A, __main__.B, None], ...]"
522524
reveal_type( (*y2,) ) # N: Revealed type is "builtins.tuple[Union[__main__.A, __main__.B, None], ...]"
525+
reveal_type( (*y2,) ) # N: Revealed type is "builtins.tuple[Union[__main__.A, __main__.B, None], ...]"
523526

524-
# union of mixed and variable size types
525-
def test_mixed_variable_size_union() -> None:
527+
def test_union_fixed_size_and_variadic_tuple() -> None:
526528
z1: Union[tuple[A, B, C], tuple[None, ...]]
529+
z2: Union[tuple[A, B, C], tuple[None, Unpack[tuple[None, ...]], None]]
527530
reveal_type( (*z1,) ) # N: Revealed type is "builtins.tuple[Union[__main__.A, __main__.B, __main__.C, None], ...]"
531+
reveal_type( (*z2,) ) # N: Revealed type is "builtins.tuple[Union[__main__.A, __main__.B, __main__.C, None], ...]"
528532

529-
# union of two variable size types
530-
def test_variable_size_union() -> None:
533+
def test_union_variable_size_tuples() -> None:
531534
# same + subtype
532535
tt1: Union[Tuple[Union[A, None], ...], Tuple[A, ...]]
533536
ll1: Union[List[Union[A, None]], List[A]]
@@ -561,35 +564,37 @@ def test_variable_size_union() -> None:
561564

562565

563566
[case testListExpressionWithUnionStarArgs]
564-
from typing import Union, List, Set, Tuple
567+
from typing import Union, List, Set, Tuple, Unpack
565568

566569
class A: pass
567570
class B: pass
568571
class C: pass
569572
class D: pass
570573

571-
# union of two fixed size types
572-
def test_fixed_size_union() -> None:
574+
def test_union_same_size_tuple() -> None:
573575
# same size tuples
574-
x1: Union[tuple[A, B], tuple[None, None, None]]
575-
x2: Union[tuple[A, B], tuple[None, *tuple[None], None]]
576-
x3: Union[tuple[A, B], tuple[None, None, None, *tuple[()]]]
577-
# different size tuples
576+
x1: Union[tuple[A, B], tuple[None, None]]
577+
x2: Union[tuple[A, B], tuple[None, Unpack[tuple[None]]]]
578+
x3: Union[tuple[A, B], tuple[None, None, Unpack[tuple[()]]]]
579+
reveal_type( [*x1] ) # N: Revealed type is "builtins.list[Union[__main__.A, None, __main__.B]]"
580+
reveal_type( [*x2] ) # N: Revealed type is "builtins.list[Union[__main__.A, None, __main__.B]]"
581+
reveal_type( [*x3] ) # N: Revealed type is "builtins.list[Union[__main__.A, None, __main__.B]]"
582+
583+
def test_union_different_size_tuple() -> None:
578584
y1: Union[tuple[A, B], tuple[None, None, None]]
579585
y2: Union[tuple[A, B], tuple[None]]
580-
reveal_type( [*x1] ) # N: Revealed type is "builtins.list[Union[__main__.A, __main__.B, None]]"
581-
reveal_type( [*x2] ) # N: Revealed type is "builtins.list[Union[__main__.A, __main__.B, None]]"
582-
reveal_type( [*x3] ) # N: Revealed type is "builtins.list[Union[__main__.A, __main__.B, None]]"
586+
y3: Union[tuple[A, B], tuple[None, None, None, Unpack[tuple[()]]]]
583587
reveal_type( [*y1] ) # N: Revealed type is "builtins.list[Union[__main__.A, __main__.B, None]]"
584588
reveal_type( [*y2] ) # N: Revealed type is "builtins.list[Union[__main__.A, __main__.B, None]]"
589+
reveal_type( [*y2] ) # N: Revealed type is "builtins.list[Union[__main__.A, __main__.B, None]]"
585590

586-
# union of mixed and variable size types
587-
def test_mixed_variable_size_union() -> None:
591+
def test_union_fixed_size_and_variadic_tuple() -> None:
588592
z1: Union[tuple[A, B, C], tuple[None, ...]]
593+
z2: Union[tuple[A, B, C], tuple[None, Unpack[tuple[None, ...]], None]]
589594
reveal_type( [*z1] ) # N: Revealed type is "builtins.list[Union[__main__.A, __main__.B, __main__.C, None]]"
595+
reveal_type( [*z2] ) # N: Revealed type is "builtins.list[Union[__main__.A, __main__.B, __main__.C, None]]"
590596

591-
# union of two variable size types
592-
def test_variable_size_union() -> None:
597+
def test_union_variable_size_tuples() -> None:
593598
# same + subtype
594599
tt1: Union[Tuple[Union[A, None], ...], Tuple[A, ...]]
595600
ll1: Union[List[Union[A, None]], List[A]]
@@ -623,35 +628,37 @@ def test_variable_size_union() -> None:
623628

624629

625630
[case testSetExpressionWithUnionStarArgs]
626-
from typing import Union, List, Set, Tuple
631+
from typing import Union, List, Set, Tuple, Unpack
627632

628633
class A: pass
629634
class B: pass
630635
class C: pass
631636
class D: pass
632637

633-
# union of two fixed size types
634-
def test_fixed_size_union() -> None:
638+
def test_union_same_size_tuple() -> None:
635639
# same size tuples
636-
x1: Union[tuple[A, B], tuple[None, None, None]]
637-
x2: Union[tuple[A, B], tuple[None, *tuple[None], None]]
638-
x3: Union[tuple[A, B], tuple[None, None, None, *tuple[()]]]
639-
# different size tuples
640+
x1: Union[tuple[A, B], tuple[None, None]]
641+
x2: Union[tuple[A, B], tuple[None, Unpack[tuple[None]]]]
642+
x3: Union[tuple[A, B], tuple[None, None, Unpack[tuple[()]]]]
643+
reveal_type( {*x1} ) # N: Revealed type is "builtins.set[Union[__main__.A, None, __main__.B]]"
644+
reveal_type( {*x2} ) # N: Revealed type is "builtins.set[Union[__main__.A, None, __main__.B]]"
645+
reveal_type( {*x3} ) # N: Revealed type is "builtins.set[Union[__main__.A, None, __main__.B]]"
646+
647+
def test_union_different_size_tuple() -> None:
640648
y1: Union[tuple[A, B], tuple[None, None, None]]
641649
y2: Union[tuple[A, B], tuple[None]]
642-
reveal_type( {*x1} ) # N: Revealed type is "builtins.set[Union[__main__.A, __main__.B, None]]"
643-
reveal_type( {*x2} ) # N: Revealed type is "builtins.set[Union[__main__.A, __main__.B, None]]"
644-
reveal_type( {*x3} ) # N: Revealed type is "builtins.set[Union[__main__.A, __main__.B, None]]"
650+
y3: Union[tuple[A, B], tuple[None, None, None, Unpack[tuple[()]]]]
645651
reveal_type( {*y1} ) # N: Revealed type is "builtins.set[Union[__main__.A, __main__.B, None]]"
646652
reveal_type( {*y2} ) # N: Revealed type is "builtins.set[Union[__main__.A, __main__.B, None]]"
653+
reveal_type( {*y2} ) # N: Revealed type is "builtins.set[Union[__main__.A, __main__.B, None]]"
647654

648-
# union of mixed and variable size types
649-
def test_mixed_variable_size_union() -> None:
655+
def test_union_fixed_size_and_variadic_tuple() -> None:
650656
z1: Union[tuple[A, B, C], tuple[None, ...]]
657+
z2: Union[tuple[A, B, C], tuple[None, Unpack[tuple[None, ...]], None]]
651658
reveal_type( {*z1} ) # N: Revealed type is "builtins.set[Union[__main__.A, __main__.B, __main__.C, None]]"
659+
reveal_type( {*z2} ) # N: Revealed type is "builtins.set[Union[__main__.A, __main__.B, __main__.C, None]]"
652660

653-
# union of two variable size types
654-
def test_variable_size_union() -> None:
661+
def test_union_variable_size_tuples() -> None:
655662
# same + subtype
656663
tt1: Union[Tuple[Union[A, None], ...], Tuple[A, ...]]
657664
ll1: Union[List[Union[A, None]], List[A]]

0 commit comments

Comments
 (0)