docs: def cables_from_csv(filename, predicate=None, encoding='utf-8'):
      """\
      Returns a generator with ``ICable`` instances.
  
      Reads the provided CSV file and returns a cable for each row.
  
      `filename`
          Absolute path to a file to read the cables from.
          The file must be a CSV file with the following columns:
          <identifier>, <creation-date>, <reference-id>, <origin>, <classification-level>, <references-to-other-cables>, <header>, <body>
          The delimiter must be a comma (``,``) and the content must be enclosed in double quotes (``"``).
      `predicate`
          A predicate that is invoked for each cable reference identifier.
          If the predicate evaluates to ``False`` the cable is ignored.
          By default, all cables are used.
          I.e. ``cables_from_csv('cables.csv', lambda r: r.startswith('09'))``
          would return cables where the reference identifier starts with ``09``.
      `encoding`
          The file encoding (``UTF-8`` by default).
      """
      return (cable_from_row(row) for row in rows_from_csv(filename, predicate, encoding))