code: def make_cache_key(udf, sig):
      """
      Build a cache key for a user defined function. Used to avoid
      recompiling the same function for the same set of types
      """
      codebytes = udf.__code__.co_code
      constants = udf.__code__.co_consts
      names = udf.__code__.co_names
  
      if udf.__closure__ is not None:
          cvars = tuple(x.cell_contents for x in udf.__closure__)
          cvarbytes = dumps(cvars)
      else:
          cvarbytes = b""
  
      return names, constants, codebytes, cvarbytes, sig
  
file_path: cudf/python/cudf/cudf/utils/cudautils.py
imports: from pickle import dumps
  import cachetools
  from numba import cuda
  from numba.np import numpy_support
  from cudf.utils._numba import _CUDFNumbaConfig
label_desc: Use image node_id 5 for calling a global function with example usage: make_cache_key(udf, sig) and returns: names,  constants,  codebytes,  cvarbytes,  sig