for args in itertools.permutations(get_args(expr1)):
with self.subTest(args=args):
self.assertEqual(expr1, reduce(operator.or_, args))
+ self.assertEqual(expr1, Union[args])
expr2 = Union[Annotated[int, 1], str, Annotated[str, {}], int]
for args in itertools.permutations(get_args(expr2)):
if isinstance(t, GenericAlias):
return _rebuild_generic_alias(t, ev_args)
if isinstance(t, Union):
- return functools.reduce(operator.or_, ev_args)
+ return Union[ev_args]
else:
return t.copy_with(ev_args)
return t
stripped_args = tuple(_strip_annotations(a) for a in t.__args__)
if stripped_args == t.__args__:
return t
- return functools.reduce(operator.or_, stripped_args)
+ return Union[stripped_args]
return t