def parse_gtf_and_expand_attributes(<EOL>filepath_or_buffer,<EOL>chunksize=<NUM_LIT> * <NUM_LIT>,<EOL>restrict_attribute_columns=None,<EOL>features=None):
result = parse_gtf(<EOL>filepath_or_buffer,<EOL>chunksize=chunksize,<EOL>features=features)<EOL>attribute_values = result["<STR_LIT>"]<EOL>del result["<STR_LIT>"]<EOL>for column_name, values in expand_attribute_strings(<EOL>attribute_values, usecols=restrict_attribute_columns).items():<EOL><INDENT>result[column_name] = values<EOL><DEDENT>return result<EOL>
Parse lines into column->values dictionary and then expand
the 'attribute' column into multiple columns. This expansion happens
by replacing strings of semi-colon separated key-value values in the
'attribute' column with one column per distinct key, with a list of
values for each row (using None for rows where key didn't occur).

Parameters
----------
filepath_or_buffer : str or buffer object

chunksize : int

restrict_attribute_columns : list/set of str or None
    If given, then only usese attribute columns.

features : set or None
    Ignore entries which don't correspond to one of the supplied features