lib-layered-config
Cross-platform layered configuration loader for Python
What it is and what it does
lib_layered_config solves the problem of configuration authorship tracking. When a setting reaches your program through multiple sources—defaults, config files, environment variables, `.env` files—it becomes hard to debug which source won. This library deep-merges configuration from six layers (defaults, app, host, user, dotenv, environment) in a fixed precedence order and returns an immutable Config object that remembers exactly which layer and file each value came from. You can ask for a value and also ask where it came from, collapsing configuration debugging from a guessing game into a lookup.
The library handles cross-platform path discovery (Linux XDG, macOS, Windows), supports configuration profiles (separate trees for test, staging, production), and includes both a Python API and a CLI for reading, deploying, and scaffolding configs. It uses rtoml for fast TOML parsing and supports TOML, JSON, and optional YAML formats. The design keeps secrets out of committed files by letting environment variables and `.env` outrank file-based config, and it provides safe deployment with automatic backups and conflict handling.
Use it for:
- Debug which configuration source set a value by calling config.origin("key.path") instead of tracing through multiple files and environment variables.
- Deploy configuration across test, staging, and production environments by selecting profiles without hand-merging separate environment setups.
- Scaffold and deploy configuration files to Linux, macOS, and Windows machines without hardcoding platform-specific paths like /etc/myapp/.
- Keep secrets out of version control by letting environment variables and .env files override committed config files automatically.
- Use the CLI to inspect, validate, or deploy configuration without writing Python code in deployment scripts.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Loads and merges configuration from multiple sources (defaults, files, environment variables) into a single immutable object while tracking where each value came from.
Yes. The package solves a real debugging pain point (configuration provenance) with a clean API, has low install friction, active maintenance, no known vulnerabilities, and a permissive license. It is worth installing if you need to track where configuration values come from or manage multi-layer config across platforms; skip it if your application has simple, single-source configuration.
Install
lib-layered-config on PyPI
pip
pip install lib-layered-configuv
uv add lib-layered-configpoetry
poetry add lib-layered-configInstalling lib-layered-config
Before you install
Low install friction: pure Python wheel with four runtime dependencies (lib-cli-exit-tools, orjson, rich-click, rtoml). Active maintenance with a release 15 days ago; repository is not archived.
License in practice
MIT license (permissive); you can use, modify, and distribute this package freely in commercial or private projects with minimal restrictions.
Quickstart
from lib_layered_config import read_config
config = read_config(vendor="mycompany", appname="myapp")
value = config.get("service.timeout")
origin = config.origin("service.timeout")
print(f"Value: {value}, from: {origin}")
Requires Python 3.10 or later.
Verify before relying
- Whether the library's performance improvements from rtoml are measurable in typical application startup scenarios.
- How the immutability guarantee is enforced at runtime and whether it prevents all forms of accidental mutation.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 4 — lib-cli-exit-tools, orjson, rich-click, rtoml |
| Maintenance | actively maintained — 15 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 128,877/month — #11,693 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: lib_layered_config-5.6.2-py3-none-any.whl
Keywords: configuration, dotenv, env, layered, toml
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
config-parserMerges configuration from YAML/JSON files,…
agpl · top 5,000 on PyPI
donfigDonfig provides a unified configuration system…
permissive · top 5,000 on PyPI
dynaconfDynaconf manages application configuration…
permissive · top 5,000 on PyPI
configuratorBuilds a configuration store by layering…
permissive · top 15,000 on PyPI
appdirsDetermines the correct platform-specific…
permissive · top 1,000 on PyPI
typer-configAdds configuration-file support to typer CLI…
permissive · top 15,000 on PyPI
setoptconf-tmpRetrieves program settings from multiple…
permissive · top 15,000 on PyPI
load-dotenvAutomatically loads environment variables from…
permissive · top 15,000 on PyPI
dotenvLoads environment variables from a .env file…
unclear · top 5,000 on PyPI
docker-squashCombines multiple Docker image layers into…
permissive · top 15,000 on PyPI