def METHOD_NAME(self, cb_name):
    '''
    "Define" a PPP-style function in this plugin. Note that there is no type
    information because this is Python. Run via .ppp[cb_name].run(...)
    '''
    plugin_name = self.__class__.__name__
    if cb_name in self.ppp_cbs:
        raise ValueError(f"PPP function {cb_name} is being redefined in {plugin_name}")
    # Add two callbacks into our PPP namesapce: fn_add and fn_run
    this_ppp_cb = _PPP_CB()
    self.ppp.add(self.__class__.__name__, "ppp_reg_cb_" + cb_name, this_ppp_cb.add_callback)
    self.ppp.add(self.__class__.__name__, "ppp_run_cb_" + cb_name, this_ppp_cb.run)
    # Make sure we have a helper self.ppp[class].ppp_reg_cb which just calls
    # the ppp_reg_[cb_name] we just saved
    try:
        getattr(getattr(self.ppp, self.__class__.__name__), "ppp_reg_cb")
    except AttributeError:
        def _reg_cb(target_ppp, func):
            getattr(getattr(self.ppp,
                self.__class__.__name__), "ppp_reg_cb_" + target_ppp)(func)
        self.ppp.add(self.__class__.__name__, "ppp_reg_cb", _reg_cb)