code: def sample_blocks(self, g, seed_nodes, exclude_eids=None):
      output_nodes = seed_nodes
      blocks = []
      for block_id in reversed(range(self.num_layers)):
          frontier = self.sample_frontier(block_id, g, seed_nodes)
          eid = frontier.edata[dgl.EID]
          block = dgl.to_block(frontier, seed_nodes)
          block.edata[dgl.EID] = eid
          seed_nodes = block.srcdata[dgl.NID]
          blocks.insert(0, block)
  
      return seed_nodes, output_nodes, blocks
  
imports: import dgl
  import dgl.function
  import numpy
  import torch
  import torch.nn
label_desc: Use image node_id 3 for calling the CARESampler obj's underlying member method code with example usage: obj.sample_blocks(g, seed_nodes, exclude_eids) and returns: seed_nodes,  output_nodes,  blocks