Level 14: custom data loader¶
Continuing from level 13, moban since v0.4.0 allows data loader extension. Due to the new capability overrides key word can override any data format:
overrides: yours.custom
....
or simple use .custom data instead of .yaml data.
However, you will need to provide a data loader for .custom yourselves.
Evaluation¶
Please change directory to docs/level-14-custom-data-loader directory.
In this tutorial, a custom data loader was provided to show case its dataloader extension. Here is the mobanfile:
configuration:
plugin_dir:
- custom-data-loader
template: a.template
targets:
- output: a.output
configuration: child.custom
- output: b.output
configuration: override_custom.yaml
custom-data-loader is a directory where custom.py lives. The protocol is that the custom loader register itself to a file extension and return a data dictionary confirming mobanfile schema. On call, moban will provide an absolute file name for your loader to work on.
Here is the code to do the registration:
@PluginInfo(constants.DATA_LOADER_EXTENSION, tags=["custom"])
In order to evaluate, you can simply type:
$ moban
$ cat a.output
========header============
world from child.cusom
shijie from parent.json
========footer============
$ cat b.output
========header============
world from override_custom.yaml
shijie from parent.custom
========footer============
Warning
Python 2 dictates the existence of __init__.py in the plugin directory. Otheriwse your plugin won’t load