=========================
 pyutilib.misc CHANGELOG
=========================

-------------------------------------------------------------------------------
 Version 4.3
-------------------------------------------------------------------------------

- Under development.

-------------------------------------------------------------------------------
 Version 4.2
-------------------------------------------------------------------------------

- Adding a 'validate' option to the search_file function.

-------------------------------------------------------------------------------
 Version 4.1.2
-------------------------------------------------------------------------------

- Changing test to purposely fail. The 'cd' command actualy exists
  on Macs!

-------------------------------------------------------------------------------
 Version 4.1.1
-------------------------------------------------------------------------------

- Removing a limitation on the # of packages downloaded.

-------------------------------------------------------------------------------
 Version 4.1
-------------------------------------------------------------------------------

- Changing format of exceptions to print YAML data structure
  using pprint.

- Introduced conditional for runpy2.  If runpy is not available, then
  try to execute using runpy2.

- Add a deepcopy method that annotates a class.  This is used if
  running Python 2.4.

- Adding diagnostic output to pyutilib.misc import_file method to add name of 
  the Python module that it failed to load. Fixes the issue of the pyomo script 
  not reporting the file name (instead just: Failed to open file).

- For projects that split their code into multiple files, assume that
  all their files are relative to their directory. Note that after
  the import is done, that directory is removed, so no permanent
  changing of the environment.

- Add @deprecated decorator.  With this decorator, we can now start to 
  actively mark/remind ourselves of deprecated functions in use. Will also 
  perhaps be good for unawares users. Example use:

  @deprecated
  def some_func ( ):
    pass

-------------------------------------------------------------------------------
 Version 4.0
-------------------------------------------------------------------------------

- Adding pypi_downloads script.

- Adding module for YAML utilities, including tools for comparing
  YAML data (repn, strings, files).

- Adding utility to fix strings so they can be printed in YAML output.

- Added associated tests for these YAML utilities.

-------------------------------------------------------------------------------
 Version 3.4.1
-------------------------------------------------------------------------------

- Update to package README files to point to the new PyUtilib mailing lists. 

-------------------------------------------------------------------------------
 Version 3.4
-------------------------------------------------------------------------------

- Adding the rmtree() method developed in pyutilib.virtualenv 

-------------------------------------------------------------------------------
 Version 3.3.1
-------------------------------------------------------------------------------

- Rework of unit tests to (a) import pyutilib.th as 'unittest' and
  (b) employ test skipping.

-------------------------------------------------------------------------------
 Version 3.3
-------------------------------------------------------------------------------

- Misc fix to handle '_' attributes separately in Container objects, so 
  they don't show up in the dictionary keys.

- Adding the ability to name Container objects.

- Created the Options class, which is an alias for Container.

-------------------------------------------------------------------------------
 Version 3.2
-------------------------------------------------------------------------------

- Adding a Container class, which generalizes Bunch.  If an attribute
  does not exist, then the getattr() function returns None unless the
  attribute name startes with '_'.  In that case, getattr() raises
  AttributeError.  This allows Container objects to simplify
  access to attribute values;  attribute initialization can be
  assessed by comparing the attribute value to None.

- Adding a coroutine decorator.

-------------------------------------------------------------------------------
 Version 3.1
-------------------------------------------------------------------------------

- Bug fix for tracing when '__file__' is not in frame.f_globals

-------------------------------------------------------------------------------
 Version 3.0
-------------------------------------------------------------------------------

- Initial release PyUtilib to create the pyutilib.misc package.

- See pyutilib.dist for previous ChangeLog information related to PyUtilib.

