Multi-file Configurations for Python Applications
Project description
Granula is a tool that aims to help maintain multi-file configurations for Python applications (with environments and more).
Installation
$ pipenv install granula
or just use pip (though you should definitely take a look at pipenv)
🌈🌈🌈
Features
Gathers configurations from multiple files or directories.
Supports widely used file formats (YAML, JSON).
Offers a small DSL that allows to load environment variables into config files.
Manages different configuration environments (e.g. testing, production).
Usage
Create a config object from a directory with multiple configuration files:
>> import granula
>> config = granula.Config.from_directory('examples/multi-file/settings')
>> config
Config({'name': 'Darth Vader', ...})
>> config.name
'Darth Vader'
>> config.family
Config({'fiancee': 'Padme Amidala', 'children': ['Luke Skywalker', 'Leia Organa']})
Files are parsed in lexicographic order. The values specified in the preceding files can be overwritten in the succeeding files.
Do the same in a recursive manner:
>> config = granula.Config.from_directory(..., recursive=True)
Match YAML files using filename pattern:
>> config = granula.Config.from_directory(..., pattern=granula.Extension('yaml'))
Do the same with a shell-style wildcard pattern:
>> config = granula.Config.from_directory(..., pattern=granula.Wildcard('*.yaml'))
Match configuration files for different environments:
>> directory = 'examples/environments/settings'
>> testing = granula.Config.from_directory(directory, pattern=granula.Environment('testing'))
>> production = granula.Config.from_directory(directory, pattern=granula.Environment('production'))
Combine patterns in arbitrary ways:
>> pattern = granula.All(granula.Environment('testing'), granula.Extension('yaml'))
>> config = granula.Config.from_directory(..., pattern=pattern)
Load environment variables into config files using a DSL, for example, in YAML:
variable: ${env VARIABLE}
Do the same with a default value:
variable: ${env VARIABLE | val 10}
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 granula-2018.2.8.tar.gz
.
File metadata
- Download URL: granula-2018.2.8.tar.gz
- Upload date:
- Size: 16.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 195e49368934710b1ac9b62df0d72504d90ff0915eb32e35171e70ff67aeacc1 |
|
MD5 | bd8b9055dd9e5511a6d218fbfdea8dfd |
|
BLAKE2b-256 | 9f112216c2e4062e907d009d5316a524d5a3d5f1c2ead2d490fb6e02d66a3ed9 |
File details
Details for the file granula-2018.2.8-py3-none-any.whl
.
File metadata
- Download URL: granula-2018.2.8-py3-none-any.whl
- Upload date:
- Size: 26.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0414111c511ddb30fecb1cdc458862f73075dda3591821a32d62c5ae0c928ac4 |
|
MD5 | 5f430c3a1c32f3e33768f6eaf339506a |
|
BLAKE2b-256 | edb698a44a2c6bcde90d4255e2b7881b92b21c2a3adc2ee9902dc1d3bed33e44 |