<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def read(cls, source, format=None, coalesce=False, **kwargs):
 # pylint: disable=redefined-builtin """Read segments from file into a `SegmentList` Parameters filename : `str` path of file to read format : `str`, optional source format identifier. If not given, the format will be detected if possible. See below for list of acceptable formats. coalesce : `bool`, optional if `True` coalesce the segment list before returning, otherwise return exactly as contained in file(s). **kwargs other keyword arguments depend on the format, see the online documentation for details (:ref:`gwpy-segments-io`) Returns ------- segmentlist : `SegmentList` `SegmentList` active and known segments read from file. Notes -----"""

        def combiner(listofseglists):
            """Combine `SegmentList` from each file into a single object
            """
            out = cls(seg for seglist in listofseglists for seg in seglist)
            if coalesce:
                return out.coalesce()
            return out

        return io_read_multi(combiner, cls, source, format=format, **kwargs)