Apptools CHANGELOG
==================

Released: 2023-05-25

This is a bugfix release fixing a Python 3.11 compatibility issue in
StatePickler.

Thanks to the following contributors:

* Mark Dickinson
* Tony Ni
* Rahul Poruri

Version 5.2.0
~~~~~~~~~~~~~

Fixes
-----
* Fix StatePickler for Python 3.11. (#328)
* Add encoding as an attribute for LogFileHandler initialization (#324)

Build
-----
* Drop Python 3.6 and MacOS from EDM test matrix. (#332, #333)
* Update Github workflows (#326)

Version 5.2.0
~~~~~~~~~~~~~

Released: 2022-08-16

This is a minor release, focusing primarily on Python 3.8 support and updating
of development workflows.

Thanks to the following contributors:

* Aaron Ayres
* Mark Dickinson
* Jonas Heinrich
* Robert T. McGibbon
* Sai Rahul Poruri
* Corran Webster

Features
--------
* Replace some uses of ``on_trait_change`` and ``depends_on`` with ``observe``.
  (#285, #289)
* Use ``importlib.resources`` in preference to ``importlib_resources``
  on new enough Python versions. (#284)

Fixes
-----
* Replace ``eval`` with ``ast.literal_eval`` in ``apptools.preferences``.
  (#299)
* Use context managers to handle locks in ``apptools.preferences``. (#306)
* Fix test failures due to ``collections.abc`` changes in Python 3.10. (#313)
* Remove a redundant ``elif`` branch in ``preference_binding``. (#298)

Documentation
-------------
* Copyrights have been updated for 2022. (#307)
* A Read the Docs configuration file has been added. (#296)
* A use of the deprecated ``contributes_to`` decorator in the documentation
  has been fixed. (#286)

Build
-----
* The default branch has been renamed from ``master`` to ``main``. (#297)
* ``etstool.py`` now supports Python 3.8 as well as Python 3.6, and test
  workflows will run on both Python 3.6 and Python 3.8. (#316)
* Continuous integration now uses GitHub Actions instead of Travis CI
  and Appveyor. (#288, #291, #292)
* Added a GitHub Actions test workflow that tests against PyPI packages instead
  of EDM packages. (#314)
* Added a GitHub Actions workflow to automatically publish releases to PyPI.
  (#315)
* Cron job failures are now reported to the main ETS Slack channel, not the
  bots channel. (#295, #308)
* The cron job can now also be triggered manually. (#294)


Version 5.1.0
~~~~~~~~~~~~~

Released : 2021-01-13

This is a minor release in which the modules in the apptools.undo subpackage are
modified to import from pyface.undo rather than redefining the classes.  This
should help ease the transition to using pyface.undo in place of the now
deprecated apptool.undo.

Deprecations
------------
* Import from pyface.undo.* instead of redefining classes in apptools.undo.* (#272)

Documentation changes
---------------------
* Add module docstrings to the various api modules in apptools subpackages (#274)

Version 5.0.0
~~~~~~~~~~~~~

Released : 2020-12-17

This is a major release mainly relating to code modernization. In this release,
support for Python versions < 3.6 have been dropped. Numerous dated
sub-packages and code fragments have been removed. Additionally, there were
various fixes and documentation updates.

Fixes
-----
* Fix SyntaxWarning in persistence.file_path (#116)
* Fix container items change event being saved in preferences (#196)
* Fix synchronizing preference trait with name *_items (#226)

Deprecations
------------
* Deprecate apptools.undo subpackage (undo was moved to pyface) (#250)

Removals
--------
* Remove ``appscripting`` subpackage (#172)
* Remove ``template`` subpackage (#173)
* Remove ``permission`` subpackage (#175)
* Remove ``lru_cache`` subpackage (#184)
* Remove support for Python 2.7 and 3.5 (#190)
* Remove the ``apptools.sweet_pickle`` subpackage.  Note that users of
  sweet_pickle can in some cases transition to using ``apptools.persistence``
  and pickle from the python standard library (see changes made in this PR to
  ``apptools.naming`` for more info) (#199)
* Remove ``help`` subpackage (#215)
* Remove NullHandler from ``apptools.logger`` (#216)
* Remove ``apptools.logger.filtering_handler`` and ``apptools.logger.util`` submodules (#217)
* Remove deprecated create_log_file_handler function (#218)
* Remove use of ``apptools.type_manager`` from ``apptools.naming``. Then,
  remove ``apptools.type_manager`` entirely.  Finally, remove
  ``apptools.naming.adapter``. (#219)
* Remove ``apptools.persistence.spickle`` submodule (#220)
* Remove ``apptools.naming.ui`` sub package (#233)

Documentation changes
---------------------
* Update documentation for Preferences (#198)
* Add a brief section to documentation for ``apptools.naming`` (#221)
* Document the ``apptools.io`` and ``apptools.io.h5`` sub packages (#237)
* Fix a few broken links in the documentation (#248)

Test suite
----------
* Fix AttributeError on Python 3.9 due to usage of ``base64.decodestring`` in tests (#210)
* Make optional dependencies optional for tests (#260)

Build System
------------
* Add extras_require to setup.py for optional dependencies (#257)

Version 4.5.0
~~~~~~~~~~~~~

Released : 10 October 2019

* Add missing `long_description_content_type` field in setup. (#108)
* Remove use of `2to3`. (#90)
* Use etstool for CI tasks. Setup travis macos and appveyor CI. (#92)
* Temporarily change cwd when running tests. (#104)
* Update broken imports. (#95)
* Add `six` to requirements. (#101)
* Remove one more use of the deprecated `set` method. (#103)
* Use `trait_set` instead of the now deprecated `set` method. (#82)
* Address one more numpy deprecation warning. (#100)
* Address numpy deprecation warnings. (#83)
* Test the package on Python 3.5, 3.6 on CI. (#78)
* Fix mismatched pyface and traitsui requirements. (#73)
* Drop support for Python 2.6. (#63)
* Fix `state_pickler.dump` on Python 2. (#61)
* Fix a few spelling mistakes in documentation. (#87)

Version 4.4.0
~~~~~~~~~~~~~

* Apptools now works with Python-3.x. (#54)
* Travis-ci support with testing on Python 2.6, 2.7 and 3.4. (#55)


Change summary since 4.2.1
~~~~~~~~~~~~~~~~~~~~~~~~~~

Enhancements

* Apptools now have a changelog!
* Preferences system defaults to utf-8 encoded string with ConfigObj providing
  better support for unicode in the PreferenceHelper (#41, #45).
* Added a traitsified backport of Python 3's lru_cache (#39).
* Added PyTables support to the io submodule (#19, #20, and #24 through #34).
* Added a SelectionService for managing selections within an application (#15, #16, #17,
  #23).
