ConfigTree 0.6
Is a configuration management tool
License: BSD
Keywords: configuration config settings tree

ConfigTree
==========

..  image:: https://travis-ci.com/Cottonwood-Technology/ConfigTree.svg?branch=master
    :target: https://travis-ci.com/Cottonwood-Technology/ConfigTree

..  image:: https://badge.fury.io/py/ConfigTree.svg
    :target: https://badge.fury.io/py/ConfigTree

..  image:: https://readthedocs.org/projects/configtree/badge/?version=latest
    :target: https://configtree.readthedocs.io/en/latest/?badge=latest

Configuration files behave like cancer tumor.  As soon as one is created with a
handful of parameters, it starts to grow.  And in a couple of month it becomes
huge hardly supportable monster with dozens of parameters, which affects on
different subsystems of the project like metastasis.

The goal of ConfigTree project is to restrain the monster, but without
overkill for small projects.  It can be used in Python programs as well as in
programs written in other languages.

ConfigTree will be useful for you, if you want to:

*   keep default configuration options and environment-specific ones
    separated;
*   fine-tune files to load for each environment;
*   validate configuration;
*   have templates and automation in your configuration files.

The full documentation is available at `Read the Docs`_.

.. _Read the Docs: http://configtree.readthedocs.org/en/latest/


Changes
=======

0.6
---

*   Dropped deprecated features.
*   Fixed deprecation warnings on Python 3.7 and higher.
*   Migrated tests from ``Nose`` to ``PyTest``.


0.5.3
-----

*   Fixed bug in ``Walker.environment`` method.


0.5.2
-----

*   Fixed bugs in ``ITree.rare_copy`` and ``ITree.rare_keys`` methods.


0.5.1
-----

*   Fixed bugs in ``Loader`` class.


0.5
---

*   Added abstract base class ``ITree`` to unify type checking;
*   Fixed ``pop`` method of ``Tree`` and ``BranchProxy``;
*   Added ``rare_copy`` method into ``Tree`` and ``BranchProxy``;
*   Unified ``rarefy`` function, it now handles any mapping object.


0.4
---

*   Dropped Python 2.6 support.
*   Completely reworked loading process (see `migration guide`_):

    *   functions ``load``, ``loaderconf`` are deprecated in favor of class ``Loader``;
    *   function ``make_walk`` is deprecated in favor of ``Walker``;
    *   function ``make_update`` is deprecated in favor of ``Updater``;
    *   module ``configtree.conv`` and its plugins (from entry point with
        the same name) is deprecated in favor or ``configtree.formatter``;
    *   shell command ``configtree`` is deprecated in favor of ``ctdump``.


.. _migration guide: http://configtree.readthedocs.org/en/latest/migration.html
                     #migration-from-version-0-3-to-0-4


0.3
---

*   Dropped Python 3.2 support due to ``coverage`` package.  The code should
    still work OK, but it will not be tested anymore.
*   Added ``loaderconf`` function to be able to read loader configuration
    from ``loaderconf.py`` module in a clean way.


0.2
---

*   Added ``copy`` method into ``Tree`` and ``BranchProxy`` classes.
*   Added human readable representation of ``BranchProxy`` class.
*   Added rare iterators into ``Tree`` and ``BranchProxy`` classes.
*   Added ``rarefy`` function.
*   Added rare JSON converter.


0.1
---

*   Initial release.