Changelog
v2.2.0
Drop support for Python 3.9.
Ship inline type information via a py.typed marker for type checkers.
Tighten and extend type hints across the public API, templates, and sources.
Add strict mypy configuration and align tests/examples with the new typing.
Include docs and tests directory in source distributions.
v2.1.0
Drop support for versions of Python below 3.9.
Removed ‘u’ prefix from string literals for Python 3.0+ compatibility.
Removed a number of python 2 leftovers.
Removed deprecated pkgutil.get_loader usage in favor of importlib..util.find_spec for better compatibility with modern Python versions.
Added typehints to as_* functions which allows for enhanced type checking and IDE support.
Added a minimal release workflow for GitHub Actions to automate the release process.
Added support for Python 3.13 and Python 3.14.
Modernized package and tests setup.
v2.0.1
Remove a <4 Python version requirement bound.
v2.0.0
Drop support for versions of Python below 3.6.
v1.7.0
Add support for reading configuration values from environment variables (see EnvSource).
Resolve a possible race condition when creating configuration directories.
v1.6.0
A new Configuration.reload method makes it convenient to reload and re-parse all YAML files from the file system.
v1.5.0
A new MappingValues template behaves like Sequence but for mappings with arbitrary keys.
A new Optional template allows other templates to be null.
Filename templates now have an option to resolve relative to a specific directory. Also, configuration sources now have a corresponding global option to resolve relative to the base configuration directory instead of the location of the specific configuration file.
There is a better error message for Sequence templates when the data from the configuration is not a sequence.
v1.4.0
pathlib.PurePath objects can now be converted to Path templates.
AttrDict now properly supports (over)writing attributes via dot notation.
v1.3.0
Break up the confuse module into a package. (All names should still be importable from confuse.)
When using None as a template, the result is a value whose default is None. Previously, this was equivalent to leaving the key off entirely, i.e., a template with no default. To get the same effect now, use confuse.REQUIRED in the template.
v1.2.0
float values (like
4.2) can now be used in templates (just like42works as an int template).The Filename and Path templates now correctly accept default values.
It’s now possible to provide custom PyYAML Loader objects for parsing config files.
v1.1.0
A new
Pathtemplate produces a pathlib Path object.Drop support for Python 3.4 (following in the footsteps of PyYAML).
String templates support environment variable expansion.
v1.0.0
The first stable release, and the first that beets depends on externally.