Contributors to the Python Documentation
----------------------------------------

This section lists people who have contributed in some way to the Python
documentation.  It is probably not complete -- if you feel that you or
anyone else should be on this list, please let us know (send email to
docs@python.org), and we'll be glad to correct the problem.

.. acks::

   * Aahz
   * Michael Abbott
   * Steve Alexander
   * Jim Ahlstrom
   * Fred Allen
   * A. Amoroso
   * Pehr Anderson
   * Oliver Andrich
   * Jesús Cea Avión
   * Daniel Barclay
   * Chris Barker
   * Don Bashford
   * Anthony Baxter
   * Alexander Belopolsky
   * Bennett Benson
   * Jonathan Black
   * Robin Boerdijk
   * Michal Bozon
   * Aaron Brancotti
   * Georg Brandl
   * Keith Briggs
   * Ian Bruntlett
   * Lee Busby
   * Lorenzo M. Catucci
   * Carl Cerecke
   * Mauro Cicognini
   * Gilles Civario
   * Mike Clarkson
   * Steve Clift
   * Dave Cole
   * Matthew Cowles
   * Jeremy Craven
   * Andrew Dalke
   * Ben Darnell
   * L. Peter Deutsch
   * Robert Donohue
   * Fred L. Drake, Jr.
   * Josip Dzolonga
   * Jeff Epler
   * Michael Ernst
   * Blame Andy Eskilsson
   * Carey Evans
   * Martijn Faassen
   * Carl Feynman
   * Dan Finnie
   * Hernán Martínez Foffani
   * Stefan Franke
   * Jim Fulton
   * Peter Funk
   * Lele Gaifax
   * Matthew Gallagher
   * Ben Gertzfield
   * Nadim Ghaznavi
   * Jonathan Giddy
   * Matt Giuca
   * Shelley Gooch
   * Nathaniel Gray
   * Grant Griffin
   * Thomas Guettler
   * Anders Hammarquist
   * Mark Hammond
   * Harald Hanche-Olsen
   * Manus Hand
   * Gerhard Häring
   * Travis B. Hartwell
   * Tim Hatch
   * Janko Hauser
   * Thomas Heller
   * Bernhard Herzog
   * Magnus L. Hetland
   * Konrad Hinsen
   * Stefan Hoffmeister
   * Albert Hofkamp
   * Gregor Hoffleit
   * Steve Holden
   * Thomas Holenstein
   * Gerrit Holl
   * Rob Hooft
   * Brian Hooper
   * Randall Hopper
   * Michael Hudson
   * Eric Huss
   * Jeremy Hylton
   * Roger Irwin
   * Jack Jansen
   * Philip H. Jensen
   * Pedro Diaz Jimenez
   * Kent Johnson
   * Lucas de Jonge
   * Andreas Jung
   * Robert Kern
   * Jim Kerr
   * Jan Kim
   * Greg Kochanski
   * Guido Kollerie
   * Peter A. Koren
   * Daniel Kozan
   * Andrew M. Kuchling
   * Dave Kuhlman
   * Erno Kuusela
   * Thomas Lamb
   * Detlef Lannert
   * Piers Lauder
   * Glyph Lefkowitz
   * Robert Lehmann
   * Marc-André Lemburg
   * Ross Light
   * Ulf A. Lindgren
   * Everett Lipman
   * Mirko Liss
   * Martin von Löwis
   * Fredrik Lundh
   * Jeff MacDonald
   * John Machin
   * Andrew MacIntyre
   * Vladimir Marangozov
   * Vincent Marchetti
   * Laura Matson
   * Daniel May
   * Rebecca McCreary
   * Doug Mennella
   * Paolo Milani
   * Skip Montanaro
   * Paul Moore
   * Ross Moore
   * Sjoerd Mullender
   * Dale Nagata
   * Ng Pheng Siong
   * Koray Oner
   * Tomas Oppelstrup
   * Denis S. Otkidach
   * Zooko O'Whielacronx
   * Shriphani Palakodety
   * William Park
   * Joonas Paalasmaa
   * Harri Pasanen
   * Bo Peng
   * Tim Peters
   * Benjamin Peterson
   * Christopher Petrilli
   * Justin D. Pettit
   * Chris Phoenix
   * François Pinard
   * Paul Prescod
   * Eric S. Raymond
   * Edward K. Ream
   * Sean Reifschneider
   * Bernhard Reiter
   * Armin Rigo
   * Wes Rishel
   * Armin Ronacher
   * Jim Roskind
   * Guido van Rossum
   * Donald Wallace Rouse II
   * Mark Russell
   * Nick Russo
   * Chris Ryland
   * Constantina S.
   * Hugh Sasse
   * Bob Savage
   * Scott Schram
   * Neil Schemenauer
   * Barry Scott
   * Joakim Sernbrant
   * Justin Sheehy
   * Charlie Shepherd
   * Michael Simcich
   * Ionel Simionescu
   * Michael Sloan
   * Gregory P. Smith
   * Roy Smith
   * Clay Spence
   * Nicholas Spies
   * Tage Stabell-Kulo
   * Frank Stajano
   * Anthony Starks
   * Greg Stein
   * Peter Stoehr
   * Mark Summerfield
   * Reuben Sumner
   * Kalle Svensson
   * Jim Tittsler
   * Ville Vainio
   * Martijn Vries
   * Charles G. Waldman
   * Greg Ward
   * Barry Warsaw
   * Corran Webster
   * Glyn Webster
   * Bob Weiner
   * Eddy Welbourne
   * Jeff Wheeler
   * Mats Wichmann
   * Gerry Wiener
   * Timothy Wild
   * Collin Winter
   * Blake Winton
   * Dan Wolfe
   * Steven Work
   * Thomas Wouters
   * Ka-Ping Yee
   * Rory Yorke
   * Moshe Zadka
   * Milan Zamazal
   * Cheng Zhang
   * Trent Nelson
   * Michael Foord
