code: def parse_gtf_and_expand_attributes(
          filepath_or_buffer,
          chunksize=1024 * 1024,
          restrict_attribute_columns=None,
          features=None):
      
      result = parse_gtf(
          filepath_or_buffer,
          chunksize=chunksize,
          features=features)
      attribute_values = result["attribute"]
      del result["attribute"]
      for column_name, values in expand_attribute_strings(
              attribute_values, usecols=restrict_attribute_columns).items():
          result[column_name] = values
      return result
docs: 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