# Path: trtools/common.py



import trtools.tools.parallel as parallel
from trtools.common import missing
        data = self.job
        if self.mgr:
            data = self.mgr(self.job)
        result = (self.job, self.func(data))

        if self.post_func:
            result = self.post_func(result)
        return result

    def __repr__(self):
        return "Task(job={0}, mgr={1})".format(str(self.job), str(self.mgr))

class AggregateResultStore(object):
    """
        Default Aggregate store that basically acts like a dict.
    """
    def __init__(self):
        self.results = {}

    def __call__(self, job, data):
        self.results[job] = data

class DataProcessor(object):
    """
        The basic idea is we setup a DataProcessor which is a mgr and jobs
        In finance data that would be something like EOD and a list of symbols

        Note: mgr is really just a callable, so if your data/process step can be
        better expressed in one function, DataPanel supports not calling the mgr
    """

# Path: trtools/common.py



# Path: trtools/tools/processing.py
import trtools.tools.parallel as parallel
from trtools.common import missing

        data = self.job
        if self.mgr:
            data = self.mgr(self.job)
        result = (self.job, self.func(data))

        if self.post_func:
            result = self.post_func(result)
        return result

    def __repr__(self):
        return "Task(job={0}, mgr={1})".format(str(self.job), str(self.mgr))

class AggregateResultStore(object):
    """
        Default Aggregate store that basically acts like a dict.
    """
    def __init__(self):
        self.results = {}

    def __call__(self, job, data):
        self.results[job] = data

class DataProcessor(object):
    """
        The basic idea is we setup a DataProcessor which is a mgr and jobs
        In finance data that would be something like EOD and a list of symbols

        Note: mgr is really just a callable, so if your data/process step can be
        better expressed in one function, DataPanel supports not calling the mgr
    """

    def __init__(self, jobs=None, mgr=None, result_handler=missing):