def itercommands(self, channel=None):
        # Loop through each plugin we have loaded
        for name, plugin in self.plugins.items():
            if channel is not None and channel in plugin['blacklist']:
                continue

            # Loop through each of the plugins' commands (these are actually
            # class methods with attributes assigned to them, so they are all
            # callable) and yield the command
            for command in plugin['commands']:
                yield command
Process a prepared payment
dataset/ETHPy150Open JohnMaguire/Cardinal/cardinal/plugins.py/PluginManager.itercommands--crossover with--dataset/ETHPy150Open dokterbob/satchmo/satchmo/apps/payment/views/confirm.py/ConfirmController.process