Skip to main content

dd-config

Unified configuration management for the dd-* ecosystem — load, merge, validate and convert config files across multiple formats with a single clean API.

Install

pip install dd-config                    # JSON + INI + .env support (stdlib only)
pip install "dd-config[yaml]"            # + YAML support
pip install "dd-config[all]"             # all formats including TOML

Quick start

from dd_config import Config

# Load a YAML config
cfg = Config.load("splflow.yaml")

# Plain key access
adapter = cfg["llm_adapter"]            # "ollama"

# Dot-path access for nested keys
host = cfg["database.host"]

# Safe get with default
port = cfg.get("database.port", 5432)

# Layer overrides on top (later files win)
cfg = Config.load("base.yaml", overrides=["local.yaml", ".env"])

Supported formats

Format Extension Extra required
JSON .json none (stdlib)
YAML .yaml, .yml pip install "dd-config[yaml]"
TOML .toml pip install "dd-config[all]"
INI .ini, .cfg none (stdlib)
Env .env none (stdlib)

Features

  • Multi-format — one API for JSON, YAML, TOML, INI, .env
  • Auto-detection — format inferred from file extension
  • Layered loading — base config + multiple override files; last writer wins
  • Dot-path access — cfg["server.port"] instead of cfg["server"]["port"]
  • Env interpolation — ${VAR:-default} tokens expanded on load
  • Format conversion — Config.convert("app.yaml", "app.json")
  • Validation — required-key and type checks raise ValidationError
  • Plain dict — cfg.to_dict() returns a plain Python dict; no magic objects
  • Lazy deps — YAML/TOML libraries only imported when actually used

Validation

cfg.validate(required=["llm_adapter", "database.host"])
cfg.validate(schema={"database.port": int, "debug": bool})

Saving & converting

cfg["llm_adapter"] = "openrouter"
cfg.save("splflow.yaml")               # write back to YAML
Config.convert("splflow.yaml", "splflow.json")   # one-liner format conversion

Environment variable interpolation

Values like ${OPENROUTER_API_KEY:-} in config files are expanded from the environment at load time. Useful for secrets that must not be committed to VCS:

openrouter:
  api_key: ${OPENROUTER_API_KEY}
  base_url: https://openrouter.ai/api/v1

Merge

base = Config.load("base.yaml")
local = Config.load("local.yaml")
merged = base.merge(local)             # local wins on conflict; non-destructive

License

MIT © 2026 digital-duck

Metadata

Release files for dd-config 0.1.0

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

Source distribution (sdist)

Source distribution for dd-config 0.1.0
File Size Uploaded
dd_config-0.1.0.tar.gz 15.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dd-config 0.1.0
File Interpreter ABI Platform
dd_config-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 28.6 kB

Release files / dd_config-0.1.0.tar.gz

Download URL dd_config-0.1.0.tar.gz
Size 15.3 kB
Tags Source
SHA-256 checksum
How to use checksums
534e716ec776b5a3f8c6d0012effb0f1b8370a827e934cd57980d521098e4525
BLAKE2b-256 checksum
How to use checksums
6a92a46e6e841b35d5e87ad9cc7b36e76c4fd9489c5a6439ade58db85c24ee72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / dd_config-0.1.0-py3-none-any.whl

Download URL dd_config-0.1.0-py3-none-any.whl
Size 13.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
db5f710f85885ccf6c0e0e6a07950e444797b2bda71c29d6c744fe908846c450
BLAKE2b-256 checksum
How to use checksums
3776f32226e23517f263697eb60d280951c82b7bc827019c3330956d819fe609
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release history Release notifications | RSS feed

This release

0.1.0 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