Given a loaded yaml representing kernel assignment information, extract the mapping from `kernel keys` to `BackendMetadata` (the latter representing the kernel instance) Args: ei: Dict keys {kernels, type_alias, dim_order_alias} See ETKernelKey for description of argumen
(ei: Dict[str, object])
| 23 | |
| 24 | |
| 25 | def parse_from_yaml(ei: Dict[str, object]) -> Dict[ETKernelKey, BackendMetadata]: |
| 26 | """Given a loaded yaml representing kernel assignment information, extract the |
| 27 | mapping from `kernel keys` to `BackendMetadata` (the latter representing the kernel instance) |
| 28 | |
| 29 | Args: |
| 30 | ei: Dict keys {kernels, type_alias, dim_order_alias} |
| 31 | See ETKernelKey for description of arguments |
| 32 | """ |
| 33 | e = ei.copy() |
| 34 | if (kernels := e.pop("kernels", None)) is None: |
| 35 | return {} |
| 36 | |
| 37 | type_alias: Dict[str, List[str]] = e.pop("type_alias", {}) # type: ignore[assignment] |
| 38 | dim_order_alias: Dict[str, List[str]] = e.pop("dim_order_alias", {}) # type: ignore[assignment] |
| 39 | dim_order_alias.pop("__line__", None) |
| 40 | |
| 41 | kernel_mapping: Dict[ETKernelKey, BackendMetadata] = {} |
| 42 | |
| 43 | for entry in kernels: # type: ignore[attr-defined] |
| 44 | arg_meta = entry.get("arg_meta") |
| 45 | if arg_meta is not None: |
| 46 | arg_meta.pop("__line__") |
| 47 | |
| 48 | kernel_name = entry.get("kernel_name") |
| 49 | namespace_helper = NamespaceHelper.from_namespaced_entity( |
| 50 | kernel_name, max_level=3 |
| 51 | ) |
| 52 | kernel_namespace = namespace_helper.get_cpp_namespace(default="at") |
| 53 | backend_metadata = BackendMetadata( |
| 54 | kernel=namespace_helper.entity_name, |
| 55 | structured=False, |
| 56 | cpp_namespace=(kernel_namespace + "::native"), |
| 57 | ) |
| 58 | |
| 59 | kernel_keys = ( |
| 60 | [ETKernelKey((), default=True)] |
| 61 | if arg_meta is None |
| 62 | else ETKernelKey.gen_from_yaml(arg_meta, type_alias, dim_order_alias) # type: ignore[arg-type] |
| 63 | ) |
| 64 | |
| 65 | for kernel_key in kernel_keys: |
| 66 | assert kernel_key not in kernel_mapping, ( |
| 67 | "Duplicate kernel key: " + str(kernel_key) + " " + str(e) |
| 68 | ) |
| 69 | kernel_mapping[kernel_key] = backend_metadata |
| 70 | |
| 71 | return kernel_mapping |
| 72 | |
| 73 | |
| 74 | def parse_et_yaml_struct(es: object) -> ETKernelIndex: |
no test coverage detected
searching dependent graphs…