# Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. from xml.etree import ElementTree as ET from executorch.exir.verification.interpreter import Interpreter def get_header(name): h2 = ET.Element("h2") span = ET.Element("span") span.text = name h2.append(span) return h2 def iterable_to_html(s): res = ET.Element("span") val_node = ET.SubElement(res, "p") for e in s: br = ET.SubElement(val_node, "br") br.text = str(e) return res def gen_html(program): test = Interpreter(program) prog_opset = set(test.get_operators_list()) prog_vals = test.get_constant_tensors() html = ET.Element("html") head = ET.Element("head") html.append(head) title = ET.Element("title") head.append(title) title.text = "Model" body = ET.Element("body") html.append(body) div = ET.Element( "div", attrib={ "id": "main_content", "style": "position: absolute; width: 99%; height: 100%; overflow: scroll;", }, ) body.append(div) # Header: Operator List div.append(get_header("Operator List")) # Burn in data div.append(iterable_to_html(prog_opset)) # Header: Constant Tensor List div.append(get_header("Constant Tensor List")) # Burn in data div.append(iterable_to_html(prog_vals)) return ET.tostring(html)