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
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
from cement import App
class MyApp(App):
class Meta:
label = 'myapp'
extensions = ['yaml']
config_handler = 'yaml'
config_file_suffix = '.yml'---
myapp:
foo: barOutput 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.
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')Foo: {{ foo }}$ python myapp.py
Foo: bar
$ python myapp.py -o yaml
{foo: bar}Last updated