Mercurial > hgrepos > Python > libs > ConfigMix
view CHANGES.txt @ 637:4499e9b4855d
The ``{{::DEL::}}`` is not subject to interpolation any more.
This fixes the handling of these deletion markers when merging
configurations: sometimes they were tried to be interpolated -- and
this failed.
| author | Franz Glasner <f.glasner@feldmann-mg.com> |
|---|---|
| date | Fri, 04 Mar 2022 17:35:27 +0100 |
| parents | 9ab72688278b |
| children | ef485419d723 |
line wrap: on
line source
.. -*- coding: utf-8; mode: rst; indent-tabs-mode: nil; -*- .. .. Valid tags: breaking, feature, bugfix, misc, test, doc .. .. _changelog: Changelog ========= Pre-1.0 Series -------------- none (n/a) ~~~~~~~~~~ - **[bugfix]** The ``{{::DEL::}}`` is not subject to interpolation any more. This fixes the handling of these deletion markers when merging configurations: sometimes they were tried to be interpolated -- and this failed. 0.20.4 (2022-01-17) ~~~~~~~~~~~~~~~~~~~ - **[bugfix]** In the C extension: make sure that a default is returned as-is and not as copy. - **[misc]** Bring the exception messages from the C extension more in-line with the Python implementation. 0.20.3 (2022-01-12) ~~~~~~~~~~~~~~~~~~~ - **[feature]** Add some more functions to the optional C-extension module: :py:meth:`configmix.config.Configuration.getvarl_s` and :py:meth:`configmix.config.Configuration.getvar`. - **[feature]** Some internal enhancements within the C-extension module. 0.20.2 (2022-01-11) ~~~~~~~~~~~~~~~~~~~ - **[bugfix]** The source distribution archive file did not contain any of the `__init__.py` files because of a bogus entry in :file:`MANIFEST.in`. - **[feature]** More speedsups by implementing :py:meth:`~configmix.config.Configuration.getvarl` and :py:meth:`~configmix.config.Configuration.getvar_s` within the C-extension also. 0.20.1 (2022-01-10) ~~~~~~~~~~~~~~~~~~~ - **[misc]** Add an optional C-extension with some speedups to often used functions and methods. Also allow to cross-build this modules for Windows with LLVM-11 and Ninja on POSIX systems. - **[misc]** Some internal code refactoring. This also yields more consistency in interpreting the `varname` string arguments. 0.20 (2021-12-21) ~~~~~~~~~~~~~~~~~ - **[breaking]** Removed some unused keyword arguments from methods -- also public ones: * :py:meth:`~configmix.config.Configuration.expand_ref_uri` * :py:meth:`~configmix.config.Configuration.expand_if_reference` * :py:meth:`~configmix.config.Configuration._lookupref` - **[breaking]** Change methodname from `expand_variable()` to :py:meth:`configmix.config.Configuration.interpolate_variables` - **[misc]** Improved overall performance by a factor of 0.25 to 0.3 using algorithmic changes. - **[misc]** Improved performance by internal caching. - **[bugfix]** Implement :py:meth:`~configmix.config.Configuration.values` and :py:meth:`~configmix.config.Configuration.items` that yield non-interpolated configuration values. This is needed now because attribute access now yields interpolated results. 0.19.2 (2021-12-16) ~~~~~~~~~~~~~~~~~~~ - **[feature]** Implement "__len__()"-support for jailed configurations. Their container-like interface is now fairly complete. 0.19.1 (2021-12-15) ~~~~~~~~~~~~~~~~~~~ - **[feature]** Jailed configuration support proper evaluation in boolean context - **[feature]** Proper iteration support for jailed configurations - **[bugfix]** Fixes for proper exception formatting in many cases - **[bugfix]** Proper "yield" support for older Python versions - **[test]** Test fixes and enhancements 0.19.1b1 (2021-12-14) ~~~~~~~~~~~~~~~~~~~~~ - **[feature]** Attribute-style access also for jailed configurations - **[bugfix}** Make exception formatting robust when there is a single parameter for "%"-style formatting and the single parameter happend to be a tuple; now it is wrapped into a tuple. 0.19 (2021-12-10) ~~~~~~~~~~~~~~~~~ - **[breaking] [feature}** Access to a configuration key using dict-level access now does variable interpolation - **[feature]** Simple dict-style access for jailed configuration - **[feature]** Optimized "__contains__()" implementation for jailed and unjailed configurations 0.18.1 (2021-12-10) ~~~~~~~~~~~~~~~~~~~ - **[feature]** Proper "repr()" for jailed configurations 0.18.1b1 (2021-12-09) ~~~~~~~~~~~~~~~~~~~~~ - **[bugfix]** Jailed configurations assumed that their "default" marker object is identical to the "default" marker object in the unjailed base configuration. This is not always true, especially if :py:meth:`~configmix.config._JailedConfiguration.rebind` is used. 0.18 (2021-12-02) ~~~~~~~~~~~~~~~~~ - **[feature]** Allow empty variable names in some cases to get the root object of a configuration. - **[feature]** Allow to get sub-jails from an already jailed configuration. - **[feature]** Implement :meth:`~configmix.config.Configuration.getkeysl` and :meth:`~configmix.config.Configuration.getkeys` that return generators over all keys of a configuration value. 0.17 (2021-11-22) ~~~~~~~~~~~~~~~~~ - **[feature]** Complete the set of configuration retrieval methods for the jailed configuration. 0.17b2 (2021-11-19) ~~~~~~~~~~~~~~~~~~~ - **[feature]** All configuration objects carry a flag `is_jail` that allows to determine whether a configuration is jailed - **[feature]** Allow a jailed configuration to be rebound to another unjailed configuration - **[feature}** A public accessor property to the base configuration of a jailed configuration 0.17b1 (2021-11-19) ~~~~~~~~~~~~~~~~~~~ - **[feature]** Jailed (aka "restricted" or "rooted") configurations with :py:meth:`~configmix.config.Configuration.jailed` 0.16.1 (2021-11-10) ~~~~~~~~~~~~~~~~~~~ - **[feature]** New access methods :py:meth:`~configmix.config.Configuration.getfirstvarl`, :py:meth:`~configmix.config.Configuration.getfirstvarl_s`, :py:meth:`~configmix.config.Configuration.getfirstintvarl_s` :py:meth:`~configmix.config.Configuration.getfirstboolvarl_s`, :py:meth:`~configmix.config.Configuration.getfirstfloatvarl_s` - **[feature]** New access method :py:meth:`~configmix.config.Configuration.getfirstfloatvar_s` 0.16 (2021-07-11) ~~~~~~~~~~~~~~~~~ - **[feature]** New access methods :py:meth:`~configmix.config.Configuration.getfirstvar`, :py:meth:`~configmix.config.Configuration.getfirstvar_s`, :py:meth:`~configmix.config.Configuration.getfirstintvar_s` and :py:meth:`~configmix.config.Configuration.getfirstboolvar_s` 0.15.1 (2021-07-09) ~~~~~~~~~~~~~~~~~~~ - **[bugfix]** Handle the `default` keyword parameter in :py:meth:`configmix.config.Configuration.getvar` properly. 0.15 (2021-06-25) ~~~~~~~~~~~~~~~~~ - **[feature]** New filter function :py:func:`urlquote_plus` - **[feature]** New filter functions :py:func:`None` and :py:func:`Empty`. They are useful in variable interpolation context where they suppress possible lookup errors (aka :py:exc:`KeyError`) and instead return with :py:obj:`None` or an empty string. 0.14 (2021-05-10) ~~~~~~~~~~~~~~~~~ - **[breaking] [feature]** Allowed quoting of variable and namespace names. This is mostly important for variable names that contain ``.``, ``:`` or ``|`` but probably useful for characters like ``"` ``'`` and ``#`` also. - **[breaking] [misc]** Moved some important public constants from :py:mod:`configmix` into the :py:mod:`configmix.constants` module. - **[feature]** Configuration tree references are implemented in the ``ref`` namespace - **[feature]** Implemented new access methods :py:meth:`configmix.config.Configuration.getvarl` and :py:meth:`configmix.config.Configuration.getvarl_s` 0.13 (2021-04-21) ~~~~~~~~~~~~~~~~~ - **[feature]** All YAML load functions got a new optional keyword `strict` to detect and prevent duplicate keys within a single YAML document. The top-level load function also understands this flag and provides it to low-level-loaders that understand it. 0.12 (2020-12-07) ~~~~~~~~~~~~~~~~~ - **[feature]** Provide an ``AWS`` namespace to retrieve some AWS instance metadata. 0.11 (2020-10-05) ~~~~~~~~~~~~~~~~~ - **[feature]** Allow the deletion of key-value pairs while merging configurations. This is done by recognizing and handling the special configuration value ``{{::DEL::}}``. 0.10 (2020-09-10) ~~~~~~~~~~~~~~~~~ - **[feature]** Allow loading configuration files from directories when using the "<dir>" prefix in filenames. Unknown filetypes within these directories are ignored automatically. - **[feature]** Implemented a function to delete an association: :py:func:`configmix.del_assoc`. 0.9 (2020-07-28) ~~~~~~~~~~~~~~~~ - **[breaking] [feature]** Do not set "root", "self" and "here" variables any more. The old behaviour hindered proper automatic configuration on some PyPy configurations when using `genapplib`. Only the INI-parser did set this variables automatically. 0.8.1 (2020-07-08) ~~~~~~~~~~~~~~~~~~ - **[bugfix]** Allow non-string keys when merging configurations. 0.8 (2020-07-08) ~~~~~~~~~~~~~~~~ - **[breaking] [feature]** Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion. 0.7.4 (2020-05-21) ~~~~~~~~~~~~~~~~~~ - **[feature]** Implemented new namespace function ``OS:node`` to return the node's computername. - **[bugfix]** The ``OS`` namespace lookup did not handle non-existing variables properly and ignored the `default` parameter. 0.7.3 (2020-05-13) ~~~~~~~~~~~~~~~~~~ - No code changes. 0.7.2 (2019-05-13) ~~~~~~~~~~~~~~~~~~ - **[feature]** Implemented a loader with key ``-*-ignore-*-`` effectively ignores the contents of given file. No file extensions are by default associated with this loader. 0.7.1 (2019-05-10) ~~~~~~~~~~~~~~~~~~ - **[feature]** :py:func:`configmix.load` and :py:func:`configmix.safe_load` got a new keyword argument `extras` that (if given) will be used as the *last* configuration dictionary to be merged into the configuration. This can be used to overwrite configuration file settings from commandline arguments. - **[bugfix]** :py:func:`configmix.safe_load` did some preliminary unsafe merges from `defaults` and an extra additional unneeded merge. 0.7 (2019-05-06) ~~~~~~~~~~~~~~~~ - **[breaking]** Additional or alternative loaders can be installed by changing the :py:data:`configmix.mode_loaders` dictionary directly. - **[breaking]** The public functions to associate filename extensions to filemodes have been renamed to :py:func:`configmix.set_assoc`, :py:func:`configmix.get_assoc`, :py:func:`configmix.clear_assoc`, :py:func:`configmix.get_default_assoc`. The filemodes must be keys in the :py:data:`configmix.mode_loaders` dictionary. - **[breaking] [feature]** The associations from filename extensions to parsers are :py:mod:`fnmatch` style patterns now. Calling :py:func:`configmix.set_assoc` by default prepends to the currently defined associations and therefore gets the highest priority. Appending is possible also. - **[feature]** :py:func:`configmix.load` and :py:func:`configmix.safe_load` got a keyword argument `defaults` that allow the provision of an already existing default configuration into which all additional configuration settings are merged into. - **[feature]** Added support for TOML style configuration files. This needs the external package :py:mod:`toml` (from https://github.com/uiri/toml). 0.6 (2019-03-14) ~~~~~~~~~~~~~~~~ - **[breaking] [feature]** Reimplemented :py:func:`configmix.safe_merge` to do a deepcopy of all source configurations when merging. Previously is was sort of a shallow copy. - **[breaking] [feature]** 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. An `encoding` keyword argument can be specified explicitely now. - **[breaking] [feature]** Support comment-like key-value pairs with configuration keys starting with ``__doc`` or ``__comment``. - **[misc]** Use the filesystem encoding where appripriate. - **[doc]** Begin the documentation with `Sphinx <http://www.sphinx-doc.org>`_ - **[test]** Begin formal unittests - **[feature]** Build a tree of configuration settings from INI files - **[feature]** Support JSON formatted files as configuration files also (suffix ".json"). - **[feature]** Allow custom configuration filename extensions and custom loaders that can handle custom configuration file syntax styles. 0.5 (2016-04-19) ~~~~~~~~~~~~~~~~ - **[feature]]** First really used release.
