From e761d70b6f74c201998663ba6d6ae34962a224b1 Mon Sep 17 00:00:00 2001 From: "Andrew M. Kuchling" Date: Mon, 27 Jun 2005 20:31:59 +0000 Subject: [PATCH] Take over PEP 206, renaming it to 'Python Advanced Library' --- pep-0000.txt | 4 +- pep-0206.txt | 194 ++++++++++++++++++++++----------------------------- 2 files changed, 87 insertions(+), 111 deletions(-) diff --git a/pep-0000.txt b/pep-0000.txt index 55eb7357f..63c201c4f 100644 --- a/pep-0000.txt +++ b/pep-0000.txt @@ -67,7 +67,7 @@ Index by Category Open PEPs (under consideration) - I 206 2.0 Batteries Included Zadka + I 206 Python Advanced Library Kuchling S 209 Adding Multidimensional Arrays Barrett, Oliphant S 228 Reworking Python's Numeric Model Zadka, GvR S 237 Unifying Long Integers and Integers Zadka, GvR @@ -248,7 +248,7 @@ Numerical Index SF 203 Augmented Assignments Wouters SR 204 Range Literals Wouters S 205 Weak References Drake - I 206 2.0 Batteries Included Zadka + I 206 Python Advanced Library Kuchling SF 207 Rich Comparisons GvR, Ascher SF 208 Reworking the Coercion Model Schemenauer, Lemburg S 209 Adding Multidimensional Arrays Barrett, Oliphant diff --git a/pep-0206.txt b/pep-0206.txt index 3d4299ddc..924e7bad1 100644 --- a/pep-0206.txt +++ b/pep-0206.txt @@ -1,133 +1,109 @@ PEP: 206 -Title: 2.0 Batteries Included +Title: Python Advanced Library Version: $Revision$ -Author: moshez@zadka.site.co.il (Moshe Zadka) -Python-Version: 2.0 +Author: A.M. Kuchling Status: Draft Introduction - This PEP describes the `batteries included' proposal for Python - 2.0, the fat distribution containing commonly used third party - extension modules. This PEP tracks the status and ownership of - this proposal, slated for introduction in Python 2.0. It contains - a description of the proposal and outlines how to support it. - + This PEP describes the Python Advanced Library, a collection of + high-quality and frequently-used third party extension modules. Batteries Included Philosophy - The Python source distribution always maintained the philosophy of - "batteries included" -- having a rich and versatile standard + The Python source distribution has long maintained the philosophy + of "batteries included" -- having a rich and versatile standard library which is immediately available, without making the user download separate packages. This gives the Python language a head - start in many projects. However, the Python standard library - often relies on important Open Source libraries which might be - unavailable on many computers, so that the user has to separately - download and compile those. Some examples are the zlib - compression library, and the gmp number manipulation library. + start in many projects. - The original coinage of the term "batteries included" can be found - here: + However, the standard library modules aren't always the best + choices for a job. Some library modules were quick hacks + (e.g. calendar, commands), some were designed poorly and are now + near-impossible to fix (cgi), and some have been rendered obsolete + by other, more complete modules (binascii offers the same features + as the binhex, uu, base64 modules). This PEP describes a list of + third-party modules that make Python more competitive for various + application domains, forming the Python Advanced Library. - http://www.uk.research.att.com/~fms/ipc7/tr-1998-9.html - - -The Proposed Solution - - The proposed solution is to maintain an alternate form of distribution, - nicknamed the "sumo" interpreter. It will be structured as a core - interpreter + extra useful libraries. In addition, the build procedure - will be changed to build those libraries by default, and build the Python - modules which rely on them linked against those libraries. Individual - users will still be able to link the Python modules against already - installed libraries, or disable them completely. - - Additionally, some Open Source third-party Python modules will - also be distributed in the "sumo" distribution. The - difference between those and external libraries is that the former - are distributed in order to make the Python distribution self - contained, and the latter are added so there will be new - functionality in out-of-the-box Python. - -Python Advanced Library - - Since it is decided that the additions to the interpreter will live - in a seperate directory, they can even be distributed seperately, - as an additional library. This is called the "Python Advanced Library", - or PAL. This will also solve the problem of an advanced library module - failing -- the core interpreter will still be built, tested and installed. - Since the compilation of the other modules be helped by Python scripts, - it is quite possible that it will even install as many modules as it - can. - -Suggested Libraries and Modules - - Here is the tentative list of libraries which are proposed to be - dealt with in this manner, and where they can be downloaded: - - zlib -- http://www.info-zip.org/pub/infozip/zlib/zlib.tar.gz - expat -- ftp://ftp.jclark.com/pub/xml/expat.zip - Tcl -- http://dev.scriptics.com:80/download/tcl/tcl8_3/tcl8.3.1.tar.gz - Tk -- http://dev.scriptics.com:80/download/tcl/tcl8_3/tk8.3.1.tar.gz - PIL -- http://www.pythonware.com/downloads/Imaging-1.1.tar.gz - libjpeg -- ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz - ncurses -- ftp://dickey.his.com/ncurses/ncurses.tar.gz - - TBD, the following: - - NumPy -- http://download.sourceforge.net/numpy/Numerical-15.3.tgz - Pmw -- ftp://ftp.dscpl.com.au/pub/pmw/Pmw.0.8.4.tar.gz - BLT -- ftp://ftp.tcltk.com/aa004735/pub/blt/BLT2.4u.tar.gz - piddle -- http://download.sourceforge.net/piddle/piddle-1.0b7.tgz - - -Connection to Distutils - - Since Python 2.0 comes with a new mechanism of distributing Python - modules, called ``distutils'', we should be able to use it. Specificially, - since distutils has the capability or building Python modules in an - automatic fashion, it is hoped that some of the work will consist in - creating a new directory with the source, and having the ``super-make'' - run "./setup --install" in those directories. This should at least take - care of PIL, NumPy and Pmw. In addition, it is hoped that this mechanism - will be easy enough to add other Python modules as user requests direct - us. + The deliverable is a set of scripts that will retrieve, build, and + install the packages for a particular application domain. The + Python Package Index now contains enough information to let + software automatically find packages and download them, so the + time is ripe to implement this. + Currently this document doesn't suggest *removing* modules from + the standard library that are superseded by a third-party module. + That's difficult to do because it entails many backward-compatibility + problems, so it's not worth bothering with now. + + Please suggest additional domains of interest. + + +Domain: Web tasks + + XML parsing: ElementTree + SAX. + + URL retrieval: libcurl? other possibilities? + + HTML parsing: mxTidy? HTMLParser? + + Async network I/O: Twisted + + RDF parser: ??? + + HTTP serving: ??? + + HTTP cookie processing: ??? + + Web framework: A WSGI gateway, perhaps? Paste? + + Graphics: PIL, Chaco. + + +Domain: Scientific Programming + + Numeric: Numeric, SciPy + + Graphics: PIL, Chaco. + + +Domain: Application Development + + GUI toolkit: ??? + + Graphics: Reportlab for PDF generation. + + +Domain: Education + + Graphics: PyGame + + Software covered by the GNU General Public License - While many Python modules rely on software distributed under the - GNU General Public License and the GNU Lesser General Public - License, no such sources are proposed here to be added to the - sumo interpreter. Currently, the Python interpreter is - distributed under a closed-source-friendly license, which means - that it is possible to include it in a closed source product. - Making redistributers worry about which parts they need to remove - to make closed-source redistribution legal might cost more then - the benefits. - -How It Is Implemented - - Sumo-Python is basically be a set of scripts, which download - a Python source tarball, and source tarballs for all the modules. - Then it unpacks everything, modifies Setup.in (or whatever mechanism - will be in place by Python 2.1, and puts in a little - shell script which builds everything. Then it will repack it - into the huge tarball which will be a sumo-python-version.tar.gz, - which users can then download and install. - - Inside the tarball, running the script - - build-everything [--prefix ...] - - Will compile and install a sumo interpreter into specified prefix. + Some of these third-party modules are covered by the GNU General + Public License and the GNU Lesser General Public License. + Providing a script to download and install such packages, or even + assembling all these packages into a single tarball or CD-ROM, + shouldn't cause any difficulties with the GPL, under the "mere + aggregation" clause of the license. + Open Issues - ESR also mentioned libpng, but I don't know of a Python module - that uses it. + What other application domains are important? - How to make PAL as easy to build as the whole Sumo Python? + Should this just be a set of Ubuntu or Debian packages? Compiling + things such as PyGame can be very complicated and may be too + difficult to automate. + + +Acknowledgements + + The PEP is based on an earlier draft PEP by Moshe Zadka, titled + "2.0 Batteries Included." Local Variables: