[Python-Dev] Breaking up the stdlib (Was: release cadence)

Victor Stinner victor.stinner at gmail.com
Tue Jul 5 05:19:23 EDT 2016


asyncio is a good example because it wants to evolve faster than the
whole "CPython package". Each minor version of CPython adds news
features in asyncio. It is not always easy to document these changes.
Moreover, the behaviour of some functions also changed in minor

asyncio doesn't respect the trend of semantic versions
http://semver.org/ The major version should change if the behaviour of
an existing function changes.

2016-07-05 10:05 GMT+02:00 Chris Angelico <rosuav at gmail.com>:
> On the flip side, answering questions like "what version of Python do
> people need to run my program" become harder to answer, particularly
> if you have third-party dependencies. (The latest version of numpy
> might decide that it's going to 'import statistics', for instance.)

Recently, I wrote a "perf" module and I wanted to use the statistics
module. I was surprised to see that PyPI has a package called
"statistics" which just works on Python 2.7. In practice, I can use
statistics on Python 2.7, 3.4 and even 3.2 (but I didn't try, this
version is too old). It's a matter of describing correctly

pip supports a requirements.txt file which is a nice may to declare
dependency. You can:

* specify the minimum library version
* make some library specific to some operation systems
* skip dependencies on some Python versions -- very helpful for
libraries parts of Python 3 stdlib (like statistics)

=> see Environment markers for conditions on dependencies

For perf, I'm using this setup() option in setup.py:

        'install_requires': ["statistics; python_version < '3.4'", "six"],

> One of the arguments against splitting the stdlib was that corporate
> approval for software is often hard to obtain, and it's much easier to
> say "I need approval to use Python, exactly as distributed by
> python.org" than "I need approval to use Python-core plus these five
> Python-stdlib sections".

*If* someone wants to split the stdlib into smaller parts and/or move
it out of CPython, you should already start to write a PEP. Or you
will have to reply to the same questions over and over ;-)

Is there a volunteer to write such PEP?


More information about the Python-Dev mailing list