Yaml

Introduction

The Yaml Extension includes the YamlOutputHandler to render output in pure Yaml, as well as the YamlConfigHandler that allows applications to use Yaml configuration files as a drop-in replacement of the default ConfigParserConfigHandler.

Documentation References:

API References:

Requirements

  • pyYaml (pip install pyYaml)

Configuration

This extension does not support any application level configuration settings or meta options.

Usage

Config Handler

Example: Using Yaml Config Handler
myapp.py
~/.myapp.yml
from cement import App
class MyApp(App):
class Meta:
label = 'myapp'
extensions = ['yaml']
config_handler = 'yaml'
config_file_suffix = '.yml'

Output Handler

In general, you likely would not set output_handler to yaml, but rather another type of output handler that displays readable output to the end-user (ex: Mustache, Jinja2, or Tabulate). However, Cement supports overriding handlers via command line options if the Handler.Meta.overridable option is set. For example, -o yaml will trigger the framework to use the yaml output handler, overriding the default set in App.Meta.output_handler.

See the documentation on Overriding Handlers via Command Line.

Example: Using Yaml Output Handler
cli
myapp.py
templates/example.m
from cement import App, init_defaults
META = init_defaults('output.yaml')
META['output.yaml']['overridable'] = True
class MyApp(App):
class Meta:
label = 'myapp'
extensions = ['yaml', 'mustache']
meta_defaults = META
output_handler = 'mustache'
template_dir = './templates'
with MyApp() as app:
app.run()
data = {'foo': 'bar'}
app.render(data, 'example.m')
$ python myapp.py
Foo: bar
$ python myapp.py -o yaml
{foo: bar}