Changes from 3.1 to 3.2
 1) Stated compatibility is now 3.6 and higher.
 2) Updated to use simpler build configuration.
 3) In ceGUI, correct a few bugs and eliminate the use of some deprecated
    items.
 4) In ceDataSource, eliminate the use of some deprecated items.

Changes from 3.0 to 3.1
 1) Further work on improving Python 3.x compatibility.
 2) Significant improvements to the ceGUI module, including support for the
    Phoenix branch of wxPython and improved handling of grids.
 3) Add new module, ceModuleLoader, which can be used to load a module from a
    database, for example, without polluting the sys namespace.
 4) Add new module, ceDataSource, which allows for data sources that acquire
    data from a database indirectly or from a different source entirely (such
    as a web service).
 5) Add new module, srml2pdf, which is used for translating RML (Report Markup
    Language defined by ReportLab) to PDF in a simplified fashion, unlike the
    commercial module provided by ReportLab itself.
 6) Add new module, xlml2xlsx, which converts a template language modeling the
    abilities of the xlsxwriter module into Excel using the xlsxwriter module
    itself (enables easy use by web frameworks like Django).
 7) In ceDatabaseCache, correct caching issues.
 8) In cx_Utils, add support for creating modules from scripts and acquiring a
    class from those script modules.
 9) In cx_Threads, added support for clearing a queue completely.
10) In cx_ShellUtils, add support for clearing the read-only flag on Windows
    prior to attempting to delete the file.
11) In ceWin32NamedPipes, allow for more flexibility when creating named pipes.
12) Removed module cx_ServerFramework since it was really a sample anyway (and
    has now been moved to the cx_Freeze project where it belongs).
13) Removed modules cx_CVS and cx_FTP as these are no longer used.
14) Removed cx_Threads.Event() and cx_Threads.Timer() since these are both
    covered by the built-in threading module.

Changes from 2.5 to 3.0
 1) Substantial changes and enhancements to ceGUI to handle additional
    controls and support better integration with databases.
 2) Added new module ceDatabaseCache which enables simple caching of data in
    a database without having to write a lot of repetitive code.
 3) Added support for Python 3.x in most modules while retaining support for
    Python 2.x; many modules now require Python 2.6 or higher.
 4) In cx_Exceptions, used the traceback line number rather than the current
    line number in the frame so that the error message is a little more
    helpful. Thanks to Robert Ritchie for pointing out the solution to this.
 5) In ceDatabase, improved support for inserting, updating and deleting rows
    directly or through stored procedures.
 6) In ceDatabase, boolean column values in the database can be "0" or "1" in
    addition to "Y" and "N".
 7) In cx_IniFile, a comment is only relevant if there is a space character
    before the comment character.
 8) In cx_Handles, added support for associating a descriptor with an object
    to aid in debugging the use of the handle manager as requested by Micah
    Friesen.
 9) In cx_OptionParser, allow for subclassing the parser as requested by Micah
    Friesen.
10) In cx_OptionParser, calculate the name based on the script that is being
    executed, which is most often what is desired anyway.
11) In cx_LoggingOptions, use the file number 2 rather than
    sys.stderr.fileno() since that file number is well known and on Windows
    the stderr file descriptor may be closed so sys.stderr.fileno() returns a
    negative value.
12) In cx_LoggingOptions, set the exception information in cx_Logging so that
    LogException() works as expected.
13) In cx_LoggingOptions, use the default preferred locale in order to avoid
    encoding errors.
14) Removed module cx_PrettyPrinter which is easily replaced by the builtin
    module textwrap which has similar functionality.

Changes from 2.4 to 2.5
 1) Added new package ceGUI that extends the wxPython framework by adding such
    things as logging and saving/restoring settings automatically
 2) Added new module ceDatabase which supports common tasks when dealing with
    sets of data in databases; works with both cx_Oracle and ceODBC
 3) In cx_Win32Service, removed extraneous code; used cx_Logging instead of
    print statements; added a Service object to support getting information
    about and controlling services; added support for getting a list of
    service names starting with a particular string
 4) In cx_ClassLibrary, ensured that a class can be built that does not require
    any arguments in its constructor
 5) In cx_XML, removed code for SAX parser since the cElementTree module is
    far more efficient and is not builtin to Python 2.5 and higher
 6) In cx_OptionParser, simplified the interface for determining if traceback
    is desired or not
 7) In cx_Threads, correctly specify the logging statements so that the
    presence of a % character in the message does not cause an exception to be
    raised

