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

-------------------------------------------------------------------------------
 Version 5.8.0   18 Mar 2020
-------------------------------------------------------------------------------

- Remove use of namespace packages (#85)
- Rework optional dependency imports (#84, #87)
- Fix column width in pyutilib.misc config tests (#69)
- Add a compatibility shim for assertRaisesRegex and assertRegex (#79, #83)
- Force PyYAML<=5.2 for Python 3.4 tests (#78)
- Clean up setup.py and setup.cfg (#75)
- Fix for running tests on Windows with Python 3.8 (#77)
- Improve output from ConfigBlock display() (#76)

-------------------------------------------------------------------------------
 Version 5.7.3   13 Dec 2019
-------------------------------------------------------------------------------
 
- Improvements to import_file() and run_file() (#70)

-------------------------------------------------------------------------------
 Version 5.7.2    7 Nov 2019
-------------------------------------------------------------------------------

- Add ability to start/stop a TicTocTimer (#63)
- Add support for Python 3.8 (#66)
- Uncategorized tests no longer default to expensive (#46)
- Update minor mistakes in listings (#35)

-------------------------------------------------------------------------------
 Version 5.7.1   21 Jun 2019
-------------------------------------------------------------------------------

- StreamIndenter fix for blank lines (#58)
- Fix in Excel interface to avoid closing previously open Excel windows (#59)
- Removed README.txt, standardizing on README.md

-------------------------------------------------------------------------------
 Version 5.7.0    1 May 2019
-------------------------------------------------------------------------------

- Disable nose's use of docstrings for test descriptions (#54)
- Resolve testing issues with new version of PyYAML (#53, #55)
- Resolve testing issues with subprocess (#53)
- Remove testing and support for Python 2.6 (#52)
- Fix component loader (#51)

-------------------------------------------------------------------------------
 Version 5.6.5   18 Jan 2019
-------------------------------------------------------------------------------

- Fix condition where subprocess exits before I/O threads were created (#49)

-------------------------------------------------------------------------------
 Version 5.6.4   19 Dec 2018
-------------------------------------------------------------------------------

- Fix IOptionDataProvider methods missing 'self' argument (#34)
- Updates to ConfigBlock
  - Add missing API, add ConfigDict alias, fix default value handling (#40)
  - Add option to preserve implicit values (#45)
  - Allow overriding attributes when copying (#44)
- Update project administration files (#41) 
- Update MutableMapping import to avoid deprecation warning (#43)
- Fix and simplify file comparison operators (#47)

-------------------------------------------------------------------------------
 Version 5.6.3    9 Apr 2018
-------------------------------------------------------------------------------

- Resolved enum test failure on Python 3.x
- Created a global default for disabling the default signal handling (#32)
- Updated the isclose() method to match PEP-485
- Fix for setting a ConfigBlock with keys that contains spaces/underscores.

-------------------------------------------------------------------------------
 Version 5.6.2   28 Feb 2018
-------------------------------------------------------------------------------

- Resolving appveyor test failures.

-------------------------------------------------------------------------------
 Version 5.6.1   23 Feb 2018
-------------------------------------------------------------------------------

- Minor cleanup of ConfigBlock class.
- Add redirected_stdout context manager and tests (#29)
- Added documentation for visitor classes
- Adding line wrapping to the LogHandler

-------------------------------------------------------------------------------
 Version 5.6     21 Oct 2017
-------------------------------------------------------------------------------

- Changed the default logic for ExcelSpreadsheet to use xldrd when available
- Changed logic for ExcelSpreadsheet to test for Excel with win32com
- Updates to pyutilib.th and pyutilib.dev to make testing scripts more
  robust
- Added a visitor pattern in pyutilib.misc
- Reordering some of the I/O management and guarding I/O (Pyomo #156)
- Introduced contiguous task processing in pyutilib.worker

-------------------------------------------------------------------------------
 Version 5.5.1   18 Jun 2017
-------------------------------------------------------------------------------

- Fix for making private copies of os.environ
- Defer imports of pyutilib.misc in pyutilib.th to improve coverage

-------------------------------------------------------------------------------
 Version 5.5     13 May 2017
-------------------------------------------------------------------------------

- Close a pyro worker if an exception occurs
- Allow an existing nameserver proxy to be passed into shutdown_pyro_components
- When starting a nameserver, the default host is not localhost
- The default behavior for the dispatch_srvr daemon binds to hostname
- Support for non-string keys in ConfigBlocks
- Changes to make ConfigBlock add more like dict

-------------------------------------------------------------------------------
 Version 5.4.1   30 Oct 2016
-------------------------------------------------------------------------------

- Updates to work with OpenPyxl 2.4
- Catching exception when configuration options are not populated

-------------------------------------------------------------------------------
 Version 5.4
-------------------------------------------------------------------------------

- Using ordered dictionary repns for XMLs to ensure consistent output
- Reformatted PyUtilib code with yapf.
- Fix to ensure compatibility with Pyro 4.46
- Modified the test.pyutilib script to return an exit code from the console
- Changes to eliminate import cycles
- Removed internal use of 'import *'

-------------------------------------------------------------------------------
 Version 5.3.5
-------------------------------------------------------------------------------

- Setting up auto-deployment to PyPI

-------------------------------------------------------------------------------
 Version 5.3.4
-------------------------------------------------------------------------------

- Updates to setup automated testing infrastructure.

-------------------------------------------------------------------------------
 Version 5.3.3
-------------------------------------------------------------------------------

- Documentation update.

-------------------------------------------------------------------------------
 Version 5.3.2
-------------------------------------------------------------------------------

- Documentation updates.

-------------------------------------------------------------------------------
 Version 5.3.1
-------------------------------------------------------------------------------

- Documentation updates.

-------------------------------------------------------------------------------
 Version 5.3
-------------------------------------------------------------------------------

- pyutilib.enum
    - Allow initialization with custom EnumValue implementations
- pyutilib.pyro
    - Allow a TaskWorker to change the queue that task results are returned to
    - Make the default behavior for single-queue TaskWorker be to
      request tasks without a timeout.
- pyutilib.dev
    - Updating testing semantics.  Using only a single test category,
      and the smoke category is the default.
    - Changes to make uncategorized tests run when 'smoke', 'nightly'
      or 'expensive' tests are run.
    -  Switching `lbin`, `lpython`, and `runtests` to use `execvp()` instead of
       subprocess for launching commands that are never intended to return.
- pyutilib.worker
    - Resolving semantic differences between NoTask and EmptyTask.

-------------------------------------------------------------------------------
 Version 5.2.3601
-------------------------------------------------------------------------------

- Fixed line count when processing multiple files.

-------------------------------------------------------------------------------
 Version 5.2.3599
-------------------------------------------------------------------------------

- Py3k fixes
- pyutilib.subprocess fix for python 3.5
- pyutilib.pyro
    - Added options that allow setting up the nameserver and dispatch server in 
      user specified ports
    - Fix for Pyro3 so that workers do not ignore shutdown requests from the dispatcher
    - Being more careful about clearing queues: Do this in a thread
      safe way to avoid leaving threads waiting on a deleted queue
      object.
    - Do not mark clear queue methods as oneway (Pyro4 only) to
      avoid race conditions with adding tasks after clear queue calls
    - More robust error handling when connecting to the nameserver
    - Changing default behavior of TaskWorker to collect a single
      task at a time, which is more appropriate worker groups of
      workers that all collect from the same queue.
    - Allow derived worker types to set the _bulk_task_collection
      flag, which activates bulk task collection from their queue type
    - allow Client to be initialized with a previously obtained dispatcher proxy
    - Exposing functionality for limiting the number of workers
      that can be registered with the dispatcher through an additional
      command-line option (--worker-limit)
    - Adding methods that allow registration of workers with the
      dispatcher object. This facilitates client-side operations for
      acquiring a minimum number of workers over multiple dispatchers.
    - Added functionality that allows splitting workers across multiple dispatch servers

-------------------------------------------------------------------------------
 Version 5.1.3556
-------------------------------------------------------------------------------

- Misc update to PauseGC API.

-------------------------------------------------------------------------------
 Version 5.1.3554
-------------------------------------------------------------------------------

- Catch errors when GC disabling isn't allowed.
- Fixing an error message in ConfigBlock

-------------------------------------------------------------------------------
 Version 5.1.3548
-------------------------------------------------------------------------------

- Adding multiple task submission capability to dispatcher.
- Improved clarity of Pyro diagnostic messages
- Fixing the PyPI downloader so that it can handle non-numeric versions.
- Adding support for xlrd and openpyxl interfaces.
- Changing the semantics of Config* objects to return the values
  of ConfigValue objects.
- Updates to Container
  - Changing Container output to look like YAML.
  - When loading dictionaries, recursively create Container objects
    for sub-dictionaries.
- Added a randomization component to the sleep timeout in the worker
  wait-for-work loop to avoid dispatcher contention.
- Updates to the ConfigBlock
  - Support for multiple argument definitions for a single ConfigValue
  - Support for declaring groups by passing argparse parser or group objects
  - Improved checking for implicit Block attributes
  - Support for a default domain for implicit block attributes 

-------------------------------------------------------------------------------
 Version 5.0.3478
-------------------------------------------------------------------------------

- Changing naming of nose plugins.
- Adding the --with-testdata option when runing performance tests.
- Pyro3/Pyro4 compatibility fixes

-------------------------------------------------------------------------------
 Version 5.0.3467
-------------------------------------------------------------------------------

- Integrating many PyUtilib sub-packages into a single source tree
- Integrating the Coopr plugin framework in pyutilib.component.core

- pyutilib.th
  - Adding a forcedskip option, which can be used to add tests that
    are skipped due to external factors.
  - Extending baseline tests to allow comparison with YAML, XML and
    JSON files.
- pyutilib.pyro
  - Changes to support clearing the dispatcher queue 
  - Adding default value for TaskWorker type
  - Allowing more control of blocking behavior when calling dispatcher
  - Modifying dispatcher to look for the presence of an environment
    variable called "MAX_PYRO_CONNECTIONS", to over-ride the default
    number of allowed connections.
  - Adding randomization of the sleep interval in a pyro client,
    following failure to initially connect to a name server.
    Randomization will better distribute the number of concurrent
    re-connection attempts.
- pyutilib.misc
  - Allowing None tolerance when comparing YAML files.
  - Disallowing whitespace between a +/- and the number.  Strings
    cannot be converted to floats with whitespace
  - Adding support for gzip and bz2 compressed files, which act as
    single file archives
  - Adding support to open readonly file objects (using the open()
    method) rather than only supporting file extractions to disk
  - Adding an option to clear sys.modules of the
    module being imported. Sometimes, we really want to re-import
    a module with the same 'name' that was located in a different
    location.
- pyutilib.dev
  - Adding a '-f' [find only] option to lbin so that lbin can be
    used to locate but not run local executables.

-------------------------------------------------------------------------------
 Version 4.7.3340
-------------------------------------------------------------------------------

- pyutilib.th 5.4.2

-------------------------------------------------------------------------------
 Version 4.7.3336
-------------------------------------------------------------------------------

- pyutilib.subprocess 3.6.2

-------------------------------------------------------------------------------
 Version 4.7.3332
-------------------------------------------------------------------------------

- pyutilib.component.config 3.8
  pyutilib.misc 5.9.1

-------------------------------------------------------------------------------
 Version 4.7.3326
-------------------------------------------------------------------------------

- pyutilib.component.core 4.6.4
  pyutilib.misc 5.9

-------------------------------------------------------------------------------
 Version 4.7.3311
-------------------------------------------------------------------------------

- pyutilib.component.core 4.6.3

-------------------------------------------------------------------------------
 Version 4.7.3305
-------------------------------------------------------------------------------

- pyutilib.component.core 4.6.2

-------------------------------------------------------------------------------
 Version 4.7.3301
-------------------------------------------------------------------------------

- pyutilib.component.core 4.6.1

-------------------------------------------------------------------------------
 Version 4.7.3281
-------------------------------------------------------------------------------

- pyutilib.component.config 3.7
  pyutilib.dev 2.5
  pyutilib.misc 5.8,
  pyutilib.pyro 3.6.1
  pyutilib.subprocess 3.6.1
  pyutilib.svn 1.5.1
  pyutilib.virtualenv 4.3.4
  pyutilib.workflow 3.5.1

-------------------------------------------------------------------------------
 Version 4.6.3215
-------------------------------------------------------------------------------

- pyutilib.component.config 3.6.1
  pyutilib.dev 2.4
  pyutilib.misc 5.6
  pyutilib.pyro 3.6
  pyutilib.subprocess 3.6
  pyutilib.svn 1.5
  pyutilib.virtualenv 4.2
  pyutilib.workflow 3.5

-------------------------------------------------------------------------------
 Version 4.5.3053
-------------------------------------------------------------------------------

- pyutilib.autodist 1.0
  pyutilib.autotest 2.0.1
  pyutilib.svn 1.4.1
  pyutilib.virtualenv 4.0

-------------------------------------------------------------------------------
 Version 4.4.3026
-------------------------------------------------------------------------------

- pyutilib.virtualenv 3.3

-------------------------------------------------------------------------------
 Version 4.3.3009
-------------------------------------------------------------------------------

- pyutilib.dev 2.3

-------------------------------------------------------------------------------
 Version 4.3.2997
-------------------------------------------------------------------------------

- pyutilib.dev 2.2.1
  pyutilib.enum 1.2
  pyutilib.misc 5.5.1
  pyutilib.subprocess 3.5.4
  pyutilib.svn 1.4
  pyutilib.th 5.4.1

-------------------------------------------------------------------------------
 Version 4.2.2964
-------------------------------------------------------------------------------

- pyutilib.component.config 3.6
  pyutilib.component.core 4.6
  pyutilib.component.loader 3.4.1
  pyutilib.dev 2.2
  pyutilib.excel 3.1.2
  pyutilib.math 3.3.1
  pyutilib.misc 5.5
  pyutilib.ply 3.0.8
  pyutilib.pyro 3.5.3
  pyutilib.subprocess 3.5.3
  pyutilib.th 5.4
  pyutilib.virtualenv 3.2
  pyutilib.workflow 3.4

-------------------------------------------------------------------------------
 Version 4.1.2918
-------------------------------------------------------------------------------

- pyutilib.workflow 3.3.3
  pyutilib.virtualenv 3.1.1

-------------------------------------------------------------------------------
 Version 4.1.2908
-------------------------------------------------------------------------------

- pyutilib.workflow 3.3.2

-------------------------------------------------------------------------------
 Version 4.1.2897
-------------------------------------------------------------------------------

- pyutilib.component.config 3.5.1
  pyutilib.component.core 4.5.6
  pyutilib.workflow 3.3.1

-------------------------------------------------------------------------------
 Version 4.1.2882
-------------------------------------------------------------------------------

- pyutilib.component.config 3.5
  pyutilib.component.core 4.5.5
  pyutilib.dev 2.1
  pyutilib.virtualenv 3.1
  pyutilib.workflow 3.3

-------------------------------------------------------------------------------
 Version 4.0.2848
-------------------------------------------------------------------------------

- pyutilib.pyro 3.5.2

-------------------------------------------------------------------------------
 Version 4.0.2832
-------------------------------------------------------------------------------

- pyutilib.excel 3.1.1
  pyutilib.ply 3.0.7
  pyutilib.pyro 3.5.1
  pyutilib.svn 1.3.1

-------------------------------------------------------------------------------
 Version 4.0.2819
-------------------------------------------------------------------------------

- pyutilib.component.core 4.5.2
  pyutilib.subprocess 3.5.2

-------------------------------------------------------------------------------
 Version 4.0.2807
-------------------------------------------------------------------------------

- pyutilib.component.core 4.5.1
  pyutilib.misc 5.3.1
  pyutilib.subprocess 3.5.1

-------------------------------------------------------------------------------
 Version 4.0.2801
-------------------------------------------------------------------------------

- pyutilib.autotest 2.0
  pyutilib.component.app 3.2 
  pyutilib.component.config 3.4
  pyutilib.component.core 4.5
  pyutilib.component.executables 3.5
  pyutilib.component.loader 3.4
  pyutilib.dev 2.0
  pyutilib.enum 1.1
  pyutilib.excel 3.1
  pyutilib.math 3.3
  pyutilib.misc 5.3
  pyutilib.R 3.1
  pyutilib.services 3.4
  pyutilib.subprocess 3.5
  pyutilib.svn 1.3
  pyutilib.th 5.3
  pyutilib.virtualenv 3.0
  pyutilib.workflow 3.2

-------------------------------------------------------------------------------
 Version 3.11.2730
-------------------------------------------------------------------------------

- pyutilib.common 3.0.7
  pyutilib.workflow 3.1.1

-------------------------------------------------------------------------------
 Version 3.10.2718
-------------------------------------------------------------------------------

- pyutilib.common 3.0.6
  pyutilib.math 3.2
  pyutilib.misc 5.2
  pyutilib.virtualenv 2.9

-------------------------------------------------------------------------------
 Version 3.9.2706
-------------------------------------------------------------------------------

- pyutilib.autotest 1.6
  pyutilib.component.core 4.4.1
  pyutilib.dev 1.17
  pyutilib.misc 5.1
  pyutilib.subprocess 3.4
  pyutilib.svn 1.2
  pyutilib.virtualenv 2.8
  pyutilib.workflow 3.1

-------------------------------------------------------------------------------
 Version 3.8.2669
-------------------------------------------------------------------------------

- pyutilib.misc 5.0.1

-------------------------------------------------------------------------------
 Version 3.8.2652
-------------------------------------------------------------------------------

- pyutilib.misc 5.0.1
  pyutilib.pyro 3.5
  pyutilib.svn 1.1
  pyutilib.virtualenv 2.7

-------------------------------------------------------------------------------
 Version 3.7.2615
-------------------------------------------------------------------------------

- pyutilib.autotest 1.5
  pyutilib.component.app 3.1.7 
  pyutilib.component.config 3.3.3
  pyutilib.component.core 4.4
  pyutilib.dev 1.16
  pyutilib.excel 3.0.7
  pyutilib.math 3.1
  pyutilib.misc 5.0
  pyutilib.pyro 3.4
  pyutilib.subprocess 3.3
  pyutilib.svn 1.0.2
  pyutilib.th 5.2
  pyutilib.virtualenv 2.6
  pyutilib.workflow 3.0

-------------------------------------------------------------------------------
 Version 3.6.2498
-------------------------------------------------------------------------------

- pyutilib.autotest 1.4.6
  pyutilib.common 3.0.5
  pyutilib.component.app 3.1.6
  pyutilib.component.config 3.3.2
  pyutilib.component.core 4.3.1
  pyutilib.component.executables 3.4.1
  pyutilib.component.loader 3.3.1
  pyutilib.dev 1.15.2
  pyutilib.enum 1.0.7
  pyutilib.excel 3.0.6
  pyutilib.math 3.0.6
  pyutilib.misc 4.6
  pyutilib.ply 3.0.6
  pyutilib.pyro 3.3
  pyutilib.R 3.0.5
  pyutilib.services 3.3.1
  pyutilib.subprocess 3.2.3
  pyutilib.svn 1.0.1
  pyutilib.th 5.0
  pyutilib.virtualenv 2.5
  pyutilib.workflow 2.2.4

-------------------------------------------------------------------------------
 Version 3.5.2320
-------------------------------------------------------------------------------

- pyutilib.dev 1.15
  pyutilib.misc 4.5.3
  pyutilib.virtualenv 2.4.1

-------------------------------------------------------------------------------
 Version 3.5.2313
-------------------------------------------------------------------------------

- pyutilib.misc 4.5.2
  pyutilib.ply 3.0.5
  pyutilib.virtualenv 2.4

-------------------------------------------------------------------------------
 Version 3.4.2289
-------------------------------------------------------------------------------

- pyutilib.autotest 1.4.4
  pyutilib.component.app 3.1.5
  pyutilib.component.config 3.3.1
  pyutilib.component.core 4.3
  pyutilib.component.loader 3.3
  pyutilib.dev 1.14
  pyutilib.enum 1.0.6
  pyutilib.excel 3.0.5
  pyutilib.math 3.0.5
  pyutilib.misc 4.5.1
  pyutilib.pyro 3.2.1
  pyutilib.th 4.6
  pyutilib.virtualenv 2.3
  pyutilib.workflow 2.2.2

-------------------------------------------------------------------------------
 Version 3.3.2092
-------------------------------------------------------------------------------

- pyutilib.component.core 4.1.1
  pyutilib.workflow 2.2.1

-------------------------------------------------------------------------------
 Version 3.3.2082
-------------------------------------------------------------------------------

- pyutilib.autotest 1.4.1
  pyutilib.component.executables 3.4
  pyutilib.misc 4.2
  pyutilib.services 3.3
  pyutilib.subprocess 3.2.2
  pyutilib.th 4.4
  pyutilib.workflow 2.2

-------------------------------------------------------------------------------
 Version 3.2.2053
-------------------------------------------------------------------------------

- pyutilib.dev 1.11.1
  pyutilib.misc 4.1.2

-------------------------------------------------------------------------------
 Version 3.2.2044
-------------------------------------------------------------------------------

- Minor updates
    pyutilib.dev 1.11
    pyutilib.th 4.3.1
    pyutilib.workflow 2.1
- Revision updates
    pyutilib.component.app 3.1.3
    pyutilib.component.config 3.2.3
    pyutilib.component.loader 3.2.3
    pyutilib.misc 4.1.1
    pyutilib.virtualenv 1.5.1

-------------------------------------------------------------------------------
 Version 3.1.2014
-------------------------------------------------------------------------------

- Various updates.  Including the new pyutilib.workflow package.

-------------------------------------------------------------------------------
 Version 3.0.1745
-------------------------------------------------------------------------------

- Release of pyutilib.component.doc 1.0 .  This doesn't change any
  functionality in PyUtilib, so this is being left in the 3.0 release.

-------------------------------------------------------------------------------
 Version 3.0.1734
-------------------------------------------------------------------------------

- Updates to resolve build issues for MS Windows.

- Updates to get testing working with PyPI distributions of PyUtilib 
  packages.

-------------------------------------------------------------------------------
 Version 3.0.1651
-------------------------------------------------------------------------------

- Initial setup of PyUtilib global package.

