docs: def make_heap(n_points, size):
      """Constructor for the numba enabled heap objects. The heaps are used
      for approximate nearest neighbor search, maintaining a list of potential
      neighbors sorted by their distance. We also flag if potential neighbors
      are newly added to the list or not. Internally this is stored as
      a single ndarray; the first axis determines whether we are looking at the
      array of candidate indices, the array of distances, or the flag array for
      whether elements are new or not. Each of these arrays are of shape
      (``n_points``, ``size``)
  
      Parameters
      ----------
      n_points: int
          The number of data points to track in the heap.
  
      size: int
          The number of items to keep on the heap for each data point.
  
      Returns
      -------
      heap: An ndarray suitable for passing to other numba enabled heap functions.
      """
      result = np.zeros((3, int(n_points), int(size)), dtype=np.float64)
      result[0] = -1
      result[1] = np.infty
      result[2] = 0
  
      return result