summaryrefslogtreecommitdiff
path: root/rrog/registry.py
diff options
context:
space:
mode:
Diffstat (limited to 'rrog/registry.py')
-rw-r--r--rrog/registry.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/rrog/registry.py b/rrog/registry.py
new file mode 100644
index 0000000..7f6b6fe
--- /dev/null
+++ b/rrog/registry.py
@@ -0,0 +1,57 @@
+from dataclasses import dataclass, field
+from typing import Callable
+
+
+@dataclass(frozen=True)
+class BenchmarkSpec:
+ name: str
+ tier: str
+ domain: str
+ task_type: str
+ metric: str
+ priority: int
+ status: str = "planned"
+ notes: str = ""
+
+
+@dataclass(frozen=True)
+class ViewSpec:
+ name: str
+ family: str
+ graph_type: str
+ priority: int
+ status: str = "planned"
+ notes: str = ""
+
+
+@dataclass(frozen=True)
+class ComputeSpec:
+ name: str
+ family: str
+ priority: int
+ status: str = "planned"
+ notes: str = ""
+
+
+@dataclass(frozen=True)
+class ModifierSpec:
+ name: str
+ family: str
+ priority: int
+ status: str = "planned"
+ notes: str = ""
+
+
+@dataclass(frozen=True)
+class RunSpec:
+ task: str
+ view: str
+ compute: str
+ modifier: str = "none"
+ default_args: dict[str, object] = field(default_factory=dict)
+ command_builder: Callable[[dict[str, object]], list[str]] | None = None
+
+
+def by_name(items):
+ return {item.name: item for item in items}
+