code: def test_heterogeneous_feature_store():
      node_type = "paper"
      edge_type = ("paper", "to", "paper")
      node_id_dict = {node_type: torch.randperm(6)}
      x_dict = {node_type: torch.randn(6, 32)}
      y_dict = {node_type: torch.randint(0, 2, (6,))}
      edge_id_dict = {edge_type: torch.randperm(12)}
      edge_attr_dict = {edge_type: torch.randn(12, 16)}
  
      store = LocalFeatureStore.from_hetero_data(
          node_id_dict,
          x_dict,
          y_dict,
          edge_id_dict,
          edge_attr_dict,
      )
  
      assert len(store.get_all_tensor_attrs()) == 3
      attrs = store.get_all_tensor_attrs()
  
      assert attrs[0].group_name == node_type
      assert attrs[0].attr_name == "x"
      assert attrs[1].group_name == node_type
      assert attrs[1].attr_name == "y"
      assert attrs[2].group_name == edge_type
      assert attrs[2].attr_name == "edge_attr"
  
      assert torch.equal(
          store.get_global_id(group_name=node_type),
          node_id_dict[node_type],
      )
      assert torch.equal(
          store.get_tensor(group_name=node_type, attr_name="x"),
          x_dict[node_type],
      )
      assert torch.equal(
          store.get_tensor(group_name=node_type, attr_name="y"),
          y_dict[node_type],
      )
      assert torch.equal(
          store.get_global_id(group_name=edge_type),
          edge_id_dict[edge_type],
      )
      assert torch.equal(
          store.get_tensor(group_name=edge_type, attr_name="edge_attr"),
          edge_attr_dict[edge_type],
      )
  
imports: import torch
  from torch_geometric.distributed import LocalFeatureStore
label_desc: Use image node_id 4 for calling a global function with example usage: test_heterogeneous_feature_store() without return types