@classmethod
def parse_gtf_attributes(cls, attribute_string, multivalue_keys=None,
    ignore_unknown_multivalues=False):
    """Parse the GTF attribute column and return a dict"""
    if attribute_string == '.':
        return {}
    ret = {}
    for attribute in attribute_string.strip().rstrip(';').split(';'):
        key, value = attribute.strip().split(' ', maxsplit=1)
        if value[0] == '"':
            val = value[1:-1]
        else:
            val = int(value)
        if key not in multivalue_keys:
            if key not in ret:
                ret[key] = val
            elif not ignore_unknown_multivalues:
                raise Exception(
                    f"""Key `{key}` already in attributes.
Probably you should add this attribute to a set of `multivalue_keys`"""
                    )
        else:
            if key not in ret:
                ret[key] = []
            ret[key].append(val)
    return ret
