code: def munch_data(data: pd.DataFrame, dist: FloatArray) -> pd.DataFrame:
      """
      Breakup path into small segments
      """
      x, y = data["x"], data["y"]
      segment_length = 0.01
  
      # How many endpoints for each old segment,
      # not counting the last one
      dist[np.isnan(dist)] = 1
      extra = np.maximum(np.floor(dist / segment_length), 1)
      extra = extra.astype(int, copy=False)
  
      # Generate extra pieces for x and y values
      # The final point must be manually inserted at the end
      x = [
          interp(start, end, n)
          for start, end, n in zip(x[:-1], x[1:], extra)
      ]
      y = [
          interp(start, end, n)
          for start, end, n in zip(y[:-1], y[1:], extra)
      ]
      x.append(data["x"].iloc[-1])
      y.append(data["y"].iloc[-1])
      x = np.hstack(x)
      y = np.hstack(y)
  
      # Replicate other aesthetics: defined by start point
      # but also must include final point
      idx = np.hstack(
          [
              np.repeat(data.index[:-1], extra),
              len(data) - 1,
              # data.index[-1] # TODO: Maybe not
          ]
      )
  
      munched = data.loc[idx, list(data.columns.difference(["x", "y"]))]
      munched["x"] = x
      munched["y"] = y
      munched.reset_index(drop=True, inplace=True)
  
      return munched
  
imports: from __future__ import annotations
  import typing
  from copy import copy
  import numpy
  from ..iapi import panel_ranges
label_desc: Use image node_id 3 for calling a global function with example usage: munch_data(data, dist) and returns: munched