Stupid simple Python configuration management
Project description
Marten
Stupid simple Python configuration management
Inspired by node config, if you’ve used it before, Marten will feel familiar with a couple of extras
Tested with Python 2.7 and 3.5
Install
> pip install marten
Usage
Marten provides several ways to load configurations, the simplest being the bundled config automatically created by Marten using files found in the .marten/ directory
> mkdir .marten > echo "EXAMPLE = True" > .marten/default.py > marten { "EXAMPLE": true }
The marten command outputs the fully parsed content of the bundled Marten config in JSON format
The bundled config is available in Python at marten.config, and can be accessed like a normal dictionary
> python >>> from marten import config >>> config['EXAMPLE'] True
Features
Swappable Configurations
Marten can easily swap between different configurations using the MARTEN_ENV environment variable
The MARTEN_ENV variable defaults to default
> marten { "EXAMPLE": true } > echo "SECOND_FILE = 'This is a different environment'" > .marten/two.py > echo "THIRD_FILE = 'This is a third environment'" > .marten/three.py > MARTEN_ENV=two marten { "SECOND_FILE": "This is a different environment" } > MARTEN_ENV=three marten { "THIRD_FILE": "This is a third environment" }
Full Python
The configuration files are not parsed, but are imported as Python modules
Only capitalized variables not starting with underscores are read into the configuration, allowing other variables to be used for logic and setup
> echo "a = 1; _B = 2; FULL_PYTHON = a + _B == 3" > .marten/python.py > MARTEN_ENV=python marten { "FULL_PYTHON": true }
Multiple File Formats
Marten is not limited to Python files
> echo '{"KEY": "value"}' > .marten/formats.json > MARTEN_ENV=formats marten { "KEY": "value" }
Current supported formats:
Python
JSON
YAML
Environment Variable Expansion
Environment variables in values with the format $VAR or ${VAR} are automatically expanded
Unset environment variables are unmodified
> echo '{"REPLACED1": "This ${ENV}", "REPLACED2": "Second $ENV", "IGNORED": "${MISSING}"}' > .marten/environ.json > MARTEN_ENV=environ ENV=value marten { "IGNORED": "${MISSING}", "REPLACED1": "This value", "REPLACED2": "Second value" }
Merge Multiple Files
Since Marten operates on filename and extension separately, two files with the same name but different extensions are merged together in the order they are loaded
> echo 'PYTHON = True' > .marten/merge.py > echo '{"JSON": true}' > .marten/merge.json > echo 'YAML: true' > .marten/merge.yaml > MARTEN_ENV=merge marten { "JSON": true, "PYTHON": true, "YAML": true }
License
Available under the MIT license
See LICENSE for more details
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 marten-0.5.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aadcdc5579c5546dafebc4503a6b02e839a57a73d63e7b22d5cceffc1e7bd787 |
|
MD5 | ec02d3ddefbfdc3432bf78c2fbabd55b |
|
BLAKE2b-256 | 66d0cf1186d79adaa3d8d300c9b75574d71557869d6cf83aa368911694422aa2 |