Builds a config object based on environment variables, settings files and (optional) parameters stored in AWS System Manager Parameter Store.
Project description
Manage Conf
Description
Builds a config object based on environment variables, settings files and (optional) parameters stored in AWS System Manager Parameter Store.
The config object merges in config, overriding any previous key/value pairs, in the following order:
- ENV
- default config: default.json
- stage config: {stage}.json
- remote config: remote_settings (AWS param store)
Available to download as a package on PyPi.
Settings Files
Set an environment variable with the key name project_config_dir. It is important this is set before the package is imported. The value of project_config_dir should be the location of your /settings folder.
Set-up your settings folder, adding in configuration to the appropriate file.
.
├── settings <-- Settings folder
│ ├── default.json <-- default configuration
│ ├── {stage}.json <-- stage specific configuration e.g. `local`
│ └── {stage}.json <-- stage specific configuration e.g. `dev`
Example configuration:
default.json
{
"project_name": "example-project",
"DEBUG": false
}
local.json
{
"DEBUG": true,
"use_remote_settings": false
}
Local config object:
{
"project_name": "example-project",
"DEBUG": True,
"use_remote_settings": False
}
dev.json
{
"use_remote_settings": true
}
Dev config object:
{
"project_name": "example-project",
"DEBUG": True,
"use_remote_settings": True
# and any remote settings from AWS param store
}
AWS Param Store
Project config
Add parameters in your AWS account with paths that match this pattern:
/{project_name}/{stage}/
If you set "use_remote_settings": true in a remote {stage}.json config file, the package will attempt to fetch the parameters from the store that have the specified base path. Using the example configuration above, the path would be:
/example-project/dev/
Global service directory config
Add parameters in your AWS account with paths that match this pattern:
/global/{stage}/service_directory/
Set "global_service_directory": true in a remote {stage}.json config file.
Global service directory config for the {stage} will be merged in.
Usage
Make sure project_config_dir is set before importing the library.
from manageconf import Config, get_config
SECRET_KEY = get_config("SECRET_KEY")
DEBUG = get_config("DEBUG", True)
# default values are an optional second arg and will
# be used if the param cannot be found in the config object
Development
Install
Requires Poetry.
# create a Python3 virtual environment
virtualenv -p python3 env
# activate the virtual env
source env/bin/activate
# install requirements
poetry install
Tests
# run tests
pytest -vv
# coverage report in the Terminal
pytest --cov=manageconf tests/
# coverage report in HTML
pytest --cov-report html --cov=manageconf tests/
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file manageconf-1.1.1.tar.gz.
File metadata
- Download URL: manageconf-1.1.1.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/0.12.11 CPython/3.7.3 Darwin/18.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4ff2feeb79a423aaa60dd770173373227e55c92e91ccc839b131c5486136101
|
|
| MD5 |
9f722f963fd5ff4515fb31f7af94b512
|
|
| BLAKE2b-256 |
f6be237c3c87cfe29142f9afd4a7b1a4cf3e2597b5491ef88798d4e37b262807
|
File details
Details for the file manageconf-1.1.1-py3-none-any.whl.
File metadata
- Download URL: manageconf-1.1.1-py3-none-any.whl
- Upload date:
- Size: 9.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/0.12.11 CPython/3.7.3 Darwin/18.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2315017e0ede3cb65950bafacce795ce183b99c752ff8210eced8fb6e1fac377
|
|
| MD5 |
6b870b05b3e85702e7488a94e0312722
|
|
| BLAKE2b-256 |
f65e1ef8180f07487ba75f71e2fc40b13920097fcbe82386ed794b26b1600dd6
|