docs: def get_route_edge_attributes(G, route, attribute=None, minimize_key='length', retrieve_default=None):
      """
      Get a list of attribute values for each edge in a path.
  
      Parameters
      ----------
      G : networkx multidigraph
      route : list
          list of nodes in the path
      attribute : string
          the name of the attribute to get the value of for each edge.
          If not specified, the complete data dict is returned for each edge.
      minimize_key : string
          if there are parallel edges between two nodes, select the one with the
          lowest value of minimize_key
      retrieve_default : Callable[Tuple[Any, Any], Any]
          Function called with the edge nodes as parameters to retrieve a default value, if the edge does not
          contain the given attribute. Per default, a `KeyError` is raised
      Returns
      -------
      attribute_values : list
          list of edge attribute values
      """
  
      attribute_values = []
      for u, v in zip(route[:-1], route[1:]):
          # if there are parallel edges between two nodes, select the one with the
          # lowest value of minimize_key
          data = min(G.get_edge_data(u, v).values(), key=lambda x: x[minimize_key])
          if attribute is None:
              attribute_value = data
          elif retrieve_default is not None:
              attribute_value = data.get(attribute, retrieve_default(u, v))
          else:
              attribute_value = data[attribute]
          attribute_values.append(attribute_value)
      return attribute_values