Source code for chop.passes.graph.analysis.add_metadata.add_software_metadata

import logging
from ...utils import get_mase_op, get_mase_type
from .software_metadata_layers import SOFTWARE_PARAM_ANALYSIS_LAYERS


logger = logging.getLogger(__name__)


[docs] def add_software_metadata_analysis_pass(graph, pass_args=None): """add software metadata :param graph: a MaseGraph :type graph: MaseGraph :param pass_args: this pass does not need any arguments, defaults to None :type pass_args: _type_, optional pass_args is normally None for this pass :return: return a tuple of a MaseGraph and an empty dict (no additional info to return) :rtype: tuple(MaseGraph, Dict) """ for node in graph.fx_graph.nodes: mase_op = get_mase_op(node) mase_type = get_mase_type(node) if mase_op in SOFTWARE_PARAM_ANALYSIS_LAYERS[mase_type]: SOFTWARE_PARAM_ANALYSIS_LAYERS[mase_type][mase_op](node.meta["mase"]) else: logger.warning( f"mase_type `{mase_type}`, mase_op `{mase_op}` not found in SOFTWARE_PARAM_ANALYSIS_LAYERS. Using default analysis layer" ) SOFTWARE_PARAM_ANALYSIS_LAYERS[mase_type]["default"](node.meta["mase"]) return graph, {}