# Path: platypus/core.py
# class PlatypusError(Exception):
#     pass
# 
# Path: platypus/evaluator.py
# class Job(object):
#     
#     __metaclass__ = ABCMeta
#     
#     def __init__(self):
#         super(Job, self).__init__()
#         
#     @abstractmethod
#     def run(self):
#         raise NotImplementedError("method not implemented")
# 
# class MapEvaluator(Evaluator):
#     
#     def __init__(self, map_func=map):
#         super(MapEvaluator, self).__init__()
#         self.map_func = map_func
#     
#     def evaluate_all(self, jobs, **kwargs):
#         log_frequency = kwargs.get("log_frequency", None)
#         
#         if log_frequency is None:
#             return list(self.map_func(run_job, jobs))
#         else:
#             result = []
#             job_name = kwargs.get("job_name", "Batch Jobs")
#             start_time = time.time()
#             
#             for chunk in _chunks(jobs, log_frequency):
#                 result.extend(self.map_func(run_job, chunk))
#                 LOGGER.log(logging.INFO,
#                            "%s running; Jobs Complete: %d, Elapsed Time: %s",
#                            job_name,
#                            len(result),
#                            datetime.timedelta(seconds=time.time()-start_time))
#                 
#             return result


import six
import time
import datetime
import functools
from collections import OrderedDict
from .core import PlatypusError
from .evaluator import Job, MapEvaluator
    from sets import Set as set
        from .config import PlatypusConfig
        from .config import PlatypusConfig
            algorithm = algorithms[i]
            algorithm_name = algorithm.__name__
            kwargs = {}
                
        if algorithm_name in existing_algorithms:
            raise PlatypusError("only one algorithm with name " + algorithm_name + " can be run")
        else:
            existing_algorithms.add(algorithm_name)

        for j in range(len(problems)):
            if isinstance(problems[j], tuple):
                problem = problems[j][0]
                
                if isinstance(problem, type):
                    problem = problem()
                
                if len(problems[j]) >= 2:
                    problem_name = problems[j][1]
                else:
                    problem_name = problem.__class__.__name__
            else:
                problem = problems[j]
                
                if isinstance(problem, type):
                    problem = problem()
                
                problem_name = problem.__class__.__name__
                    
            if i == 0:
                if problem_name in existing_problems:

# Path: platypus/core.py
# class PlatypusError(Exception):
#     pass
# 
# Path: platypus/evaluator.py
# class Job(object):
#     
#     __metaclass__ = ABCMeta
#     
#     def __init__(self):
#         super(Job, self).__init__()
#         
#     @abstractmethod
#     def run(self):
#         raise NotImplementedError("method not implemented")
# 
# class MapEvaluator(Evaluator):
#     
#     def __init__(self, map_func=map):
#         super(MapEvaluator, self).__init__()
#         self.map_func = map_func
#     
#     def evaluate_all(self, jobs, **kwargs):
#         log_frequency = kwargs.get("log_frequency", None)
#         
#         if log_frequency is None:
#             return list(self.map_func(run_job, jobs))
#         else:
#             result = []
#             job_name = kwargs.get("job_name", "Batch Jobs")
#             start_time = time.time()
#             
#             for chunk in _chunks(jobs, log_frequency):
#                 result.extend(self.map_func(run_job, chunk))
#                 LOGGER.log(logging.INFO,
#                            "%s running; Jobs Complete: %d, Elapsed Time: %s",
#                            job_name,
#                            len(result),
#                            datetime.timedelta(seconds=time.time()-start_time))
#                 
#             return result


# Path: platypus/experimenter.py
import six
import time
import datetime
import functools
from collections import OrderedDict
from .core import PlatypusError
from .evaluator import Job, MapEvaluator
    from sets import Set as set
        from .config import PlatypusConfig
        from .config import PlatypusConfig

            algorithm = algorithms[i]
            algorithm_name = algorithm.__name__
            kwargs = {}
                
        if algorithm_name in existing_algorithms:
            raise PlatypusError("only one algorithm with name " + algorithm_name + " can be run")
        else:
            existing_algorithms.add(algorithm_name)

        for j in range(len(problems)):
            if isinstance(problems[j], tuple):
                problem = problems[j][0]
                
                if isinstance(problem, type):
                    problem = problem()
                
                if len(problems[j]) >= 2:
                    problem_name = problems[j][1]
                else:
                    problem_name = problem.__class__.__name__
            else:
                problem = problems[j]
                
                if isinstance(problem, type):
                    problem = problem()
                
                problem_name = problem.__class__.__name__
                    
            if i == 0:
                if problem_name in existing_problems:

                    raise PlatypusError("only one problem with name " + problem_name + " can be run")