On Fri, Aug 30, 2019 at 8:28 AM Guido van Rossum <guido@python.org> wrote:
> Open question: at runtime, what should `int | str` return? I don't want this to have to import the typing module. Maybe we could make a very simple `Union` builtin. This can then also be used by `~int` (which is equivalent to `int | None`).
>
Would it be okay to have a very simple Union builtin now, and it just
always returns exactly that, and then in the future it might
potentially actually return Union[int, str] ?
I'm not pushing for it *now*, but it would be extremely handy in the
future to be able to say isinstance(3, int|str) and have it be
meaningful.
Are you suggesting we introduce the "very simple Union builtin" earlier than the "int | str" notation/implementation? Why? 3.8 is closed for features, so it would be 3.9 at the earliest -- plenty of time to implement this right (including `isinstance(x, int|str)`).
I do think we should probably review PEP 585 before doing anything about unions specifically -- likely there are bigger fish to fry. (And PEP 585 has not received much discussion.)
--