Plugins

Otter-Grader supports grading plugins that allow users to override the default behavior of Otter by injecting an importable class that is able to alter the state of execution.

Using Plugins

Plugins can be configured in your otter_config.json file by listing the plugins as their fully-qualified importable names in the plugins key:

{
    "plugins": [
        "mypackage.MyOtterPlugin"
    ]
}

To supply configurations for the plugins, add the plugin to plugins as a dictionary mapping a single key, the plugin importable name, to a dictionary of configurations. For example, if we needed mypackage.MyOtterPlugin with configurations but mypackage.MyOtherOtterPlugin required none, the configurations for these plugins would look like

{
    "plugins": [
        {
            "mypackage.MyOtterPlugin": {
                "key1": "value1",
                "key2": "value2"
            }
        },
        "mypackage.MyOtherOtterPlugin"
    ]
}

Building Plugins

Plugins can be created as importable classes in packages that inherit from the otter.plugins.AbstractOtterPlugin class. For more information about creating plugins, see Creating Plugins.