MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_deduplicate_from_union

Method test_deduplicate_from_union

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

Source from the content-addressed store, hash-verified

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, {}]])

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