(self)
| 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, {}]]) |
nothing calls this directly
no test coverage detected