Everett, a configuration library for Python applications has been released in version 3.0.0. The library is designed to enable developers to flexibly configure their applications from different environments. The new main version that has now been presented fixes a problem that previously existed in the interaction between namespaces and the Everett Components.
In previous releases of the 2019 version 1.0 Python library, there was no way to apply a namespace to a configuration that had previously been bound to an Everett Component. With Release 3.0, developers now also have the option of a subsequent namespace assignment, as the following listing shows as an example:
class MyComponent: class Config: http_host = Option(default="localhost") http_port = Option(default="8000", parser=int) db_host = Option(default="localhost") db_port = Option(default="5432", parser=int) config = ConfigManager.basic_config() # Bind the configuration to a specific component so you can only use # options defined in that component component_config = config.with_options(MyComponent) # Apply a namespace which acts as a prefix for options defined in # the component http_config = component_config.with_namespace("http") db_config = component_config.with_namespace("db")
Another important innovation is intended to make the documentation of configurations easier and more convenient. The Everett developers have revised the Sphinx extension for this purpose. It now not only allows options and components to be documented, but can even be used to automatically record the options defined in Python classes and modules. In addition, all options and components have now been indexed and given clear links, making them easier to find in the documentation.
Ready for Python 3.10
With the release of what is now the third main version, Everett has now been adapted to Python 3.10, but says goodbye to support for Python 3.6 or older versions of the programming language.
A blog post provides a complete overview of all changes in version 3.0.0. The project is available on GitHub under the MPL 2.0 license.