skip to navigation
skip to content

octoconf 0.2.0

Multi-profile supported, flexible config library

octoconf

Multi-profile supported, flexible config library for Python 2 & 3.

Features

  • Allow multiple config profiles in one YAML file
  • Allow include multiple YAML files
  • Overridable profile selection from code for special use-cases (e.g. config for testing)
  • Inheritable config profiles, what makes profile merges by dictionaries. (the native YAML bookmarking is also available)
  • Can use variables in the config file

Installation

pip install octoconf

Config format

An octoconf config file is pure YAML file with some reserved keywords:

  • USED_CONFIG>: <node_name> in the file root

    you can specify the name of default config profile

  • <INCLUDE: <yml_path(s)> in the file root

    this octoconf file(s) will be included

  • <BASE: <node_name> in the 2nd level

    this will used for making (merge based) inheritance between profiles

The profile nodes should be on 1st level!

Usage

  • You can load config from string with loads():
    import octoconf
    
    config = octoconf.loads(yaml_string)
    print(config)
    
  • Or directly from StringIO (e.g. from file) with load():
    import octoconf
    
    with open('config.yml') as fd:
        config = octoconf.load(fd)
    print(config)
    

Please check the features docs for explain octoconf’s features.

Examples YAML files

USED_CONFIG>: UserConfig
<INCLUDE: vendor.defaults.yml


# This config overrides the production preset (from vendor.defaults.yml file)
UserConfig:
  <BASE: ProductionConfig

  App:
    TITLE: "Amazing Foobar"

  Flask:
    SQLALCHEMY_DATABASE_URI: "sqlite:///${SERVER}/app.sqlite"

For more examples, please check the examples directory.

Bugs

Bugs or suggestions? Visit the issue tracker.

 
File Type Py Version Uploaded on Size
octoconf-0.2.0-py2.py3-none-any.whl (md5) Python Wheel 2.7 2016-03-28 7KB
octoconf-0.2.0.tar.gz (md5) Source 2016-03-28 17KB