Releases: wryfi/cfitall
v2.0.1
v2.0.1 includes no new features. It provides compatibility with python 3.11 and 3.12.
sha-256 digests:
899491b3eca0f55d95515d6de1f640b7942ec965ca41b020396f55a8f62deffa cfitall-2.0.1.tar.gz
3a0ce1516a7df09d54fbc1ecc66afcdf147b23145dd6233ca28f4242e87c3e8d cfitall-2.0.1-py3-none-any.whl
Full Changelog: v2.0.0...v2.0.1
v2.0.0 - extensibility
Extensible Configuration Providers
With the v2.0.0 release, cfitall
moves to extensible configuration providers. Following a simple interface, anyone can now hook their own configuration provider into cfitall
and benefit from all of its other features.
The included EnvironmentProvider
and FilesystemProvider
are reference implementations that replicate existing functionality from the 1.0 series. They implement ConfigProviderBase
, which is the base base class to implement if you want to write a Provider.
Providers are managed by a ProviderManager
, which is responsible for registering and deregistering providers, and controls the order in which provider configurations are merged.
The provider abstraction provides an important layer of extensibility for adding new configuration sources like etcd, consul, and more to cfitall in the future, even as separate packages.
Environment Variable Parsing
Environment variable parsing (now handled by the EnvironmentProvider) has changed somewhat in the v2 release:
- Values must now be enclosed in square brackets to be interpreted as lists, e.g.
export APP__THINGS="[first, second, third]"
forcf.get('things')
to return['first', 'second', 'third']
. - Nesting of commas is not directly supported. This will not work out of the box:
export APP__PEOPLE="['doe, john', 'deer, jane']"
. However, you can experiment with thevalue_separator
, which is treated as a regex, to potentially solve for such advanced use cases.
Documentation
The documentation from the README
has been removed to the docs/
directory and supplemented considerably. These docs are now built with Sphinx and hosted on Read The Docs.
Quality & Testing
- type hints were added throughout the source for v2
- all mypy tests are passing
- 53 unit tests (roughly 96% test coverage) are passing
Minimum Python Version
- Python 3.8 is the minimum supported version for v2.