Render edge with label as separate node

def render_edge_with_node_label(self, name, edge, edge_settings):
        """
        Render edge with label as separate node
        """
        props_to_display = self.extract_props(edge.settings)

        label = '<'
        label += "|".join(self.get_label(prop, value) for prop, value in props_to_display.items()) 
        label += '>'

        edge_node_name = "{}-{}".format(name, edge.to)

        self.gv_graph.node(edge_node_name, label=label, shape="record")

        self.gv_graph.edge(self.get_path_from_name(name), edge_node_name, arrowhead="none", **edge_settings)
        self.gv_graph.edge(edge_node_name, self.get_path_from_name(edge.to), **edge_settings)