<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, *args, **kwargs):
 """Read segments from file into a `DataQualityFlag`. Parameters filename : `str` path of file to read name : `str`, optional name of flag to read from file, otherwise read all segments. format : `str`, optional source format identifier. If not given, the format will be detected if possible. See below for list of acceptable formats. coltype : `type`, optional, default: `float` datatype to force for segment times, only valid for ``format='segwizard'``. strict : `bool`, optional, default: `True` require segment start and stop times match printed duration, only valid for ``format='segwizard'``. coalesce : `bool`, optional if `True` coalesce the all segment lists before returning, otherwise return exactly as contained in file(s). nproc : `int`, optional, default: 1 number of CPUs to use for parallel reading of multiple files verbose : `bool`, optional, default: `False` print a progress bar showing read status Returns ------- dqflag : `DataQualityFlag` formatted `DataQualityFlag` containing the active and known segments read from file. Notes -----"""

        if 'flag' in kwargs:  # pragma: no cover
            warnings.warn('\'flag\' keyword was renamed \'name\', this '
                          'warning will result in an error in the future')
            kwargs.setdefault('name', kwargs.pop('flags'))
        coalesce = kwargs.pop('coalesce', False)

        def combiner(flags):
            """Combine `DataQualityFlag` from each file into a single object
            """
            out = flags[0]
            for flag in flags[1:]:
                out.known += flag.known
                out.active += flag.active
            if coalesce:
                return out.coalesce()
            return out

        return io_read_multi(combiner, cls, source, *args, **kwargs)