Skip to main content

Environment specific application configuration with TOML

Project description

toml_env_conf

TOML based application configuration with support for environment-specific overrides.

Useful if you want different values in some environments (local/test/prod). e.g. all environments use the values base_conf.toml, but you only want some values to be different when env == "prod"

As easy as

import toml_env_conf

toml_env_conf.load_as_dict(path)
# or
toml_env_conf.load_as_dataclass(
    path=path,
    data_class=MyConfigType,
    env="prod"
)

Where the path has the following toml files

├── base_conf.toml
└── env_prod.toml

Convention

  • There must be a file named base_conf.toml
  • For environment overrides, the file must be called env_[name].toml e.g. for an environment called prod, the file is called env_prod.toml. For an environment called dev, the file is called env_dev.toml.

Example

Step 1: Create some configs

base_conf.toml

name = "Regular name"
hobby_name = "laundry"
is_fun = false
scores = [-10, -20]

env_prod.toml

hobby_name = "music"
is_fun = true

Step 2: Load em up

main.py

from dataclasses import dataclass
from pathlib import Path
from typing import List

import toml_env_conf


@dataclass(frozen=True)  # freeze for immutability
class MyConfigType:
    name: str
    hobby_name: str
    is_fun: bool
    scores: List[int]
   
if __name__ == "__main__":
    conf_dir_path = Path(__file__).parent.joinpath("/path/to/config")
    
    config: MyConfigType = toml_env_conf.load_as_dataclass(
        conf_dir_path, MyConfigType, env="prod"
    )
    
    print(config)

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

toml_env_conf-0.1.2.tar.gz (2.5 kB view hashes)

Uploaded Source

Built Distribution

toml_env_conf-0.1.2-py3-none-any.whl (2.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page