code: def list_attributes(arena):
      datasets = []
      for obs in arena.get_params("observation"):
          if (
              len([1 for dataset in datasets if dataset is obs.dataset])
              == 0
          ):
              datasets.append(obs.dataset)
      columns = list(map(lambda x: x.columns.tolist(), datasets))
      # flatten
      columns = [
          col for columns_list in columns for col in columns_list
      ]
      columns = np.unique(columns).tolist()
      return columns
  
imports: from abc import ABC, abstractmethod
  import numpy
  import math
  from pandas.api.types import is_numeric_dtype, is_bool_dtype, is_object_dtype
label_desc: Use image node_id 7 for calling the ObservationParam obj's underlying member method code with example usage: obj.list_attributes(arena) and returns: columns