[Python-Dev] Preserving the definition order of class namespaces.

Barry Warsaw barry at python.org
Wed May 27 16:29:48 CEST 2015

On May 27, 2015, at 06:34 PM, Nick Coghlan wrote:

>I'd actually like to pursue a more nuanced view of what's permitted in
>maintenance releases, based on a combination of the language moratorium
>PEP, and an approach inspired by PEP 466, requiring that every feature
>added in a maintenance release be detectable through an attribute check on
>a module (with corresponding support in dependency checking tools).

PEP 466 and Python 2.7 are a special case.  I wouldn't want to adopt such
tactics in normal Python 3 releases.

Imagine the nightmare of some poor library author who wants to make sure their
package works with Python 3.6.  They're faced with a source release of 3.6.5,
but 3.6.3 in Ubuntu, 3.6.4 in Fedora, 3.6.2 in Debian, and users of all
stripes of patch releases on Windows and OS X.  Now they have to pepper their
code with attribute tests just to support "Python 3.6".  In fact, claiming
support for Python 3.6 actually doesn't convey enough information to their

Sure, we can limit this to new features, but even new features introduce risk.
We've decided to accept this risk for Python 2.7 for good and important
reasons, but we shouldn't do the same for ongoing normal releases.

>The problem with simply speeding up the release cycle without constraining
>the interim releases in some way is that it creates significant pain for
>alternate implementations and for downstream redistributors (many of whom
>are still dealing with the fallout of the Python 3 transition).

I'm not convinced that relaxing the maintenance release constraints lessens
the pain for anybody.


More information about the Python-Dev mailing list