code: def _create_dataframes(raw_extras, apply_offsets):
      """Create pandas.DataFrame for Eyelink samples and events.
  
      Creates a pandas DataFrame for sample_lines and for each
      non-empty key in event_lines.
      """
      pd = _check_pandas_installed()
      df_dict = dict()
  
      # dataframe for samples
      df_dict["samples"] = pd.DataFrame(raw_extras["sample_lines"])
      df_dict["samples"] = _drop_status_col(
          df_dict["samples"]
      )  # drop STATUS col
  
      # dataframe for each type of occular event
      for event, label in zip(
          ["EFIX", "ESACC", "EBLINK"],
          ["fixations", "saccades", "blinks"],
      ):
          if raw_extras["event_lines"][
              event
          ]:  # an empty list returns False
              df_dict[label] = pd.DataFrame(
                  raw_extras["event_lines"][event]
              )
          else:
              logger.info(
                  f"No {label} were found in this file. "
                  f"Not returning any info on {label}."
              )
  
      # make dataframe for experiment messages
      if raw_extras["event_lines"]["MSG"]:
          msgs = []
          for token in raw_extras["event_lines"]["MSG"]:
              if apply_offsets and len(token) == 2:
                  ts, msg = token
                  offset = np.nan
              elif apply_offsets:
                  ts = token[0]
                  try:
                      offset = float(token[1])
                      msg = " ".join(str(x) for x in token[2:])
                  except ValueError:
                      offset = np.nan
                      msg = " ".join(str(x) for x in token[1:])
              else:
                  ts, offset = token[0], np.nan
                  msg = " ".join(str(x) for x in token[1:])
              msgs.append([ts, offset, msg])
          df_dict["messages"] = pd.DataFrame(msgs)
  
      # make dataframe for recording block start, end times
      i = 1
      blocks = list()
      for bgn, end in zip(
          raw_extras["event_lines"]["START"],
          raw_extras["event_lines"]["END"],
      ):
          blocks.append((float(bgn[0]), float(end[0]), i))
          i += 1
      cols = ["time", "end_time", "block"]
      df_dict["recording_blocks"] = pd.DataFrame(blocks, columns=cols)
  
      # TODO: Make dataframes for other eyelink events (Buttons)
      return df_dict
  
imports: import re
  from datetime import datetime, timedelta, timezone
  import numpy
  from ..._fiff.constants import FIFF
  from ..._fiff.meas_info import create_info
  from ...annotations import Annotations
  from ...utils import _check_pandas_installed, logger, warn
label_desc: Use image node_id 8 for calling a global function with example usage: _create_dataframes(raw_extras, apply_offsets) and returns: df_dict