Skip to main content

Environment specific application configuration with TOML

Project description

toml-env-conf

pip install toml-env-conf

A minimal library for environment-specific (dev/prod) application configuration using TOML

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.3.tar.gz (2.5 kB view details)

Uploaded Source

Built Distribution

toml_env_conf-0.1.3-py3-none-any.whl (2.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: toml_env_conf-0.1.3.tar.gz
  • Upload date:
  • Size: 2.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.15

File hashes

Hashes for toml_env_conf-0.1.3.tar.gz
Algorithm Hash digest
SHA256 3c1fbf844aa8ad190481d23b7b8342de60b6bab704bbbc2841f654aa2224aad9
MD5 80bfc8892951385e00ee1c68ec4b0709
BLAKE2b-256 a90e98049e8fd857ea56132d3cc23772a6e95003e5feaadb493a786f38b605cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for toml_env_conf-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d16aa52d304dae05e6d1cfa257a7e2377586b7a5690249003fc9623af56aca1f
MD5 f6384b199fa4b689f4b609c7e5983f98
BLAKE2b-256 4dd677b521681f99f01d0d17f352a5da2386d467d4122051fdec96d2f46cb515

See more details on using hashes here.

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