(data: OrderedDict)
| 268 | |
| 269 | |
| 270 | def build_rows(data: OrderedDict) -> Tuple[List[Dict], List[str]]: |
| 271 | dataset_labels: List[str] = [] |
| 272 | rows: List[Dict] = [] |
| 273 | row_index: Dict[Tuple[str, Optional[str]], int] = {} |
| 274 | |
| 275 | for dataset_key, methods in data.items(): |
| 276 | dataset_label = normalize_dataset_label(dataset_key) |
| 277 | dataset_labels.append(dataset_label) |
| 278 | for method, variants in methods.items(): |
| 279 | variant_items = list(variants.items()) |
| 280 | has_multiple = len(variant_items) > 1 |
| 281 | for variant_key, metrics in variant_items: |
| 282 | normalized_variant = normalize_variant_key(method, variant_key, has_multiple) |
| 283 | row_id = (method, normalized_variant) |
| 284 | if row_id not in row_index: |
| 285 | row_index[row_id] = len(rows) |
| 286 | rows.append( |
| 287 | { |
| 288 | "row_id": row_id, |
| 289 | "method": method, |
| 290 | "normalized_variant": normalized_variant, |
| 291 | "display_name": format_display_name(method, normalized_variant), |
| 292 | "datasets": {dataset_label: metrics}, |
| 293 | } |
| 294 | ) |
| 295 | else: |
| 296 | rows[row_index[row_id]]["datasets"][dataset_label] = metrics |
| 297 | |
| 298 | return rows, dataset_labels |
| 299 | |
| 300 | |
| 301 | def build_table(rows: Sequence[Dict], dataset_labels: Sequence[str]) -> str: |
no test coverage detected