Skip to main content

Multi-file Configurations for Python Applications

Project description

Package version Package license Python versions TravisCI status Code coverage

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


Download files

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

Source Distribution

granula-2018.2.8.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

granula-2018.2.8-py3-none-any.whl (26.5 kB view details)

Uploaded Python 3

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

Hashes for granula-2018.2.8.tar.gz
Algorithm Hash digest
SHA256 195e49368934710b1ac9b62df0d72504d90ff0915eb32e35171e70ff67aeacc1
MD5 bd8b9055dd9e5511a6d218fbfdea8dfd
BLAKE2b-256 9f112216c2e4062e907d009d5316a524d5a3d5f1c2ead2d490fb6e02d66a3ed9

See more details on using hashes here.

File details

Details for the file granula-2018.2.8-py3-none-any.whl.

File metadata

File hashes

Hashes for granula-2018.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 0414111c511ddb30fecb1cdc458862f73075dda3591821a32d62c5ae0c928ac4
MD5 5f430c3a1c32f3e33768f6eaf339506a
BLAKE2b-256 edb698a44a2c6bcde90d4255e2b7881b92b21c2a3adc2ee9902dc1d3bed33e44

See more details on using hashes here.

Supported by

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