Contributed Python Software

Collections - Various Sundry and Assorted's

Python Starship Collections Library
Collected works of various PSA members who are also members of the Python Starship crew.

Digital Creations Releases (Digital Creations, L.L.C.)
Digital Creations specializes in Web software, and tries to return the benefits they derive from Python back to the community (and derive further benefits from the community collaborative process) by freely releasing much of their valuable software.

Nightmare Software Collection (Sam Rushing)
"REVEALED! The location of many mysterious packages! You've heard the rumours, rumblings, and rare, whispered musings. Now go straight to the source!

Look!! AVL, calldll, npstruct, async, Medusa, and Much Much More!"

Lawrence Livermore National Lab's Python Utilities - Documentation and a link to the package
Initially included: They "will be adding more documentation steadily so, like voters in Chicago, visit early and often throughout the day" :-)

Scientific Numerics - A collection of handy scientific/numeric modules (Konrad Hinsen)
A handful of numeric scientific modules which exploit Numeric Python's capabilities.

AMK's Miscellany (Andrew Kuchling)
Links to Andrew Kuchling's maintained and unmaintained software collections.

Joe Strout's Collection - Python Scripts for newbies and Non-Newbies (Joseph Strout)
"Unfortunately, when I started learning Python, I found that there were very few good sample scripts for beginners, especially for non-Unix platforms. Here are some scripts which are small, simple, easy to understand, and which do something at least mildly interesting..."

Andy Eskilsson's Python Hacks
See also his Python binaries compiled for DOS

Vladimir Ulogov's collection
Including dynamic programming libraries, freeze extensions, threading elaborations, experiments with incorporating (boehm) garbage collection, and much more.

Marc Lemburg's Python Pages
A collection of Python tools and extension packages for things like date/time processing, ODBC database access, text scanning and fast data manipulation. If you're looking for a package with 'mx' in its name, this is the place to go...


Network

(See also the contributed Network ftp repository.)

Network - Distributed Objects

ILU - Inter-Language Unification, Distributed Objects System (Xerox PARC)
Python bindings for implementing interprocess, interlanguage, interhost, interplatform, interAnything (:-) interfaces. You can implement calls within the same process using the same mechanisms, and with little or no performance penalties, so this is an excellent way to connect Python with the world. RPC, client/server, distributed objects - network developers never had it so good!

SYLU - ILU implemented completely in native Python (Scott Hassan)
An ILU binding (see previous item) for Python written completely in Python.

FNORB - the Python CORBA ORB (Object Request Broker) (Architectures Unit, U of Queensland)
"Fnorb is an experimental CORBA ORB written in Python (with just the eensiest-teensiest bit of C code for marshalling ;^).

