diff env/lib/python3.9/site-packages/networkx/testing/utils.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/env/lib/python3.9/site-packages/networkx/testing/utils.py	Mon Mar 22 18:12:50 2021 +0000
@@ -0,0 +1,65 @@
+__all__ = [
+    "assert_nodes_equal",
+    "assert_edges_equal",
+    "assert_graphs_equal",
+    "almost_equal",
+]
+
+
+def almost_equal(x, y, places=7):
+    return round(abs(x - y), places) == 0
+
+
+def assert_nodes_equal(nodes1, nodes2):
+    # Assumes iterables of nodes, or (node,datadict) tuples
+    nlist1 = list(nodes1)
+    nlist2 = list(nodes2)
+    try:
+        d1 = dict(nlist1)
+        d2 = dict(nlist2)
+    except (ValueError, TypeError):
+        d1 = dict.fromkeys(nlist1)
+        d2 = dict.fromkeys(nlist2)
+    assert d1 == d2
+
+
+def assert_edges_equal(edges1, edges2):
+    # Assumes iterables with u,v nodes as
+    # edge tuples (u,v), or
+    # edge tuples with data dicts (u,v,d), or
+    # edge tuples with keys and data dicts (u,v,k, d)
+    from collections import defaultdict
+
+    d1 = defaultdict(dict)
+    d2 = defaultdict(dict)
+    c1 = 0
+    for c1, e in enumerate(edges1):
+        u, v = e[0], e[1]
+        data = [e[2:]]
+        if v in d1[u]:
+            data = d1[u][v] + data
+        d1[u][v] = data
+        d1[v][u] = data
+    c2 = 0
+    for c2, e in enumerate(edges2):
+        u, v = e[0], e[1]
+        data = [e[2:]]
+        if v in d2[u]:
+            data = d2[u][v] + data
+        d2[u][v] = data
+        d2[v][u] = data
+    assert c1 == c2
+    # can check one direction because lengths are the same.
+    for n, nbrdict in d1.items():
+        for nbr, datalist in nbrdict.items():
+            assert n in d2
+            assert nbr in d2[n]
+            d2datalist = d2[n][nbr]
+            for data in datalist:
+                assert datalist.count(data) == d2datalist.count(data)
+
+
+def assert_graphs_equal(graph1, graph2):
+    assert graph1.adj == graph2.adj
+    assert graph1.nodes == graph2.nodes
+    assert graph1.graph == graph2.graph