framework provided by the unittest module--this is python version of the java junit test framework the doctest module also provides some basic integration with the unittest module (testing is covered more fully in several third-party testing frameworks are also availablefor examplepy test from codespeak net/py/dist/test/test html and nose from code google com/ /python-nose noninteractive applications such as servers often report problems by writing to log files the logging module provides uniform interface for loggingand in addition to being able to log to filesit can log using http get or post requestsor using email or sockets the library provides many modules for introspection and code manipulationand although most of them are beyond the scope of this bookone that is worth mentioning is pprint which has functions for "pretty printingpython objectsincluding collection data typeswhich is sometimes useful for debugging we will see simple use of the inspect module that introspects live objects in the threading module provides support for creating threaded applicationsand the queue module provides three different kinds of thread-safe queues threading is covered in python has no native support for gui programmingbut several gui libraries can be used by python programs the tk library is available using the tkinter moduleand is usually installed as standard gui programming is introduced in the abc (abstract base classmodule provides the functions necessary for creating abstract base classes this module is covered in shallow and deep copying the copy module provides the copy copy(and copy deepcopy(functions that were discussed in access to foreign functionsthat isto functions in shared libraries dll files on windowsdylib files on mac os xand so files on linux)is available using the ctypes module python also provides apiso it is possible to create custom data types and functions in and make these available to python both the ctypes module and python' api are beyond the scope of this book if none of the packages and modules mentioned in this section provides the functionality you needbefore writing anything from scratch it is worth checking the python documentation' global module index to see whether suitable module is availablesince we have not been able to mention every one here and failing thattry looking at the python package index (pypi python org/pypiwhich contains several thousand python add-ons ranging from small one-file modules all the way up to large library and framework packages containing anything from scores to hundreds of modules