Source code for conflowgen.api.storage_requirement_distribution_manager

import typing

from conflowgen.data_summaries.data_summaries_cache import DataSummariesCache
from conflowgen.api import AbstractDistributionManager
from conflowgen.domain_models.data_types.storage_requirement import StorageRequirement
from conflowgen.domain_models.data_types.container_length import ContainerLength
from conflowgen.domain_models.distribution_repositories.storage_requirement_distribution_repository import \
    StorageRequirementDistributionRepository


[docs] class StorageRequirementDistributionManager(AbstractDistributionManager): """ This is the interface to set and get the storage requirement distribution. It determines how many containers are selected to have a certain :class:`.StorageRequirement`. """ def __init__(self): self.storage_requirement_repository = StorageRequirementDistributionRepository()
[docs] def get_storage_requirement_distribution( self ) -> typing.Dict[ContainerLength, typing.Dict[StorageRequirement, float]]: """ Returns: The distribution of storage requirements based on the length of the container. """ return self.storage_requirement_repository.get_distribution()
[docs] def set_storage_requirement_distribution( self, storage_requirements: typing.Dict[ContainerLength, typing.Dict[StorageRequirement, float]] ) -> None: """ Set the assumed global distribution of container storage requirements. This is applied to all containers passing through the terminal. Args: storage_requirements: The distribution of storage requirements depending on the container length. """ sanitized_distribution = self._normalize_and_validate_distribution_with_one_dependent_variable( storage_requirements, ContainerLength, StorageRequirement, values_are_frequencies=True ) self.storage_requirement_repository.set_distribution(sanitized_distribution) DataSummariesCache.reset_cache()