code: def list_attributes(data_name):
      r"""List the attributes that exist for a specific ``data_name``.
  
      Args:
          data_name (str): The type of the desired data
  
      Returns:
          list (str): A list of accepted attributes for a given data name
  
      .. seealso:: :func:`~.load_interactive`, :func:`~.list_datasets`, :func:`~.load`.
  
      **Example**
  
      >>> qml.data.list_attributes(data_name="qchem")
      ['molname',
       'basis',
       'bondlength',
       ...
       'vqe_params',
       'vqe_energy']
      """
      data_struct = _get_data_struct()
      if data_name not in data_struct:
          raise ValueError(
              f"Currently the hosted datasets are of types: {list(data_struct)}, but got {data_name}."
          )
      return data_struct[data_name]["attributes"]
  
imports: import typing
  import urllib.parse
  from concurrent.futures import FIRST_EXCEPTION, ThreadPoolExecutor, wait
  from functools import lru_cache
  from pathlib import Path
  from time import sleep
  from typing import List, Optional, Union
  from requests import get
  from pennylane.data.base import Dataset
  from pennylane.data.base.hdf5 import open_hdf5_s3
  from .foldermap import DataPath, FolderMapView, ParamArg
  from .params import DEFAULT, FULL, format_params
label_desc: Use image node_id 9 for calling a global function with example usage: list_attributes(data_name) and returns: data_struct