Updating a package on PyPi, testing and etiquette

Steven D'Aprano steve+comp.lang.python at pearwood.info
Tue May 12 22:17:01 EDT 2015


On Wed, 13 May 2015 04:18 am, Ned Batchelder wrote:

> On Tuesday, May 12, 2015 at 2:03:04 PM UTC-4, Rob Gaddi wrote:
[...]
>> B) If I can't manage that, what's the etiquette behind having later
>> versions of a module break compatibility with older versions of Python.
>> I've avoided using features I know are newer, like yield from and Enums,
>> but I won't swear it'll work on 3.0 if I can't test it that way.
> 
> No one supports 3.0 any more.  3.2 is kind of the oldest version
> that is still reasonable, and many people are only aiming for 3.3
> and 3.4.

No one *should* support 3.0. It is semi-officially "broken".

The first production-ready (i.e. "final") version of 3.0 was released on
December 3rd, 2008. It soon became obvious that it had serious problems,
and following a single point release (3.0.1) it reached official end of
life with the release of 3.1 on June 27th, 2009.

There's no outright prohibition on supporting 3.0, and if somebody wants to
use it they can (we can't stop you, it's FOSS), but unlike older versions
which have reached end of life in the fullness of time, 3.0 never had a
user-base actually relying on it in production. It would be a waste of time
to explicitly support it.

Anything written for 3.1 will probably work in 3.0, and if it doesn't, it's
probably a bug in 3.0. Either way, I wouldn't waste time fixing bugs that
only affected 3.0.


> Just because you are supporting 2.7 and 3.4 doesn't mean you need
> to support 3.0 and 3.1.  

I agree whole-heartily with that. 2.x and 3.x are a fork in the language,
and you can support older versions on one branch without necessarily doing
the same on the other branch.

# requires fixed-width font for best results

1.4->1.5->2.0->2.1->2.2->2.3->2.4->2.5->2.6->2.7
       \                           \
        \                           3.0->3.1->3.2->3.3->3.4
         1.6


(I am unsure whether what became 3.0 *literally* was forked from 2.4, I
suspect not, but 2.5 was intended as the first of the transition versions
for moving between 2.4 and what was then known as Python 3000, and 2.6 was
the first to explicitly include Python 3 features via the __future__
module.)


> 2.x and 3.x are different languages.  

I wish people wouldn't say that. They're different languages in the same
sense that American English and British English are different languages. I
prefer to emphasise the 98% similarities by calling them different dialects
than the 2% differences -- especially since it has turned out to be far
easier and more practical to write hybrid 2.x + 3.x code than anyone
imagined back in the Python 3000 days.



-- 
Steven




More information about the Python-list mailing list