def _parse_name(self, name):
if name is None:<EOL><INDENT>self.ifo = None<EOL>self.tag = None<EOL>self.version = None<EOL><DEDENT>elif re_IFO_TAG_VERSION.match(name):<EOL><INDENT>match = re_IFO_TAG_VERSION.match(name).groupdict()<EOL>self.ifo = match['<STR_LIT>']<EOL>self.tag = match['<STR_LIT>']<EOL>self.version = int(match['<STR_LIT:version>'])<EOL><DEDENT>elif re_IFO_TAG.match(name):<EOL><INDENT>match = re_IFO_TAG.match(name).groupdict()<EOL>self.ifo = match['<STR_LIT>']<EOL>self.tag = match['<STR_LIT>']<EOL>self.version = None<EOL><DEDENT>elif re_TAG_VERSION.match(name):<EOL><INDENT>match = re_TAG_VERSION.match(name).groupdict()<EOL>self.ifo = None<EOL>self.tag = match['<STR_LIT>']<EOL>self.version = int(match['<STR_LIT:version>'])<EOL><DEDENT>else:<EOL><INDENT>raise ValueError("<STR_LIT>"<EOL>"<STR_LIT>"<EOL>"<STR_LIT>"<EOL>"<STR_LIT>" % name)<EOL><DEDENT>return self.ifo, self.tag, self.version<EOL>
Internal method to parse a `string` name into constituent
        `ifo, `name` and `version` components.

        Parameters
        ----------
        name : `str`, `None`
            the full name of a `DataQualityFlag` to parse, e.g.
            ``'H1:DMT-SCIENCE:1'``, or `None` to set all components
            to `None`

        Returns
        -------
        (ifo, name, version)
            A tuple of component string parts

        Raises
        ------
        `ValueError`
            If the input ``name`` cannot be parsed into
            {ifo}:{tag}:{version} format.