Manages embedded variables and blending settings
Project description
Library for handling variable resolution in scalars found within strings and “tree”-like data such as dict (internally), JSON/YAML content.
Overview
This is to support YAML settings files that may have embedded variable references in scalar values that reference keys found within the same, or other content.
ROOT_DIR: "/var/log/my_project"
LOG_FILENAME: "!ROOT_DIR!/my_log_file.log"
The use-cases for this include:
Reducing redundancy in YAML data
Support for “local overrides” to replace some data at run-time
Support for tests where the content is changed (overloaded) for unit tests
Features
This library provides a number of features including:
A TreeData class for easily loading files from JSON/YAML or from native dict objects
Visitor base classes for inspecting/manipulating the tree data
Support for specifying primary content, overload content, and variable content
Both variable resolution at load time and dynamically at run-time
A set of standard “resolvers”
Resolvers
The library includes a set of standard resolvers. New resolvers can be defined easily by extending the Resolver base class.
TreeDataResolver - Resolution from a TreeData (dict) object/YAML files
DockerSwarmResolver - Resolution from Docker swarm configs/secrets
EnvVarResolver - Resolve from environment variables
Visitors
The library includes a set of visitors for inspecting and updating TreeData objects.
Library Usage
A service (both standard “system-d” and container services) may use this to handle settings.
Overview
The settings are accessed via the ServiceSettings (or custom, extended class) Singleton. The specifics of what actors are involved in providing the settings are specified within a SettingsContext instance. These include the location of the primary settings file (generally a YAML file), the location of an optional override settings file, and the inclusion of resolvers for environment variables, Docker swarm secrets/configs, and any other optional resolvers (such as pulling settings from a database).
Startup Sequence
One of the first steps that a service should perform is creating an instance of the SettingsContext object. This instance is passed into the ServiceSettings and provides contextual details for loading the settings and resolving variables.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for flexi_settings-1.0.1.dev270739073-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 31736ed8d99382a1c902fb5b0b408e16ea0e412db588e082a025a73d848c2c29 |
|
MD5 | 6cd968e5ced10b3cc845d5ce7c214e8f |
|
BLAKE2b-256 | c94d5ff6c0209a7dac56461fe7bf2567404a2cd18e67600a653037d2f4722b55 |