aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests')
-rw-r--r--.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/__init__.py0
-rw-r--r--.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/test_adjacency.py78
-rw-r--r--.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/test_cytoscape.py78
-rw-r--r--.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/test_node_link.py175
-rw-r--r--.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/test_tree.py48
5 files changed, 379 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/__init__.py b/.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/__init__.py
diff --git a/.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/test_adjacency.py b/.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/test_adjacency.py
new file mode 100644
index 00000000..37506382
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/test_adjacency.py
@@ -0,0 +1,78 @@
+import copy
+import json
+
+import pytest
+
+import networkx as nx
+from networkx.readwrite.json_graph import adjacency_data, adjacency_graph
+from networkx.utils import graphs_equal
+
+
+class TestAdjacency:
+ def test_graph(self):
+ G = nx.path_graph(4)
+ H = adjacency_graph(adjacency_data(G))
+ assert graphs_equal(G, H)
+
+ def test_graph_attributes(self):
+ G = nx.path_graph(4)
+ G.add_node(1, color="red")
+ G.add_edge(1, 2, width=7)
+ G.graph["foo"] = "bar"
+ G.graph[1] = "one"
+
+ H = adjacency_graph(adjacency_data(G))
+ assert graphs_equal(G, H)
+ assert H.graph["foo"] == "bar"
+ assert H.nodes[1]["color"] == "red"
+ assert H[1][2]["width"] == 7
+
+ d = json.dumps(adjacency_data(G))
+ H = adjacency_graph(json.loads(d))
+ assert graphs_equal(G, H)
+ assert H.graph["foo"] == "bar"
+ assert H.graph[1] == "one"
+ assert H.nodes[1]["color"] == "red"
+ assert H[1][2]["width"] == 7
+
+ def test_digraph(self):
+ G = nx.DiGraph()
+ nx.add_path(G, [1, 2, 3])
+ H = adjacency_graph(adjacency_data(G))
+ assert H.is_directed()
+ assert graphs_equal(G, H)
+
+ def test_multidigraph(self):
+ G = nx.MultiDiGraph()
+ nx.add_path(G, [1, 2, 3])
+ H = adjacency_graph(adjacency_data(G))
+ assert H.is_directed()
+ assert H.is_multigraph()
+ assert graphs_equal(G, H)
+
+ def test_multigraph(self):
+ G = nx.MultiGraph()
+ G.add_edge(1, 2, key="first")
+ G.add_edge(1, 2, key="second", color="blue")
+ H = adjacency_graph(adjacency_data(G))
+ assert graphs_equal(G, H)
+ assert H[1][2]["second"]["color"] == "blue"
+
+ def test_input_data_is_not_modified_when_building_graph(self):
+ G = nx.path_graph(4)
+ input_data = adjacency_data(G)
+ orig_data = copy.deepcopy(input_data)
+ # Ensure input is unmodified by deserialisation
+ assert graphs_equal(G, adjacency_graph(input_data))
+ assert input_data == orig_data
+
+ def test_adjacency_form_json_serialisable(self):
+ G = nx.path_graph(4)
+ H = adjacency_graph(json.loads(json.dumps(adjacency_data(G))))
+ assert graphs_equal(G, H)
+
+ def test_exception(self):
+ with pytest.raises(nx.NetworkXError):
+ G = nx.MultiDiGraph()
+ attrs = {"id": "node", "key": "node"}
+ adjacency_data(G, attrs)
diff --git a/.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/test_cytoscape.py b/.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/test_cytoscape.py
new file mode 100644
index 00000000..5d47f21f
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/test_cytoscape.py
@@ -0,0 +1,78 @@
+import copy
+import json
+
+import pytest
+
+import networkx as nx
+from networkx.readwrite.json_graph import cytoscape_data, cytoscape_graph
+
+
+def test_graph():
+ G = nx.path_graph(4)
+ H = cytoscape_graph(cytoscape_data(G))
+ assert nx.is_isomorphic(G, H)
+
+
+def test_input_data_is_not_modified_when_building_graph():
+ G = nx.path_graph(4)
+ input_data = cytoscape_data(G)
+ orig_data = copy.deepcopy(input_data)
+ # Ensure input is unmodified by cytoscape_graph (gh-4173)
+ cytoscape_graph(input_data)
+ assert input_data == orig_data
+
+
+def test_graph_attributes():
+ G = nx.path_graph(4)
+ G.add_node(1, color="red")
+ G.add_edge(1, 2, width=7)
+ G.graph["foo"] = "bar"
+ G.graph[1] = "one"
+ G.add_node(3, name="node", id="123")
+
+ H = cytoscape_graph(cytoscape_data(G))
+ assert H.graph["foo"] == "bar"
+ assert H.nodes[1]["color"] == "red"
+ assert H[1][2]["width"] == 7
+ assert H.nodes[3]["name"] == "node"
+ assert H.nodes[3]["id"] == "123"
+
+ d = json.dumps(cytoscape_data(G))
+ H = cytoscape_graph(json.loads(d))
+ assert H.graph["foo"] == "bar"
+ assert H.graph[1] == "one"
+ assert H.nodes[1]["color"] == "red"
+ assert H[1][2]["width"] == 7
+ assert H.nodes[3]["name"] == "node"
+ assert H.nodes[3]["id"] == "123"
+
+
+def test_digraph():
+ G = nx.DiGraph()
+ nx.add_path(G, [1, 2, 3])
+ H = cytoscape_graph(cytoscape_data(G))
+ assert H.is_directed()
+ assert nx.is_isomorphic(G, H)
+
+
+def test_multidigraph():
+ G = nx.MultiDiGraph()
+ nx.add_path(G, [1, 2, 3])
+ H = cytoscape_graph(cytoscape_data(G))
+ assert H.is_directed()
+ assert H.is_multigraph()
+
+
+def test_multigraph():
+ G = nx.MultiGraph()
+ G.add_edge(1, 2, key="first")
+ G.add_edge(1, 2, key="second", color="blue")
+ H = cytoscape_graph(cytoscape_data(G))
+ assert nx.is_isomorphic(G, H)
+ assert H[1][2]["second"]["color"] == "blue"
+
+
+def test_exception():
+ with pytest.raises(nx.NetworkXError):
+ G = nx.MultiDiGraph()
+ cytoscape_data(G, name="foo", ident="foo")
diff --git a/.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/test_node_link.py b/.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/test_node_link.py
new file mode 100644
index 00000000..f903f606
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/test_node_link.py
@@ -0,0 +1,175 @@
+import json
+
+import pytest
+
+import networkx as nx
+from networkx.readwrite.json_graph import node_link_data, node_link_graph
+
+
+def test_node_link_edges_default_future_warning():
+ "Test FutureWarning is raised when `edges=None` in node_link_data and node_link_graph"
+ G = nx.Graph([(1, 2)])
+ with pytest.warns(FutureWarning, match="\nThe default value will be"):
+ data = nx.node_link_data(G) # edges=None, the default
+ with pytest.warns(FutureWarning, match="\nThe default value will be"):
+ H = nx.node_link_graph(data) # edges=None, the default
+
+
+def test_node_link_deprecated_link_param():
+ G = nx.Graph([(1, 2)])
+ with pytest.warns(DeprecationWarning, match="Keyword argument 'link'"):
+ data = nx.node_link_data(G, link="links")
+ with pytest.warns(DeprecationWarning, match="Keyword argument 'link'"):
+ H = nx.node_link_graph(data, link="links")
+
+
+class TestNodeLink:
+ # TODO: To be removed when signature change complete
+ def test_custom_attrs_dep(self):
+ G = nx.path_graph(4)
+ G.add_node(1, color="red")
+ G.add_edge(1, 2, width=7)
+ G.graph[1] = "one"
+ G.graph["foo"] = "bar"
+
+ attrs = {
+ "source": "c_source",
+ "target": "c_target",
+ "name": "c_id",
+ "key": "c_key",
+ "link": "c_links",
+ }
+
+ H = node_link_graph(node_link_data(G, **attrs), multigraph=False, **attrs)
+ assert nx.is_isomorphic(G, H)
+ assert H.graph["foo"] == "bar"
+ assert H.nodes[1]["color"] == "red"
+ assert H[1][2]["width"] == 7
+
+ # provide only a partial dictionary of keywords.
+ # This is similar to an example in the doc string
+ attrs = {
+ "link": "c_links",
+ "source": "c_source",
+ "target": "c_target",
+ }
+ H = node_link_graph(node_link_data(G, **attrs), multigraph=False, **attrs)
+ assert nx.is_isomorphic(G, H)
+ assert H.graph["foo"] == "bar"
+ assert H.nodes[1]["color"] == "red"
+ assert H[1][2]["width"] == 7
+
+ def test_exception_dep(self):
+ G = nx.MultiDiGraph()
+ with pytest.raises(nx.NetworkXError):
+ with pytest.warns(FutureWarning, match="\nThe default value will be"):
+ node_link_data(G, name="node", source="node", target="node", key="node")
+
+ def test_graph(self):
+ G = nx.path_graph(4)
+ with pytest.warns(FutureWarning, match="\nThe default value will be"):
+ H = node_link_graph(node_link_data(G))
+ assert nx.is_isomorphic(G, H)
+
+ def test_graph_attributes(self):
+ G = nx.path_graph(4)
+ G.add_node(1, color="red")
+ G.add_edge(1, 2, width=7)
+ G.graph[1] = "one"
+ G.graph["foo"] = "bar"
+
+ with pytest.warns(FutureWarning, match="\nThe default value will be"):
+ H = node_link_graph(node_link_data(G))
+ assert H.graph["foo"] == "bar"
+ assert H.nodes[1]["color"] == "red"
+ assert H[1][2]["width"] == 7
+
+ with pytest.warns(FutureWarning, match="\nThe default value will be"):
+ d = json.dumps(node_link_data(G))
+ with pytest.warns(FutureWarning, match="\nThe default value will be"):
+ H = node_link_graph(json.loads(d))
+ assert H.graph["foo"] == "bar"
+ assert H.graph["1"] == "one"
+ assert H.nodes[1]["color"] == "red"
+ assert H[1][2]["width"] == 7
+
+ def test_digraph(self):
+ G = nx.DiGraph()
+ with pytest.warns(FutureWarning, match="\nThe default value will be"):
+ H = node_link_graph(node_link_data(G))
+ assert H.is_directed()
+
+ def test_multigraph(self):
+ G = nx.MultiGraph()
+ G.add_edge(1, 2, key="first")
+ G.add_edge(1, 2, key="second", color="blue")
+ with pytest.warns(FutureWarning, match="\nThe default value will be"):
+ H = node_link_graph(node_link_data(G))
+ assert nx.is_isomorphic(G, H)
+ assert H[1][2]["second"]["color"] == "blue"
+
+ def test_graph_with_tuple_nodes(self):
+ G = nx.Graph()
+ G.add_edge((0, 0), (1, 0), color=[255, 255, 0])
+ with pytest.warns(FutureWarning, match="\nThe default value will be"):
+ d = node_link_data(G)
+ dumped_d = json.dumps(d)
+ dd = json.loads(dumped_d)
+ with pytest.warns(FutureWarning, match="\nThe default value will be"):
+ H = node_link_graph(dd)
+ assert H.nodes[(0, 0)] == G.nodes[(0, 0)]
+ assert H[(0, 0)][(1, 0)]["color"] == [255, 255, 0]
+
+ def test_unicode_keys(self):
+ q = "qualité"
+ G = nx.Graph()
+ G.add_node(1, **{q: q})
+ with pytest.warns(FutureWarning, match="\nThe default value will be"):
+ s = node_link_data(G)
+ output = json.dumps(s, ensure_ascii=False)
+ data = json.loads(output)
+ with pytest.warns(FutureWarning, match="\nThe default value will be"):
+ H = node_link_graph(data)
+ assert H.nodes[1][q] == q
+
+ def test_exception(self):
+ G = nx.MultiDiGraph()
+ attrs = {"name": "node", "source": "node", "target": "node", "key": "node"}
+ with pytest.raises(nx.NetworkXError):
+ with pytest.warns(FutureWarning, match="\nThe default value will be"):
+ node_link_data(G, **attrs)
+
+ def test_string_ids(self):
+ q = "qualité"
+ G = nx.DiGraph()
+ G.add_node("A")
+ G.add_node(q)
+ G.add_edge("A", q)
+ with pytest.warns(FutureWarning, match="\nThe default value will be"):
+ data = node_link_data(G)
+ assert data["links"][0]["source"] == "A"
+ assert data["links"][0]["target"] == q
+ with pytest.warns(FutureWarning, match="\nThe default value will be"):
+ H = node_link_graph(data)
+ assert nx.is_isomorphic(G, H)
+
+ def test_custom_attrs(self):
+ G = nx.path_graph(4)
+ G.add_node(1, color="red")
+ G.add_edge(1, 2, width=7)
+ G.graph[1] = "one"
+ G.graph["foo"] = "bar"
+
+ attrs = {
+ "source": "c_source",
+ "target": "c_target",
+ "name": "c_id",
+ "key": "c_key",
+ "link": "c_links",
+ }
+
+ H = node_link_graph(node_link_data(G, **attrs), multigraph=False, **attrs)
+ assert nx.is_isomorphic(G, H)
+ assert H.graph["foo"] == "bar"
+ assert H.nodes[1]["color"] == "red"
+ assert H[1][2]["width"] == 7
diff --git a/.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/test_tree.py b/.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/test_tree.py
new file mode 100644
index 00000000..643a14d8
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/networkx/readwrite/json_graph/tests/test_tree.py
@@ -0,0 +1,48 @@
+import json
+
+import pytest
+
+import networkx as nx
+from networkx.readwrite.json_graph import tree_data, tree_graph
+
+
+def test_graph():
+ G = nx.DiGraph()
+ G.add_nodes_from([1, 2, 3], color="red")
+ G.add_edge(1, 2, foo=7)
+ G.add_edge(1, 3, foo=10)
+ G.add_edge(3, 4, foo=10)
+ H = tree_graph(tree_data(G, 1))
+ assert nx.is_isomorphic(G, H)
+
+
+def test_graph_attributes():
+ G = nx.DiGraph()
+ G.add_nodes_from([1, 2, 3], color="red")
+ G.add_edge(1, 2, foo=7)
+ G.add_edge(1, 3, foo=10)
+ G.add_edge(3, 4, foo=10)
+ H = tree_graph(tree_data(G, 1))
+ assert H.nodes[1]["color"] == "red"
+
+ d = json.dumps(tree_data(G, 1))
+ H = tree_graph(json.loads(d))
+ assert H.nodes[1]["color"] == "red"
+
+
+def test_exceptions():
+ with pytest.raises(TypeError, match="is not a tree."):
+ G = nx.complete_graph(3)
+ tree_data(G, 0)
+ with pytest.raises(TypeError, match="is not directed."):
+ G = nx.path_graph(3)
+ tree_data(G, 0)
+ with pytest.raises(TypeError, match="is not weakly connected."):
+ G = nx.path_graph(3, create_using=nx.DiGraph)
+ G.add_edge(2, 0)
+ G.add_node(3)
+ tree_data(G, 0)
+ with pytest.raises(nx.NetworkXError, match="must be different."):
+ G = nx.MultiDiGraph()
+ G.add_node(0)
+ tree_data(G, 0, ident="node", children="node")