I have a graph that has many subgraphs. I have some edges that connect two nodes in both directions, that is, A-->B and B-->A. The bidirectionality is important, as it repre
Maybe you are looking for weakly connected components?
That algorithm treats the edges as if they were undirected and returns the connected components in that graph.
In [1]: import networkx as nx
In [2]: G = nx.DiGraph([(1,2),(2,1),(3,4)])
In [3]: for w in nx.weakly_connected_component_subgraphs(G):
...: print(w.edges())
...:
[(1, 2), (2, 1)]
[(3, 4)]
You are looking for SCC of the graph, that are strongy connected component s. They can be found with a variant of DFS (depth first search).
You should take a look at the wiki article.