Network_find_cycles

for me this works perfectly.

from compas.datastructures import Network
from compas.datastructures import Mesh
from compas.datastructures import network_find_cycles
from compas_plotters import NetworkPlotter
from compas_plotters import MeshPlotter

data = {0: [-40.0, 55.0, 0.0], 1: [-35.0, 55.0, 0.0], 2: [-30.0, 55.0, 0.0], 4: [-35.0, 60.0, 0.0], 6: [-37.5, 57.5, 0.0], 7: [-32.5, 57.5, 0.0], 8: [-40.0, 53.82, 0.0], 10: [-30.0, 53.82, 0.0], 11: [-35.0, 61.18, 0.0]}
key_index = {key: index for index, key in enumerate(data)}

nodes = data.values()
edges = [(0, 8), (0, 1), (1, 2), (10, 2), (0, 6), (6, 4), (4, 11), (4, 7), (7, 2)]
edges = [(key_index[u], key_index[v]) for u, v in edges]

network = Network.from_nodes_and_edges(nodes, edges)

points = network.to_points()
cycles = network_find_cycles(network, breakpoints=network.leaves())

mesh = Mesh.from_vertices_and_faces(points, cycles)

# plotter = NetworkPlotter(network, figsize=(8, 5))
# plotter.draw_nodes(text='key', radius=0.03)
# plotter.draw_edges()
# plotter.show()

plotter = MeshPlotter(mesh, figsize=(8, 5))
plotter.draw_vertices()
plotter.draw_edges(keys=list(set(mesh.edges()) - set(mesh.edges_on_boundary())))
plotter.draw_faces(text='key', keys=list(set(mesh.faces()) - set(mesh.faces_on_boundary())))
plotter.show()

produces this: