From 4ca2dc26a8cd34647fbc5a2577907c6b6ac3dcd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Miguel=20Horcas?= Date: Thu, 9 May 2024 17:58:38 +0200 Subject: [PATCH] Fix sampling and product interface --- flamapy/core/operations/products.py | 4 ++-- flamapy/core/operations/sampling.py | 28 ++++++++++++++++++---------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/flamapy/core/operations/products.py b/flamapy/core/operations/products.py index 10e362d..ba98e18 100644 --- a/flamapy/core/operations/products.py +++ b/flamapy/core/operations/products.py @@ -1,7 +1,7 @@ from abc import abstractmethod -from typing import Any from flamapy.core.operations import Operation +from flamapy.metamodels.configuration_metamodel.models.configuration import Configuration class Products(Operation): @@ -11,5 +11,5 @@ def __init__(self) -> None: pass @abstractmethod - def get_products(self) -> list[Any]: + def get_products(self) -> list[Configuration]: pass diff --git a/flamapy/core/operations/sampling.py b/flamapy/core/operations/sampling.py index ddcf5b0..b391b6b 100644 --- a/flamapy/core/operations/sampling.py +++ b/flamapy/core/operations/sampling.py @@ -1,5 +1,4 @@ from abc import abstractmethod -from typing import Optional from flamapy.metamodels.configuration_metamodel.models.configuration import Configuration from flamapy.core.operations import Operation @@ -11,12 +10,21 @@ class Sampling(Operation): """ @abstractmethod - def sample(self, size: int, with_replacement: bool = False, - partial_configuration: Optional[Configuration] = None) -> list[Configuration]: - """Return a sample of configurations. - - Keyword arguments: - size -- number of configurations of the sample. - with_replacement -- allow repeated configurations in the sample (default False). - partial_configuration -- from which the sample is built (default empty configuration). - """ + def __init__(self) -> None: + pass + + @abstractmethod + def set_sample_size(self, sample_size: int) -> None: + """Number of configurations of the sample.""" + + @abstractmethod + def set_with_replacement(self, with_replacement: bool) -> None: + "Allow repeated configurations in the sample (default False)." + + @abstractmethod + def set_partial_configuration(self, partial_configuration: Configuration) -> None: + "From which the sample is built (default empty configuration)." + + @abstractmethod + def get_sample(self) -> list[Configuration]: + """Return a sample of configurations."""