code: def _make_signature(arg_names, var_arg_names, options_class):
      from inspect import Parameter
  
      params = []
      for name in arg_names:
          params.append(Parameter(name, Parameter.POSITIONAL_ONLY))
      for name in var_arg_names:
          params.append(Parameter(name, Parameter.VAR_POSITIONAL))
      if options_class is not None:
          options_sig = inspect.signature(options_class)
          for p in options_sig.parameters.values():
              assert p.kind in (
                  Parameter.POSITIONAL_OR_KEYWORD,
                  Parameter.KEYWORD_ONLY,
              )
              if var_arg_names:
                  # Cannot have a positional argument after a *args
                  p = p.replace(kind=Parameter.KEYWORD_ONLY)
              params.append(p)
          params.append(
              Parameter("options", Parameter.KEYWORD_ONLY, default=None)
          )
      params.append(
          Parameter("memory_pool", Parameter.KEYWORD_ONLY, default=None)
      )
      return inspect.Signature(params)
  
imports: from pyarrow._compute import Function, FunctionOptions, FunctionRegistry, HashAggregateFunction, HashAggregateKernel, Kernel, ScalarAggregateFunction, ScalarAggregateKernel, ScalarFunction, ScalarKernel, VectorFunction, VectorKernel, ArraySortOptions, AssumeTimezoneOptions, CastOptions, CountOptions, CumulativeOptions, CumulativeSumOptions, DayOfWeekOptions, DictionaryEncodeOptions, RunEndEncodeOptions, ElementWiseAggregateOptions, ExtractRegexOptions, FilterOptions, IndexOptions, JoinOptions, ListSliceOptions, MakeStructOptions, MapLookupOptions, MatchSubstringOptions, ModeOptions, NullOptions, PadOptions, PairwiseOptions, PartitionNthOptions, QuantileOptions, RandomOptions, RankOptions, ReplaceSliceOptions, ReplaceSubstringOptions, RoundBinaryOptions, RoundOptions, RoundTemporalOptions, RoundToMultipleOptions, ScalarAggregateOptions, SelectKOptions, SetLookupOptions, SliceOptions, SortOptions, SplitOptions, SplitPatternOptions, StrftimeOptions, StrptimeOptions, StructFieldOptions, TakeOptions, TDigestOptions, TrimOptions, Utf8NormalizeOptions, VarianceOptions, WeekOptions, call_function, function_registry, get_function, list_functions, call_tabular_function, register_scalar_function, register_tabular_function, register_aggregate_function, register_vector_function, UdfContext, Expression
  from collections import namedtuple
  import inspect
  from textwrap import dedent
  import warnings
  import pyarrow
  from pyarrow import _compute_docstrings
  from pyarrow.vendored import docscrape
label_desc: Use image node_id 7 for calling a global function with example usage: _make_signature(arg_names, var_arg_names, options_class) and returns: inspect