Skip to main content

Layer-Loader

CircleCI

Layer-loader is a Python library designed to allow easy composition of configuration files.

This project was inspired by hiera, though intends to be somewhat simpler.

Usage

The primary interface is a Python API:

import json
import layer_loader

data = layer_loader.load_files(
    ['dev.json', 'main.json'],
    loader=json.load,
)

This will load the data from dev.json and main.json, interpreting it as JSON, combine it into a single object and then any placeholders are expanded.

For convenience you can also run layer_loader as a module:

$ cat dev.json
{
    "url": "http://localhost:8000"
}
$ cat main.json
{
    "endpoints": [
        "{url}/abc",
        "{url}/def",
        "{url}/ghi"
    ],
    "url": "https://production.system"
}
$ python -m layer_loader --loader=json.load dev.json main.json
{
    "endpoints": [
        "http://localhost:8000/abc",
        "http://localhost:8000/def",
        "http://localhost:8000/ghi"
    ],
    "url": "http://localhost:8000"
}

Layers

Layers are specified in order from most important (top) to least important (bottom). When combining layers, layer-loader uses the following rules:

  • Mappings can be merged, combining the entries from several layers
  • Scalar values and lists replace entries in the lower layers
  • Keys in more important layers override those in lower layers
  • Where keys are present in multiple layers, it is an error for those keys to have values of different types. The exception to this is that keys can explicitly be set to null in a higher layer in order to remove a value set in a lower layer.

Placeholders

Placeholders are specified similarly to python format strings and may appear anywhere inside a string value, for example 'foo {place.holder} bar'. Placeholders should not appear in keys -- they will not be found there.

Placeholders are expanded by walking the flattened data structure, using dots in the placeholder to separate names at each level of nesting.

There is no mechanism to specify which layer a placeholder should be looked up within -- all placeholder expansion happens after the layers have been flattened.

Release files for layer-loader 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for layer-loader 0.0.1
File Size Uploaded
layer-loader-0.0.1.tar.gz 6.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for layer-loader 0.0.1
File Interpreter ABI Platform
layer_loader-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 14.3 kB

Release files / layer-loader-0.0.1.tar.gz

Download URL layer-loader-0.0.1.tar.gz
Size 6.1 kB
Tags Source
SHA-256 checksum
How to use checksums
064fa86c5ecf2d2e1f9bc635225e58e9c2f6a8f916491b501ff5430ab441b5d6
BLAKE2b-256 checksum
How to use checksums
06e7ce9f3976be13a98e5d05954ccec4ecf56a27a76c837c858d078858275eff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.5.2

Release files / layer_loader-0.0.1-py3-none-any.whl

Download URL layer_loader-0.0.1-py3-none-any.whl
Size 8.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
db85853256904db07f055ce44cc55b4ad75c76a51efc30f5af97661966ee9c0e
BLAKE2b-256 checksum
How to use checksums
4bdba29830f4de76d1125cd6e5eff02bbfae78fe2b487383437ed0001a6b4f38
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.5.2

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page