Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flexi_settings-1.0.1.dev270004741-py2.py3-none-any.whl (31.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file flexi_settings-1.0.1.dev270004741-py2.py3-none-any.whl.

File metadata

  • Download URL: flexi_settings-1.0.1.dev270004741-py2.py3-none-any.whl
  • Upload date:
  • Size: 31.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.1.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for flexi_settings-1.0.1.dev270004741-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d6fad8e850e3fef45e2175e86ae0e76fbcaa20f9e7f6ca2a363296ba2b99614f
MD5 607d50088e61f3117cdcde058716d0a8
BLAKE2b-256 a198b60eae491c0c0ffb34ec02a54f4d8c671c02fe7dc36910df02d2629203d4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page