code: def test_from_partition_hetero_data(tmp_path):
      data = FakeHeteroDataset()[0]
      num_parts = 2
  
      partitioner = Partitioner(data, num_parts, tmp_path)
      partitioner.generate_partition()
  
      graph_store1 = LocalGraphStore.from_partition(tmp_path, pid=0)
      graph_store2 = LocalGraphStore.from_partition(tmp_path, pid=1)
  
      attrs1 = graph_store1.get_all_edge_attrs()
      attrs2 = graph_store2.get_all_edge_attrs()
      assert len(data.edge_types) == len(attrs1) == len(attrs2)
  
      node_types = set()
      for attr in attrs1:
          node_types.add(attr.edge_type[0])
          node_types.add(attr.edge_type[2])
      assert node_types == set(data.node_types)
  
      node_types = set()
      for attr in attrs2:
          node_types.add(attr.edge_type[0])
          node_types.add(attr.edge_type[2])
      assert node_types == set(data.node_types)
  
file_path: pytorch_geometric/test/distributed/test_partition.py
imports: import os.path
  import pytest
  import torch
  from torch_geometric.datasets import FakeDataset, FakeHeteroDataset
  from torch_geometric.distributed import LocalFeatureStore, LocalGraphStore, Partitioner
  from torch_geometric.typing import EdgeTypeStr
label_desc: Use image node_id 4 for calling a global function with example usage: test_from_partition_hetero_data(tmp_path) without return types