code: def all_pairs_shortest_path_length(G, cutoff=None):
      """Computes the shortest path lengths between all nodes in `G`.
  
      Parameters
      ----------
      G : NetworkX graph
  
      cutoff : integer, optional
          Depth at which to stop the search. Only paths of length at most
          `cutoff` are returned.
  
      Returns
      -------
      lengths : iterator
          (source, dictionary) iterator with dictionary keyed by target and
          shortest path length as the key value.
  
      Notes
      -----
      The iterator returned only has reachable node pairs.
  
      Examples
      --------
      >>> G = nx.path_graph(5)
      >>> length = dict(nx.all_pairs_shortest_path_length(G))
      >>> for node in [0, 1, 2, 3, 4]:
      ...     print(f"1 - {node}: {length[1][node]}")
      1 - 0: 1
      1 - 1: 0
      1 - 2: 1
      1 - 3: 2
      1 - 4: 3
      >>> length[3][2]
      1
      >>> length[2][2]
      0
  
      """
      length = single_source_shortest_path_length
      # TODO This can be trivially parallelized.
      for n in G:
          yield (n, length(G, n, cutoff=cutoff))
  
file_path: networkx/networkx/algorithms/shortest_paths/unweighted.py
imports: import warnings
  import networkx
label_desc: Use image node_id 4 for calling a global function with example usage: all_pairs_shortest_path_length(G, cutoff) without return types