Skip to main content

Layered configuration loader merging env vars, files, and defaults

Project description

philiprehberger-config-kit

Tests PyPI version License

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.3.tar.gz (4.7 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.3-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_config_kit-0.1.3.tar.gz
Algorithm Hash digest
SHA256 36657c54a0af469b4456a6397d2e94aeff70bd913b292eab61f2043860b62159
MD5 c748b4d7111ec55ef003ecb42bda9d45
BLAKE2b-256 93ba9590fc5701d45dc0c5e8c1b5552b7708cc05c8b153ef82ab30d1dc385864

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_config_kit-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9561179fddb5da4a99cb0e0da82db2de40c3328ceef2285bb91ad6100805c097
MD5 09d26389c6e08b2a612f39aa39cd2c15
BLAKE2b-256 cc6fc623196703495979eb37a008f5df3edb6282dcd13388973a9e9bea4d3b5d

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