Source code for mafw.models.processor_schema

#  Copyright 2026 European Union
#  Author: Bulgheroni Antonio (antonio.bulgheroni@ec.europa.eu)
#  SPDX-License-Identifier: EUPL-1.2
"""Schemas describing a processor.

These light-weight dataclasses capture the static metadata that is declared through
:class:`.Processor` definitions and can be consumed by tooling without instantiating
the processor itself.
"""

from __future__ import annotations

from dataclasses import dataclass
from typing import List, Optional

from mafw.models.filter_schema import FilterSchema
from mafw.models.parameter_schema import ParameterSchema

__all__ = ['ProcessorSchema']


[docs] @dataclass(frozen=True) class ProcessorSchema: """Static metadata describing a processor. :param parameters: List of parameter schemas. :param filter: Optional filter schema. """ parameters: List[ParameterSchema] filter: Optional[FilterSchema]
[docs] def get_parameter_names(self) -> list[str]: """Return the list of parameter names.""" return [p.name for p in self.parameters]
[docs] def get_parameter(self, parameter_name: str) -> ParameterSchema: """Return the parameter schema for the given parameter name.""" for p in self.parameters: if p.name == parameter_name: return p raise KeyError(f'Parameter {parameter_name} not found in schema.')