Skip to content

Commit

Permalink
Add CPDResult as abstract result container super class
Browse files Browse the repository at this point in the history
  • Loading branch information
Domi020 committed Mar 12, 2024
1 parent 9c53c5b commit 383f2d7
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 5 deletions.
4 changes: 3 additions & 1 deletion src/cpdbench/control/CPDFullResult.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
from cpdbench.control.CPDDatasetResult import CPDDatasetResult
import datetime

from cpdbench.control.CPDResult import CPDResult

class CPDFullResult: #TODO Oberklasse für Results

class CPDFullResult(CPDResult):
"""Container for a complete run result with all datasets"""

def __init__(self, datasets: list[str], algorithms: list[str], metrics: list[str]):
Expand Down
10 changes: 10 additions & 0 deletions src/cpdbench/control/CPDResult.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from abc import ABC, abstractmethod


class CPDResult(ABC):
"""Abstract class for result containers for bench runs"""

@abstractmethod
def get_result_as_dict(self) -> dict:
"""Returns the result of the bench run as python dict"""
pass
4 changes: 3 additions & 1 deletion src/cpdbench/control/CPDValidationResult.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import datetime
import traceback

from cpdbench.control.CPDResult import CPDResult

class CPDValidationResult:

class CPDValidationResult(CPDResult):
"""Container for a validation run result."""

def __init__(self, errors: list, datasets: list[str], algorithms: list[str], metrics: list[str]):
Expand Down
3 changes: 2 additions & 1 deletion src/cpdbench/control/ExecutionController.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from abc import ABC, abstractmethod

from cpdbench.control.CPDResult import CPDResult
from cpdbench.exception.UserParameterDoesNotExistException import UserParameterDoesNotExistException
from cpdbench.exception.ValidationException import ValidationException
from cpdbench.task.Task import TaskType
Expand All @@ -16,7 +17,7 @@ def __init__(self, logger):
self._logger = logger

@abstractmethod
def execute_run(self, methods: dict) -> any:
def execute_run(self, methods: dict) -> CPDResult:
"""Executes the run implemented by this class.
:param methods: dictionary with all given input functions, grouped by function type.
:return: A result object which can be handed to the user
Expand Down
3 changes: 2 additions & 1 deletion src/cpdbench/control/TestrunController.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from concurrent.futures import ProcessPoolExecutor

from cpdbench.control.CPDFullResult import CPDFullResult
from cpdbench.control.CPDResult import CPDResult
from cpdbench.control.DatasetExecutor import DatasetExecutor
from cpdbench.control.ExecutionController import ExecutionController
from cpdbench.utils import Logger, BenchConfig
Expand Down Expand Up @@ -43,7 +44,7 @@ def __init__(self):
self._logger = Logger.get_application_logger()
super().__init__(self._logger)

def execute_run(self, methods: dict) -> any:
def execute_run(self, methods: dict) -> CPDResult:
self._logger.info('Creating tasks...')
tasks = self._create_tasks(methods)
self._logger.info(f"{len(tasks['datasets']) + len(tasks['algorithms']) + len(tasks['metrics'])} tasks created")
Expand Down
3 changes: 2 additions & 1 deletion src/cpdbench/control/ValidationRunController.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from cpdbench.control.CPDResult import CPDResult
from cpdbench.control.CPDValidationResult import CPDValidationResult
from cpdbench.control.ExecutionController import ExecutionController
from cpdbench.exception.ValidationException import DatasetValidationException, AlgorithmValidationException, \
Expand All @@ -15,7 +16,7 @@ def __init__(self):
self._logger = Logger.get_application_logger()
super().__init__(self._logger)

def execute_run(self, methods: dict) -> any:
def execute_run(self, methods: dict) -> CPDResult:
self._logger.info('Creating tasks...')
tasks = self._create_tasks(methods)
self._logger.info(f"{len(tasks['datasets']) + len(tasks['algorithms']) + len(tasks['metrics'])} tasks created")
Expand Down

0 comments on commit 383f2d7

Please sign in to comment.