# standard imports import logging logg = logging.getLogger(__name__) class Processor: def __init__(self, metadata=None, outputs_writer=None, extensions=[]): self.token_address = None self.metadata = metadata self.extensions = extensions self.outputs = [] self.__outputs_writer = outputs_writer def writer(self): return self.__outputs_writer def can_process(self): return self.token_address != None def process_metadata(self, writer=None): if not self.can_process(): raise RuntimeError('incomplete processing state for metadata') def get_outputs(self): outputs = [] for ext in self.extensions: outputs += ext.outputs outputs += self.outputs return outputs def process(self): tasks = [ 'metadata', ] for ext in self.extensions: token_address = ext.process() for task in tasks: a = getattr(self, task) if a == None: logg.debug('skipping missing task receiver "{}"'.format(task)) continue v = a.process(token_address=token_address, writer=self.__outputs_writer) self.outputs.append(v)