Plugin ExampleΒΆ

import openpaperwork_core

class Plugin(openpaperwork_core.PluginBase):
    # callbacks will always be run before those of priority <= 21
    # but after those of priority >= 23
    PRIORITY = 22

    def __init__(self):
        # do something, but the least possible
        # cannot rely on any dependencies here.

    def get_interfaces(self):
       # indicates which interfaces this plugin satisfies.
       # note that this is only used for controlling that dependencies are
       # satisfied (see get_deps()). There are no checks at all to ensure
       # that the methods corresponding to each interface are actually
       # implemented.
       return ['interface_name_toto', 'interface_name_tutu']

    def get_deps(self):
        # specify that we are looking for plugins implementing the
        # specified interface(s).
        # Provide also some default plugins to load if no plugins provide
        # the requested interface yet.
        # Note that plugins may be loaded in any order. Dependencies may
        # not be satisfied yet when they are loaded.
        # When initializing plugins, the core will make sure that
        # all dependencies are satisfied, loaded and initialized before
        # calling the method `init()` of this plugin.
        return [
                'interface': 'interface_name_a',
                'defaults': [
               'interface': 'inteface_name_b',
                'defaults': [

    def init(self, core):
        # all the dependencies have loaded and initialized.
        # we can safely rely on them here.

    def some_method_a(self, arg_a):
        # do something
        self.core.call_all("some_method_of_other_plugins", "arg_a", 22)