code: def _read_annotations_curry(fname, sfreq="auto"):
      r"""Read events from Curry event files.
  
      Parameters
      ----------
      fname : str
          The filename.
      sfreq : float | 'auto'
          The sampling frequency in the file. If set to 'auto' then the
          ``sfreq`` is taken from the respective info file of the same name with
          according file extension (\*.dap for Curry 7; \*.cdt.dpa for Curry8).
          So data.cef looks in data.dap and data.cdt.cef looks in data.cdt.dpa.
  
      Returns
      -------
      annot : instance of Annotations | None
          The annotations.
      """
      required = ["events", "info"] if sfreq == "auto" else ["events"]
      curry_paths = _get_curry_file_structure(fname, required)
      events = _read_events_curry(curry_paths["events"])
  
      if sfreq == "auto":
          sfreq = _read_curry_parameters(curry_paths["info"]).sfreq
  
      onset = events[:, 0] / sfreq
      duration = np.zeros(events.shape[0])
      description = events[:, 2]
  
      return Annotations(onset, duration, description)
  
imports: import os.path
  import re
  from collections import namedtuple
  from datetime import datetime, timezone
  from pathlib import Path
  import numpy
  from ..._fiff._digitization import _make_dig_points
  from ..._fiff.constants import FIFF
  from ..._fiff.meas_info import create_info
  from ..._fiff.tag import _coil_trans_to_loc
  from ..._fiff.utils import _mult_cal_one, _read_segments_file
  from ...annotations import Annotations
  from ...surface import _normal_orth
  from ...transforms import Transform, _angle_between_quats, apply_trans, combine_transforms, get_ras_to_neuromag_trans, invert_transform, rot_to_quat
  from ...utils import _check_fname, check_fname, logger, verbose
  from ..base import BaseRaw
  from ..ctf.trans import _quaternion_align
label_desc: Use image node_id 9 for calling a global function with example usage: _read_annotations_curry(fname, sfreq) and returns: Annotations