This directory contains a number of Python programs that are useful
while building or extending Python.

faqwiz		FAQ Wizard.
		See http://www.python.org/cgi-bin/faqw.py
		for a live example.

freeze		Create a stand-alone executable from a Python program.

i18n		Tools for internationalization. pygettext.py 
		parses Python source code and generates .pot files,
		and msgfmt.py generates a binary message catalog 
		from a catalog in text format.

modulator	Interactively generate boiler plate for an extension
		module.	 Works easiest if you have Tk.

pynche		A Tkinter-based color editor.

scripts         A number of useful single-file programs, e.g. tabnanny.py
                by Tim Peters, which checks for inconsistent mixing of
                tabs and spaces, and 2to3, which converts Python 2 code
                to Python 3 code.

unicode		Tools used to generate unicode database files for
		Python 2.0 (by Fredrik Lundh).

webchecker	A link checker for web sites.

world		Script to take a list of Internet addresses and print
		out where in the world those addresses originate from,
		based on the top-level domain country code found in
		the address. 
