Source code for mafw.steering_gui.models.pipeline

#  Copyright 2026 European Union
#  Author: Bulgheroni Antonio (antonio.bulgheroni@ec.europa.eu)
#  SPDX-License-Identifier: EUPL-1.2
"""UI-only pipeline structures used to render editable processor hierarchies.

:Author: Bulgheroni Antonio
:Description: Lightweight in-memory objects that mirror the processor/group layout for the GUI.
"""

from __future__ import annotations

from dataclasses import dataclass, field

from mafw.steering.models import GroupConfig, ProcessorConfig


[docs] @dataclass class PipelineItem: """UI wrapper around a processor or group configuration. :param config: Domain configuration backing the item. :param parent: Parent pipeline item (None when top-level). :param children: Ordered list of child items. """ config: ProcessorConfig | GroupConfig parent: PipelineItem | None = None children: list['PipelineItem'] = field(default_factory=list)
[docs] def is_group(self) -> bool: """Return True if this item wraps a group configuration.""" return isinstance(self.config, GroupConfig)
[docs] def name(self) -> str: """Return the replica-aware processor name or group name.""" return self.config.name
[docs] @dataclass class ProcessorPipeline: """Container for the current processor pipeline tree. :param items: Top-level pipeline items in execution order. """ items: list[PipelineItem] = field(default_factory=list)