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

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. 

5 

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""" 

10 

11from __future__ import annotations 

12 

13from dataclasses import dataclass 

14from typing import List, Optional 

15 

16from mafw.models.filter_schema import FilterSchema 

17from mafw.models.parameter_schema import ParameterSchema 

18 

19__all__ = ['ProcessorSchema'] 

20 

21 

22@dataclass(frozen=True) 

23class ProcessorSchema: 

24 """Static metadata describing a processor. 

25 

26 :param parameters: List of parameter schemas. 

27 :param filter: Optional filter schema. 

28 """ 

29 

30 parameters: List[ParameterSchema] 

31 filter: Optional[FilterSchema] 

32 

33 def get_parameter_names(self) -> list[str]: 

34 """Return the list of parameter names.""" 

35 return [p.name for p in self.parameters] 

36 

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.')