Yaml
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:
- pyYaml
Cement 3.0.8+:
pip install cement[yaml]
Applications using Cement <3.0.8 should continue to include
pyYaml
in their dependencies.This extension does not support any application level configuration settings or meta options.
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
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
.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