Skip to main content

Layered configuration loader merging env vars, files, and defaults

Project description

philiprehberger-config-kit

Layered configuration loader merging env vars, files, and defaults.

Install

pip install philiprehberger-config-kit

Usage

from philiprehberger_config_kit import Config

config = Config(
    sources=[
        Config.defaults({"port": 3000, "debug": False, "log_level": "info"}),
        Config.json_file("config.json", optional=True),
        Config.env_file(".env", optional=True),
        Config.env(prefix="APP_"),
    ]
)

# Typed access
port = config.get_int("port")
debug = config.get_bool("debug")
db_url = config.get_str("database_url")
timeout = config.get_float("timeout", default=5.0)
hosts = config.get_list("allowed_hosts")

# Nested access (dot notation)
redis_host = config.get_str("redis.host")

# Validation
config.require("database_url", "secret_key")  # raises ConfigError if missing

# Check existence
if config.has("cache_ttl"):
    ttl = config.get_int("cache_ttl")

Source Priority

Sources are applied in order — later sources override earlier ones:

Config(sources=[
    Config.defaults({...}),       # lowest priority
    Config.json_file("..."),      # overrides defaults
    Config.env_file(".env"),      # overrides JSON
    Config.env(prefix="APP_"),    # highest priority
])

Environment Variables

With prefix="APP_", env vars are mapped:

  • APP_PORTport
  • APP_DATABASE__HOSTdatabase.host (double underscore = nested)

.env Files

DATABASE_URL=postgresql://localhost/mydb
SECRET_KEY="my-secret"
DEBUG=true

Bool Coercion

get_bool() accepts: true/false, 1/0, yes/no, on/off

License

MIT

Project details


Download files

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

Source Distribution

philiprehberger_config_kit-0.1.0.tar.gz (4.5 kB view details)

Uploaded Source

Built Distribution

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

philiprehberger_config_kit-0.1.0-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file philiprehberger_config_kit-0.1.0.tar.gz.

File metadata

File hashes

Hashes for philiprehberger_config_kit-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9ade8beb17556a5d87a3a6f54216b4f3b3ef0c034d6f47b5d46c65fd2559a752
MD5 700844febb8a7e75ed8ddbf1a91b444a
BLAKE2b-256 4705cad7d484d8d6b6085450a2405d97aa47138fce8eddd4129ada5e580d1290

See more details on using hashes here.

File details

Details for the file philiprehberger_config_kit-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for philiprehberger_config_kit-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 699eec9eaaa87b138810a5dd4906e32678a16abb102118cc1bf52ab564a590f3
MD5 5d723d7069ce39862804ee8afc6ba22d
BLAKE2b-256 0c06c7276cf8f636af58bcdb1cc4c4ecb64b18013a0fffabf2b4b1fdb9bfd222

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