On Sat, Mar 14, 2020 at 12:24 AM Noah Peter May <m...@noahpmay.dev> wrote:
>
> Hello everyone,
>
> I'm not certain if this has been brought up before, but I felt like bringing 
> it to the table anyway.
>
> As the title says, it would be convenient to represent a union type with the 
> or operator.
>

Yep! You're not the only one to want this.

> The next is actually a question: do we use "bitwise or" or "boolean or" (aka 
> "|" vs "or")? I honestly don't know which would be preferable. The latter is 
> more readable than the other but requires 3-4 characters (including 
> whitespace) vs just 1-3 extra. Both are shorter than the 8-9 chars for the 
> traditional union. I'll just use both in the examples for now.
>

The "or" operator is defined very thoroughly by the language and can't
be used for this, so the decision is made for you already - the "|"
operator is the only way to go.

> In either case, we could override the or-dunder method to return the "old" 
> union representation of types
>
> List | Tuple == Union[List, Tuple]
> (Union[List, Tuple] or Union[int, str]) == Union[List, Tuple, int, str]
>
> This should allow any code relying on run-time annotations to work as 
> expected.

Yep, agreed.

Have a look at PEP 604, which is looking at this same idea.

https://www.python.org/dev/peps/pep-0604/

I'm personally in favour :)

ChrisA
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/WQ2TI5YV5RNTCOGBS4ZVPHZEARXDLLJI/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to