code: def test_find_the_perfect_or_nearest_match_onnxfunction_ignores_attribute_with_none(
      self, node
  ):
      custom_domain = onnxscript.values.Opset(
          domain="custom", version=1
      )
  
      @onnxscript.script(custom_domain)
      def test_op_attribute(
          x: TCustomFloat, y: TCustomFloat, attr: int
      ) -> TCustomFloat:
          return op.Add(x, y)
  
      @onnxscript.script(custom_domain)
      def test_op(x: TCustomFloat, y: TCustomFloat) -> TCustomFloat:
          return op.Add(x, y)
  
      op_full_name = "test::test_op"
  
      function_overloads = [
          registration.ONNXFunction(
              test_op_attribute, op_full_name=op_full_name
          ),
          registration.ONNXFunction(test_op, op_full_name=op_full_name),
      ]
  
      symbolic_fn = self.dispatcher._find_the_perfect_or_nearest_match_onnxfunction(
          node,
          function_overloads,
          node.args,
          node.kwargs,
          self.diagnostic_context,
      )
      self.assertEqual(symbolic_fn, test_op)
  
imports: from __future__ import annotations
  import logging
  import operator
  from typing import TypeVar, Union
  import onnxscript
  import torch
  import torch.fx
  from onnxscript import BFLOAT16, DOUBLE, FLOAT, FLOAT16
  from onnxscript.function_libs.torch_lib import ops
  from onnxscript.onnx_opset import opset15
  from torch.onnx._internal.diagnostics import infra
  from torch.onnx._internal.fx import analysis, diagnostics, onnxfunction_dispatcher, registration
  from torch.testing._internal import common_utils
label_desc: Use image node_id 6 for calling the TestDispatcher obj's underlying member method code with example usage: obj.test_find_the_perfect_or_nearest_match_onnxfunction_ignores_attribute_with_none(node) and returns: op, op