code: def combine_hash_arrays(
      arrays: Iterator[np.ndarray], num_items: int
  ) -> npt.NDArray[np.uint64]:
      """
      Parameters
      ----------
      arrays : Iterator[np.ndarray]
      num_items : int
  
      Returns
      -------
      np.ndarray[uint64]
  
      Should be the same as CPython's tupleobject.c
      """
      try:
          first = next(arrays)
      except StopIteration:
          return np.array([], dtype=np.uint64)
  
      arrays = itertools.chain([first], arrays)
  
      mult = np.uint64(1000003)
      out = np.zeros_like(first) + np.uint64(0x345678)
      last_i = 0
      for i, a in enumerate(arrays):
          inverse_i = num_items - i
          out ^= a
          out *= mult
          mult += np.uint64(82520 + inverse_i + inverse_i)
          last_i = i
      assert last_i + 1 == num_items, "Fed in wrong num_items"
      out += np.uint64(97531)
      return out
  
file_path: pandas/pandas/core/util/hashing.py
imports: from __future__ import annotations
  import itertools
  from typing import TYPE_CHECKING
  import numpy
  from pandas._libs.hashing import hash_object_array
  from pandas.core.dtypes.common import is_list_like
  from pandas.core.dtypes.dtypes import CategoricalDtype
  from pandas.core.dtypes.generic import ABCDataFrame, ABCExtensionArray, ABCIndex, ABCMultiIndex, ABCSeries
label_desc: Use image node_id 1 for calling a global function with example usage: combine_hash_arrays(arrays, num_items) and returns: out, np