The generic collections in typing were deprecated in favor of the generic collections in The objects and the types were exposed to user code, and in the future they will not be

> We don't want there to be warnings about them
> forever

The new  wanrings._deprecated automatically removes features, so deprecations cannot be forgotten anymore 

On Fri, Jul 1, 2022, 6:19 AM Stephen J. Turnbull <> wrote: writes:

 > I accidentally created another thread in python-dev as I mentioned
 > above, but ideally Optional and Union should both be deprecated and
 > phased out for the new syntax.

I think a formal deprecation is a bad idea.  An annotation is an
object, which has a type.  Both the object and the type are going to
be visible to users.  We don't want there to be warnings about them
forever, and Python as a rule does not formally deprecate working code
that is expected to continue to work indefinitely.

I suspect that it would be difficult to get a stylistic deprecation
into PEP 8 (IIRC type annotations are still not allowed in stdlib code
so it would be considered out of scope), but you could try lobbying
the maintainers of linters.

BTW, I disagree with your arguments that Optional and Union are
misleading names that can be easily misunderstood, especially in the
usual context of formal arguments in function definitions.  The
suggestion of "Noneable" takes the Pythonic implementation of optional
arguments (by defaulting to None) too seriously, at the expense of the
syntactic intention: an argument that may be omitted.  Among other
things, very frequently 'None' is *not* an allowed value in the body
of the function, some other value is immediately substituted (and PEP
671 explicitly tries to automate this process for the common case of a
mutable default that should be constructed at call time, so that even
the idiomatic "if arg is None" statement is left out).

"Optional" is the normal term used for such arguments, "union" is the
technical term for types composed of being either this or that type.
If you need to know any more than that about those types, you're going
to have to study up no matter what terms are used.  That's just the
nature of using natural language words to name things that have a
precise definition and implementation in software.  Study is required.

Python-ideas mailing list --
To unsubscribe send an email to
Message archived at
Code of Conduct: