PyUtilib CHANGELOG
==================

-------------------------------------------------------------------------------
PyUtilib 2.1
-------------------------------------------------------------------------------

- Plugins

  - Extend the PluginGlobals.push_env() semantics. Now, this method will
    construct the desired environment, which means that plugin
    users/developers don't need to explicitly use PluginEnvironment
    objects.

  - Adding methods to support explicit activation and deactivation of
    plugin services. This mechanism is particularly useful when testing,
    where you need to avoid re-activating the same plugin service in
    different parts of the code.

  - Extended the semantics of the PyUtilib? plugin 'implements()'
    function.  This function now has an 'inherit' option. If this is
    set to True, then the plugin implements the interface, and also
    inherits from this class.  This allows an interface class to define
    default methods for an interface.  Although this is a generally useful
    utility, I did not make this the default behavior to help protect the
    user. When this option is used, the user can get into trouble when
    they mistype the name of the plugin method. By making this mistake,
    the interface class API is used, without any notification to the
    user of this behavior. I expect that this type of behavior could be
    quite difficult to track down.

  - Adding a caching strategy for extension points, which improves
    performance when plugins are used very frequently.  This cache is
    invalidated when plugins are added or removed from an environment.

- Pyro

  - Created a Pyro task dispatcher.  This dispatcher modularizes the
    work dispatcher that is included in the Pyro examples, and simplifies
    the setup and execution of servers for the dispatcher and workers.

- TPLs

  - A change to comparison semantics in Enum. Now, you can compare enums
    from different enumeration declarations. This may lead to unexpected
    behaviors, but this change enables pickling of Enum values!

- Other

   - Created a WindowsError exception for non-windows platforms.

   - Started working on portability issues for Python 3.0.x.  I stopped
     after I realized that the setuptools are not supported yet.

   - The quote_split utility was extended to support splitting of single-quoted
     strings.

   - Augmented the run_command() function to support the application
     of memmon and valgrind to code executions. I'm not sure if this
     is configured in the most flexible way, but we'll see.  Also,
     an option was added to run_command to redirect output to a stream.


-------------------------------------------------------------------------------
PyUtilib 2.0.1
-------------------------------------------------------------------------------

- Update to fix PyPi documentation.


-------------------------------------------------------------------------------
PyUtilib 2.0
-------------------------------------------------------------------------------

- Updates to the 'runtests' facility:
  - Fixing support coverage testing.
  - Disabling the nosexunit coverage tests in 'runtests'.
  - Adding a post-processing step, which sets the testsuite and classname
values to have a <package>. prefix.

- Added the pyutilib.plugin package.
  - The PyUtilib framework is derived from the Trac plugin framework.
    - PyUtilib supports both singleton and non-singleton plugin instances
    - PyUtilib includes utilities for managing plugins within namespaces
  - The pyutilib.plugin.core provides all of the core functionality of this package.
  - Additionally, the PyUtilib framework includes a variety of plugin extensions
    - A config-file reader/writer based on ConfigParser
    - Loading utilities for eggs and modules
    - A file manager for temporary files
  - Reworked PyUtilib to eliminate most global data, which is now managed with plugins

- Added plugin examples that compare/contrast the PyUtilib and Trac plugin frameworks.

- Rework of tests
  - Overall improvement of test coverage
  - Segregation of plugin tests that include singleton instances

- Misc fixes
  - When comparing files open them read-only
  - Added the 'runpy' module, which supports back-portability to Python 2.4

- Other
  - Added classes for defining singleton objects
  - Added support for redirecting IO to file-like objects (e.g. StringIO)

- Documentation updates
  - Removed TODOs in source, and added corresponding tickets


-------------------------------------------------------------------------------
PyUtilib 1.0.1
-------------------------------------------------------------------------------

- Renamed the 'example' directory to 'examples'.

- Augmented the subprocess manager to pass in environmental variables.


-------------------------------------------------------------------------------
PyUtilib 1.0
-------------------------------------------------------------------------------

- Initial release.

- PyUtilib has been extracted from the Coopr Python package to provide
  an independent repository for miscellaneos Python utilities.

