from abc import (
    ABCMeta,
)

from function_tools.results import (
    BaseRunnableResult,
)


class WebEduRunnerResult(BaseRunnableResult, metaclass=ABCMeta):
    """Базовый класс результатов работы исполнителей функций продуктов Образования.

    Предоставляет базовую структуру для представления результатов выполнения
    исполнителей (runners) в контексте образовательных продуктов. Наследует
    функциональность BaseRunnableResult и адаптирует её для специфики
    образовательной системы.

    Основные возможности:
    - Хранение результатов выполнения исполнителей
    - Доступ к данным результата и метаданным
    - Поддержка цепочки обработки результатов
    - Интеграция с системой логирования

    Note:
        - Является абстрактным классом
        - Требует реализации в конкретных классах результатов
        - Поддерживает стандартные операции с результатами
        - Интегрируется с системой обработки ошибок
        - Обеспечивает единообразную обработку результатов

    See Also:
        - BaseRunnableResult: базовый класс для результатов исполнителей
        - WebEduRunner: исполнитель функций образовательных продуктов
        - WebEduFunctionResult: результаты функций образовательных продуктов
    """


class WebEduFunctionResult(BaseRunnableResult, metaclass=ABCMeta):
    """Базовый класс результатов функций продуктов Образования.

    Предоставляет базовую структуру для представления результатов выполнения
    функций в контексте образовательных продуктов. Наследует функциональность
    BaseRunnableResult и адаптирует её для специфики бизнес-функций
    образовательной системы.

    Основные возможности:
    - Хранение результатов выполнения функций
    - Структурированное представление данных
    - Поддержка метаданных и контекста выполнения
    - Валидация результатов бизнес-функций
    - Интеграция с системой отчетности

    Note:
        - Является абстрактным классом
        - Требует реализации в конкретных классах результатов
        - Поддерживает различные типы данных результатов
        - Учитывает бизнес-правила образовательной системы
        - Интегрируется с системой аудита
        - Обеспечивает прослеживаемость выполнения функций

    See Also:
        - BaseRunnableResult: базовый класс для результатов
        - WebEduRunnerResult: результаты исполнителей
        - WebEduResultPresenter: презентер результатов
    """