Changes from 2.3 to 2.4
 1) In cx_ClassLibrary, improved class factory class.
 2) In cx_Exceptions, used the original arguments when formatting the message
    rather than the repr so that the strings are interpolated correctly.
 3) In cx_Exceptions, replaced message "Unhandled exception." with the normal
    Python error message string that would be displayed.
 4) In cx_Exceptions, transformed syntax errors into something that is more
    useful.
 5) In cx_LoggingOptions, added support for --max-files and --max-file-size
    when running a server.
 6) In cx_LoggingOptions, installed exception handler which will log exception
    information to the log file with considerably more information than just
    the traceback; automatically forced sys.stderr and the log file to be
    identical in order to capture any extraneous errors that the OS might
    produce in the log file.
 7) In cx_OptionParser, filtered out future warnings completely since they are
    of benefit only to developers.
 8) In cx_ReadLine, fix handling of redirection of stderr on Windows since
    that platform handles that quite horribly.
 9) In cx_Win32Service, wait until the service is actually started or stopped
    before continuing.
10) In cx_XML, removed method for writing binary data since it is not being
    used and cannot be seamlessly interpreted; added a method instead that
    allows for writing uninterpreted data which can be used to write arbitrary
    data (including base64 encoded data) if an application requires it.
11) In cx_XML, encoded carriage return (chr(13)) in XML files since XML
    parsers are required to translate all combinations of carriage return and
    line feed into a single line feed.
12) In cx_XML, added support for specifying the encoding for an XML file.
13) Removed support for Python 2.2.

Changes from 2.2.1 to 2.3
 1) Added new module cx_DatabaseTable which provides a simple class that
    transforms tuples (such as those returned by cx_Oracle) into an instance
    with attributes that can be refereced.
 2) Added new module cx_LoggingOptions to support handling of standardized
    logging options.
 3) Added new module cx_Handles to handle providing integer handles to an
    external application which cannot handle Python objects directly.
 4) Added new module cx_Tracing to handle tracing of Python code.
 5) Added new method for transforming text given a set of delimiters and a
    method to manage the transformation in cx_Utils.
 6) Added new method for returning a default value when a key is not found in
    cx_IniFile rather than raising an exception.
 7) Added new class ClassFactory to cx_ClassLibrary which allows for the
    dynamic creation and caching of classes.
 8) Added support for defining arguments independently of a parser in
    cx_OptionParser so that they can easily be defined in modules as constants.
 9) Added support for defining arguments that must be integers in
    cx_OptionParser.
10) Added support for CDATA and better pretty printing in cx_XML.
11) Added support for getting a choice from a list of choices in cx_ReadLine.
12) Added support for logging exceptions, starts and stops of threads in
    cx_Threads.
13) Added method InlineIf() to cx_Utils for conditional expressions similar to
    those added in Python 2.5.
14) Removed cx_Freezer since that is properly part of the cx_Freeze project.
15) Improved CaselessDict in cx_ClassLibrary.
16) Improved handling of exceptions in cx_Exceptions.
17) Improved output for the CVS log report in cx_CVS.
18) Replaced cx_Queue with an implementation in cx_Threads that allows multiple
    producer and consumer threads.
19) Replaced cx_ServiceFramework with cx_ServerFramework which now uses the
    increased functionality in cx_Threads and cx_Logging.
20) Check the return status of commands executed in cx_Utils.
21) Use a leading underscore in front of argument names in cx_XML so that they
    do not conflict with the XML file being parsed.
22) Fixed bug in cx_IniFile when the first line of an ini file is a comment.
23) Fixed bug in cx_XML when non ASCII characters are found in the input.
24) Options or arguments are no longer checked for values in cx_OptionParser
    if they are not marked as required.

Changes from 2.2 to 2.2.1
 1) cx_IniFile now has a Read() method which will raise an exception if the
    file does not exist.
 2) If the directory to be removed does not exist, retreat to a safe directory
    as otherwise Windows will raise an error that the directory cannot be
    deleted.
 3) Make setup.py compatible with Python 2.3.
 4) Fix handling of dead revisions in cx_CVS.
 5) Allow for spaces in passwords when connecting to a CVS server.
 6) Provide for a more flexible method of handling a variable number of
    arguments in cx_OptionParser.
 7) Added the logging module from Python 2.3 so that Python 2.2 code can use
    it.

Changes from 2.1 to 2.2
 1) Print information about the files written or copied during the freezing
    process as a convenience for users of cx_Freeze.
 2) Do not copy extensions when freezing if the path is being overridden since
    it is expected that a full Python installation is available to the target
    users of the frozen binary.
 3) Provide meaningful error message when the wxPython library cannot be
    found during the freezing process.
 4) Include updated versions of Python 2.3 modules textwrap, modulefinder
    and optparse.
 5) Include Python 2.3 modules _strptime and tarfile which are also used
    internally.
 6) cx_CVS now logs dead revisions properly.
 7) cx_CVS now uses a file containing a description of the CVS tags to
    print a meaningful report since CVS itself does not contain information
    about the tags and how they relate to each other in a project.

