Standardised settings loader
Project description
pyStandardSettings
Standardised settings loader
a port of nodejs standard-settings
Why
No more cp config.sample.json config.json.
Your app presents a settings/settings.default.json which is always included. User, or other developer needing custom settings, loads his custom settings, overriding default settings. If a key is missing in user settings, it won’t trigger any error, as a default value is in settings.default.json. standard-settings offers multiple ways to change settings: settings.json file, command line arguments, environment variables. Check below examples for usage and priority order.
Installation
pip install pyStandardSettings
Usage
This module loads settings from a file, from commandline arguments, and environment variables. It should be required at the very beginning of your project:
from pyStandardSettings import settings
Then your settings are accessible using:
print settings.server.port
Priority order
Environment variables
Example:
SERVER_PORT=2500 python main.py
service_spacebro_inputMessage=new-media python main.py
Command line parameters (argv)
Example:
python main.py --server.port 2000 # to specify a field
python main.py --settings settings/settings.prod.json # to specify a settings file
NB: To use a key with argv, it needs to be present in settings.default.json
Files
These files are always loaded if present:
settings/settings.json first
settings/settings.default.json
Working all together with different settings
On your project, you may have other developers working with different settings. Pushing them in the repo is annoying. We know you’ve seen that before. Using standard-settings, developers can share common default settings, AND load custom settings.
Best practice is to add settings/settings.default.json in your repo, this file covers default settings, common for each developer. And .gitignore settings/settings.json, this file has custom settings inside.
Schema
The following schema is an example of settings used in Soixante circuits apps:
{
"server": {
"host" : "myip",
"port" : 3333
},
"timeout": {
"lookbook": 5,
"popup": 4
},
"folder": {
"kcDownloader": "path-to/data",
"lookbook": "path-to/lookbook"
},
"flag": {
"stabalize": true,
"devMode": true
},
"customKey": {
"maxImageNumber": 64
},
"meta": {
"title": "",
"description": "",
"message": "...",
"source": ""
},
"service": {
"altruist": {
"host" : "192.168.1.6",
"port" : 6666
},
"spacebro": {
"host" : "192.168.1.6",
"port" : 8888,
"channelName": "my-channel",
"client" : {
"name" : "my-app"
}
}
}
}
Goodies
To list all settings keys available in your project, use
python main.py -h
and it will display
usage: main.py [-h] [-s SETTINGS] [--recipe RECIPE]
[--server.host SERVER.HOST] [--server.port SERVER.PORT]
optional arguments:
-h, --help show this help message and exit
-s SETTINGS, --settings SETTINGS
settings file in json format
--recipe RECIPE
--server.host SERVER.HOST
--server.port SERVER.PORT
test command
python -m tests.test
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
Hashes for pyStandardSettings-0.0.1-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 66001deb54038b49fc9650168bddc640888fa5372ba62fa417a554e7ac012ee9 |
|
MD5 | d67d4f46268b1bce5ef5b9bc294857fd |
|
BLAKE2b-256 | 3385c5c91362fd79709d63d1244b5c5a1ae763fb25d98d60e806970a448ac96b |