Mercurial > hgrepos > Python > libs > ConfigMix
view CHANGES.txt @ 654:0d6673d06c2c
Add support for using "tomllib" (in Python's stdlib since 3.11) and "tomli" TOML packages.
They are preferred if they are found to be installed.
But note that the declared dependency for the "toml" extra nevertheless
is the "toml" package. Because it is available for all supported Python
versions.
So use Python 3.11+ or install "tomli" manually if you want to use the
alternate packages.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Thu, 19 May 2022 22:10:59 +0200 |
| parents | 211288645f02 |
| children | 2b1c7a68f913 |
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 -------------- n/a (n/a) ~~~~~~~~~ - **[feature]** Allow to enable and disable the internal caching - **[feature]** Add support for using :py:mod:`tomllib` (in Python's stdlib since 3.11) and :py:mod:`tomli` TOML packages. They are preferred if they are found to be installed. But note that the declared dependency for the ``toml`` extra nevertheless is the :py:mod:`toml` package. Because it is available for all supported Python versions. So use Python 3.11+ or install :py:mod:`tomli` manually if you want to use the alternate packages. - **[bugfix]** For better consistency: use `.getvarl_s()` instead of `.getvarl()` in the implementation of `__len__()` in jailed configurations. - **[bugfix]** For better TOML compatibility open TOML files with ``encoding=""``. 0.20.5 (2022-03-07) ~~~~~~~~~~~~~~~~~~~ - **[bugfix]** The configuration value ``{{::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. - **[bugfix]** The merge login should never interpolate variables. But some parts of the merge logic did this unintentionally. 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.
