Coverage for src / mafw / models / processor_schema.py: 100%
17 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-30 16:10 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-30 16:10 +0000
1# Copyright 2026 European Union
2# Author: Bulgheroni Antonio (antonio.bulgheroni@ec.europa.eu)
3# SPDX-License-Identifier: EUPL-1.2
4"""Schemas describing a processor.
6These light-weight dataclasses capture the static metadata that is declared through
7:class:`.Processor` definitions and can be consumed by tooling without instantiating
8the processor itself.
9"""
11from __future__ import annotations
13from dataclasses import dataclass
14from typing import List, Optional
16from mafw.models.filter_schema import FilterSchema
17from mafw.models.parameter_schema import ParameterSchema
19__all__ = ['ProcessorSchema']
22@dataclass(frozen=True)
23class ProcessorSchema:
24 """Static metadata describing a processor.
26 :param parameters: List of parameter schemas.
27 :param filter: Optional filter schema.
28 """
30 parameters: List[ParameterSchema]
31 filter: Optional[FilterSchema]
33 def get_parameter_names(self) -> list[str]:
34 """Return the list of parameter names."""
35 return [p.name for p in self.parameters]
37 def get_parameter(self, parameter_name: str) -> ParameterSchema:
38 """Return the parameter schema for the given parameter name."""
39 for p in self.parameters:
40 if p.name == parameter_name:
41 return p
42 raise KeyError(f'Parameter {parameter_name} not found in schema.')