[Python-Dev] When to remove deprecated stuff

Chris Angelico rosuav at gmail.com
Thu Aug 22 17:07:55 CEST 2013

On Thu, Aug 22, 2013 at 11:45 PM, Michael Foord
<fuzzyman at voidspace.org.uk> wrote:
> On 22 Aug 2013, at 14:00, Petri Lehtinen <petri at digip.org> wrote:
>> Django's deprecation policy works like this: They deprecate something
>> in version A.B. It still works normally in A.B+1, generates a
>> (silenced) DeprecationWarning in A.B+2, and is finally removed in
>> A.B+3. So if I haven't read through the full release notes of each
>> release nor enabled DeprecationWarnings, I end up having something
>> broken each time I upgrade Django.
> So you're still using features deprecated three releases ago, you haven't checked for DeprecationWarnings and it's Django making your life difficult?
> Why not check for the deprecation warnings?

Sounds like the DeprecationWarnings give you just one version of
advance notice. You would have to be (a) upgrading every version as it
comes out, and (b) checking your log of warnings prior to every
upgrade. Neither A.B nor A.B+1 will help you even if you check the
warnings. So it would still require checking the full release notes
every time, if you want to know about what's being deprecated. Seems a
lot of annoying breakage to me.

Python is frequently not upgraded release-by-release. I've had servers
jump several versions at a time; my oldest server now is running 3.1.1
(and 2.6.4), so when it eventually gets upgraded, it'll probably jump
to 3.3 or 3.4. Unless something's producing visible warnings all the
way back to 3.1, removal in 3.4 has the potential to be surprising.


More information about the Python-Dev mailing list