The generic collections in typing were deprecated in favor of the generic collections in collections.abc. 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 https://discuss.python.org/t/introducing-warnings-deprecated/14856 automatically removes features, so deprecations cannot be forgotten anymore On Fri, Jul 1, 2022, 6:19 AM Stephen J. Turnbull <stephenjturnbull@gmail.com> wrote:
nverich07@gmail.com 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.
Steve _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-leave@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/LELXP5... Code of Conduct: http://python.org/psf/codeofconduct/