Skip to main content

Common configuration utilities for EMS projects

Project description

EMS-config

This project introduces a unified way of handling config files. The philosophy is having a text-based config file (ini, yml or toml) and then perform parsing and sanity-checking in code afterwards. Moreover, a default layout is encouraged.

You need to provide three paths

  1. An app_data directory. This is where you should put all your data and where your final config file should go. This is set in an environmental variable APP_DATA_PATH, which defaults to app_data.
  2. A path to your final config file. This defaults to $APP_DATA_PATH/config.ini if your template file is called config.example.ini (see below). That is, it strips .example from the filename of you template file.
  3. A path to the template file. This defaults to config.example.ini.

Notice that 2 and 3 can both be set in the following parse-method or in environmental variables (CONFIG_PATH and CONFIG_TEMPLATE_PATH)

The assumed layout of you directory would then be something like

project
  - app_data/
    - config.ini
  - app.py
  - config.py
  - config.example.ini

Where config.py contains the following,

from ems_config import parse_config

config = parse_config()

URL = config["DEFAULT"]["URL"]

and the template config.ini.example contains an example of the configuration,

[DEFAULT]
URL = http://google.com

You can then use the configuration in other python files like this,

from config import URL
print(URL)  # do stuff with the URL

Notice, if the config.ini in app_data (or where ever you choose to place it), the template will be copied to that location.

Helper methods

This library provides a few helper methods found in ems.helpers

# Get the path of p relative to the APP_DATA_DIR
get_from_app_data(p)

## Help to parse from .ini style files
parse_dt_or_none(...)
parse_list_or_none(...)

Customization

If you don't want your template to be named after the above scheme, you can pass another template path into the parse_config() methods. Likewise, if you want you final config file to be located elsewhere, you can also provide another path

from ems_config import parse_config

# config_path will default to $APP_DATA_PATH/cfg.ini
config = parse_config(config_template='templates/cfg.example.ini')

config = parse_config(config_template='templates/cfg.ini', config_path='/etc/app.ini')

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

ems-config-0.0.15.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

ems_config-0.0.15-py3-none-any.whl (4.1 kB view details)

Uploaded Python 3

File details

Details for the file ems-config-0.0.15.tar.gz.

File metadata

  • Download URL: ems-config-0.0.15.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.7.9

File hashes

Hashes for ems-config-0.0.15.tar.gz
Algorithm Hash digest
SHA256 0c8c2e201e91cbd6364628cbf6fc95a34cf7ba5b682bb112440f51124102d3cf
MD5 96a29d9be66c93bd73d2e8025c15987d
BLAKE2b-256 5a8a662c0f6ca3675f1cf5ba2e4adae50f094e8980ba2f1e08b64bdd40659c93

See more details on using hashes here.

File details

Details for the file ems_config-0.0.15-py3-none-any.whl.

File metadata

  • Download URL: ems_config-0.0.15-py3-none-any.whl
  • Upload date:
  • Size: 4.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.7.9

File hashes

Hashes for ems_config-0.0.15-py3-none-any.whl
Algorithm Hash digest
SHA256 fed2b689ea8d70af1069693b537b6a64261316ee8dac78dd93d7dedfe870c4cf
MD5 b630ca5608e460ea6089a2e720a8d3c2
BLAKE2b-256 5753ef4abe076d830d6dd9094ddf4b2bfdff0d4df2bacaa9757607aa820fbf67

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