code: def parse_param(name, param, error_fn):
      if not supported_param(param):
          error_fn(
              "We do not support positional-only args, varargs, or varkwargs."
          )
  
      if param.annotation is inspect.Parameter.empty:
          error_fn(f"Parameter {name} must have a type annotation.")
  
      if param.annotation not in SUPPORTED_PARAM_TYPES.keys():
          error_fn(
              f"Parameter {name} has unsupported type {param.annotation}. "
              f"The valid types are: {SUPPORTED_PARAM_TYPES.keys()}."
          )
  
      if param.default is not inspect.Parameter.empty:
          error_fn(
              f"Parameter {name} has a default value; this is not supported. "
              f"If you want to use default values then create a function with "
              f"default values that calls the CustomOp"
          )
  
      return f"{SUPPORTED_PARAM_TYPES[param.annotation]} {name}"
  
imports: import dataclasses
  import functools
  import inspect
  import sys
  import typing
  import weakref
  from torchgen.model import FunctionSchema, OperatorName, SchemaKind, BaseType, ListType, BaseTy
  import torch
  import torch._C
  import torch.library
  from torch._library.abstract_impl import AbstractImplCtx
  from torch.library import get_ctx
  from .autograd import autograd_kernel_indirection, construct_autograd_kernel
label_desc: Use image node_id 10 for calling a global function with example usage: parse_param(name, param, error_fn) and returns: SUPPORTED_PARAM_TYPES, str, name