@classmethod<EOL><INDENT>def from_veto_definer_file(cls, fp, start=None, end=None, ifo=None,<EOL>format='<STR_LIT>'):<DEDENT>
if format != '<STR_LIT>':<EOL><INDENT>raise NotImplementedError("<STR_LIT>"<EOL>"<STR_LIT>"<EOL>"<STR_LIT>")<EOL><DEDENT>with get_readable_fileobj(fp, show_progress=False) as fobj:<EOL><INDENT>from ..io.ligolw import read_table as read_ligolw_table<EOL>veto_def_table = read_ligolw_table(fobj, '<STR_LIT>')<EOL><DEDENT>if start is not None:<EOL><INDENT>start = to_gps(start)<EOL><DEDENT>if end is not None:<EOL><INDENT>end = to_gps(end)<EOL><DEDENT>out = cls()<EOL>for row in veto_def_table:<EOL><INDENT>if ifo and row.ifo != ifo:<EOL><INDENT>continue<EOL><DEDENT>if start and <NUM_LIT:0> < row.end_time <= start:<EOL><INDENT>continue<EOL><DEDENT>elif start:<EOL><INDENT>row.start_time = max(row.start_time, start)<EOL><DEDENT>if end and row.start_time >= end:<EOL><INDENT>continue<EOL><DEDENT>elif end and not row.end_time:<EOL><INDENT>row.end_time = end<EOL><DEDENT>elif end:<EOL><INDENT>row.end_time = min(row.end_time, end)<EOL><DEDENT>flag = DataQualityFlag.from_veto_def(row)<EOL>if flag.name in out:<EOL><INDENT>out[flag.name].known.extend(flag.known)<EOL>out[flag.name].known.coalesce()<EOL><DEDENT>else:<EOL><INDENT>out[flag.name] = flag<EOL><DEDENT><DEDENT>return out<EOL>
Read a `DataQualityDict` from a LIGO_LW XML VetoDefinerTable.

        Parameters
        ----------
        fp : `str`
            path of veto definer file to read
        start : `~gwpy.time.LIGOTimeGPS`, `int`, optional
            GPS start time at which to restrict returned flags
        end : `~gwpy.time.LIGOTimeGPS`, `int`, optional
            GPS end time at which to restrict returned flags
        ifo : `str`, optional
            interferometer prefix whose flags you want to read
        format : `str`, optional
            format of file to read, currently only 'ligolw' is supported

        Returns
        -------
        flags : `DataQualityDict`
            a `DataQualityDict` of flags parsed from the `veto_def_table`
            of the input file.

        Notes
        -----
        This method does not automatically `~DataQualityDict.populate`
        the `active` segment list of any flags, a separate call should
        be made for that as follows

        >>> flags = DataQualityDict.from_veto_definer_file('/path/to/file.xml')
        >>> flags.populate()