.. -*- coding: utf-8; mode: rst; -*-

=========
 Changes
=========

All major changes over the versions are listed here. For breaking
changes have a look at :ref:`api-changes`, they are listed there in
detail.

.. include:: ../CHANGES.txt


.. _api-changes:

Breaking Changes
================

0.9
---

- Do not set "root", "self" and "here" variables any more. This
  hinders proper automatic configuration on some PyPy configurations
  when using `genapplib`.

    While technically a breaking change no known client is known to
    rely on the previous behaviour.

    Any only the INI-parser did set this variables automatically.


0.8
---

- Do not implicitely convert a configuration value to text if the
  value is the result of just a variable expansion.

    While technically a breaking change no known client is known to rely
    on the previous behaviour.


0.7
---

- A major overhaul of how filename extensions are associated with loaders
  has been done:

  + Filename extensions in :mod:`fnmatch` style are associated with
    file-mode strings.

    These file-mode strings are associated with loader
    functions separately via the mapping :py:data:`configmix.mode_loaders`.

  + :py:func:`configmix.set_assoc`, :py:func:`configmix.get_assoc`,
    :py:func:`configmix.clear_assoc` and
    :py:func:`configmix.get_default_assoc` are the new names for the old
    `set_loader()`, `get_loader()`, `clear_loader()` and
    `get_default_loader()` functions.
    They are used for associating :mod:`fnmatch` style filename patterns
    to file-mode strings. Previously they associated loader functions
    directly.

  + :py:func:`configmix.set_assoc` now requires a :mod:`fnmatch` style
    pattern instead of just a file extension string (i.e. a plain trailer).
    The previons dictionary with mapping from filename extensions to loader
    callables is now a list of tuples containing the :mod:`fnmatch` style
    pattern and the corresponding loader callable.


0.6
---

- :py:func:`configmix.safe_merge` does now a deepcopy of all source
  configurations when merging. Changes in configuration instances
  afterwards will not be reflected in the merged configuration any
  more.

  The public signature of :py:func:`configmix.safe_merge` has *not*
  changed.

- The default file encoding when reading INI style files with
  :py:func:`configmix.ini.load` is now "UTF-8". Previously it was undefined
  and therefore dependent on the user's locale.
