class_docstr: Operator support for ONNXRuntime backend.
  
  It has two-level of support decision. One is via support_dict and the other one
  is via extra_support_dict. The logic of using support_dict is implemented in
  OrtOperatorSupport and extra_support_dict is used by OperatorSupport.is_node_supported.
class_docstr_tok: ["Operator","support","for","ONNXRuntime","backend",".","It","has","two-level","of","support","decision",".","One","is","via","support_dict","and","the","other","one","is","via","extra_support_dict",".","The","logic","of","using","support_dict","is","implemented","in","OrtOperatorSupport","and","extra_support_dict","is","used","by","OperatorSupport.is_node_supported","."]
code: def is_node_supported(
      self,
      submodules: Mapping[str, torch.nn.Module],
      node: torch.fx.Node,
  ) -> bool:
      # OperatorSupport.is_node_supported returns True for non-callable nodes.
      # Since ORT can't execute them, we return False here to override the base
      # behavior.
      if node.op not in CALLABLE_NODE_OPS:
          return False
      # This is the and the only place to decide if aten op is supported.
      if (
          node.op == "call_function"
          and node.target in self._onnx_support_dict
      ):
          logger.warning(
              "support_dict supports node.target: %s (type: %s)",
              node.target,
              type(node.target),
          )
          return True
      # If node.target is not in support_dict, we still want to check if torch.jit.script
      # can convert it to ONNX equivalence. Let's use base mechanism to do this.
      # See extra_support_dict  for supported ops.
      if super().is_node_supported(submodules, node):
          logger.warning(
              "extra_support_dict supports node.target: %s (type: %s)",
              node.target,
              type(node.target),
          )
          return True
      logger.warning(
          "support_dict and extra_support_dict don't support node.target: %s (type: %s)",
          node.target,
          type(node.target),
      )
      return False
  
imports: import dataclasses
  import importlib
  import logging
  from typing import Any, Dict, Final, List, Mapping, Optional, Sequence, Set, Tuple, Union
  from typing_extensions import TypeAlias
  import torch
  import torch._C
  import torch._ops
  import torch._prims.executor
  import torch.fx
  from torch._subclasses.fake_tensor import FakeTensor
  from torch.fx._compatibility import compatibility
  from torch.fx.passes.fake_tensor_prop import FakeTensorProp
  from torch.fx.passes.operator_support import OperatorSupport
  from torch.fx.passes.tools_common import CALLABLE_NODE_OPS
  from torch.utils import _pytree
label_desc: Use image node_id 2 for calling the OrtOperatorSupport obj's underlying member method code with example usage: obj.is_node_supported(submodules, node) and returns: False, False, True, True