code: def bfs_successors(G, source, depth_limit=None, sort_neighbors=None):
      """`sort_neighbors` parameter is not yet supported."""
      G = _check_G_and_source(G, source)
      if depth_limit is not None and depth_limit < 1:
          yield (source, [])
          return
  
      distances, predecessors, node_ids = _bfs(
          G, source, depth_limit=depth_limit
      )
      groups = _groupby([distances, predecessors], node_ids)
      id_to_key = G.id_to_key
      for key in sorted(groups):
          children_ids = groups[key]
          parent_id = key[1]
          parent = (
              id_to_key[parent_id]
              if id_to_key is not None
              else parent_id
          )
          children = G._nodearray_to_list(children_ids)
          yield (parent, children)
  
imports: from itertools import repeat
  import cupy
  import networkx
  import numpy
  import pylibcugraph
  import nx_cugraph
  from nx_cugraph.convert import _to_graph
  from nx_cugraph.utils import _groupby, index_dtype, networkx_algorithm
label_desc: Use image node_id 9 for calling a global function with example usage: bfs_successors(G, source, depth_limit, sort_neighbors) without return types