MCPcopy Index your code
hub / github.com/python/cpython / test_deduplicate_from_union

Method test_deduplicate_from_union

Lib/test/test_typing.py:9603–9660  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

9601 self.assertEqual(A.__origin__, int)
9602
9603 def test_deduplicate_from_union(self):
9604 # Regular:
9605 self.assertEqual(get_args(Annotated[int, 1] | int),
9606 (Annotated[int, 1], int))
9607 self.assertEqual(get_args(Union[Annotated[int, 1], int]),
9608 (Annotated[int, 1], int))
9609 self.assertEqual(get_args(Annotated[int, 1] | Annotated[int, 2] | int),
9610 (Annotated[int, 1], Annotated[int, 2], int))
9611 self.assertEqual(get_args(Union[Annotated[int, 1], Annotated[int, 2], int]),
9612 (Annotated[int, 1], Annotated[int, 2], int))
9613 self.assertEqual(get_args(Annotated[int, 1] | Annotated[str, 1] | int),
9614 (Annotated[int, 1], Annotated[str, 1], int))
9615 self.assertEqual(get_args(Union[Annotated[int, 1], Annotated[str, 1], int]),
9616 (Annotated[int, 1], Annotated[str, 1], int))
9617
9618 # Duplicates:
9619 self.assertEqual(Annotated[int, 1] | Annotated[int, 1] | int,
9620 Annotated[int, 1] | int)
9621 self.assertEqual(Union[Annotated[int, 1], Annotated[int, 1], int],
9622 Union[Annotated[int, 1], int])
9623
9624 # Unhashable metadata:
9625 self.assertEqual(get_args(str | Annotated[int, {}] | Annotated[int, set()] | int),
9626 (str, Annotated[int, {}], Annotated[int, set()], int))
9627 self.assertEqual(get_args(Union[str, Annotated[int, {}], Annotated[int, set()], int]),
9628 (str, Annotated[int, {}], Annotated[int, set()], int))
9629 self.assertEqual(get_args(str | Annotated[int, {}] | Annotated[str, {}] | int),
9630 (str, Annotated[int, {}], Annotated[str, {}], int))
9631 self.assertEqual(get_args(Union[str, Annotated[int, {}], Annotated[str, {}], int]),
9632 (str, Annotated[int, {}], Annotated[str, {}], int))
9633
9634 self.assertEqual(get_args(Annotated[int, 1] | str | Annotated[str, {}] | int),
9635 (Annotated[int, 1], str, Annotated[str, {}], int))
9636 self.assertEqual(get_args(Union[Annotated[int, 1], str, Annotated[str, {}], int]),
9637 (Annotated[int, 1], str, Annotated[str, {}], int))
9638
9639 import dataclasses
9640 @dataclasses.dataclass
9641 class ValueRange:
9642 lo: int
9643 hi: int
9644 v = ValueRange(1, 2)
9645 self.assertEqual(get_args(Annotated[int, v] | None),
9646 (Annotated[int, v], types.NoneType))
9647 self.assertEqual(get_args(Union[Annotated[int, v], None]),
9648 (Annotated[int, v], types.NoneType))
9649 self.assertEqual(get_args(Optional[Annotated[int, v]]),
9650 (Annotated[int, v], types.NoneType))
9651
9652 # Unhashable metadata duplicated:
9653 self.assertEqual(Annotated[int, {}] | Annotated[int, {}] | int,
9654 Annotated[int, {}] | int)
9655 self.assertEqual(Annotated[int, {}] | Annotated[int, {}] | int,
9656 int | Annotated[int, {}])
9657 self.assertEqual(Union[Annotated[int, {}], Annotated[int, {}], int],
9658 Union[Annotated[int, {}], int])
9659 self.assertEqual(Union[Annotated[int, {}], Annotated[int, {}], int],
9660 Union[int, Annotated[int, {}]])

Callers

nothing calls this directly

Calls 4

get_argsFunction · 0.90
setFunction · 0.85
ValueRangeClass · 0.85
assertEqualMethod · 0.45

Tested by

no test coverage detected