Like ILU from Xerox PARC, Fnorb gives the Python programmer access to the wonderful world of CORBA. It supports all CORBA 2.0 datatypes (including Any's) and provides a full implementation of IIOP. Unlike ILU, Fnorb is Python and CORBA/IDL specific and hopefully this will make it simple, light-weight, and easy to install and use (eventually ;^)."

Network - Sockets

Async Sockets Tools (Sam Rushing)
Small library for asynchronous socket programs - gzipped tar file.

Medusa - a Socket-Based Server Framework (Sam Rushing)
Medusa provides a framework for implementing asynchronous socket-based servers - tcp/ip, and on unix, unix domain sockets. The first release includes HTTP, FTP, and 'monitor' (remote python interpreter) servers. Medusa can simultaneously support several instances of either the same or different server types - for example you could start up two HTTP servers, an FTP server, and a monitor server. Then you could connect to the monitor server to control and manipulate medusa while it is running.

SOCKS library - Python sockets via firewall host (Dan Connolly)
Works like the socket module, but uses the SOCKS protocol to make the connections through a firewall machine.

py-libcap - an interface to libpcap (AaronRhodes)
This module allows Python functions to process packets captured with the libpcap library (used by tcpdump and many other packages.) It currently runs on Linux.

Network - Services

PAOS - Python active object server (Carlos Maltzahn)
An active multi-user object server with a simple query language. All written in Python. For a substantial example of its use, see Chautauqua, an experimental workflow system.

SNMPY - Simple Network Mgmt Protocol in Python (Anthony Baxter)
An alpha release for doing Simple Network Mgmt Protocol stuff from within Python.

PyNG - Python Network-Activity Grapher (Andre van der Vlies)
"PyNG, a.k.a. the Python Network Grapher, is a tool designed to give a visable insight into the network usage. It summarizes the traffic flow through an interface and plots a usage graphic for the current day, an overview for the week, month and past year." (This item also belongs in the *Graphics* section.)

Lyntin
"Lyntin is a python-based mud client/bot development environment. It aims to be the Emacs of mud clients. ... your actions (or triggers, or autos, or whatever you call them) are no longer restricted to simple 'if you see this then send this' kinds of things. They can be Python functions which do anything from setting a variable to forking a web spider."

LDAPmodule - UM LDAP (Lightweight Directory Access Protocol) interface (David Leonard)
This module provides access to the University of Michagan's Lightweight Directory Access Protocol library, which in turn is available from: UM LDAP library. "It is more-or-less compliant with the interface described in RFC 1823, with the notable differences that lists are manipulated via Python list operations, and errors appear as exceptions."

Network - The Web

Bobo - Bobo, the Python Object Publisher (Digital Creations)
The Python Object Publisher (Bobo):
allows objects to be published without any Common Gateway Interface (CGI) or Hypertext Transfer Protocol (HTTP) specific code. Complex object hierarchies can be published with Uniform Resource Locators (URLs) that mimic the object hierachies. Form data, including file upload data, are marshalled into method parameters.

See also Digital Creations free releases document, for a roster containing bobo and related technology.

BSCW - Shared Workspace/Collaboration System (Richard Bentley)
The Basic Support for Cooperative Work group at GMD in Germany has implemented a shared workspace server for the web as a collection of Python CGI scripts.

ForVM - Collaboration Support - For Virtual Meetings, (Nick Seidenman)
ForVM (pronounced "forum", with the romanesque V-is-a-U thing) stands for For Virtual Meetings. It is web-based groupware providing sharing of annotatable documents, accumulating discussions, calendering, and so forth. Check it out, using 'monty' as the login and 'spam&eggs' as the password.

Python Scripts and Tricks for Web Page Maintenance (Hal Schechner)
Sundry CGI scripts and tricks.

httpd_log - Graphical web statistics tool (Richard.Jones@bom.gov.au)
Developed from the erstwhile "phany_log", also includes a sped-up version of the Python pickle mechanism. (This item also belongs in the *Graphics* and *Math* sections.)

Small prototype www servers (Hannu Krosing)
It includes mechanisms which show ftp logs and gif dirs.

PyApache - embed Python in the Apache server (Lele Gaifax, originally by Dave Mitchell)
"This module, contained in the file ``mod_pyapache.c'', will speed up the execution of your CGI scripts written in the Python Language. It handles this kind of script faster than normal CGI script since the server embeds the Python Interpreter, so the performance penality of executing an external one is eliminated."

You will find the latest version of the module in the <ftp://www.bel-epa.com/pub/misc/> directory, where you will find a gzipped tar file named something like PyApache-x.yy.tar.gz.

NSAPY - Use Netscape application interface (NSAPI) from Python (Gregory Trubetskoy)
Control Netscape from within Python, via Netscape's Application Interface. Derived from the basic version in Aaron Watter's book, Internet Programming with Python.

Cookie.py - Work with cookies easy as pie (Tim O'Malley, from version by Dave Mitchell)
Work with cookies (eg, in Web CGI, etc) that act like dictionaries. (nscookie.py is an older version that works with Python versions before 1.5, but is less capable, and may be netscape- specific...)

NSRemote - Netscape-properties linkup (Scott Hassan)
A simple C extension module for Python that is able to talk to X Window versions of Netscape via X Window properties.

Structured Text - Parse formally formatted text into structured text like HTML (Jim Fulton, Digicool)
Parse text, which uses indentation and simple symbology to indicate the structure of a document, into a form that can be used with structured formats like html.

world.py - Produce country name based on internet country code, and vice versa (Barry Warsaw)
A little script that prints out the ISO 3166 country name based on the two letter country code, as sseen in Internet email addresses. It also can print reverse mappings based on regular expression matches against country names.

SSL extension - Python 1.4 patches to support SSL (Brian Gallew)
Here are some Python patches to enable use of SSL (Secure Sockets Layer) for https secure URLs.

WebLog - Web Logfile Parsing Classes (Mark Nottingham)
Classes for parsing and postprocessing of Web logfiles.

FCGI Wrapper - Fast (persistent) CGI Wrapper (Andreas Jung)
A handy way to simplify use of Robin Dunn's fcgi.py module, for adapting CGI applications to faster, persistent CGI.

cgiupload.py - CGI File Upload code (Jeff Bauer)
The cgiupload module is a simple mechanism for uploading files via http. The mechanism is not as efficient as say, ftp, but there are circumstances where using the http protocol has advantages:

Httpdapy - Embed Python within HTTP daemons (Gregory Trubetskoy)
Httpdapy enables embedding of Python within a webserver for a considerable boost in performance and added flexibility in designing web based applications.


Graphics

(See also the contributed Graphical ftp repository.)

Python Imaging Library - An image object for Python (Fredrik Lundh and the PSA Imaging SIG)
The Python Imaging Library adds an image object to your Python interpreter. You can load image objects from a variety of file formats, and apply a rich set of image operations to them.

wxPython - wxWindows portable GUI library (Harri Pasanen)
"wxWindows is a portable GUI class library written in C++. It supports XView, Motif, MS-Windows as targets. There is some support for Macs and CURSES as well. wxWindows preserves the look and feel of the underlying graphics toolkit, so with wxPython it is possible to write portable Python programs with a GUI. It is quite good for rapid prototyping."

WPY - MFC-structured GUI library (Jim Ahlstrom)
"WPY is a class library system based on the Microsoft Foundation Classes used for writing GUI code easily in Python. It is designed for simplicity and portability. It is under active development, but is useful for real projects now.

This version runs on Microsoft Windows and Unix/X using Tk 4.0. Programs written using this "wpy" GUI library will run under NT, Win32s and under Unix/X without changes and with native look and feel."

PMW - Python Mega Widgets for Tk (Greg McFarlane)
A framework for building high-level compound widgets in the Python language using the Tk graphics library ...

Each Pmw megawidget seamlessly blends with the standard Tk widgets, having a similar widget interface. In addition, all Pmw megawidgets may themselves be extended, using either inheritance or composition.

gdmodule - GD GIF-oriented graphics-creation library interface (Richard Jones)
A Python interface to a GIF-oriented graphics-creation library - specifically, Tom Bouttel's GD library. And...

gdmodule - GD GIF-oriented graphics-creation library interface (Thomas Schwaller)
According to Richard Jones, this version implements a more direct correspondance with the C library, while Jones' version (see previous entry) provides a more Python-like interface, providing eg for Python tuples, etc, where suitable...

OpenGL interface (Thomas Schwaller, David Ascher)
An interface to SGI's OpenGL, an open specification for a comprehensive 2 and 3d graphics interface. The Python OpenGL interface interoperates nicely with Numeric Python.

GIST - Scientific Graphics Package (Lee Busby)
A Python interface to the Gist scientific graphics library, which is available as part of the Yorick distribution. See also the llnl Python tools-package docs (This item also belongs in the *Math* section.)

Connectrix PC Quickcam interface (Dave Mitchell)
For use within Linux, this enables you to write out pictures you take with the Connectrix Quickcam as PGM files. See README.qcammodule and qcam-module-*.tar.gz at the link for more info.

SANE interface for the Python Imaging Library (A.M. Kuchling)
SANE is a unified interface to scanners, QuickCams, and other raster devices for Linux, IRIX, and various other Unix variants. With this extension module, programs can use SANE to control a scanner and acquire PIL Image objects that can then be manipulated, written out to a file, etc.
New cursesmodule for Python (Oliver Andrich)
A new version of the cursesmodule that supports all the ncurses features.

Tty screen interface (Donn Cave)
Built on a C screen graphics library created by a colleague of his. Donn says it's "pretty nuts-and-bolts", but has a fairly economical, elegant virtual screen design...

Trinket - Tkinter using Rivet (David Ascher)
Includes Trinket.py, a replacement for the Tkinter.py which uses Brian Warkentine's Rivet, a Tcl-less replacement for Tk. Trinket also includes a fast (15x) replacement for the _flatten function in Tkinter and Trinket.

(Since the author, Brian Warkentine, has moved on to other projects, trinket is no longer being supported. A few people have expressed interest in finding ongoing support, and the author is entirely willing to relinquish those privileges, so there may be support in the future.)

blt.py - an extension to the BLT enhancement for TK graphics (Peter J. Godman)
"I incorporated BLT 1.9 with Tkinter. BLT has support for 2d scatter plots, line graphs, and bar charts. What it does, it does well. I've been using this interface to BLT, but it's not totally debugged yet. I won't be able to support it much until school is out."

X Extension (Sjoerd.Mullender@cwi.nl)
An extensive interface to the X Window System libraries. In particular, there are interfaces to the X Toolkit, the Athena Widgets, and the Motif Widgets. There is also an interface to the NCSA Mosaic-2.{4,5,6} HTML widgets. Finally, for SGI systems, there is an interface to the Glx widgets.

SVGA library module - Access to linux SVGA library from Python (John Meacham)
"Svgamodule provides Python extensions that allow it to work with SVGAlib /vgagl graphics. I wrote it so that i could easily test different graphical algorithms and make neat snazzy screen savers in Python."

vpApp - Motif-based GUI application framework (Per Spilling, Sjoerd Mullender)
Sjoerd writes:
In a former life, Per Spilling wrote vpApp, a GUI application framework using Motif. Since then I changed the underlying X extension, and vpApp stopped working. I have now ported it to the new X extension.
GraphApp - Graphical toolkit designed for learning (Lachlan 'Loki' Patrick)
GraphApp is a graphical toolkit which works with Motif, the Athena X library, Windows 3.1, 95, and NT, and will soon work with the Macintosh. It was specifically designed to:
"... make graphics programming simple, and it works as both a C library and a Python add-on module. So far the Python binding works only with X-Windows, but I am working to link it with a Windows port of Python.

From what I have seen of other graphics toolkits, GraphApp is simpler and more straightforward than wxWindows or Tk. For beginner to intermediate graphics programmers, or those interested in rapid prototyping of a user interface, GraphApp is an ideal tool."

Terry - API to drive Pixar RenderMan 3D model renderer (Ture Pålsson)
"Terry (named after Terry Gilliam, who did the animations in Monty Python's Flying Circus) is a Python module that serves as an additional interface layer between a Python program and the RenderMan C API, making it possible to write Python programs to drive a RenderMan renderer."

vtk - Visualization ToolKit (KitWare - Will Schroeder, Ken Martin and Bill Lorensen)
Vtk is a high-level graphical visualization toolkit with support for Python and a few other higher-level languages. (E.g., the standard vtk distribution configuration mechanism takes a --with-python option to build in Python.)
Vtk is a software system for 3D Computer Graphics and Visualization. Vtk includes a textbook published by Prentice-Hall, a C++ class library, and several interpreted interface layers including Tcl/Tk, Java, and Python.

The graphics model in vtk is at a higher level of abstraction than rendering libraries like OpenGL or PEX. [...] In fact, using the interpreted languages Tcl or Python with Tk, and even Java with its GUI class libraries, it is possible to build useful applications really, really fast.

Finally, the software is a true visualization system, it doesn't just let you visualize geometry. Vtk supports a wide variety of visualization algorithms [..., and] dozens of imaging algorithms were directly integrated into the system so you can mix 2D imaging / 3D graphics algorithms and data.

KDE Bindings - Python Bindings For the K Desktop Environment (and the Qt UI toolkit) (Matthias Hoelzer)
KDE is a LGPL/GPL'ed, comprehensive, network-transparent desktop environment for UNIX workstations. See the KDE home page for details.

PyGTK - Python bindings to Gnome and the GIMP Toolkit (James Henstridge)
Python bindings to the GNU Network Object Model Environment (GNOME) and to the GIMP ToolKit (Gtk).

DISLIN - Data Plotting Software with Python support (Helmut Michels)
"DISLIN is a high-level and easy to use graphics library for displaying data as curves, bar graphs, pie charts, 3D-color plots, surfaces, parametric functions, contours and maps. The software is available for several C, Fortran 77 and Fortran 90 compilers. For some operating systems, the programming languages Python and Perl are also supported by DISLIN. See a complete list of the supported operating systems and compilers."


Math, Data Structures, and Encoding

(See also the contributed Math/Data Structures and Encoding ftp repositories.)

Numerical Python - Numerical (matrix-oriented) mathematics for Python (James Hugunin, Konrad Hinsen, Paul Dubois, PSA Matrix SIG)
The numeric extension enables you to use Python to do matrix computations at near-C speeds.

In addition to the NumPy distribution, itself, here are some more useful items:

MMTK - Molecular Modelling Toolkit (Konrad Hinsen)
Employing the capabilities of the numerical computation package which the author helped develop:
"The Molecular Modelling Toolkit (MMTK) is a program library for molecular modelling applications. Its aim is to provide researchers, especially those working on the development of new modelling methods, with a code basis that can be easily extended and modified to deal with standard and non-standard problems in molecular modelling."
SAML interface Interface to the SAML Simple Algebraic Math Library (Thierry Bousch)
SAML is a free C library for symbolic calculations, accompanied by some application programs and Python bindings.

The library provides an object-oriented framework for defining and handling mathematical types, and implements the most common data types of computer algebra: integers, reals, fractions, complex numbers, polynomials, tensors, matrices, etc. The application programs consist of an interactive symbolic calculator (samuel), a programming language (induce) and a program to factorize integers (factorint).

Python Cryptography Toolkit (Andrew Kuchling)
An extensive toolkit including Python extensions for encryption, authentication, key exchange, secure socket operation, and many other types of cryptography operations. See the online docs for more overview.

Here is an alternative links to the toolkit.

Python code for computational chemistry (Konrad Hinsen)
Also including some modules useful for numerical applications - a class for geometrical vectors, a module for automatic derivatives, and a module for automatic gradient calculations for potential energy functions.

npstruct - Non-packing Struct-ish Module with bit- and proc-fields (Sam Rushing)
"It doesn't do alignment/packing, lets you specify byte order, adds a bitfield capability, and a new context-sensitive 'procfield' ('procedure field'), which is useful for things like variable-length sub-structures, strings, etc.

I've been using it for stuff like image/audio files and network protocols like talk/ntalk/ytalk."

GMP module - new wrapper for GNU Multiprecision math library (Andrew Kuchling, originally by Niels Moller)
"This gmp module is an almost complete rewrite of the mpz module distributed with Python."

NetCDF Interfaces
Interface to Unidata NetCDF array-oriented data interface files. According to one user:
The netCDF datafile format stores large, uniform, data arrays efficiently and avoids byte-order problems when moving binary data between different machines. It is well-documented and looks like a good compromise between simplicity and generality.

NetCDF interface - Interface to NetCDF portable data files (William Noon)
NetCDF interface - A Numeric-Python aware NetCDF portable data file interface (Kyle Schalm)
NetCDF interface - NetCDF interface that makes array variables look like NumPy arrays. (Konrad Hinsen)

strptime.py - Produce time-module style time tuples (Andy Eskilsson)
The inverse of strftime, convert a string to a tuple that the time module can handle.

cPickle - C implementation of Pickle (Python object marshalling) (Jim Fulton, Digicool)
cPickle is a C implementation of the Python module, pickle.py, and is fully compatible with pickle: all types picklable by pickle can be pickled using cPickle, and pickles generated using pickle may be unpickled using cPickle and vice versa.

PYML - Python interface to Mathematica (David Konerding)
PYML is a Python interface to Mathematica which uses MathLink. It allows the Python programmer to evaluate Mathematica expressions. Expressions are passed to PYML as Python objects, which are processed into MathLink calls. PYML calls MathLink to evaluate the expression and prints the result. Currently, PYML supports Mathematica 2.2 and 3.0 on Windows 95, UNIX, and presumably Macintosh.

mxDateTime - Date/Time data types (M.-A. Lemburg)
A C extension package that provides two new datatypes for handling dates and times together with a rich set of conversion and parsing routines.

bplustree.py - classical compsci B+trees, implemented entirely in Python (Aaron Watters)
Fast, portable file based indexing with range queries and including a dbm-compatibility mode.

kwParsing - Parser generator in Python which generates parsers for use in Python (Aaron Watters)
Parser generation package entirely implemented in Python, including a Python lint (source checker) tool and a number of example grammars of varying complexity.

kjbuckets - Python extension for fast set, graph and mapping operations (Aaron Watters)
Hashed based fast C data structures for set, partial function, and relation (graph) algebra, including fast initializers and converters.

mxStack - Fast stack datatype (M.-A. Lemburg)
A C extension package providing a fast stack implementation.

PyEphem - Astronomical Computation Using Python (Brandon Craig Rhodes)
PyEphem is a module for performing astronomical computations from Python. Its primary purpose is to compute for an arbitrary date and location on earth the position in the sky of the sun, moon, a planet, or any asteroid or comet whose orbital elements are available. Additional functions are facilities to compute the angular separation between two objects in the sky, to determine the constellation in which an object lies, and to find the times at which any object rises, transits, and sets on a particular day.


Database

(See also the contributed Database ftp repository.)

Gadfly - Python-based SQL engine (Aaron Watters)
Gadfly is a Python database API-compliant SQL engine (in particular, ODBC 2.0 SQL) written entirely in Python - hence ported everywhere that Python is - supporting a one-writer, many-reader model. It uses sophisticated data structures to provide a correct and relatively efficient implementation, and further performance can be gained using a C version of kjbuckets the underlying hash mechanism. It includes a TCP/IP client-server mechanism, and much more. It is very cool.

Oracle extension module - PyDB-compliant Oracle database extension module (Digital Creations)
A Python database API-compliant interface to Oracle.

Oracle module (Tom Culliton)
Tom's ftp dir contains links to an oracle module and a number (three, at time of writing) of contributed patches.

Time Arithmetic - Time/date/timezone arithmetic package (Ted Horst)
This time arithmetic package includes:

White Pages - Python-based White Pages (Hal J Schechner)
A searchable, joinable white-pages database written in Python.

mSQL module - a 2.0 compliant version of the mSQL module (Jeffrey C. Ollie)
This is a refinement of the contributed mSQL module that was contributed by Mark Shuttleworth, with assistance from other folks...

PyGreSQL - Python (1.5, not 1.4) interface to Postgres SQL (D'Arcy J.M. Cain)
"PyGreSQL is a python module that interfaces to a PostgreSQL database. It embeds the PostgreSQL query library to allow easy use of the powerful PostgreSQL features from a Python script."
(To use postgres with Python 1.4, see the PyGres95 items in the database section of the python.org contributed-ftp repository.)

MetaKit for Python - Interface to MetaKit flexible database system (Jean-Claude Wippler)
"MetaKit is being developed to be a cross-platform, highly dynamic database library providing persistent storage for all your application data. MetaKit allows you to easily store complex data structures, and supports changing all data structures on the fly. Datafiles are fully portable across all major platforms, including Windows, Macintosh and Unix."

"Some more facts about this library: MetaKit has been field-tested in many thousands of copies, the Win32 DLL is under 100 Kb, ports are freely available (source license is required for royalty-free commercial use), this product is actively supported and extended."

mxODBC - Unix ODBC interface (M.-A. Lemburg)
A C extension package that provides an DB-API compatible interface to ODBC 2.0 compatible databases. It is mainly meant for Unix based installations and provides several pre-configured subpackages for e.g. MySQL, Adabas, Solid, etc. (Note: The package is not free for commercial redistribution.)


System

(See also the contributed System/Tools ftp repository.)

DLL Interface - Python interface to arbitrary DLL's
Module that allows access to arbitrary (with some limitations) 3rd party Windows DLLs and/or OCX controls from Python.

Python-expect - Rudimentary 'expect' functionality in a native python class (Tim O'Malley)
Expect is a tool primarily for automating, character-oriented interactive applications, such as telnet, ftp, passwd, fsck, rlogin, tip, etc.

This refinement of mitch chapman's version uses a python-based eventloop, instead of relying on an event loop from an extension, like tkinter.

Event Loop - A native Python select-based event loop (Tim O'Malley)
Provides a class EventLoop, which invokes designated callbacks when specified times elapse or when specified file objects (distinguished by having 'fileno' methods) are ready to be read.

Extension Classes - a mechanism for making Python extension types more class-like (Jim Fulton, Digital Creations)
Using this mechanism, classes can be developed in an extension language, such as C or C++, and the resulting objects can be treated like other python classes:

Extension classes provide support for extended method binding protocols to support additional method types and additional method call sematics.

MESS - Meta-Extension System Set (Donald Beaudry, David Ascher)
By establishing Python builtin types as abstract classes, MESS enables you to inherit from and extend builtin types within native Python. Ie, you can extend the primitive Python types, like integers, strings, lists, etc., as well as any extension types you've created in C, C++, etc.

This is a work-in-progress, with much of the coding effort done, but much documentation to be done...

Fvwm Window Manager Python Module (Barry Warsaw)
A Python framework for writing Fvwm 2.x extension modules in Python, with examples. With this framework, you can now program and extend your window manager using Python. Integrated with Tkinter so your Fvwm modules can have a Tk-based GUI.

POSIX regex interface (Neal Becker)
A Python interface to POSIX regex - see pregex-*.tar.gz and README.pregex. (The tar file includes the free POSIX regex package from NetBSD, if you don't already have an implementation.)

Reverb - Wrapper for representing regular expressions procedurally. (Jason Harper)
"A module that enables writing of regular expressions with much the same syntax as normal Python expressions (rather than as quoted line noise)."

Regexer - A regular expression exerciser (Andy Eskilsson)
"A small regular expression simulator, gives you instant feedback on what happens when you change the regexp/matching string. Good for people like me (I hope) who are starting to learn regexps."

SWIG - Simplified Wrapper and Interface Generator (Dave Beazley)
SWIG is a compiler that takes ANSI C/C++ declarations and builds a scripting language interface to a number of different scripting languages including Perl, Python, Tcl, and Guile. It supports most kinds of constructs that would appear in a typical ANSI C program, and a subset of C++.

Pipermail - Hypermail-like mail-archive management (Andrew Kuchling)
"A tool written in Python for maintaining Web archives of mailing lists, similar to Hypermail."

In addition to being written in Python, it has some nice features which are lacking in hypermail, like incremental indexing...

Mailman - Python-based Mailing List Manager (John Viega, the mailman-users listinfo page)
John Viega implemented Mailman, and now a bunch of people are working with it, some working together to continue development using a Mailman mailing list to collaborate about it - see the mailman-users listinfo page or the the mailman-developers listinfo page for more info.
"Mailman is a program that automates email based mailing lists. It is most strikingly different from other mailing list managers in that it has a well developed web interface for list users and list administrators alike. Users can change their options, subscribe and unsubscribe over the web. List admins can configure the list, moderate the list, and maintain the lists web page, all via the web."

Interactive Game Frameworks (Joseph Strout)
Joe Strout has put together a few levels of Python gaming engines:
BUS - Basic Universe Simulator
"BUS is a simple text-adventure engine. It still needs a bit of work, but it runs and has a few nice features, most notably that the code is quite short for what it does."
PUB - Python Universe Builder
The Python Universe Builder is the "bigger brother" of BUS, providing a more sophisticated engine, and including mechanisms to interconnect with other services over the net. (The distribution includes tcp network connection support.)
POO - Pythonic MOO
A (currently) alpha release of "a single- or multi-user virtual environment, in which almost all the code that makes it go is written and edited from within the game." (This item also belongs in the *Network* section.)

High-level Process Interface (Tod Olson)
A class which provides an interface to a subprocess which avoids using a subshell (hence, avoids shell quoting and incipient security problems), and provides forking, execing, and redirection of child I/O. Redirection is expressed using convenient notation, and interaction with the process is via a file-like interface, so the process-interaction instance can be used in, eg, select calls.

Unicode Facilities - wide-character strings, internationalization and localization (Martin von Löwis)
A small package consisting of two modules, wstring and intl. The module wstring is similar to the module string, only that the strings consist of wide characters rather than bytes. The module intl is a wrapper around the Posix/ANSI C internationalization and localization libraries.

Os_path - Platform independent file search path mechanism (Michael P. Reilly)
Classes providing interfaces to a filesystem search path. Included subclass, Binpath, for searching for executables (including permissions on UNIX and proper DOS extensions).


Python Programming Tools

(See also the contributed System/Tools ftp repository.)

PTUI - Python/Tkinter User Interface (Zachary Roadhouse)
Yessir, it's a Python code development user interface which can be embedded in larger applications or used by itself. !

"Python/Tkinter User Interface is my attempt to create an environment where you can run code from within the tk mainloop like the wish interpreter. PTUI uses a small framework of classes that can be imbedded into a larger application to facilitate rapid developement and testing."
(This item also belongs in the *Graphics* and *System* sections.)

pdb.el - Python Debugging from Emacs (Wolfgang Weitz)
pdb.el is a short emacs lisp file which adds some support for debugging Python programs with pdb from within xemacs to Eric S. Raymond's Grand Unified Debugger mode (gud.el).

SHM - Python Shared Memory Module (Vladimir Marangozov)
An extension module that provides an object interface to System V shared memory IPC, present in most Unix systems, in the form of shared memory objects and semaphore objects. (This item also belongs in the *System* section.)

JPI - Java Python Interface (Douglas Cunningham)
"The Java Python Interface (JPI) is an interface between Java and Python which allows the two languages to primitively interoperate. In this way, Python can be used as a scripting language for Java. From a Python interpreter one can prototype AWT components and even create bindings which call Python code."

(Douglas has thus far only built for Solaris, but is working on a Windows port, and will also be making a source code release. Since he works at Carnegie Mellon University, the software is copyrighted by them.)

PyJava - Java Embedded in Python (Kevin J. Butler)
"I eventually want to be able to use JFC UI elements for Python GUI programming. The first step is to be able to call Java code from Python, so I used SWIG to wrap the Java Native Interface (JNI), and have built a shadow class facility using the Java Reflection API.

I'm looking for ideas on how to do callbacks... Any ideas?"

XML Parser - Extended Markup Language experimental parser (and other stuff) (Dan Connolly)
Experimental XML (Extensible Markup Language) Scanner, Checker, and Utilities. For background on XML, see the W3C Extensible Markup Language working draft.

PyLR - Fast LR parser, for creation of efficient parsers in Python (Scott Cotton)
Currently (as of 12/97) under development but quite useful as is:
"PyLR is a package of tools for creating efficient parsers in python, commonly known as a compiler compiler. PyLR is currently under development. Many of the tools programmers will need are already there. However, there is a lot more that can be added."

mxTools - Collection of additional builtins (M.-A. Lemburg)
A C extension package that adds a few new builtin functions to the interpreter. These are all optimized for speed, improved code readability and programming pleasure.

mxTextTools - Fast text scanning and processing (M.-A. Lemburg)
A C extension package bringing C speed a little closer to Python. Includes a fast pushdown DFA for text tagging, a Boyer-Moore search object and various other pre- and post- processing functions for dealing with text and lists of text snippets or slices.


Other - all the rest

(See also the contributed Miscellaneous ftp repository.)

MIDI interface modules (Jack Jansen)
He says it's "horribly incomplete... the midifile parser is ok, but the only driver is for the SGI midi library". Then again, others have had great success using it - "So I bravely fetched Jack Jansens' "incomplete" code [...] and had a play. Ten minute later I was generated midi files - thanks Jack!"

PalmPython - Palm Pilot HotSync tool set (Rob Tillotson)
"PalmPython is an extension package for the Python programming language which allows access to PalmOS connected organizers and their data. Using the popular pilot-link library, PalmPython provides a high-level, object-oriented, extensible interface to PalmOS data, both on the local disk and on the device."
PyPsion - Psion (Palmtop computer/PDA) file handling (Dan Connolly)
Tools to convert from and to Psion organizer file formats.

Win95/NT Python Survival Kit (Harri Pasanen)
This is a binary Python distribution for Win95 and NT that fits on a single diskette, and features not only a decent, but a very good editor, JED.

Artificial Intelligence in Python (Joseph Strout)
"Python has many of the features of LISP, a language very popular among artificial intelligence (AI) researchers. It is well suited to the sort of symbolic processing used in AI.

I'm no expert in AI, but I've tinkered a bit. As I develop more AI programs in Python, I'll post them here. If you have something or know of something along these lines, please let me know and I'll include it here as well."

PreScript - PostScript conversion to plain ASCII or HTML (New Zealand Digital Library)
PreScript is really a PostScript to plain text converter, but rudimentary HTML can also be produced. Tags are inserted to mark paragraphs (<p>), short lines (<br>), page breaks (<hr>), and header and footers (italisized with <i>...</i>).

Xmore - GUI version of UNIX more (Michael P. Reilly)
Xmore is a Tkinter version of the UNIX 'more' pager utility, with multiple panes and other GUI features.