stable/3.0
Search
K
Links

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
Cement 3.0.8+:
pip install cement[yaml]
Applications using Cement <3.0.8 should continue to include pyYaml in their dependencies.

Configuration

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

Usage

Config Handler

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

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
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')
templates/example.m
Foo: {{ foo }}
$ python myapp.py
Foo: bar
$ python myapp.py -o yaml
{foo: bar}
Last modified 1yr ago