This directory contains support tools for the Python compiler package,
which is now part of the standard library.

compile.py	Demo that compiles a Python module into a .pyc file
		using the pure-Python compiler code.

demo.py		Prints the names of all the methods defined in a module,
		as a demonstration of walking through the abstract syntax
		tree produced by the parser.

dumppyc.py	Dumps the contents of a .pyc file, printing 
		the attributes of the code object followed by a 
		code disassembly.

regrtest.py	Runs the Python test suite using bytecode generated 
		by the pure-Python compiler code instead of the
		builtin compiler.

