Getting started (simple example)

To get started with Configcrunch you need to create a subclass of YamlConfigDocument.

This class will represent one type of document and can be used to load a YAML file based on it’s schema. You need to specify a header and a schema for the document. In this simple example we’ll use the header example and a schema that validates all documents.

from schema import Schema
from configcrunch import YamlConfigDocument

class Example(YamlConfigDocument):
    @classmethod
    def header(cls) -> str:
        return "example"

    @classmethod
    def schema(cls) -> Schema:
        return Schema(any)

    @classmethod
    def subdocuments(cls):
        return []

Warning

Your class can not have an __init__ method. It will not be called.

This class can then be used to load all YAML documents with the header example:

# fixtures/simple_example.yml
example:
  this: document can contain anything
  int: 12
  map:
    key: value
  list:
    - 1
    - two

To load the document, use your created class:

document = Example.from_yaml('fixtures/simple_example.yml')
document.freeze()

After freezing the document, the document object can then be used like a Python dict to get values in the document. You can also use the document.doc field to directly access the dictionary that represents the document.

>>> print(document["this"])
document can contain anything
>>> print(document["list"][0])
1
>>> print(document.doc["this"])
document can contain anything
>>> print(document["this"])
document can contain anything

To get a full dict representation of the document call to_dict(). The dict will also contain the document header. This can be used with packages like pyyaml, to convert the document back into a YAML file.

>>> print(document.to_dict()["example"]["map"]["key"])
value