Skip to content

strategy

dandy.processor.strategy

BaseProcessorsStrategy

Bases: ABC

Source code in dandy/processor/strategy.py
def __init__(
        self,
        processors: Sequence[Type[BaseProcessor]]
):
    self.processors = processors

    if self._processor_controller is None:
        raise DandyCriticalException(f'{self.__name__}._processor_controller is not set')

    for processor_class in self.processors:
        if not issubclass(processor_class, BaseProcessor):
            raise DandyCriticalException(
                'All resources must be sub classed from the "BaseProcessor" sub class.'
            )

        if processor_class.description is None:
            raise DandyCriticalException(
                f'{processor_class.__name__} did not have the class attribute "description". All "processors" must have a "description" class attribute to be used with a "ProcessorStrategy".'
            )

processors = processors instance-attribute

as_dict

Source code in dandy/processor/strategy.py
def as_dict(self) -> dict:
    processor_strategy_dict = {}

    for index, processor in enumerate(self.processors):
        processor_strategy_dict[index] = processor.description

    return processor_strategy_dict

get_processor_from_key

Source code in dandy/processor/strategy.py
def get_processor_from_key(self, key: int) -> BaseProcessorController:
    return self._processor_controller(self.processors[int(key)])

get_processor_module_and_qualname_from_key

Source code in dandy/processor/strategy.py
def get_processor_module_and_qualname_from_key(self, key: int) -> str:
    processor = self.get_processor_from_key(key).processor
    return f'{processor.__module__}.{processor.__qualname__}'