code: def make_function(
      domain: str,
      fname: str,
      inputs: Sequence[str],
      outputs: Sequence[str],
      nodes: Sequence[NodeProto],
      opset_imports: Sequence[OperatorSetIdProto],
      attributes: Optional[Sequence[str]] = None,
      attribute_protos: Optional[Sequence[AttributeProto]] = None,
      doc_string: Optional[str] = None,
  ) -> FunctionProto:
      if attributes is None:
          attributes = []
      if attribute_protos is None:
          attribute_protos = []
      f = FunctionProto()
      f.domain = domain
      f.name = fname
      f.input.extend(inputs)
      f.output.extend(outputs)
      f.node.extend(nodes)
      f.opset_import.extend(opset_imports)
      f.attribute.extend(attributes)
      f.attribute_proto.extend(attribute_protos)
      if doc_string:
          f.doc_string = doc_string
      return f
  
imports: import collections.abc
  import numbers
  import struct
  from cmath import isnan
  from typing import Any, Callable, Dict, KeysView, List, Optional, Sequence, Tuple, TypeVar, Union, cast
  import google.protobuf.message
  import numpy
  from onnx import IR_VERSION, AttributeProto, FunctionProto, GraphProto, MapProto, ModelProto, NodeProto, OperatorSetIdProto, OptionalProto, SequenceProto, SparseTensorProto, TensorProto, TensorShapeProto, TrainingInfoProto, TypeProto, ValueInfoProto, defs, mapping, subbyte
label_desc: Use image node_id 7 for calling a global function with example usage: make_function(domain, fname, inputs, outputs, nodes, opset_imports, attributes, attribute_protos, doc_string) and returns: f