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
- 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 variableAPP_DATA_PATH
, which defaults toapp_data
. - A path to your final config file. This defaults to
$APP_DATA_PATH/config.ini
if your template file is calledconfig.example.ini
(see below). That is, it strips.example
from the filename of you template file. - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c8c2e201e91cbd6364628cbf6fc95a34cf7ba5b682bb112440f51124102d3cf |
|
MD5 | 96a29d9be66c93bd73d2e8025c15987d |
|
BLAKE2b-256 | 5a8a662c0f6ca3675f1cf5ba2e4adae50f094e8980ba2f1e08b64bdd40659c93 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | fed2b689ea8d70af1069693b537b6a64261316ee8dac78dd93d7dedfe870c4cf |
|
MD5 | b630ca5608e460ea6089a2e720a8d3c2 |
|
BLAKE2b-256 | 5753ef4abe076d830d6dd9094ddf4b2bfdff0d4df2bacaa9757607aa820fbf67 |