[Python-Dev] Silent deprecation
Guido van Rossum
guido@python.org
Wed, 29 May 2002 11:23:44 -0400
[Changed subject]
[Raymond Hettinger]
> Last month, I took the bait and went to comp.lang.py with a proposal
> to deprecate some builtins. I learned that every builtin (except for
> input()) has a lot of friends.
And input() has one important friend. :-)
> With each set of flames, I mean comments, I modified my proposal
> until it evolved to "psuedo-deprecation". Amazingly, this attracted
> no flames at all. The net result is that psuedo-deprecation seems
> to be acceptable as way of removing cruft and lowering the sum total
> pool of working knowledge that a Python programmer has to keep in
> mind.
I guess this means that people don't mind us telling them which
features are obsolete, but they hate it with a vengeance when their
programs that they have deployed in the field with end users start
spewing warning messages.
> Instead of de-documenting obsolete tools, I propose moving their
> documentation to a separate section of the docs set aside for cruft.
> This makes it possible to understand exactly what old code was
> doing.
Hm, getting the docs for a previous version is easy enough. We never
throw anything away.
> It makes sure that the newly dedocumented features don't take on
> never-documented assumptions. Putting it in a separate place allows
> us to document the rationale for psuedo-deprecation and to suggest
> alternatives. Collecting it in one place provides authors with a
> checklist of things to take out of their book updates.
I think we can do two things. Either we can keep the docs for
deprecated features but clearly mark the chapter or section with a
deprecation note at the start, in bold.
Or we can remove the docs for deprecated features, and add a chapter
"deprecated features" which mentions each deprecated feature without
describing it in detail, and provides information about what to use
instead.
> On the warning side of the equation, I have two ideas. While there
> would not be warnings kicking out automatically, we could add an
> option or tool that developers could use to temporarily flag use of
> psuedo-deprecated features.
This is what I meant by having a SilentDeprecationWarning category --
a special form of the -W option can cause it to spew messages, but by
default it won't.
> The second idea, is to move responsibility for obsolesence warnings
> to PyChecker.
This is not always feasible; some things can only be discovered at
run-time (e.g. the oct/hex/<< warnings).
--Guido van Rossum (home page: http://www.python.org/~guido/)