python-peps/pep-0206.txt

129 lines
3.2 KiB
Plaintext
Raw Normal View History

PEP: 206
Title: Python Advanced Library
Version: $Revision$
Last-Modified: $Date$
Author: A.M. Kuchling <amk@amk.ca>
2005-09-28 10:10:52 -04:00
Status: Withdrawn
Type: Informational
2016-11-29 17:49:20 -05:00
Content-Type: text/x-rst
Created:
Post-History:
Introduction
2016-11-29 17:49:20 -05:00
============
This PEP describes the Python Advanced Library, a collection of
high-quality and frequently-used third party extension modules.
Batteries Included Philosophy
2016-11-29 17:49:20 -05:00
=============================
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 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
2016-11-29 17:49:20 -05:00
third-party modules that make Python more competitive for various
application domains, forming the Python Advanced Library.
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.
2016-11-29 17:49:20 -05:00
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
2016-11-29 17:49:20 -05:00
=================
2016-11-29 17:49:20 -05:00
XML parsing: ElementTree + SAX.
2016-11-29 17:49:20 -05:00
URL retrieval: libcurl? other possibilities?
2016-11-29 17:49:20 -05:00
HTML parsing: mxTidy? HTMLParser?
2016-11-29 17:49:20 -05:00
Async network I/O: Twisted
2016-11-29 17:49:20 -05:00
RDF parser: ???
2016-11-29 17:49:20 -05:00
HTTP serving: ???
2016-11-29 17:49:20 -05:00
HTTP cookie processing: ???
2016-11-29 17:49:20 -05:00
Web framework: A WSGI gateway, perhaps? Paste?
2016-11-29 17:49:20 -05:00
Graphics: PIL, Chaco.
Domain: Scientific Programming
2016-11-29 17:49:20 -05:00
==============================
2016-11-29 17:49:20 -05:00
Numeric: Numeric, SciPy
2016-11-29 17:49:20 -05:00
Graphics: PIL, Chaco.
Domain: Application Development
2016-11-29 17:49:20 -05:00
===============================
2016-11-29 17:49:20 -05:00
GUI toolkit: ???
2016-11-29 17:49:20 -05:00
Graphics: Reportlab for PDF generation.
Domain: Education
2016-11-29 17:49:20 -05:00
=================
2016-11-29 17:49:20 -05:00
Graphics: PyGame
Software covered by the GNU General Public License
2016-11-29 17:49:20 -05:00
==================================================
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
2016-11-29 17:49:20 -05:00
===========
2016-11-29 17:49:20 -05:00
What other application domains are important?
2016-11-29 17:49:20 -05:00
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
2016-11-29 17:49:20 -05:00
================
The PEP is based on an earlier draft PEP by Moshe Zadka, titled
"2.0 Batteries Included."
2001-01-23 06:33:04 -05:00
2016-11-29 17:49:20 -05:00
..
Local Variables:
mode: indented-text
indent-tabs-mode: nil
End: