Source code for app.util.models.combined

# SPDX-License-Identifier: GPLv3-or-later
# Copyright © 2025 pygaindalf Rui Pinheiro

from typing import ClassVar

from pydantic import Field

from ..mixins import LoggableMixin, NamedMixinMinimal
from .hierarchical import HierarchicalModel
from .hierarchical_root import HierarchicalRootModel
from .single_initialization import SingleInitializationModel


# Loggable + Single Initialization
[docs] class LoggableModel(LoggableMixin, SingleInitializationModel): pass
# Hierarchical + Named
[docs] class HierarchicalNamedModel(HierarchicalModel, NamedMixinMinimal): PROPAGATE_INSTANCE_NAME_FROM_PARENT: ClassVar[bool] = True PROPAGATE_INSTANCE_NAME_TO_CHILDREN: ClassVar[bool] = True instance_name: str | None = Field(default=None, exclude=True, min_length=1, description="Name of the instance.")
[docs] class HierarchicalRootNamedModel(HierarchicalRootModel, NamedMixinMinimal): PROPAGATE_INSTANCE_NAME_FROM_PARENT: ClassVar[bool] = True PROPAGATE_INSTANCE_NAME_TO_CHILDREN: ClassVar[bool] = True instance_name: str | None = Field(default=None, exclude=True, min_length=1, description="Name of the instance.")
# Loggable + Hierarchical
[docs] class LoggableHierarchicalRootModel(LoggableMixin, HierarchicalRootModel): pass
[docs] class LoggableHierarchicalModel(LoggableMixin, HierarchicalModel): pass
# Loggable + Hierarchical + Named
[docs] class LoggableHierarchicalRootNamedModel(LoggableMixin, HierarchicalRootNamedModel): pass
[docs] class LoggableHierarchicalNamedModel(LoggableMixin, HierarchicalNamedModel): pass