docs: def make_folium_polyline(edge, edge_color, edge_width, edge_opacity, popup_attribute=None):
  
      """
      Turn a row from the gdf_edges GeoDataFrame into a folium PolyLine with
      attributes.
  
      Parameters
      ----------
      edge : GeoSeries
          a row from the gdf_edges GeoDataFrame
      edge_color : string
          color of the edge lines
      edge_width : numeric
          width of the edge lines
      edge_opacity : numeric
          opacity of the edge lines
      popup_attribute : string
          edge attribute to display in a pop-up when an edge is clicked, if None,
          no popup
  
      Returns
      -------
      pl : folium.PolyLine
      """
  
      # check if we were able to import folium successfully
      if not folium:
          raise ImportError('The folium package must be installed to use this optional feature.')
  
      # locations is a list of points for the polyline
      # folium takes coords in lat,lon but geopandas provides them in lon,lat
      # so we have to flip them around
      locations = list([(lat, lon) for lon, lat in edge['geometry'].coords])
  
      # if popup_attribute is None, then create no pop-up
      if popup_attribute is None:
          popup = None
      else:
          # folium doesn't interpret html in the html argument (weird), so can't
          # do newlines without an iframe
          popup_text = json.dumps(edge[popup_attribute])
          popup = folium.Popup(html=popup_text)
  
      # create a folium polyline with attributes
      pl = folium.PolyLine(locations=locations, popup=popup,
                           color=edge_color, weight=edge_width, opacity=edge_opacity)
      return pl