- Use the standard library's
tomllib
module on Python 3.11 and above and switch to tomli for earlier versions.
Thanks to Wim Glenn for the work!
- Add support for deleting items and attributes via the :class:`~.node.ConfigNode` interface.
- Drop Python 2 support.
- :meth:`~.node.ConfigNode.get` can now be used without specifying a name to return the value of nodes representing simple attributes.
- Explicit support for :class:`pathlib.Path` objects.
- :class:`~.node.ConfigNode` instances can now be :meth:`merged <Config.merge>`.
- Add support for an optional root in each file when using the :ref:`"extends" <extends-pattern>` pattern.
- Change default false_values for :meth:`if_supplied` to be a :class:`tuple` rather a :class:`frozenset`, fixing a bug that occurred when source data wasn't hashable.
- Move the code for the "Config file that extends another config file" pattern into a helper function in :func:`configurator.patterns.load_with_extends`.
- Allow the list of values considered false by :meth:`if_supplied` to be specified.
- :meth:`if_supplied` no longer considers
False
to be false, as when present, that's often an explicitly provided value.
- :class:`Config` instances can now be pickled.
- :func:`value` has been added to allow literal values to be used in the left side of mappings passed to :meth:`Config.merge`.
- Configuration values my now be set using attribute or item setting on :class:`~.node.ConfigNode` instances.
- :meth:`~.node.ConfigNode.node` can be used to obtain or create a :class:`~.node.ConfigNode` from a dotted path and will give you a node even for a value of a :class:`dict` or item in a :class:`list`.
- :class:`~.node.ConfigNode` instances now have a :meth:`~.node.ConfigNode.set` method that can be used to replace the value of that part of the configuration, regardless of whether it is a container, list item or dictionary value.
- Performance improvements when import parsers.
- Removed the ability to provide new parsers using pkg_resources entry points.
- Add :meth:`Config.from_env` class method to help with extacting large numbers of environment variables into configuration.
- Enable the context manager returned by :meth:`Config.push` to return the state of a global config object to what it was before :meth:`~Config.push` was called.
- Add support for :meth:`pushing <Config.push>` and :meth:`popping <Config.pop>` config data onto a global :class:`Config`.
- Support for optional configuration files in :meth:`Config.from_path`.
- Add :meth:`if_supplied` mapping operation.
- Fully documented.
- Initial release without docs.