Skip to main content

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

  1. Environment variables

Example:

SERVER_PORT=2500 python main.py
service_spacebro_inputMessage=new-media python main.py
  1. 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

  1. 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"
      }
    }
  }
}

See soixantecircuits/standard

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyStandardSettings-0.0.1.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

pyStandardSettings-0.0.1-py2-none-any.whl (7.4 kB view details)

Uploaded Python 2

File details

Details for the file pyStandardSettings-0.0.1.tar.gz.

File metadata

File hashes

Hashes for pyStandardSettings-0.0.1.tar.gz
Algorithm Hash digest
SHA256 ccc57de1bfc6a36b72734ed9137ed6d0818006d8ef1f76f13a0cb79da22d660b
MD5 2ad236b03532e98b3067a189f12f6e70
BLAKE2b-256 de7ba02a0de40d4bf55593d8b009e417617532ca917fc6638f51af46edbde800

See more details on using hashes here.

File details

Details for the file pyStandardSettings-0.0.1-py2-none-any.whl.

File metadata

File hashes

Hashes for pyStandardSettings-0.0.1-py2-none-any.whl
Algorithm Hash digest
SHA256 66001deb54038b49fc9650168bddc640888fa5372ba62fa417a554e7ac012ee9
MD5 d67d4f46268b1bce5ef5b9bc294857fd
BLAKE2b-256 3385c5c91362fd79709d63d1244b5c5a1ae763fb25d98d60e806970a448ac96b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page