Plugins

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.