class Diagnostic(object): @staticmethod def register(cls, alias): try: Diagnostic._diag_list[alias] = cls except AttributeError: Diagnostic._diag_list = dict() Diagnostic._diag_list[alias] = cls @staticmethod def get_diagnostic(name): """ Return the class for a diagnostic given its name :param name: diagnostic alias :type name: str :return: the selected Diagnostic class, None if name can not be found :rtype: Diagnostic """ try: if name in Diagnostic._diag_list.keys(): return Diagnostic._diag_list[name] except AttributeError: pass return None def __init__(self, data_manager): self.data_manager = data_manager self.required_vars = [] self.generated_vars = [] self.can_run_multiple_instances = True def compute(self): pass @classmethod def generate_jobs(cls, data_manager, startdates, members, chunks, options): raise Exception("Class must override generate_jobs method")