aboutsummaryrefslogtreecommitdiff
path: root/src/mlia/target/registry.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mlia/target/registry.py')
-rw-r--r--src/mlia/target/registry.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/mlia/target/registry.py b/src/mlia/target/registry.py
index 2d29f1b..325dd04 100644
--- a/src/mlia/target/registry.py
+++ b/src/mlia/target/registry.py
@@ -32,6 +32,30 @@ def supported_backends(target: str) -> list[str]:
return registry.items[target].filter_supported_backends(check_system=False)
+def get_backend_to_supported_targets() -> dict[str, list]:
+ """Get a dict that maps a list of supported targets given backend."""
+ targets = dict(registry.items)
+ supported_backends_dict: dict[str, list] = {}
+ for target, info in targets.items():
+ target_backends = info.supported_backends
+ for backend in target_backends:
+ supported_backends_dict.setdefault(backend, []).append(target)
+ return supported_backends_dict
+
+
+def is_supported(backend: str, target: str | None = None) -> bool:
+ """Check if the backend (and optionally target) is supported."""
+ backends = get_backend_to_supported_targets()
+ if target is None:
+ if backend in backends:
+ return True
+ return False
+ try:
+ return target in backends[backend]
+ except KeyError:
+ return False
+
+
def supported_targets(advice: AdviceCategory) -> list[str]:
"""Get a list of all targets supporting the given advice category."""
return [