(self)
| 9477 | self.assertEqual(A.__origin__, int) |
| 9478 | |
| 9479 | def test_deduplicate_from_union(self): |
| 9480 | # Regular: |
| 9481 | self.assertEqual(get_args(Annotated[int, 1] | int), |
| 9482 | (Annotated[int, 1], int)) |
| 9483 | self.assertEqual(get_args(Union[Annotated[int, 1], int]), |
| 9484 | (Annotated[int, 1], int)) |
| 9485 | self.assertEqual(get_args(Annotated[int, 1] | Annotated[int, 2] | int), |
| 9486 | (Annotated[int, 1], Annotated[int, 2], int)) |
| 9487 | self.assertEqual(get_args(Union[Annotated[int, 1], Annotated[int, 2], int]), |
| 9488 | (Annotated[int, 1], Annotated[int, 2], int)) |
| 9489 | self.assertEqual(get_args(Annotated[int, 1] | Annotated[str, 1] | int), |
| 9490 | (Annotated[int, 1], Annotated[str, 1], int)) |
| 9491 | self.assertEqual(get_args(Union[Annotated[int, 1], Annotated[str, 1], int]), |
| 9492 | (Annotated[int, 1], Annotated[str, 1], int)) |
| 9493 | |
| 9494 | # Duplicates: |
| 9495 | self.assertEqual(Annotated[int, 1] | Annotated[int, 1] | int, |
| 9496 | Annotated[int, 1] | int) |
| 9497 | self.assertEqual(Union[Annotated[int, 1], Annotated[int, 1], int], |
| 9498 | Union[Annotated[int, 1], int]) |
| 9499 | |
| 9500 | # Unhashable metadata: |
| 9501 | self.assertEqual(get_args(str | Annotated[int, {}] | Annotated[int, set()] | int), |
| 9502 | (str, Annotated[int, {}], Annotated[int, set()], int)) |
| 9503 | self.assertEqual(get_args(Union[str, Annotated[int, {}], Annotated[int, set()], int]), |
| 9504 | (str, Annotated[int, {}], Annotated[int, set()], int)) |
| 9505 | self.assertEqual(get_args(str | Annotated[int, {}] | Annotated[str, {}] | int), |
| 9506 | (str, Annotated[int, {}], Annotated[str, {}], int)) |
| 9507 | self.assertEqual(get_args(Union[str, Annotated[int, {}], Annotated[str, {}], int]), |
| 9508 | (str, Annotated[int, {}], Annotated[str, {}], int)) |
| 9509 | |
| 9510 | self.assertEqual(get_args(Annotated[int, 1] | str | Annotated[str, {}] | int), |
| 9511 | (Annotated[int, 1], str, Annotated[str, {}], int)) |
| 9512 | self.assertEqual(get_args(Union[Annotated[int, 1], str, Annotated[str, {}], int]), |
| 9513 | (Annotated[int, 1], str, Annotated[str, {}], int)) |
| 9514 | |
| 9515 | import dataclasses |
| 9516 | @dataclasses.dataclass |
| 9517 | class ValueRange: |
| 9518 | lo: int |
| 9519 | hi: int |
| 9520 | v = ValueRange(1, 2) |
| 9521 | self.assertEqual(get_args(Annotated[int, v] | None), |
| 9522 | (Annotated[int, v], types.NoneType)) |
| 9523 | self.assertEqual(get_args(Union[Annotated[int, v], None]), |
| 9524 | (Annotated[int, v], types.NoneType)) |
| 9525 | self.assertEqual(get_args(Optional[Annotated[int, v]]), |
| 9526 | (Annotated[int, v], types.NoneType)) |
| 9527 | |
| 9528 | # Unhashable metadata duplicated: |
| 9529 | self.assertEqual(Annotated[int, {}] | Annotated[int, {}] | int, |
| 9530 | Annotated[int, {}] | int) |
| 9531 | self.assertEqual(Annotated[int, {}] | Annotated[int, {}] | int, |
| 9532 | int | Annotated[int, {}]) |
| 9533 | self.assertEqual(Union[Annotated[int, {}], Annotated[int, {}], int], |
| 9534 | Union[Annotated[int, {}], int]) |
| 9535 | self.assertEqual(Union[Annotated[int, {}], Annotated[int, {}], int], |
| 9536 | Union[int, Annotated[int, {}]]) |
nothing calls this directly
no test coverage detected