<jupyter_start><jupyter_text>cluster<jupyter_code>from my_happy_graphviz import pydot
from my_happy_jupyter_utils import (
    image_utils
)


G = pydot.Dot(graph_type='digraph')


cluster_foo = pydot.Cluster('foo', label='foo')
cluster_foo.add_node(pydot.Node('foo_method_1', label='method_1'))
cluster_foo.add_node(pydot.Node('foo_method_2', label='method_2'))
cluster_foo.add_node(pydot.Node('foo_method_3', label='method_3'))

G.add_subgraph(cluster_foo)


cluster_bar = pydot.Cluster('bar')
cluster_bar.add_node("bar_method_a")
cluster_bar.add_node("bar_method_b")
cluster_bar.add_node("bar_method_c")


G.add_subgraph(cluster_bar)


cluster_baz = pydot.Cluster('baz')
cluster_baz.add_node('baz_method_1')
cluster_baz.add_node('baz_method_b')
cluster_baz.add_node('baz_method_3')
cluster_baz.add_node('baz_method_c')

G.add_subgraph(cluster_baz)



G.add_edge_str("main", "sub")
G.add_edge_str('bar_method_a', 'bar_method_c')
G.add_edge_str('bar_method_a', 'foo_method_2')

G.add_edge_str('foo_method_2', 'baz_method_3')

G.add_edge_str('bar_method_b', 'foo_method_1')
G.add_edge_str('bar_method_b', 'foo_method_2')
G.add_edge_str('bar_method_b', 'baz_method_1')

G.add_edge_str('foo_method_2', 'foo_method_3')
G.add_edge_str('bar_method_c', 'baz_method_c')
G.add_edge_str('bar_method_b', 'baz_method_b')


print(G.to_string())

file_name = '/'.join([
    'data/output/images',
    '0600_0101_cluster.svg'
])

G.draw(file_name)

image_utils.show_image_with_title_by_url({
    'file_path': file_name,
    'title': 'cluster',
})<jupyter_output>digraph G {
subgraph cluster_foo {
label=foo;
foo_method_1 [label=method_1];
foo_method_2 [label=method_2];
foo_method_3 [label=method_3];
}

subgraph cluster_bar {
bar_method_a;
bar_method_b;
bar_method_c;
}

subgraph cluster_baz {
baz_method_1;
baz_method_b;
baz_method_3;
baz_method_c;
}

main -> sub;
bar_method_a -> bar_method_c;
bar_method_a -> foo_method_2;
foo_method_2 -> baz_method_3;
bar_method_b -> foo_method_1;
bar_method_b -> foo_method_2;
bar_method_b -> baz_method_1;
foo_method_2 -> foo_method_3;
bar_method_c -> baz_method_c;
bar_method_b -> baz_method_b;
}
{'fraction_non_alphanumeric': 0.14036740461610928, 'fraction_numerical': 0.018841262364578427, 'mean_word_length': 8.398230088495575, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 14, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '199086', 'license': 'Apache-2.0', 'n_tokens_mistral': 949, 'n_tokens_neox': 908, 'n_words': 106, 'path': 'examples/0600_0101_cluster.ipynb', 'repo_name': 'ggservice007/my-happy-graphviz', 'size': '2123'}