aboutsummaryrefslogtreecommitdiff
path: root/src/mlia/devices/cortexa/reporters.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mlia/devices/cortexa/reporters.py')
-rw-r--r--src/mlia/devices/cortexa/reporters.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/mlia/devices/cortexa/reporters.py b/src/mlia/devices/cortexa/reporters.py
new file mode 100644
index 0000000..076b9ca
--- /dev/null
+++ b/src/mlia/devices/cortexa/reporters.py
@@ -0,0 +1,42 @@
+# SPDX-FileCopyrightText: Copyright 2022, Arm Limited and/or its affiliates.
+# SPDX-License-Identifier: Apache-2.0
+"""Reports module."""
+from __future__ import annotations
+
+from typing import Any
+from typing import Callable
+
+from mlia.core.advice_generation import Advice
+from mlia.core.reporting import Report
+from mlia.devices.cortexa.config import CortexAConfiguration
+from mlia.devices.cortexa.operators import Operator
+from mlia.utils.types import is_list_of
+
+
+def report_device(device: CortexAConfiguration) -> Report:
+ """Generate report for the device."""
+ raise NotImplementedError()
+
+
+def report_advice(advice: list[Advice]) -> Report:
+ """Generate report for the advice."""
+ raise NotImplementedError()
+
+
+def report_cortex_a_operators(operators: list[Operator]) -> Report:
+ """Generate report for the operators."""
+ raise NotImplementedError()
+
+
+def cortex_a_formatters(data: Any) -> Callable[[Any], Report]:
+ """Find appropriate formatter for the provided data."""
+ if is_list_of(data, Advice):
+ return report_advice
+
+ if isinstance(data, CortexAConfiguration):
+ return report_device
+
+ if is_list_of(data, Operator):
+ return report_cortex_a_operators
+
+ raise Exception(f"Unable to find appropriate formatter for {data}")