I like the idea in principle.

Could be as simple the presence of a __deprecated__ attribute on the class or function being deprecated. A simple decorator could set it.

On Mon, 2021-07-12 at 19:37 +0100, Sergei Lebedev wrote:
Hi python-ideas,

The subject is by no means new nor unique, and in fact has been discussed on python-ideas at least once before as well as in python/mypy#2403..

However, to date, there seems to be no standard way of deprecating things declaratively, and ~every major library has its own internal API for that. For example,

* numpy.deprecate,
* similar decorators in pandas and TensorFlow,
* twisted.python.deprecate,
* warn_about_renamed_method in Django,
* etc etc.

The proliferation of deprecation APIs itself is not a problem, but it does make it difficult (if not impossible) for language tooling to consume that deprecation information and help users of these libraries write better code.

Imagine, if there was a standard way to flag something as deprecated. That would allow, for example, an IDE or a linter to statically flag a particular usage site as problematic and, assuming such information is available, to suggest an auto-generated fix (see @Deprecated in Kotlin, for example).

What do you think? Is anyone interested in discussing this further and perhaps sketching an API which could work reasonably well for library authors as well as for tooling?

Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-leave@python.org
Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/EABCXCALZFRDH7CKMUL4YHFBQFOBUWN7/
Code of Conduct: http://python.org/psf/codeofconduct/