code: def __iter__(self):
      client_id = os.getpid()
      self.graph = DistGraphClient(
          self.config,
          self.config.shard_num,
          self.ip_list_file,
          client_id,
      )
  
      self.generator = PairGenerator(
          self.config,
          self.graph,
          mode=self.mode,
          rank=self._worker_info.fid,
          nrank=self._worker_info.num_workers,
      )
  
      for data in self.generator():
          yield data
  
imports: import os
  import sys
  import time
  import warnings
  import numpy
  from collections import defaultdict
  from pgl.graph_kernel import skip_gram_gen_pair
  from pgl.utils.logger import log
  from pgl.distributed import DistGraphClient, DistGraphServer
  from pgl.utils.data import Dataloader, StreamDataset
  from utils.config import prepare_config
  from datasets.node import NodeGenerator
  from datasets.walk import WalkGenerator
  from datasets.pair import PairGenerator
label_desc: Use image node_id 2 for calling the TrainPairDataset obj's underlying member method code with example usage: obj.__iter__() without return types