Skip to main content

Python library for loading app configurations from files and/or namespaced environment variables

Project description

Build Status Coverage Status

CLIMATECONTROL

CLIMATECONTROL controls your apps configuration environment. It is a Python library for loading app configurations from files and/or namespaced environment variables.

Install

pip install climatecontrol

Usage

Set some environment variables in your shell

export MY_APP_SECTION1_SUBSECTION1=test1
export MY_APP_SECTION2_SUBSECTION2=test2
export MY_APP_SECTION2_SUBSECTION3=test3

Then use them in your python modules:

from climatecontrol.settings_parser import Settings
settings_map = Settings(env_prefix='MY_APP')
print(dict(settings_map))

{
    'section1': {
        'subsection1': 'test1'
    },
    'section2': {
        'subsection2': 'test2',
        'subsection3': 'test3'
    }
}

In case you want to update your settings or your environment variables have changed and you want to reload them, the update method will reload your settings:

import os
os.environ['MY_APP_SECTION2_NEW_ENV_VAR'] = 'new_env_data'
settings_map.update()
print(dict(settings_map))

{
    'section1': {
        'subsection1': 'test1'
    },
    'section2': {
        'subsection2': 'test2',
        'subsection3': 'test3',
        'new_env_var': 'new_env_data'
    }
}

Settings file support

If you don’t want to use an environment variable for every single setting and want to put your settings in a single file instead you can to this as well. Settings files need to be in toml format right now.

export MY_APP_SETTINGS_FILE=./my_settings_file.toml

The file could look like this:

[section1]
subsection1 = "test1"

[section2]
subsection2 = "test2"
subsection3 = "test3"

Command line support using click

The click library is a great tool for creating command line applications. If you don’t want to have to use an environment to set your configuration file. Write your command line application like this:

import click

@click.command()
@settings_map.click_settings_file_option()
def cli():
   print(dict(settings_parser))

save it to a file like “cli.py” and then call it after installing click:

pip install click
python cli.py --settings ./my_settings_file.toml

whithout needing to set any env vars.

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

climatecontrol-0.1.6.tar.gz (12.4 kB view details)

Uploaded Source

File details

Details for the file climatecontrol-0.1.6.tar.gz.

File metadata

File hashes

Hashes for climatecontrol-0.1.6.tar.gz
Algorithm Hash digest
SHA256 eea61d2693ca9d6019256eecc87f6bfb764366817f7b93ab6b791c31dfa40d3d
MD5 58222e90cf20507363ba51e782b5957c
BLAKE2b-256 33526c742adce91164aef22f55ad2fda9fe1bb7e5d72ce4f60213a4761bebf1d

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