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
Hashes for granula-2018.2.8-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0414111c511ddb30fecb1cdc458862f73075dda3591821a32d62c5ae0c928ac4 |
|
MD5 | 5f430c3a1c32f3e33768f6eaf339506a |
|
BLAKE2b-256 | edb698a44a2c6bcde90d4255e2b7881b92b21c2a3adc2ee9902dc1d3bed33e44 |