summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarrod Millman <jarrod.millman@gmail.com>2021-05-26 08:59:54 -0700
committerGitHub <noreply@github.com>2021-05-26 08:59:54 -0700
commit09b30ba69dd2e81a2728fd1259ca7b4d88470827 (patch)
treeec1c723f51473a8ff99fb0195783c607242bb90c
parent7771b28bad07f0a07ac08ef8c2c6a17191d36f54 (diff)
downloadnetworkx-09b30ba69dd2e81a2728fd1259ca7b4d88470827.tar.gz
Refactor testing utilities (#4829)
* Refactor testing utilities Change `assert_edges_equal`, `assert_graphs_equal`, and `assert_nodes_equal` to be more pytest-idiomatic. For example, `assert_edges_equal` becomes the Boolean function `edges_equal` and then the assert is done the testing file (i.e., `assert edges_equal(edges1, edges2)`). This also makes these utility functions useful in nontesting situations where you want to compare edges, but not raise an exception based on the result. * Move testing utility functions * Use new testing utilities * Deprecate assert_*_equal testing utilities * Document node, edge, and graph equality helper functions * text nits. * Update networkx/tests/test_convert_pandas.py Co-authored-by: Ross Barnowski <rossbar@berkeley.edu> * Update networkx/readwrite/tests/test_sparse6.py Co-authored-by: Ross Barnowski <rossbar@berkeley.edu> * Update networkx/readwrite/tests/test_graph6.py Co-authored-by: Ross Barnowski <rossbar@berkeley.edu> * Update networkx/generators/tests/test_classic.py Co-authored-by: Ross Barnowski <rossbar@berkeley.edu> * Update networkx/algorithms/tree/tests/test_operations.py Co-authored-by: Ross Barnowski <rossbar@berkeley.edu> * Update networkx/algorithms/tree/tests/test_coding.py Co-authored-by: Ross Barnowski <rossbar@berkeley.edu> * Update networkx/algorithms/tests/test_dag.py Co-authored-by: Ross Barnowski <rossbar@berkeley.edu> * Update networkx/algorithms/minors/tests/test_contraction.py Co-authored-by: Ross Barnowski <rossbar@berkeley.edu> * add short equality description to docstring * Suppress known warnings Co-authored-by: Ross Barnowski <rossbar@berkeley.edu> Co-authored-by: Dan Schult <dschult@colgate.edu>
-rw-r--r--doc/developer/deprecations.rst3
-rw-r--r--doc/reference/utils.rst4
-rw-r--r--doc/release/release_dev.rst2
-rw-r--r--networkx/algorithms/approximation/tests/test_steinertree.py8
-rw-r--r--networkx/algorithms/bipartite/tests/test_edgelist.py24
-rw-r--r--networkx/algorithms/bipartite/tests/test_matrix.py8
-rw-r--r--networkx/algorithms/bipartite/tests/test_project.py118
-rw-r--r--networkx/algorithms/minors/tests/test_contraction.py67
-rw-r--r--networkx/algorithms/operators/tests/test_all.py6
-rw-r--r--networkx/algorithms/operators/tests/test_binary.py6
-rw-r--r--networkx/algorithms/operators/tests/test_product.py4
-rw-r--r--networkx/algorithms/tests/test_boundary.py6
-rw-r--r--networkx/algorithms/tests/test_core.py28
-rw-r--r--networkx/algorithms/tests/test_dag.py41
-rw-r--r--networkx/algorithms/tests/test_link_prediction.py2
-rw-r--r--networkx/algorithms/tests/test_matching.py90
-rw-r--r--networkx/algorithms/tree/tests/test_coding.py21
-rw-r--r--networkx/algorithms/tree/tests/test_mst.py44
-rw-r--r--networkx/algorithms/tree/tests/test_operations.py7
-rw-r--r--networkx/classes/tests/historical_tests.py22
-rw-r--r--networkx/classes/tests/test_digraph.py4
-rw-r--r--networkx/classes/tests/test_function.py76
-rw-r--r--networkx/classes/tests/test_graph.py87
-rw-r--r--networkx/classes/tests/test_graphviews.py22
-rw-r--r--networkx/classes/tests/test_multidigraph.py6
-rw-r--r--networkx/classes/tests/test_multigraph.py16
-rw-r--r--networkx/conftest.py18
-rw-r--r--networkx/drawing/tests/test_agraph.py14
-rw-r--r--networkx/drawing/tests/test_pydot.py8
-rw-r--r--networkx/generators/tests/test_atlas.py6
-rw-r--r--networkx/generators/tests/test_classic.py47
-rw-r--r--networkx/generators/tests/test_ego.py16
-rw-r--r--networkx/generators/tests/test_interval_graph.py12
-rw-r--r--networkx/generators/tests/test_lattice.py4
-rw-r--r--networkx/generators/tests/test_line.py10
-rw-r--r--networkx/generators/tests/test_nonisomorphic_trees.py8
-rw-r--r--networkx/generators/tests/test_spectral_graph_forge.py14
-rw-r--r--networkx/generators/tests/test_trees.py6
-rw-r--r--networkx/readwrite/tests/test_adjlist.py56
-rw-r--r--networkx/readwrite/tests/test_edgelist.py44
-rw-r--r--networkx/readwrite/tests/test_gpickle.py18
-rw-r--r--networkx/readwrite/tests/test_graph6.py15
-rw-r--r--networkx/readwrite/tests/test_graphml.py56
-rw-r--r--networkx/readwrite/tests/test_p2g.py6
-rw-r--r--networkx/readwrite/tests/test_pajek.py18
-rw-r--r--networkx/readwrite/tests/test_sparse6.py15
-rw-r--r--networkx/testing/utils.py75
-rw-r--r--networkx/tests/test_convert.py118
-rw-r--r--networkx/tests/test_convert_numpy.py22
-rw-r--r--networkx/tests/test_convert_pandas.py38
-rw-r--r--networkx/tests/test_convert_scipy.py14
-rw-r--r--networkx/tests/test_relabel.py32
-rw-r--r--networkx/utils/misc.py107
53 files changed, 804 insertions, 715 deletions
diff --git a/doc/developer/deprecations.rst b/doc/developer/deprecations.rst
index 5fcc1490..57254771 100644
--- a/doc/developer/deprecations.rst
+++ b/doc/developer/deprecations.rst
@@ -85,5 +85,4 @@ Version 3.0
* In ``networkx.classes`` remove the ``ordered`` module and the four ``Ordered``
classes defined therein.
* In ``utils/decorators.py`` remove ``preserve_random_state``.
-* In ``testing/utils.py`` remove ``almost_equal``.
-* Remove ``testing/test.py``.
+* Remove ``testing``.
diff --git a/doc/reference/utils.rst b/doc/reference/utils.rst
index 636134ee..0be25aac 100644
--- a/doc/reference/utils.rst
+++ b/doc/reference/utils.rst
@@ -22,7 +22,9 @@ Helper Functions
pairwise
groups
create_random_state
-
+ nodes_equal
+ edges_equal
+ graphs_equal
Data Structures and Algorithms
------------------------------
diff --git a/doc/release/release_dev.rst b/doc/release/release_dev.rst
index 92df26d6..dbb7f846 100644
--- a/doc/release/release_dev.rst
+++ b/doc/release/release_dev.rst
@@ -117,6 +117,8 @@ Deprecations
Deprecate ``almost_equal``.
- [`#4833 <https://github.com/networkx/networkx/pull/4833>`_]
Deprecate ``run``.
+- [`#4829 <https://github.com/networkx/networkx/pull/4829>`_]
+ Deprecate ``assert_nodes_equal``, ``assert_edges_equal``, and ``assert_graphs_equal``.
Contributors
------------
diff --git a/networkx/algorithms/approximation/tests/test_steinertree.py b/networkx/algorithms/approximation/tests/test_steinertree.py
index 7fe29192..1f55b06f 100644
--- a/networkx/algorithms/approximation/tests/test_steinertree.py
+++ b/networkx/algorithms/approximation/tests/test_steinertree.py
@@ -2,7 +2,7 @@ import pytest
import networkx as nx
from networkx.algorithms.approximation.steinertree import metric_closure
from networkx.algorithms.approximation.steinertree import steiner_tree
-from networkx.testing.utils import assert_edges_equal
+from networkx.utils import edges_equal
class TestSteinerTree:
@@ -49,7 +49,7 @@ class TestSteinerTree:
(5, 7, {"distance": 1, "path": [5, 7]}),
(6, 7, {"distance": 11, "path": [6, 5, 7]}),
]
- assert_edges_equal(list(M.edges(data=True)), mc)
+ assert edges_equal(list(M.edges(data=True)), mc)
def test_steiner_tree(self):
S = steiner_tree(self.G, self.term_nodes)
@@ -60,7 +60,7 @@ class TestSteinerTree:
(3, 4, {"weight": 10}),
(5, 7, {"weight": 1}),
]
- assert_edges_equal(list(S.edges(data=True)), expected_steiner_tree)
+ assert edges_equal(list(S.edges(data=True)), expected_steiner_tree)
def test_multigraph_steiner_tree(self):
G = nx.MultiGraph()
@@ -80,4 +80,4 @@ class TestSteinerTree:
(3, 5, 0, {"weight": 1}),
]
T = steiner_tree(G, terminal_nodes)
- assert_edges_equal(T.edges(data=True, keys=True), expected_edges)
+ assert edges_equal(T.edges(data=True, keys=True), expected_edges)
diff --git a/networkx/algorithms/bipartite/tests/test_edgelist.py b/networkx/algorithms/bipartite/tests/test_edgelist.py
index 2a8dc73e..80b2c098 100644
--- a/networkx/algorithms/bipartite/tests/test_edgelist.py
+++ b/networkx/algorithms/bipartite/tests/test_edgelist.py
@@ -7,7 +7,7 @@ import tempfile
import os
import networkx as nx
-from networkx.testing import assert_edges_equal, assert_nodes_equal, assert_graphs_equal
+from networkx.utils import nodes_equal, edges_equal, graphs_equal
from networkx.algorithms import bipartite
@@ -35,7 +35,7 @@ class TestEdgelist:
"""
bytesIO = io.BytesIO(s)
G = bipartite.read_edgelist(bytesIO, nodetype=int)
- assert_edges_equal(G.edges(), [(1, 2), (2, 3)])
+ assert edges_equal(G.edges(), [(1, 2), (2, 3)])
def test_read_edgelist_3(self):
s = b"""\
@@ -46,11 +46,11 @@ class TestEdgelist:
"""
bytesIO = io.BytesIO(s)
G = bipartite.read_edgelist(bytesIO, nodetype=int, data=False)
- assert_edges_equal(G.edges(), [(1, 2), (2, 3)])
+ assert edges_equal(G.edges(), [(1, 2), (2, 3)])
bytesIO = io.BytesIO(s)
G = bipartite.read_edgelist(bytesIO, nodetype=int, data=True)
- assert_edges_equal(
+ assert edges_equal(
G.edges(data=True), [(1, 2, {"weight": 2.0}), (2, 3, {"weight": 3.0})]
)
@@ -110,7 +110,7 @@ class TestEdgelist:
fd, fname = tempfile.mkstemp()
bipartite.write_edgelist(G, fname)
H = bipartite.read_edgelist(fname)
- assert_graphs_equal(G, H)
+ assert graphs_equal(G, H)
os.close(fd)
os.unlink(fname)
@@ -138,7 +138,7 @@ class TestEdgelist:
fd, fname = tempfile.mkstemp()
bipartite.write_edgelist(G, fname, encoding="latin-1")
H = bipartite.read_edgelist(fname, encoding="latin-1")
- assert_graphs_equal(G, H)
+ assert graphs_equal(G, H)
os.close(fd)
os.unlink(fname)
@@ -150,8 +150,8 @@ class TestEdgelist:
H2 = bipartite.read_edgelist(fname)
assert H is not H2 # they should be different graphs
G.remove_node("g") # isolated nodes are not written in edgelist
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
@@ -162,8 +162,8 @@ class TestEdgelist:
H = bipartite.read_edgelist(fname, nodetype=int)
# isolated nodes are not written in edgelist
G.remove_nodes_from(list(nx.isolates(G)))
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
@@ -174,8 +174,8 @@ class TestEdgelist:
H = bipartite.read_edgelist(fname, nodetype=int, create_using=nx.MultiGraph())
H2 = bipartite.read_edgelist(fname, nodetype=int, create_using=nx.MultiGraph())
assert H is not H2 # they should be different graphs
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
diff --git a/networkx/algorithms/bipartite/tests/test_matrix.py b/networkx/algorithms/bipartite/tests/test_matrix.py
index 176741ae..393b71e7 100644
--- a/networkx/algorithms/bipartite/tests/test_matrix.py
+++ b/networkx/algorithms/bipartite/tests/test_matrix.py
@@ -7,7 +7,7 @@ sparse = pytest.importorskip("scipy.sparse")
import networkx as nx
from networkx.algorithms import bipartite
-from networkx.testing.utils import assert_edges_equal
+from networkx.utils import edges_equal
class TestBiadjacencyMatrix:
@@ -68,12 +68,12 @@ class TestBiadjacencyMatrix:
def test_from_biadjacency_weight(self):
M = sparse.csc_matrix([[1, 2], [0, 3]])
B = bipartite.from_biadjacency_matrix(M)
- assert_edges_equal(B.edges(), [(0, 2), (0, 3), (1, 3)])
+ assert edges_equal(B.edges(), [(0, 2), (0, 3), (1, 3)])
B = bipartite.from_biadjacency_matrix(M, edge_attribute="weight")
e = [(0, 2, {"weight": 1}), (0, 3, {"weight": 2}), (1, 3, {"weight": 3})]
- assert_edges_equal(B.edges(data=True), e)
+ assert edges_equal(B.edges(data=True), e)
def test_from_biadjacency_multigraph(self):
M = sparse.csc_matrix([[1, 2], [0, 3]])
B = bipartite.from_biadjacency_matrix(M, create_using=nx.MultiGraph())
- assert_edges_equal(B.edges(), [(0, 2), (0, 3), (0, 3), (1, 3), (1, 3), (1, 3)])
+ assert edges_equal(B.edges(), [(0, 2), (0, 3), (0, 3), (1, 3), (1, 3), (1, 3)])
diff --git a/networkx/algorithms/bipartite/tests/test_project.py b/networkx/algorithms/bipartite/tests/test_project.py
index dbe75894..d41ec580 100644
--- a/networkx/algorithms/bipartite/tests/test_project.py
+++ b/networkx/algorithms/bipartite/tests/test_project.py
@@ -1,89 +1,89 @@
import networkx as nx
from networkx.algorithms import bipartite
-from networkx.testing import assert_edges_equal, assert_nodes_equal
+from networkx.utils import nodes_equal, edges_equal
class TestBipartiteProject:
def test_path_projected_graph(self):
G = nx.path_graph(4)
P = bipartite.projected_graph(G, [1, 3])
- assert_nodes_equal(list(P), [1, 3])
- assert_edges_equal(list(P.edges()), [(1, 3)])
+ assert nodes_equal(list(P), [1, 3])
+ assert edges_equal(list(P.edges()), [(1, 3)])
P = bipartite.projected_graph(G, [0, 2])
- assert_nodes_equal(list(P), [0, 2])
- assert_edges_equal(list(P.edges()), [(0, 2)])
+ assert nodes_equal(list(P), [0, 2])
+ assert edges_equal(list(P.edges()), [(0, 2)])
def test_path_projected_properties_graph(self):
G = nx.path_graph(4)
G.add_node(1, name="one")
G.add_node(2, name="two")
P = bipartite.projected_graph(G, [1, 3])
- assert_nodes_equal(list(P), [1, 3])
- assert_edges_equal(list(P.edges()), [(1, 3)])
+ assert nodes_equal(list(P), [1, 3])
+ assert edges_equal(list(P.edges()), [(1, 3)])
assert P.nodes[1]["name"] == G.nodes[1]["name"]
P = bipartite.projected_graph(G, [0, 2])
- assert_nodes_equal(list(P), [0, 2])
- assert_edges_equal(list(P.edges()), [(0, 2)])
+ assert nodes_equal(list(P), [0, 2])
+ assert edges_equal(list(P.edges()), [(0, 2)])
assert P.nodes[2]["name"] == G.nodes[2]["name"]
def test_path_collaboration_projected_graph(self):
G = nx.path_graph(4)
P = bipartite.collaboration_weighted_projected_graph(G, [1, 3])
- assert_nodes_equal(list(P), [1, 3])
- assert_edges_equal(list(P.edges()), [(1, 3)])
+ assert nodes_equal(list(P), [1, 3])
+ assert edges_equal(list(P.edges()), [(1, 3)])
P[1][3]["weight"] = 1
P = bipartite.collaboration_weighted_projected_graph(G, [0, 2])
- assert_nodes_equal(list(P), [0, 2])
- assert_edges_equal(list(P.edges()), [(0, 2)])
+ assert nodes_equal(list(P), [0, 2])
+ assert edges_equal(list(P.edges()), [(0, 2)])
P[0][2]["weight"] = 1
def test_directed_path_collaboration_projected_graph(self):
G = nx.DiGraph()
nx.add_path(G, range(4))
P = bipartite.collaboration_weighted_projected_graph(G, [1, 3])
- assert_nodes_equal(list(P), [1, 3])
- assert_edges_equal(list(P.edges()), [(1, 3)])
+ assert nodes_equal(list(P), [1, 3])
+ assert edges_equal(list(P.edges()), [(1, 3)])
P[1][3]["weight"] = 1
P = bipartite.collaboration_weighted_projected_graph(G, [0, 2])
- assert_nodes_equal(list(P), [0, 2])
- assert_edges_equal(list(P.edges()), [(0, 2)])
+ assert nodes_equal(list(P), [0, 2])
+ assert edges_equal(list(P.edges()), [(0, 2)])
P[0][2]["weight"] = 1
def test_path_weighted_projected_graph(self):
G = nx.path_graph(4)
P = bipartite.weighted_projected_graph(G, [1, 3])
- assert_nodes_equal(list(P), [1, 3])
- assert_edges_equal(list(P.edges()), [(1, 3)])
+ assert nodes_equal(list(P), [1, 3])
+ assert edges_equal(list(P.edges()), [(1, 3)])
P[1][3]["weight"] = 1
P = bipartite.weighted_projected_graph(G, [0, 2])
- assert_nodes_equal(list(P), [0, 2])
- assert_edges_equal(list(P.edges()), [(0, 2)])
+ assert nodes_equal(list(P), [0, 2])
+ assert edges_equal(list(P.edges()), [(0, 2)])
P[0][2]["weight"] = 1
def test_path_weighted_projected_directed_graph(self):
G = nx.DiGraph()
nx.add_path(G, range(4))
P = bipartite.weighted_projected_graph(G, [1, 3])
- assert_nodes_equal(list(P), [1, 3])
- assert_edges_equal(list(P.edges()), [(1, 3)])
+ assert nodes_equal(list(P), [1, 3])
+ assert edges_equal(list(P.edges()), [(1, 3)])
P[1][3]["weight"] = 1
P = bipartite.weighted_projected_graph(G, [0, 2])
- assert_nodes_equal(list(P), [0, 2])
- assert_edges_equal(list(P.edges()), [(0, 2)])
+ assert nodes_equal(list(P), [0, 2])
+ assert edges_equal(list(P.edges()), [(0, 2)])
P[0][2]["weight"] = 1
def test_star_projected_graph(self):
G = nx.star_graph(3)
P = bipartite.projected_graph(G, [1, 2, 3])
- assert_nodes_equal(list(P), [1, 2, 3])
- assert_edges_equal(list(P.edges()), [(1, 2), (1, 3), (2, 3)])
+ assert nodes_equal(list(P), [1, 2, 3])
+ assert edges_equal(list(P.edges()), [(1, 2), (1, 3), (2, 3)])
P = bipartite.weighted_projected_graph(G, [1, 2, 3])
- assert_nodes_equal(list(P), [1, 2, 3])
- assert_edges_equal(list(P.edges()), [(1, 2), (1, 3), (2, 3)])
+ assert nodes_equal(list(P), [1, 2, 3])
+ assert edges_equal(list(P.edges()), [(1, 2), (1, 3), (2, 3)])
P = bipartite.projected_graph(G, [0])
- assert_nodes_equal(list(P), [0])
- assert_edges_equal(list(P.edges()), [])
+ assert nodes_equal(list(P), [0])
+ assert edges_equal(list(P.edges()), [])
def test_project_multigraph(self):
G = nx.Graph()
@@ -92,11 +92,11 @@ class TestBipartiteProject:
G.add_edge("a", 2)
G.add_edge("b", 2)
P = bipartite.projected_graph(G, "ab")
- assert_edges_equal(list(P.edges()), [("a", "b")])
+ assert edges_equal(list(P.edges()), [("a", "b")])
P = bipartite.weighted_projected_graph(G, "ab")
- assert_edges_equal(list(P.edges()), [("a", "b")])
+ assert edges_equal(list(P.edges()), [("a", "b")])
P = bipartite.projected_graph(G, "ab", multigraph=True)
- assert_edges_equal(list(P.edges()), [("a", "b"), ("a", "b")])
+ assert edges_equal(list(P.edges()), [("a", "b"), ("a", "b")])
def test_project_collaboration(self):
G = nx.Graph()
@@ -118,13 +118,13 @@ class TestBipartiteProject:
G.add_edge("A", 2)
G.add_edge("B", 2)
P = bipartite.projected_graph(G, "AB")
- assert_edges_equal(list(P.edges()), [("A", "B")])
+ assert edges_equal(list(P.edges()), [("A", "B")])
P = bipartite.weighted_projected_graph(G, "AB")
- assert_edges_equal(list(P.edges()), [("A", "B")])
+ assert edges_equal(list(P.edges()), [("A", "B")])
assert P["A"]["B"]["weight"] == 1
P = bipartite.projected_graph(G, "AB", multigraph=True)
- assert_edges_equal(list(P.edges()), [("A", "B")])
+ assert edges_equal(list(P.edges()), [("A", "B")])
G = nx.DiGraph()
G.add_edge("A", 1)
@@ -132,13 +132,13 @@ class TestBipartiteProject:
G.add_edge("A", 2)
G.add_edge(2, "B")
P = bipartite.projected_graph(G, "AB")
- assert_edges_equal(list(P.edges()), [("A", "B")])
+ assert edges_equal(list(P.edges()), [("A", "B")])
P = bipartite.weighted_projected_graph(G, "AB")
- assert_edges_equal(list(P.edges()), [("A", "B")])
+ assert edges_equal(list(P.edges()), [("A", "B")])
assert P["A"]["B"]["weight"] == 2
P = bipartite.projected_graph(G, "AB", multigraph=True)
- assert_edges_equal(list(P.edges()), [("A", "B"), ("A", "B")])
+ assert edges_equal(list(P.edges()), [("A", "B"), ("A", "B")])
class TestBipartiteWeightedProjection:
@@ -184,7 +184,7 @@ class TestBipartiteWeightedProjection:
Panswer = nx.Graph()
Panswer.add_weighted_edges_from(edges)
P = bipartite.weighted_projected_graph(self.G, "ABCDEF")
- assert_edges_equal(list(P.edges()), Panswer.edges())
+ assert edges_equal(list(P.edges()), Panswer.edges())
for u, v in list(P.edges()):
assert P[u][v]["weight"] == Panswer[u][v]["weight"]
@@ -201,7 +201,7 @@ class TestBipartiteWeightedProjection:
Panswer = nx.Graph()
Panswer.add_weighted_edges_from(edges)
P = bipartite.weighted_projected_graph(self.N, "ABCDE")
- assert_edges_equal(list(P.edges()), Panswer.edges())
+ assert edges_equal(list(P.edges()), Panswer.edges())
for u, v in list(P.edges()):
assert P[u][v]["weight"] == Panswer[u][v]["weight"]
@@ -217,7 +217,7 @@ class TestBipartiteWeightedProjection:
Panswer = nx.Graph()
Panswer.add_weighted_edges_from(edges)
P = bipartite.collaboration_weighted_projected_graph(self.G, "ABCDEF")
- assert_edges_equal(list(P.edges()), Panswer.edges())
+ assert edges_equal(list(P.edges()), Panswer.edges())
for u, v in list(P.edges()):
assert P[u][v]["weight"] == Panswer[u][v]["weight"]
@@ -234,7 +234,7 @@ class TestBipartiteWeightedProjection:
Panswer = nx.Graph()
Panswer.add_weighted_edges_from(edges)
P = bipartite.collaboration_weighted_projected_graph(self.N, "ABCDE")
- assert_edges_equal(list(P.edges()), Panswer.edges())
+ assert edges_equal(list(P.edges()), Panswer.edges())
for u, v in list(P.edges()):
assert P[u][v]["weight"] == Panswer[u][v]["weight"]
@@ -250,7 +250,7 @@ class TestBipartiteWeightedProjection:
Panswer = nx.Graph()
Panswer.add_weighted_edges_from(edges)
P = bipartite.weighted_projected_graph(self.G, "ABCDEF", ratio=True)
- assert_edges_equal(list(P.edges()), Panswer.edges())
+ assert edges_equal(list(P.edges()), Panswer.edges())
for u, v in list(P.edges()):
assert P[u][v]["weight"] == Panswer[u][v]["weight"]
@@ -267,7 +267,7 @@ class TestBipartiteWeightedProjection:
Panswer = nx.Graph()
Panswer.add_weighted_edges_from(edges)
P = bipartite.weighted_projected_graph(self.N, "ABCDE", ratio=True)
- assert_edges_equal(list(P.edges()), Panswer.edges())
+ assert edges_equal(list(P.edges()), Panswer.edges())
for u, v in list(P.edges()):
assert P[u][v]["weight"] == Panswer[u][v]["weight"]
@@ -283,7 +283,7 @@ class TestBipartiteWeightedProjection:
Panswer = nx.Graph()
Panswer.add_weighted_edges_from(edges)
P = bipartite.overlap_weighted_projected_graph(self.G, "ABCDEF", jaccard=False)
- assert_edges_equal(list(P.edges()), Panswer.edges())
+ assert edges_equal(list(P.edges()), Panswer.edges())
for u, v in list(P.edges()):
assert P[u][v]["weight"] == Panswer[u][v]["weight"]
@@ -300,7 +300,7 @@ class TestBipartiteWeightedProjection:
Panswer = nx.Graph()
Panswer.add_weighted_edges_from(edges)
P = bipartite.overlap_weighted_projected_graph(self.N, "ABCDE", jaccard=False)
- assert_edges_equal(list(P.edges()), Panswer.edges())
+ assert edges_equal(list(P.edges()), Panswer.edges())
for u, v in list(P.edges()):
assert P[u][v]["weight"] == Panswer[u][v]["weight"]
@@ -316,7 +316,7 @@ class TestBipartiteWeightedProjection:
Panswer = nx.Graph()
Panswer.add_weighted_edges_from(edges)
P = bipartite.overlap_weighted_projected_graph(self.G, "ABCDEF")
- assert_edges_equal(list(P.edges()), Panswer.edges())
+ assert edges_equal(list(P.edges()), Panswer.edges())
for u, v in list(P.edges()):
assert P[u][v]["weight"] == Panswer[u][v]["weight"]
@@ -333,7 +333,7 @@ class TestBipartiteWeightedProjection:
Panswer = nx.Graph()
Panswer.add_weighted_edges_from(edges)
P = bipartite.overlap_weighted_projected_graph(self.N, "ABCDE")
- assert_edges_equal(list(P.edges()), Panswer.edges())
+ assert edges_equal(list(P.edges()), Panswer.edges())
for u, v in P.edges():
assert P[u][v]["weight"] == Panswer[u][v]["weight"]
@@ -345,23 +345,23 @@ class TestBipartiteWeightedProjection:
G = bipartite.generic_weighted_projected_graph(
B, [0, 2, 4], weight_function=shared
)
- assert_nodes_equal(list(G), [0, 2, 4])
- assert_edges_equal(
+ assert nodes_equal(list(G), [0, 2, 4])
+ assert edges_equal(
list(list(G.edges(data=True))),
[(0, 2, {"weight": 1}), (2, 4, {"weight": 1})],
)
G = bipartite.generic_weighted_projected_graph(B, [0, 2, 4])
- assert_nodes_equal(list(G), [0, 2, 4])
- assert_edges_equal(
+ assert nodes_equal(list(G), [0, 2, 4])
+ assert edges_equal(
list(list(G.edges(data=True))),
[(0, 2, {"weight": 1}), (2, 4, {"weight": 1})],
)
B = nx.DiGraph()
nx.add_path(B, range(5))
G = bipartite.generic_weighted_projected_graph(B, [0, 2, 4])
- assert_nodes_equal(list(G), [0, 2, 4])
- assert_edges_equal(
+ assert nodes_equal(list(G), [0, 2, 4])
+ assert edges_equal(
list(G.edges(data=True)), [(0, 2, {"weight": 1}), (2, 4, {"weight": 1})]
)
@@ -383,10 +383,10 @@ class TestBipartiteWeightedProjection:
G = bipartite.generic_weighted_projected_graph(
B, [0, 1], weight_function=jaccard
)
- assert_edges_equal(list(G.edges(data=True)), [(0, 1, {"weight": 1.0})])
+ assert edges_equal(list(G.edges(data=True)), [(0, 1, {"weight": 1.0})])
G = bipartite.generic_weighted_projected_graph(
B, [0, 1], weight_function=my_weight
)
- assert_edges_equal(list(G.edges(data=True)), [(0, 1, {"weight": 10})])
+ assert edges_equal(list(G.edges(data=True)), [(0, 1, {"weight": 10})])
G = bipartite.generic_weighted_projected_graph(B, [0, 1])
- assert_edges_equal(list(G.edges(data=True)), [(0, 1, {"weight": 2})])
+ assert edges_equal(list(G.edges(data=True)), [(0, 1, {"weight": 2})])
diff --git a/networkx/algorithms/minors/tests/test_contraction.py b/networkx/algorithms/minors/tests/test_contraction.py
index 15ea3dd5..34029fb6 100644
--- a/networkx/algorithms/minors/tests/test_contraction.py
+++ b/networkx/algorithms/minors/tests/test_contraction.py
@@ -2,8 +2,7 @@
import pytest
import networkx as nx
-from networkx.testing.utils import assert_edges_equal, assert_nodes_equal
-from networkx.utils import arbitrary_element
+from networkx.utils import arbitrary_element, nodes_equal, edges_equal
class TestQuotient:
@@ -113,8 +112,8 @@ class TestQuotient:
G = nx.path_graph(6)
partition = [{0, 1}, {2, 3}, {4, 5}]
M = nx.quotient_graph(G, partition, relabel=True)
- assert_nodes_equal(M, [0, 1, 2])
- assert_edges_equal(M.edges(), [(0, 1), (1, 2)])
+ assert nodes_equal(M, [0, 1, 2])
+ assert edges_equal(M.edges(), [(0, 1), (1, 2)])
for n in M:
assert M.nodes[n]["nedges"] == 1
assert M.nodes[n]["nnodes"] == 2
@@ -124,8 +123,8 @@ class TestQuotient:
G = nx.path_graph(6)
partition = {0: [0, 1], 2: [2, 3], 4: [4, 5]}
M = nx.quotient_graph(G, partition, relabel=True)
- assert_nodes_equal(M, [0, 1, 2])
- assert_edges_equal(M.edges(), [(0, 1), (1, 2)])
+ assert nodes_equal(M, [0, 1, 2])
+ assert edges_equal(M.edges(), [(0, 1), (1, 2)])
for n in M:
assert M.nodes[n]["nedges"] == 1
assert M.nodes[n]["nnodes"] == 2
@@ -135,8 +134,8 @@ class TestQuotient:
G = nx.path_graph(6)
partition = {0: (0, 1), 2: (2, 3), 4: (4, 5)}
M = nx.quotient_graph(G, partition, relabel=True)
- assert_nodes_equal(M, [0, 1, 2])
- assert_edges_equal(M.edges(), [(0, 1), (1, 2)])
+ assert nodes_equal(M, [0, 1, 2])
+ assert edges_equal(M.edges(), [(0, 1), (1, 2)])
for n in M:
assert M.nodes[n]["nedges"] == 1
assert M.nodes[n]["nnodes"] == 2
@@ -146,8 +145,8 @@ class TestQuotient:
G = nx.path_graph(6)
partition = {0: {0, 1}, 2: {2, 3}, 4: {4, 5}}
M = nx.quotient_graph(G, partition, relabel=True)
- assert_nodes_equal(M, [0, 1, 2])
- assert_edges_equal(M.edges(), [(0, 1), (1, 2)])
+ assert nodes_equal(M, [0, 1, 2])
+ assert edges_equal(M.edges(), [(0, 1), (1, 2)])
for n in M:
assert M.nodes[n]["nedges"] == 1
assert M.nodes[n]["nnodes"] == 2
@@ -157,8 +156,8 @@ class TestQuotient:
G = nx.MultiGraph(nx.path_graph(6))
partition = [{0, 1}, {2, 3}, {4, 5}]
M = nx.quotient_graph(G, partition, relabel=True)
- assert_nodes_equal(M, [0, 1, 2])
- assert_edges_equal(M.edges(), [(0, 1), (1, 2)])
+ assert nodes_equal(M, [0, 1, 2])
+ assert edges_equal(M.edges(), [(0, 1), (1, 2)])
for n in M:
assert M.nodes[n]["nedges"] == 1
assert M.nodes[n]["nnodes"] == 2
@@ -169,8 +168,8 @@ class TestQuotient:
nx.add_path(G, range(6))
partition = [{0, 1}, {2, 3}, {4, 5}]
M = nx.quotient_graph(G, partition, relabel=True)
- assert_nodes_equal(M, [0, 1, 2])
- assert_edges_equal(M.edges(), [(0, 1), (1, 2)])
+ assert nodes_equal(M, [0, 1, 2])
+ assert edges_equal(M.edges(), [(0, 1), (1, 2)])
for n in M:
assert M.nodes[n]["nedges"] == 1
assert M.nodes[n]["nnodes"] == 2
@@ -181,8 +180,8 @@ class TestQuotient:
nx.add_path(G, range(6))
partition = [{0, 1}, {2, 3}, {4, 5}]
M = nx.quotient_graph(G, partition, relabel=True)
- assert_nodes_equal(M, [0, 1, 2])
- assert_edges_equal(M.edges(), [(0, 1), (1, 2)])
+ assert nodes_equal(M, [0, 1, 2])
+ assert edges_equal(M.edges(), [(0, 1), (1, 2)])
for n in M:
assert M.nodes[n]["nedges"] == 1
assert M.nodes[n]["nnodes"] == 2
@@ -200,8 +199,8 @@ class TestQuotient:
G[i][i + 1]["weight"] = i + 1
partition = [{0, 1}, {2, 3}, {4, 5}]
M = nx.quotient_graph(G, partition, relabel=True)
- assert_nodes_equal(M, [0, 1, 2])
- assert_edges_equal(M.edges(), [(0, 1), (1, 2)])
+ assert nodes_equal(M, [0, 1, 2])
+ assert edges_equal(M.edges(), [(0, 1), (1, 2)])
assert M[0][1]["weight"] == 2
assert M[1][2]["weight"] == 4
for n in M:
@@ -213,8 +212,8 @@ class TestQuotient:
G = nx.barbell_graph(3, 0)
partition = [{0, 1, 2}, {3, 4, 5}]
M = nx.quotient_graph(G, partition, relabel=True)
- assert_nodes_equal(M, [0, 1])
- assert_edges_equal(M.edges(), [(0, 1)])
+ assert nodes_equal(M, [0, 1])
+ assert edges_equal(M.edges(), [(0, 1)])
for n in M:
assert M.nodes[n]["nedges"] == 3
assert M.nodes[n]["nnodes"] == 3
@@ -226,8 +225,8 @@ class TestQuotient:
G.add_edge(0, 5)
partition = [{0, 1, 2}, {3, 4, 5}]
M = nx.quotient_graph(G, partition, relabel=True)
- assert_nodes_equal(M, [0, 1])
- assert_edges_equal(M.edges(), [(0, 1)])
+ assert nodes_equal(M, [0, 1])
+ assert edges_equal(M.edges(), [(0, 1)])
assert M[0][1]["weight"] == 2
for n in M:
assert M.nodes[n]["nedges"] == 3
@@ -238,8 +237,8 @@ class TestQuotient:
G = nx.path_graph(6)
partition = [[0, 1], [2, 3], [4, 5]]
M = nx.quotient_graph(G, partition, relabel=True)
- assert_nodes_equal(M.nodes(), [0, 1, 2])
- assert_edges_equal(M.edges(), [(0, 1), (1, 2)])
+ assert nodes_equal(M.nodes(), [0, 1, 2])
+ assert edges_equal(M.edges(), [(0, 1), (1, 2)])
for n in M.nodes():
assert M.nodes[n]["nedges"] == 1
assert M.nodes[n]["nnodes"] == 2
@@ -249,8 +248,8 @@ class TestQuotient:
G = nx.MultiGraph(nx.path_graph(6))
partition = [[0, 1], [2, 3], [4, 5]]
M = nx.quotient_graph(G, partition, create_using=nx.MultiGraph(), relabel=True)
- assert_nodes_equal(M.nodes(), [0, 1, 2])
- assert_edges_equal(M.edges(), [(0, 1), (1, 2)])
+ assert nodes_equal(M.nodes(), [0, 1, 2])
+ assert edges_equal(M.edges(), [(0, 1), (1, 2)])
for n in M.nodes():
assert M.nodes[n]["nedges"] == 1
assert M.nodes[n]["nnodes"] == 2
@@ -260,13 +259,13 @@ class TestQuotient:
G = nx.path_graph(6)
partition = []
H = nx.quotient_graph(G, partition, relabel=True)
- assert_nodes_equal(H.nodes(), [])
- assert_edges_equal(H.edges(), [])
+ assert nodes_equal(H.nodes(), [])
+ assert edges_equal(H.edges(), [])
partition = [[0, 1], [2, 3], [5]]
H = nx.quotient_graph(G, partition, relabel=True)
- assert_nodes_equal(H.nodes(), [0, 1, 2])
- assert_edges_equal(H.edges(), [(0, 1)])
+ assert nodes_equal(H.nodes(), [0, 1, 2])
+ assert edges_equal(H.edges(), [(0, 1)])
class TestContraction:
@@ -323,7 +322,7 @@ class TestContraction:
expected.add_edge(0, 1)
expected.add_edge(0, 0)
expected.add_edge(0, 0)
- assert_edges_equal(actual.edges, expected.edges)
+ assert edges_equal(actual.edges, expected.edges)
def test_multigraph_keys(self):
"""Tests that multiedge keys are reset in new graph."""
@@ -338,7 +337,7 @@ class TestContraction:
expected.add_edge(0, 1, 2) # keyed as 2 b/c 2 edges already in G
expected.add_edge(0, 0, 0)
expected.add_edge(0, 0, 1) # this comes from (0, 2, 5)
- assert_edges_equal(actual.edges, expected.edges)
+ assert edges_equal(actual.edges, expected.edges)
def test_node_attributes(self):
"""Tests that node contraction preserves node attributes."""
@@ -390,12 +389,12 @@ class TestContraction:
expected = nx.complete_graph([0, 2, 3])
expected.add_edge(0, 0)
expected.add_edge(0, 0)
- assert_edges_equal(actual.edges, expected.edges)
+ assert edges_equal(actual.edges, expected.edges)
actual = nx.contracted_nodes(G, 1, 0)
expected = nx.complete_graph([1, 2, 3])
expected.add_edge(1, 1)
expected.add_edge(1, 1)
- assert_edges_equal(actual.edges, expected.edges)
+ assert edges_equal(actual.edges, expected.edges)
def test_undirected_edge_contraction(self):
"""Tests for edge contraction in an undirected graph."""
diff --git a/networkx/algorithms/operators/tests/test_all.py b/networkx/algorithms/operators/tests/test_all.py
index 9502bbf9..bcb9127f 100644
--- a/networkx/algorithms/operators/tests/test_all.py
+++ b/networkx/algorithms/operators/tests/test_all.py
@@ -1,6 +1,6 @@
import pytest
import networkx as nx
-from networkx.testing import assert_edges_equal
+from networkx.utils import edges_equal
def test_union_all_attributes():
@@ -150,7 +150,7 @@ def test_union_all_and_compose_all():
G = nx.union_all([G1, G2])
H = nx.compose_all([G1, G2])
- assert_edges_equal(G.edges(), H.edges())
+ assert edges_equal(G.edges(), H.edges())
assert not G.has_edge("A", "1")
pytest.raises(nx.NetworkXError, nx.union, K3, P3)
H1 = nx.union_all([H, G1], rename=("H", "G1"))
@@ -188,7 +188,7 @@ def test_union_all_and_compose_all():
assert not H1.has_edge("NB", "NA")
G = nx.compose_all([G, G])
- assert_edges_equal(G.edges(), H.edges())
+ assert edges_equal(G.edges(), H.edges())
G2 = nx.union_all([G2, G2], rename=("", "copy"))
assert sorted(G2.nodes()) == [
diff --git a/networkx/algorithms/operators/tests/test_binary.py b/networkx/algorithms/operators/tests/test_binary.py
index c6b4adf9..d9e15403 100644
--- a/networkx/algorithms/operators/tests/test_binary.py
+++ b/networkx/algorithms/operators/tests/test_binary.py
@@ -1,6 +1,6 @@
import pytest
import networkx as nx
-from networkx.testing import assert_edges_equal
+from networkx.utils import edges_equal
def test_union_attributes():
@@ -236,7 +236,7 @@ def test_union_and_compose():
G = nx.union(G1, G2)
H = nx.compose(G1, G2)
- assert_edges_equal(G.edges(), H.edges())
+ assert edges_equal(G.edges(), H.edges())
assert not G.has_edge("A", 1)
pytest.raises(nx.NetworkXError, nx.union, K3, P3)
H1 = nx.union(H, G1, rename=("H", "G1"))
@@ -274,7 +274,7 @@ def test_union_and_compose():
assert not H1.has_edge("NB", "NA")
G = nx.compose(G, G)
- assert_edges_equal(G.edges(), H.edges())
+ assert edges_equal(G.edges(), H.edges())
G2 = nx.union(G2, G2, rename=("", "copy"))
assert sorted(G2.nodes()) == [
diff --git a/networkx/algorithms/operators/tests/test_product.py b/networkx/algorithms/operators/tests/test_product.py
index 2737233b..f79c1a2e 100644
--- a/networkx/algorithms/operators/tests/test_product.py
+++ b/networkx/algorithms/operators/tests/test_product.py
@@ -1,6 +1,6 @@
import pytest
import networkx as nx
-from networkx.testing import assert_edges_equal
+from networkx.utils import edges_equal
def test_tensor_product_raises():
@@ -375,7 +375,7 @@ def test_graph_power():
G.add_edge(9, 2)
H = nx.power(G, 2)
- assert_edges_equal(
+ assert edges_equal(
list(H.edges()),
[
(0, 1),
diff --git a/networkx/algorithms/tests/test_boundary.py b/networkx/algorithms/tests/test_boundary.py
index 16ac8eab..6e7c1b74 100644
--- a/networkx/algorithms/tests/test_boundary.py
+++ b/networkx/algorithms/tests/test_boundary.py
@@ -3,7 +3,7 @@
from itertools import combinations
import pytest
import networkx as nx
-from networkx.testing import assert_edges_equal
+from networkx.utils import edges_equal
from networkx import convert_node_labels_to_integers as cnlti
@@ -117,11 +117,11 @@ class TestEdgeBoundary:
assert ilen(nx.edge_boundary(K10, [4, 5, 6, 7])) == 24
assert ilen(nx.edge_boundary(K10, [3, 4, 5, 6, 7])) == 25
assert ilen(nx.edge_boundary(K10, [8, 9, 10])) == 21
- assert_edges_equal(
+ assert edges_equal(
nx.edge_boundary(K10, [4, 5, 6], [9, 10]),
[(4, 9), (4, 10), (5, 9), (5, 10), (6, 9), (6, 10)],
)
- assert_edges_equal(
+ assert edges_equal(
nx.edge_boundary(K10, [1, 2, 3], [3, 4, 5]),
[(1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5)],
)
diff --git a/networkx/algorithms/tests/test_core.py b/networkx/algorithms/tests/test_core.py
index a5392774..9caabfc1 100644
--- a/networkx/algorithms/tests/test_core.py
+++ b/networkx/algorithms/tests/test_core.py
@@ -1,5 +1,5 @@
import networkx as nx
-from networkx.testing.utils import assert_nodes_equal
+from networkx.utils import nodes_equal
class TestCore:
@@ -57,10 +57,10 @@ class TestCore:
nodes_by_core = [
sorted([n for n in core if core[n] == val]) for val in range(4)
]
- assert_nodes_equal(nodes_by_core[0], [21])
- assert_nodes_equal(nodes_by_core[1], [17, 18, 19, 20])
- assert_nodes_equal(nodes_by_core[2], [9, 10, 11, 12, 13, 14, 15, 16])
- assert_nodes_equal(nodes_by_core[3], [1, 2, 3, 4, 5, 6, 7, 8])
+ assert nodes_equal(nodes_by_core[0], [21])
+ assert nodes_equal(nodes_by_core[1], [17, 18, 19, 20])
+ assert nodes_equal(nodes_by_core[2], [9, 10, 11, 12, 13, 14, 15, 16])
+ assert nodes_equal(nodes_by_core[3], [1, 2, 3, 4, 5, 6, 7, 8])
def test_core_number(self):
# smoke test real name
@@ -71,9 +71,9 @@ class TestCore:
nodes_by_core = [
sorted([n for n in core if core[n] == val]) for val in range(3)
]
- assert_nodes_equal(nodes_by_core[0], [0])
- assert_nodes_equal(nodes_by_core[1], [1, 3])
- assert_nodes_equal(nodes_by_core[2], [2, 4, 5, 6])
+ assert nodes_equal(nodes_by_core[0], [0])
+ assert nodes_equal(nodes_by_core[1], [1, 3])
+ assert nodes_equal(nodes_by_core[2], [2, 4, 5, 6])
def test_directed_find_cores(self):
"""core number had a bug for directed graphs found in issue #1959"""
@@ -171,9 +171,9 @@ class TestCore:
nodes_by_layer = [
sorted([n for n in layers if layers[n] == val]) for val in range(1, 7)
]
- assert_nodes_equal(nodes_by_layer[0], [21])
- assert_nodes_equal(nodes_by_layer[1], [17, 18, 19, 20])
- assert_nodes_equal(nodes_by_layer[2], [10, 12, 13, 14, 15, 16])
- assert_nodes_equal(nodes_by_layer[3], [9, 11])
- assert_nodes_equal(nodes_by_layer[4], [1, 2, 4, 5, 6, 8])
- assert_nodes_equal(nodes_by_layer[5], [3, 7])
+ assert nodes_equal(nodes_by_layer[0], [21])
+ assert nodes_equal(nodes_by_layer[1], [17, 18, 19, 20])
+ assert nodes_equal(nodes_by_layer[2], [10, 12, 13, 14, 15, 16])
+ assert nodes_equal(nodes_by_layer[3], [9, 11])
+ assert nodes_equal(nodes_by_layer[4], [1, 2, 4, 5, 6, 8])
+ assert nodes_equal(nodes_by_layer[5], [3, 7])
diff --git a/networkx/algorithms/tests/test_dag.py b/networkx/algorithms/tests/test_dag.py
index c0fac32c..1472866d 100644
--- a/networkx/algorithms/tests/test_dag.py
+++ b/networkx/algorithms/tests/test_dag.py
@@ -4,8 +4,7 @@ from collections import deque
import pytest
import networkx as nx
-from networkx.testing.utils import assert_edges_equal
-from networkx.utils import pairwise
+from networkx.utils import edges_equal, pairwise
# Recipe from the itertools documentation.
def _consume(iterator):
@@ -283,14 +282,14 @@ class TestDAG:
def test_transitive_closure(self):
G = nx.DiGraph([(1, 2), (2, 3), (3, 4)])
solution = [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
- assert_edges_equal(nx.transitive_closure(G).edges(), solution)
+ assert edges_equal(nx.transitive_closure(G).edges(), solution)
G = nx.DiGraph([(1, 2), (2, 3), (2, 4)])
solution = [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4)]
- assert_edges_equal(nx.transitive_closure(G).edges(), solution)
+ assert edges_equal(nx.transitive_closure(G).edges(), solution)
G = nx.DiGraph([(1, 2), (2, 3), (3, 1)])
solution = [(1, 2), (2, 1), (2, 3), (3, 2), (1, 3), (3, 1)]
soln = sorted(solution + [(n, n) for n in G])
- assert_edges_equal(sorted(nx.transitive_closure(G).edges()), soln)
+ assert edges_equal(sorted(nx.transitive_closure(G).edges()), soln)
G = nx.Graph([(1, 2), (2, 3), (3, 4)])
pytest.raises(nx.NetworkXNotImplemented, nx.transitive_closure, G)
@@ -310,35 +309,35 @@ class TestDAG:
G = nx.DiGraph([(1, 2), (2, 3), (3, 4)])
solution = [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
soln = sorted(solution + [(n, n) for n in G])
- assert_edges_equal(nx.transitive_closure(G).edges(), solution)
- assert_edges_equal(nx.transitive_closure(G, False).edges(), solution)
- assert_edges_equal(nx.transitive_closure(G, True).edges(), soln)
- assert_edges_equal(nx.transitive_closure(G, None).edges(), solution)
+ assert edges_equal(nx.transitive_closure(G).edges(), solution)
+ assert edges_equal(nx.transitive_closure(G, False).edges(), solution)
+ assert edges_equal(nx.transitive_closure(G, True).edges(), soln)
+ assert edges_equal(nx.transitive_closure(G, None).edges(), solution)
G = nx.DiGraph([(1, 2), (2, 3), (2, 4)])
solution = [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4)]
soln = sorted(solution + [(n, n) for n in G])
- assert_edges_equal(nx.transitive_closure(G).edges(), solution)
- assert_edges_equal(nx.transitive_closure(G, False).edges(), solution)
- assert_edges_equal(nx.transitive_closure(G, True).edges(), soln)
- assert_edges_equal(nx.transitive_closure(G, None).edges(), solution)
+ assert edges_equal(nx.transitive_closure(G).edges(), solution)
+ assert edges_equal(nx.transitive_closure(G, False).edges(), solution)
+ assert edges_equal(nx.transitive_closure(G, True).edges(), soln)
+ assert edges_equal(nx.transitive_closure(G, None).edges(), solution)
G = nx.DiGraph([(1, 2), (2, 3), (3, 1)])
solution = sorted([(1, 2), (2, 1), (2, 3), (3, 2), (1, 3), (3, 1)])
soln = sorted(solution + [(n, n) for n in G])
- assert_edges_equal(sorted(nx.transitive_closure(G).edges()), soln)
- assert_edges_equal(sorted(nx.transitive_closure(G, False).edges()), soln)
- assert_edges_equal(sorted(nx.transitive_closure(G, None).edges()), solution)
- assert_edges_equal(sorted(nx.transitive_closure(G, True).edges()), soln)
+ assert edges_equal(sorted(nx.transitive_closure(G).edges()), soln)
+ assert edges_equal(sorted(nx.transitive_closure(G, False).edges()), soln)
+ assert edges_equal(sorted(nx.transitive_closure(G, None).edges()), solution)
+ assert edges_equal(sorted(nx.transitive_closure(G, True).edges()), soln)
def test_transitive_closure_dag(self):
G = nx.DiGraph([(1, 2), (2, 3), (3, 4)])
transitive_closure = nx.algorithms.dag.transitive_closure_dag
solution = [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
- assert_edges_equal(transitive_closure(G).edges(), solution)
+ assert edges_equal(transitive_closure(G).edges(), solution)
G = nx.DiGraph([(1, 2), (2, 3), (2, 4)])
solution = [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4)]
- assert_edges_equal(transitive_closure(G).edges(), solution)
+ assert edges_equal(transitive_closure(G).edges(), solution)
G = nx.Graph([(1, 2), (2, 3), (3, 4)])
pytest.raises(nx.NetworkXNotImplemented, transitive_closure, G)
@@ -358,11 +357,11 @@ class TestDAG:
G = nx.DiGraph([(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)])
transitive_reduction = nx.algorithms.dag.transitive_reduction
solution = [(1, 2), (2, 3), (3, 4)]
- assert_edges_equal(transitive_reduction(G).edges(), solution)
+ assert edges_equal(transitive_reduction(G).edges(), solution)
G = nx.DiGraph([(1, 2), (1, 3), (1, 4), (2, 3), (2, 4)])
transitive_reduction = nx.algorithms.dag.transitive_reduction
solution = [(1, 2), (2, 3), (2, 4)]
- assert_edges_equal(transitive_reduction(G).edges(), solution)
+ assert edges_equal(transitive_reduction(G).edges(), solution)
G = nx.Graph([(1, 2), (2, 3), (3, 4)])
pytest.raises(nx.NetworkXNotImplemented, transitive_reduction, G)
diff --git a/networkx/algorithms/tests/test_link_prediction.py b/networkx/algorithms/tests/test_link_prediction.py
index 34b58c4c..bbb58299 100644
--- a/networkx/algorithms/tests/test_link_prediction.py
+++ b/networkx/algorithms/tests/test_link_prediction.py
@@ -13,7 +13,7 @@ def _test_func(G, ebunch, expected, predict_func, **kwargs):
assert len(exp_dict) == len(res_dict)
for p in exp_dict:
- assert nx.testing.almost_equal(exp_dict[p], res_dict[p], places=7)
+ assert exp_dict[p] == pytest.approx(res_dict[p], abs=1e-7)
class TestResourceAllocationIndex:
diff --git a/networkx/algorithms/tests/test_matching.py b/networkx/algorithms/tests/test_matching.py
index 5252e1cc..0487227f 100644
--- a/networkx/algorithms/tests/test_matching.py
+++ b/networkx/algorithms/tests/test_matching.py
@@ -4,7 +4,7 @@ import math
import networkx as nx
from networkx.algorithms.matching import matching_dict_to_set
-from networkx.testing import assert_edges_equal
+from networkx.utils import edges_equal
class TestMaxWeightMatching:
@@ -30,10 +30,10 @@ class TestMaxWeightMatching:
"""Single edge"""
G = nx.Graph()
G.add_edge(0, 1)
- assert_edges_equal(
+ assert edges_equal(
nx.max_weight_matching(G), matching_dict_to_set({0: 1, 1: 0})
)
- assert_edges_equal(
+ assert edges_equal(
nx.min_weight_matching(G), matching_dict_to_set({0: 1, 1: 0})
)
@@ -42,11 +42,11 @@ class TestMaxWeightMatching:
G = nx.Graph()
G.add_edge("one", "two", weight=10)
G.add_edge("two", "three", weight=11)
- assert_edges_equal(
+ assert edges_equal(
nx.max_weight_matching(G),
matching_dict_to_set({"three": "two", "two": "three"}),
)
- assert_edges_equal(
+ assert edges_equal(
nx.min_weight_matching(G),
matching_dict_to_set({"one": "two", "two": "one"}),
)
@@ -57,16 +57,16 @@ class TestMaxWeightMatching:
G.add_edge(1, 2, weight=5)
G.add_edge(2, 3, weight=11)
G.add_edge(3, 4, weight=5)
- assert_edges_equal(
+ assert edges_equal(
nx.max_weight_matching(G), matching_dict_to_set({2: 3, 3: 2})
)
- assert_edges_equal(
+ assert edges_equal(
nx.max_weight_matching(G, 1), matching_dict_to_set({1: 2, 2: 1, 3: 4, 4: 3})
)
- assert_edges_equal(
+ assert edges_equal(
nx.min_weight_matching(G), matching_dict_to_set({1: 2, 3: 4})
)
- assert_edges_equal(
+ assert edges_equal(
nx.min_weight_matching(G, 1), matching_dict_to_set({1: 2, 3: 4})
)
@@ -75,11 +75,11 @@ class TestMaxWeightMatching:
G = nx.Graph()
G.add_edge("one", "two", weight=10, abcd=11)
G.add_edge("two", "three", weight=11, abcd=10)
- assert_edges_equal(
+ assert edges_equal(
nx.max_weight_matching(G, weight="abcd"),
matching_dict_to_set({"one": "two", "two": "one"}),
)
- assert_edges_equal(
+ assert edges_equal(
nx.min_weight_matching(G, weight="abcd"),
matching_dict_to_set({"three": "two"}),
)
@@ -91,10 +91,10 @@ class TestMaxWeightMatching:
G.add_edge(2, 3, weight=math.exp(1))
G.add_edge(1, 3, weight=3.0)
G.add_edge(1, 4, weight=math.sqrt(2.0))
- assert_edges_equal(
+ assert edges_equal(
nx.max_weight_matching(G), matching_dict_to_set({1: 4, 2: 3, 3: 2, 4: 1})
)
- assert_edges_equal(
+ assert edges_equal(
nx.min_weight_matching(G), matching_dict_to_set({1: 4, 2: 3, 3: 2, 4: 1})
)
@@ -106,16 +106,16 @@ class TestMaxWeightMatching:
G.add_edge(2, 3, weight=1)
G.add_edge(2, 4, weight=-1)
G.add_edge(3, 4, weight=-6)
- assert_edges_equal(
+ assert edges_equal(
nx.max_weight_matching(G), matching_dict_to_set({1: 2, 2: 1})
)
- assert_edges_equal(
+ assert edges_equal(
nx.max_weight_matching(G, 1), matching_dict_to_set({1: 3, 2: 4, 3: 1, 4: 2})
)
- assert_edges_equal(
+ assert edges_equal(
nx.min_weight_matching(G), matching_dict_to_set({1: 2, 3: 4})
)
- assert_edges_equal(
+ assert edges_equal(
nx.min_weight_matching(G, 1), matching_dict_to_set({1: 2, 3: 4})
)
@@ -124,13 +124,13 @@ class TestMaxWeightMatching:
G = nx.Graph()
G.add_weighted_edges_from([(1, 2, 8), (1, 3, 9), (2, 3, 10), (3, 4, 7)])
answer = matching_dict_to_set({1: 2, 2: 1, 3: 4, 4: 3})
- assert_edges_equal(nx.max_weight_matching(G), answer)
- assert_edges_equal(nx.min_weight_matching(G), answer)
+ assert edges_equal(nx.max_weight_matching(G), answer)
+ assert edges_equal(nx.min_weight_matching(G), answer)
G.add_weighted_edges_from([(1, 6, 5), (4, 5, 6)])
answer = matching_dict_to_set({1: 6, 2: 3, 3: 2, 4: 5, 5: 4, 6: 1})
- assert_edges_equal(nx.max_weight_matching(G), answer)
- assert_edges_equal(nx.min_weight_matching(G), answer)
+ assert edges_equal(nx.max_weight_matching(G), answer)
+ assert edges_equal(nx.min_weight_matching(G), answer)
def test_s_t_blossom(self):
"""Create S-blossom, relabel as T-blossom, use for augmentation:"""
@@ -139,19 +139,19 @@ class TestMaxWeightMatching:
[(1, 2, 9), (1, 3, 8), (2, 3, 10), (1, 4, 5), (4, 5, 4), (1, 6, 3)]
)
answer = matching_dict_to_set({1: 6, 2: 3, 3: 2, 4: 5, 5: 4, 6: 1})
- assert_edges_equal(nx.max_weight_matching(G), answer)
- assert_edges_equal(nx.min_weight_matching(G), answer)
+ assert edges_equal(nx.max_weight_matching(G), answer)
+ assert edges_equal(nx.min_weight_matching(G), answer)
G.add_edge(4, 5, weight=3)
G.add_edge(1, 6, weight=4)
- assert_edges_equal(nx.max_weight_matching(G), answer)
- assert_edges_equal(nx.min_weight_matching(G), answer)
+ assert edges_equal(nx.max_weight_matching(G), answer)
+ assert edges_equal(nx.min_weight_matching(G), answer)
G.remove_edge(1, 6)
G.add_edge(3, 6, weight=4)
answer = matching_dict_to_set({1: 2, 2: 1, 3: 6, 4: 5, 5: 4, 6: 3})
- assert_edges_equal(nx.max_weight_matching(G), answer)
- assert_edges_equal(nx.min_weight_matching(G), answer)
+ assert edges_equal(nx.max_weight_matching(G), answer)
+ assert edges_equal(nx.min_weight_matching(G), answer)
def test_nested_s_blossom(self):
"""Create nested S-blossom, use for augmentation:"""
@@ -192,8 +192,8 @@ class TestMaxWeightMatching:
]
)
answer = matching_dict_to_set({1: 2, 2: 1, 3: 4, 4: 3, 5: 6, 6: 5, 7: 8, 8: 7})
- assert_edges_equal(nx.max_weight_matching(G), answer)
- assert_edges_equal(nx.min_weight_matching(G), answer)
+ assert edges_equal(nx.max_weight_matching(G), answer)
+ assert edges_equal(nx.min_weight_matching(G), answer)
def test_nested_s_blossom_expand(self):
"""Create nested S-blossom, augment, expand recursively:"""
@@ -213,8 +213,8 @@ class TestMaxWeightMatching:
]
)
answer = matching_dict_to_set({1: 2, 2: 1, 3: 5, 4: 6, 5: 3, 6: 4, 7: 8, 8: 7})
- assert_edges_equal(nx.max_weight_matching(G), answer)
- assert_edges_equal(nx.min_weight_matching(G), answer)
+ assert edges_equal(nx.max_weight_matching(G), answer)
+ assert edges_equal(nx.min_weight_matching(G), answer)
def test_s_blossom_relabel_expand(self):
"""Create S-blossom, relabel as T, expand:"""
@@ -232,8 +232,8 @@ class TestMaxWeightMatching:
]
)
answer = matching_dict_to_set({1: 6, 2: 3, 3: 2, 4: 8, 5: 7, 6: 1, 7: 5, 8: 4})
- assert_edges_equal(nx.max_weight_matching(G), answer)
- assert_edges_equal(nx.min_weight_matching(G), answer)
+ assert edges_equal(nx.max_weight_matching(G), answer)
+ assert edges_equal(nx.min_weight_matching(G), answer)
def test_nested_s_blossom_relabel_expand(self):
"""Create nested S-blossom, relabel as T, expand:"""
@@ -252,8 +252,8 @@ class TestMaxWeightMatching:
]
)
answer = matching_dict_to_set({1: 8, 2: 3, 3: 2, 4: 7, 5: 6, 6: 5, 7: 4, 8: 1})
- assert_edges_equal(nx.max_weight_matching(G), answer)
- assert_edges_equal(nx.min_weight_matching(G), answer)
+ assert edges_equal(nx.max_weight_matching(G), answer)
+ assert edges_equal(nx.min_weight_matching(G), answer)
def test_nasty_blossom1(self):
"""Create blossom, relabel as T in more than one way, expand,
@@ -276,8 +276,8 @@ class TestMaxWeightMatching:
)
ansdict = {1: 6, 2: 3, 3: 2, 4: 8, 5: 7, 6: 1, 7: 5, 8: 4, 9: 10, 10: 9}
answer = matching_dict_to_set(ansdict)
- assert_edges_equal(nx.max_weight_matching(G), answer)
- assert_edges_equal(nx.min_weight_matching(G), answer)
+ assert edges_equal(nx.max_weight_matching(G), answer)
+ assert edges_equal(nx.min_weight_matching(G), answer)
def test_nasty_blossom2(self):
"""Again but slightly different:"""
@@ -298,8 +298,8 @@ class TestMaxWeightMatching:
)
ans = {1: 6, 2: 3, 3: 2, 4: 8, 5: 7, 6: 1, 7: 5, 8: 4, 9: 10, 10: 9}
answer = matching_dict_to_set(ans)
- assert_edges_equal(nx.max_weight_matching(G), answer)
- assert_edges_equal(nx.min_weight_matching(G), answer)
+ assert edges_equal(nx.max_weight_matching(G), answer)
+ assert edges_equal(nx.min_weight_matching(G), answer)
def test_nasty_blossom_least_slack(self):
"""Create blossom, relabel as T, expand such that a new
@@ -322,8 +322,8 @@ class TestMaxWeightMatching:
)
ans = {1: 6, 2: 3, 3: 2, 4: 8, 5: 7, 6: 1, 7: 5, 8: 4, 9: 10, 10: 9}
answer = matching_dict_to_set(ans)
- assert_edges_equal(nx.max_weight_matching(G), answer)
- assert_edges_equal(nx.min_weight_matching(G), answer)
+ assert edges_equal(nx.max_weight_matching(G), answer)
+ assert edges_equal(nx.min_weight_matching(G), answer)
def test_nasty_blossom_augmenting(self):
"""Create nested blossom, relabel as T in more than one way"""
@@ -362,8 +362,8 @@ class TestMaxWeightMatching:
12: 11,
}
answer = matching_dict_to_set(ans)
- assert_edges_equal(nx.max_weight_matching(G), answer)
- assert_edges_equal(nx.min_weight_matching(G), answer)
+ assert edges_equal(nx.max_weight_matching(G), answer)
+ assert edges_equal(nx.min_weight_matching(G), answer)
def test_nasty_blossom_expand_recursively(self):
"""Create nested S-blossom, relabel as S, expand recursively:"""
@@ -385,8 +385,8 @@ class TestMaxWeightMatching:
)
ans = {1: 2, 2: 1, 3: 5, 4: 9, 5: 3, 6: 7, 7: 6, 8: 10, 9: 4, 10: 8}
answer = matching_dict_to_set(ans)
- assert_edges_equal(nx.max_weight_matching(G), answer)
- assert_edges_equal(nx.min_weight_matching(G), answer)
+ assert edges_equal(nx.max_weight_matching(G), answer)
+ assert edges_equal(nx.min_weight_matching(G), answer)
def test_wrong_graph_type(self):
error = nx.NetworkXNotImplemented
diff --git a/networkx/algorithms/tree/tests/test_coding.py b/networkx/algorithms/tree/tests/test_coding.py
index 845ad720..42568aff 100644
--- a/networkx/algorithms/tree/tests/test_coding.py
+++ b/networkx/algorithms/tree/tests/test_coding.py
@@ -3,8 +3,7 @@ from itertools import product
import pytest
import networkx as nx
-from networkx.testing import assert_nodes_equal
-from networkx.testing import assert_edges_equal
+from networkx.utils import nodes_equal, edges_equal
class TestPruferSequence:
@@ -46,24 +45,24 @@ class TestPruferSequence:
# Example from Wikipedia.
sequence = [3, 3, 3, 4]
tree = nx.from_prufer_sequence(sequence)
- assert_nodes_equal(list(tree), list(range(6)))
+ assert nodes_equal(list(tree), list(range(6)))
edges = [(0, 3), (1, 3), (2, 3), (3, 4), (4, 5)]
- assert_edges_equal(list(tree.edges()), edges)
+ assert edges_equal(list(tree.edges()), edges)
def test_decoding2(self):
# Example from "An Optimal Algorithm for Prufer Codes".
sequence = [2, 4, 0, 1, 3, 3]
tree = nx.from_prufer_sequence(sequence)
- assert_nodes_equal(list(tree), list(range(8)))
+ assert nodes_equal(list(tree), list(range(8)))
edges = [(0, 1), (0, 4), (1, 3), (2, 4), (2, 5), (3, 6), (3, 7)]
- assert_edges_equal(list(tree.edges()), edges)
+ assert edges_equal(list(tree.edges()), edges)
def test_inverse(self):
"""Tests that the encoding and decoding functions are inverses."""
for T in nx.nonisomorphic_trees(4):
T2 = nx.from_prufer_sequence(nx.to_prufer_sequence(T))
- assert_nodes_equal(list(T), list(T2))
- assert_edges_equal(list(T.edges()), list(T2.edges()))
+ assert nodes_equal(list(T), list(T2))
+ assert edges_equal(list(T.edges()), list(T2.edges()))
for seq in product(range(4), repeat=2):
seq2 = nx.to_prufer_sequence(nx.from_prufer_sequence(seq))
@@ -87,7 +86,7 @@ class TestNestedTuple:
T = nx.full_rary_tree(2, 2 ** 3 - 1)
expected = (((), ()), ((), ()))
actual = nx.to_nested_tuple(T, 0)
- assert_nodes_equal(expected, actual)
+ assert nodes_equal(expected, actual)
def test_canonical_form(self):
T = nx.Graph()
@@ -109,5 +108,5 @@ class TestNestedTuple:
balanced = (((), ()), ((), ()))
T = nx.from_nested_tuple(balanced, sensible_relabeling=True)
edges = [(0, 1), (0, 2), (1, 3), (1, 4), (2, 5), (2, 6)]
- assert_nodes_equal(list(T), list(range(2 ** 3 - 1)))
- assert_edges_equal(list(T.edges()), edges)
+ assert nodes_equal(list(T), list(range(2 ** 3 - 1)))
+ assert edges_equal(list(T.edges()), edges)
diff --git a/networkx/algorithms/tree/tests/test_mst.py b/networkx/algorithms/tree/tests/test_mst.py
index cc042e05..5253a29f 100644
--- a/networkx/algorithms/tree/tests/test_mst.py
+++ b/networkx/algorithms/tree/tests/test_mst.py
@@ -3,7 +3,7 @@
import pytest
import networkx as nx
-from networkx.testing import assert_nodes_equal, assert_edges_equal
+from networkx.utils import nodes_equal, edges_equal
def test_unknown_algorithm():
@@ -69,14 +69,14 @@ class MinimumSpanningTreeTestBase:
# Edges from the spanning edges functions don't come in sorted
# orientation, so we need to sort each edge individually.
actual = sorted((min(u, v), max(u, v), d) for u, v, d in edges)
- assert_edges_equal(actual, self.minimum_spanning_edgelist)
+ assert edges_equal(actual, self.minimum_spanning_edgelist)
def test_maximum_edges(self):
edges = nx.maximum_spanning_edges(self.G, algorithm=self.algo)
# Edges from the spanning edges functions don't come in sorted
# orientation, so we need to sort each edge individually.
actual = sorted((min(u, v), max(u, v), d) for u, v, d in edges)
- assert_edges_equal(actual, self.maximum_spanning_edgelist)
+ assert edges_equal(actual, self.maximum_spanning_edgelist)
def test_without_data(self):
edges = nx.minimum_spanning_edges(self.G, algorithm=self.algo, data=False)
@@ -84,7 +84,7 @@ class MinimumSpanningTreeTestBase:
# orientation, so we need to sort each edge individually.
actual = sorted((min(u, v), max(u, v)) for u, v in edges)
expected = [(u, v) for u, v, d in self.minimum_spanning_edgelist]
- assert_edges_equal(actual, expected)
+ assert edges_equal(actual, expected)
def test_nan_weights(self):
# Edge weights NaN never appear in the spanning tree. see #2164
@@ -95,7 +95,7 @@ class MinimumSpanningTreeTestBase:
)
actual = sorted((min(u, v), max(u, v)) for u, v in edges)
expected = [(u, v) for u, v, d in self.minimum_spanning_edgelist]
- assert_edges_equal(actual, expected)
+ assert edges_equal(actual, expected)
# Now test for raising exception
edges = nx.minimum_spanning_edges(
G, algorithm=self.algo, data=False, ignore_nan=False
@@ -130,7 +130,7 @@ class MinimumSpanningTreeTestBase:
)
actual = sorted((min(u, v), max(u, v)) for u, v in edges)
shift = [(u + 1, v + 1) for u, v, d in self.minimum_spanning_edgelist]
- assert_edges_equal(actual, shift)
+ assert edges_equal(actual, shift)
def test_isolated_node(self):
# now try again with an isolated node
@@ -155,28 +155,28 @@ class MinimumSpanningTreeTestBase:
)
actual = sorted((min(u, v), max(u, v)) for u, v in edges)
shift = [(u + 1, v + 1) for u, v, d in self.minimum_spanning_edgelist]
- assert_edges_equal(actual, shift)
+ assert edges_equal(actual, shift)
def test_minimum_tree(self):
T = nx.minimum_spanning_tree(self.G, algorithm=self.algo)
actual = sorted(T.edges(data=True))
- assert_edges_equal(actual, self.minimum_spanning_edgelist)
+ assert edges_equal(actual, self.minimum_spanning_edgelist)
def test_maximum_tree(self):
T = nx.maximum_spanning_tree(self.G, algorithm=self.algo)
actual = sorted(T.edges(data=True))
- assert_edges_equal(actual, self.maximum_spanning_edgelist)
+ assert edges_equal(actual, self.maximum_spanning_edgelist)
def test_disconnected(self):
G = nx.Graph([(0, 1, dict(weight=1)), (2, 3, dict(weight=2))])
T = nx.minimum_spanning_tree(G, algorithm=self.algo)
- assert_nodes_equal(list(T), list(range(4)))
- assert_edges_equal(list(T.edges()), [(0, 1), (2, 3)])
+ assert nodes_equal(list(T), list(range(4)))
+ assert edges_equal(list(T.edges()), [(0, 1), (2, 3)])
def test_empty_graph(self):
G = nx.empty_graph(3)
T = nx.minimum_spanning_tree(G, algorithm=self.algo)
- assert_nodes_equal(sorted(T), list(range(3)))
+ assert nodes_equal(sorted(T), list(range(3)))
assert T.number_of_edges() == 0
def test_attributes(self):
@@ -187,7 +187,7 @@ class MinimumSpanningTreeTestBase:
G.graph["foo"] = "bar"
T = nx.minimum_spanning_tree(G, algorithm=self.algo)
assert T.graph == G.graph
- assert_nodes_equal(T, G)
+ assert nodes_equal(T, G)
for u, v in T.edges():
assert T.adj[u][v] == G.adj[u][v]
@@ -198,11 +198,11 @@ class MinimumSpanningTreeTestBase:
G.add_edge(1, 2, weight=1, distance=1)
G.add_node(3)
T = nx.minimum_spanning_tree(G, algorithm=self.algo, weight="distance")
- assert_nodes_equal(sorted(T), list(range(4)))
- assert_edges_equal(sorted(T.edges()), [(0, 2), (1, 2)])
+ assert nodes_equal(sorted(T), list(range(4)))
+ assert edges_equal(sorted(T.edges()), [(0, 2), (1, 2)])
T = nx.maximum_spanning_tree(G, algorithm=self.algo, weight="distance")
- assert_nodes_equal(sorted(T), list(range(4)))
- assert_edges_equal(sorted(T.edges()), [(0, 1), (0, 2)])
+ assert nodes_equal(sorted(T), list(range(4)))
+ assert edges_equal(sorted(T.edges()), [(0, 1), (0, 2)])
class TestBoruvka(MinimumSpanningTreeTestBase):
@@ -222,7 +222,7 @@ class TestBoruvka(MinimumSpanningTreeTestBase):
# Edges from the spanning edges functions don't come in sorted
# orientation, so we need to sort each edge individually.
actual = sorted((min(u, v), max(u, v), d) for u, v, d in edges)
- assert_edges_equal(actual, self.minimum_spanning_edgelist)
+ assert edges_equal(actual, self.minimum_spanning_edgelist)
class MultigraphMSTTestBase(MinimumSpanningTreeTestBase):
@@ -238,7 +238,7 @@ class MultigraphMSTTestBase(MinimumSpanningTreeTestBase):
G.add_edge(0, 1, key="b", weight=1)
min_edges = nx.minimum_spanning_edges
mst_edges = min_edges(G, algorithm=self.algo, data=False)
- assert_edges_equal([(0, 1, "b")], list(mst_edges))
+ assert edges_equal([(0, 1, "b")], list(mst_edges))
def test_multigraph_keys_max(self):
"""Tests that the maximum spanning edges of a multigraph
@@ -250,7 +250,7 @@ class MultigraphMSTTestBase(MinimumSpanningTreeTestBase):
G.add_edge(0, 1, key="b", weight=1)
max_edges = nx.maximum_spanning_edges
mst_edges = max_edges(G, algorithm=self.algo, data=False)
- assert_edges_equal([(0, 1, "a")], list(mst_edges))
+ assert edges_equal([(0, 1, "a")], list(mst_edges))
class TestKruskal(MultigraphMSTTestBase):
@@ -275,11 +275,11 @@ class TestPrim(MultigraphMSTTestBase):
G.add_edge(0, 1, key="a", weight=2)
G.add_edge(0, 1, key="b", weight=1)
T = nx.minimum_spanning_tree(G)
- assert_edges_equal([(0, 1, 1)], list(T.edges(data="weight")))
+ assert edges_equal([(0, 1, 1)], list(T.edges(data="weight")))
def test_multigraph_keys_tree_max(self):
G = nx.MultiGraph()
G.add_edge(0, 1, key="a", weight=2)
G.add_edge(0, 1, key="b", weight=1)
T = nx.maximum_spanning_tree(G)
- assert_edges_equal([(0, 1, 2)], list(T.edges(data="weight")))
+ assert edges_equal([(0, 1, 2)], list(T.edges(data="weight")))
diff --git a/networkx/algorithms/tree/tests/test_operations.py b/networkx/algorithms/tree/tests/test_operations.py
index 21b2afde..3f580dde 100644
--- a/networkx/algorithms/tree/tests/test_operations.py
+++ b/networkx/algorithms/tree/tests/test_operations.py
@@ -3,8 +3,7 @@
"""
import networkx as nx
-from networkx.testing import assert_nodes_equal
-from networkx.testing import assert_edges_equal
+from networkx.utils import nodes_equal, edges_equal
class TestJoin:
@@ -27,8 +26,8 @@ class TestJoin:
T = nx.empty_graph(1)
actual = nx.join([(T, 0)])
expected = nx.path_graph(2)
- assert_nodes_equal(list(expected), list(actual))
- assert_edges_equal(list(expected.edges()), list(actual.edges()))
+ assert nodes_equal(list(expected), list(actual))
+ assert edges_equal(list(expected.edges()), list(actual.edges()))
def test_basic(self):
"""Tests for joining multiple subtrees at a root node."""
diff --git a/networkx/classes/tests/historical_tests.py b/networkx/classes/tests/historical_tests.py
index f41f94da..daa5dbaf 100644
--- a/networkx/classes/tests/historical_tests.py
+++ b/networkx/classes/tests/historical_tests.py
@@ -2,7 +2,7 @@
import pytest
import networkx as nx
from networkx import convert_node_labels_to_integers as cnlti
-from networkx.testing import assert_edges_equal, assert_nodes_equal
+from networkx.utils import nodes_equal, edges_equal
class HistoricalTests:
@@ -258,22 +258,22 @@ class HistoricalTests:
else:
elist = [("A", "B"), ("A", "C"), ("B", "C"), ("B", "D")]
# nbunch can be a list
- assert_edges_equal(list(G.edges(["A", "B"])), elist)
+ assert edges_equal(list(G.edges(["A", "B"])), elist)
# nbunch can be a set
- assert_edges_equal(G.edges({"A", "B"}), elist)
+ assert edges_equal(G.edges({"A", "B"}), elist)
# nbunch can be a graph
G1 = self.G()
G1.add_nodes_from("AB")
- assert_edges_equal(G.edges(G1), elist)
+ assert edges_equal(G.edges(G1), elist)
# nbunch can be a dict with nodes as keys
ndict = {"A": "thing1", "B": "thing2"}
- assert_edges_equal(G.edges(ndict), elist)
+ assert edges_equal(G.edges(ndict), elist)
# nbunch can be a single node
- assert_edges_equal(list(G.edges("A")), [("A", "B"), ("A", "C")])
- assert_nodes_equal(sorted(G), ["A", "B", "C", "D"])
+ assert edges_equal(list(G.edges("A")), [("A", "B"), ("A", "C")])
+ assert nodes_equal(sorted(G), ["A", "B", "C", "D"])
# nbunch can be nothing (whole graph)
- assert_edges_equal(
+ assert edges_equal(
list(G.edges()),
[("A", "B"), ("A", "C"), ("B", "D"), ("C", "B"), ("C", "D")],
)
@@ -330,8 +330,8 @@ class HistoricalTests:
G = self.G()
G.add_edges_from([("A", "B"), ("A", "C"), ("B", "D"), ("C", "B"), ("C", "D")])
SG = G.subgraph(["A", "B", "D"])
- assert_nodes_equal(list(SG), ["A", "B", "D"])
- assert_edges_equal(list(SG.edges()), [("A", "B"), ("B", "D")])
+ assert nodes_equal(list(SG), ["A", "B", "D"])
+ assert edges_equal(list(SG.edges()), [("A", "B"), ("B", "D")])
def test_to_directed(self):
G = self.G()
@@ -400,7 +400,7 @@ class HistoricalTests:
G.add_edges_from([("A", "B"), ("A", "C"), ("B", "D"), ("C", "B"), ("C", "D")])
G.add_nodes_from("GJK")
assert sorted(G.nodes()) == ["A", "B", "C", "D", "G", "J", "K"]
- assert_edges_equal(
+ assert edges_equal(
G.edges(), [("A", "B"), ("A", "C"), ("B", "D"), ("C", "B"), ("C", "D")]
)
diff --git a/networkx/classes/tests/test_digraph.py b/networkx/classes/tests/test_digraph.py
index 76702827..0eb12079 100644
--- a/networkx/classes/tests/test_digraph.py
+++ b/networkx/classes/tests/test_digraph.py
@@ -1,7 +1,7 @@
import pytest
import networkx as nx
-from networkx.testing import assert_nodes_equal
+from networkx.utils import nodes_equal
from .test_graph import BaseGraphTester, BaseAttrGraphTester
from .test_graph import TestGraph as _TestGraph
from .test_graph import TestEdgeSubgraph as _TestGraphEdgeSubgraph
@@ -128,7 +128,7 @@ class BaseDiGraphTester(BaseGraphTester):
y = Foo()
G = nx.DiGraph()
G.add_edge(x, y)
- assert_nodes_equal(G.nodes(), G.reverse().nodes())
+ assert nodes_equal(G.nodes(), G.reverse().nodes())
assert [(y, x)] == list(G.reverse().edges())
diff --git a/networkx/classes/tests/test_function.py b/networkx/classes/tests/test_function.py
index 9723f434..5c3fbe95 100644
--- a/networkx/classes/tests/test_function.py
+++ b/networkx/classes/tests/test_function.py
@@ -1,7 +1,7 @@
import random
import pytest
import networkx as nx
-from networkx.testing.utils import assert_edges_equal, assert_nodes_equal
+from networkx.utils import nodes_equal, edges_equal
class TestFunction:
@@ -17,13 +17,13 @@ class TestFunction:
self.DGedges = [(0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2)]
def test_nodes(self):
- assert_nodes_equal(self.G.nodes(), list(nx.nodes(self.G)))
- assert_nodes_equal(self.DG.nodes(), list(nx.nodes(self.DG)))
+ assert nodes_equal(self.G.nodes(), list(nx.nodes(self.G)))
+ assert nodes_equal(self.DG.nodes(), list(nx.nodes(self.DG)))
def test_edges(self):
- assert_edges_equal(self.G.edges(), list(nx.edges(self.G)))
+ assert edges_equal(self.G.edges(), list(nx.edges(self.G)))
assert sorted(self.DG.edges()) == sorted(nx.edges(self.DG))
- assert_edges_equal(
+ assert edges_equal(
self.G.edges(nbunch=[0, 1, 3]), list(nx.edges(self.G, nbunch=[0, 1, 3]))
)
assert sorted(self.DG.edges(nbunch=[0, 1, 3])) == sorted(
@@ -31,15 +31,15 @@ class TestFunction:
)
def test_degree(self):
- assert_edges_equal(self.G.degree(), list(nx.degree(self.G)))
+ assert edges_equal(self.G.degree(), list(nx.degree(self.G)))
assert sorted(self.DG.degree()) == sorted(nx.degree(self.DG))
- assert_edges_equal(
+ assert edges_equal(
self.G.degree(nbunch=[0, 1]), list(nx.degree(self.G, nbunch=[0, 1]))
)
assert sorted(self.DG.degree(nbunch=[0, 1])) == sorted(
nx.degree(self.DG, nbunch=[0, 1])
)
- assert_edges_equal(
+ assert edges_equal(
self.G.degree(weight="weight"), list(nx.degree(self.G, weight="weight"))
)
assert sorted(self.DG.degree(weight="weight")) == sorted(
@@ -66,11 +66,11 @@ class TestFunction:
G = self.G.copy()
nlist = [12, 13, 14, 15]
nx.add_star(G, nlist)
- assert_edges_equal(G.edges(nlist), [(12, 13), (12, 14), (12, 15)])
+ assert edges_equal(G.edges(nlist), [(12, 13), (12, 14), (12, 15)])
G = self.G.copy()
nx.add_star(G, nlist, weight=2.0)
- assert_edges_equal(
+ assert edges_equal(
G.edges(nlist, data=True),
[
(12, 13, {"weight": 2.0}),
@@ -82,22 +82,22 @@ class TestFunction:
G = self.G.copy()
nlist = [12]
nx.add_star(G, nlist)
- assert_nodes_equal(G, list(self.G) + nlist)
+ assert nodes_equal(G, list(self.G) + nlist)
G = self.G.copy()
nlist = []
nx.add_star(G, nlist)
- assert_nodes_equal(G.nodes, self.Gnodes)
- assert_edges_equal(G.edges, self.G.edges)
+ assert nodes_equal(G.nodes, self.Gnodes)
+ assert edges_equal(G.edges, self.G.edges)
def test_add_path(self):
G = self.G.copy()
nlist = [12, 13, 14, 15]
nx.add_path(G, nlist)
- assert_edges_equal(G.edges(nlist), [(12, 13), (13, 14), (14, 15)])
+ assert edges_equal(G.edges(nlist), [(12, 13), (13, 14), (14, 15)])
G = self.G.copy()
nx.add_path(G, nlist, weight=2.0)
- assert_edges_equal(
+ assert edges_equal(
G.edges(nlist, data=True),
[
(12, 13, {"weight": 2.0}),
@@ -109,38 +109,38 @@ class TestFunction:
G = self.G.copy()
nlist = [None]
nx.add_path(G, nlist)
- assert_edges_equal(G.edges(nlist), [])
- assert_nodes_equal(G, list(self.G) + [None])
+ assert edges_equal(G.edges(nlist), [])
+ assert nodes_equal(G, list(self.G) + [None])
G = self.G.copy()
nlist = iter([None])
nx.add_path(G, nlist)
- assert_edges_equal(G.edges([None]), [])
- assert_nodes_equal(G, list(self.G) + [None])
+ assert edges_equal(G.edges([None]), [])
+ assert nodes_equal(G, list(self.G) + [None])
G = self.G.copy()
nlist = [12]
nx.add_path(G, nlist)
- assert_edges_equal(G.edges(nlist), [])
- assert_nodes_equal(G, list(self.G) + [12])
+ assert edges_equal(G.edges(nlist), [])
+ assert nodes_equal(G, list(self.G) + [12])
G = self.G.copy()
nlist = iter([12])
nx.add_path(G, nlist)
- assert_edges_equal(G.edges([12]), [])
- assert_nodes_equal(G, list(self.G) + [12])
+ assert edges_equal(G.edges([12]), [])
+ assert nodes_equal(G, list(self.G) + [12])
G = self.G.copy()
nlist = []
nx.add_path(G, nlist)
- assert_edges_equal(G.edges, self.G.edges)
- assert_nodes_equal(G, list(self.G))
+ assert edges_equal(G.edges, self.G.edges)
+ assert nodes_equal(G, list(self.G))
G = self.G.copy()
nlist = iter([])
nx.add_path(G, nlist)
- assert_edges_equal(G.edges, self.G.edges)
- assert_nodes_equal(G, list(self.G))
+ assert edges_equal(G.edges, self.G.edges)
+ assert nodes_equal(G, list(self.G))
def test_add_cycle(self):
G = self.G.copy()
@@ -172,13 +172,13 @@ class TestFunction:
G = self.G.copy()
nlist = [12]
nx.add_cycle(G, nlist)
- assert_nodes_equal(G, list(self.G) + nlist)
+ assert nodes_equal(G, list(self.G) + nlist)
G = self.G.copy()
nlist = []
nx.add_cycle(G, nlist)
- assert_nodes_equal(G.nodes, self.Gnodes)
- assert_edges_equal(G.edges, self.G.edges)
+ assert nodes_equal(G.nodes, self.Gnodes)
+ assert edges_equal(G.edges, self.G.edges)
def test_subgraph(self):
assert (
@@ -212,12 +212,12 @@ class TestFunction:
def test_create_empty_copy(self):
G = nx.create_empty_copy(self.G, with_data=False)
- assert_nodes_equal(G, list(self.G))
+ assert nodes_equal(G, list(self.G))
assert G.graph == {}
assert G._node == {}.fromkeys(self.G.nodes(), {})
assert G._adj == {}.fromkeys(self.G.nodes(), {})
G = nx.create_empty_copy(self.G)
- assert_nodes_equal(G, list(self.G))
+ assert nodes_equal(G, list(self.G))
assert G.graph == self.G.graph
assert G._node == self.G._node
assert G._adj == {}.fromkeys(self.G.nodes(), {})
@@ -684,9 +684,9 @@ def test_is_empty():
def test_selfloops(graph_type):
G = nx.complete_graph(3, create_using=graph_type)
G.add_edge(0, 0)
- assert_nodes_equal(nx.nodes_with_selfloops(G), [0])
- assert_edges_equal(nx.selfloop_edges(G), [(0, 0)])
- assert_edges_equal(nx.selfloop_edges(G, data=True), [(0, 0, {})])
+ assert nodes_equal(nx.nodes_with_selfloops(G), [0])
+ assert edges_equal(nx.selfloop_edges(G), [(0, 0)])
+ assert edges_equal(nx.selfloop_edges(G, data=True), [(0, 0, {})])
assert nx.number_of_selfloops(G) == 1
@@ -697,17 +697,17 @@ def test_selfloop_edges_attr(graph_type):
G = nx.complete_graph(3, create_using=graph_type)
G.add_edge(0, 0)
G.add_edge(1, 1, weight=2)
- assert_edges_equal(
+ assert edges_equal(
nx.selfloop_edges(G, data=True), [(0, 0, {}), (1, 1, {"weight": 2})]
)
- assert_edges_equal(nx.selfloop_edges(G, data="weight"), [(0, 0, None), (1, 1, 2)])
+ assert edges_equal(nx.selfloop_edges(G, data="weight"), [(0, 0, None), (1, 1, 2)])
def test_selfloop_edges_multi_with_data_and_keys():
G = nx.complete_graph(3, create_using=nx.MultiGraph)
G.add_edge(0, 0, weight=10)
G.add_edge(0, 0, weight=100)
- assert_edges_equal(
+ assert edges_equal(
nx.selfloop_edges(G, data="weight", keys=True),
[(0, 0, 0, 10), (0, 0, 1, 100)],
)
diff --git a/networkx/classes/tests/test_graph.py b/networkx/classes/tests/test_graph.py
index 476f5e14..9b31cd5f 100644
--- a/networkx/classes/tests/test_graph.py
+++ b/networkx/classes/tests/test_graph.py
@@ -1,15 +1,10 @@
import pickle
import gc
import platform
+import pytest
import networkx as nx
-from networkx.testing.utils import (
- assert_graphs_equal,
- assert_edges_equal,
- assert_nodes_equal,
-)
-
-import pytest
+from networkx.utils import nodes_equal, edges_equal, graphs_equal
class BaseGraphTester:
@@ -82,9 +77,9 @@ class BaseGraphTester:
def test_edges(self):
G = self.K3
- assert_edges_equal(G.edges(), [(0, 1), (0, 2), (1, 2)])
- assert_edges_equal(G.edges(0), [(0, 1), (0, 2)])
- assert_edges_equal(G.edges([0, 1]), [(0, 1), (0, 2), (1, 2)])
+ assert edges_equal(G.edges(), [(0, 1), (0, 2), (1, 2)])
+ assert edges_equal(G.edges(0), [(0, 1), (0, 2)])
+ assert edges_equal(G.edges([0, 1]), [(0, 1), (0, 2), (1, 2)])
with pytest.raises(nx.NetworkXError):
G.edges(-1)
@@ -103,13 +98,13 @@ class BaseGraphTester:
def test_nbunch_iter(self):
G = self.K3
- assert_nodes_equal(G.nbunch_iter(), self.k3nodes) # all nodes
- assert_nodes_equal(G.nbunch_iter(0), [0]) # single node
- assert_nodes_equal(G.nbunch_iter([0, 1]), [0, 1]) # sequence
+ assert nodes_equal(G.nbunch_iter(), self.k3nodes) # all nodes
+ assert nodes_equal(G.nbunch_iter(0), [0]) # single node
+ assert nodes_equal(G.nbunch_iter([0, 1]), [0, 1]) # sequence
# sequence with none in graph
- assert_nodes_equal(G.nbunch_iter([-1]), [])
+ assert nodes_equal(G.nbunch_iter([-1]), [])
# string sequence with none in graph
- assert_nodes_equal(G.nbunch_iter("foo"), [])
+ assert nodes_equal(G.nbunch_iter("foo"), [])
# node not in graph doesn't get caught upon creation of iterator
bunch = G.nbunch_iter(-1)
# but gets caught when iterator used
@@ -146,8 +141,8 @@ class BaseGraphTester:
def test_selfloops(self):
G = self.K3.copy()
G.add_edge(0, 0)
- assert_nodes_equal(nx.nodes_with_selfloops(G), [0])
- assert_edges_equal(nx.selfloop_edges(G), [(0, 0)])
+ assert nodes_equal(nx.nodes_with_selfloops(G), [0])
+ assert edges_equal(nx.selfloop_edges(G), [(0, 0)])
assert nx.number_of_selfloops(G) == 1
G.remove_edge(0, 0)
G.add_edge(0, 0)
@@ -169,12 +164,12 @@ class BaseAttrGraphTester(BaseGraphTester):
assert sorted(d for n, d in G.degree(weight="weight")) == [2, 3, 5]
assert dict(G.degree(weight="weight")) == {1: 2, 2: 5, 3: 3}
assert G.degree(1, weight="weight") == 2
- assert_nodes_equal((G.degree([1], weight="weight")), [(1, 2)])
+ assert nodes_equal((G.degree([1], weight="weight")), [(1, 2)])
- assert_nodes_equal((d for n, d in G.degree(weight="other")), [3, 7, 4])
+ assert nodes_equal((d for n, d in G.degree(weight="other")), [3, 7, 4])
assert dict(G.degree(weight="other")) == {1: 3, 2: 7, 3: 4}
assert G.degree(1, weight="other") == 3
- assert_edges_equal((G.degree([1], weight="other")), [(1, 3)])
+ assert edges_equal((G.degree([1], weight="other")), [(1, 3)])
def add_attributes(self, G):
G.graph["foo"] = []
@@ -354,12 +349,12 @@ class BaseAttrGraphTester(BaseGraphTester):
def test_node_attr(self):
G = self.K3.copy()
G.add_node(1, foo="bar")
- assert_nodes_equal(G.nodes(), [0, 1, 2])
- assert_nodes_equal(G.nodes(data=True), [(0, {}), (1, {"foo": "bar"}), (2, {})])
+ assert nodes_equal(G.nodes(), [0, 1, 2])
+ assert nodes_equal(G.nodes(data=True), [(0, {}), (1, {"foo": "bar"}), (2, {})])
G.nodes[1]["foo"] = "baz"
- assert_nodes_equal(G.nodes(data=True), [(0, {}), (1, {"foo": "baz"}), (2, {})])
- assert_nodes_equal(G.nodes(data="foo"), [(0, None), (1, "baz"), (2, None)])
- assert_nodes_equal(
+ assert nodes_equal(G.nodes(data=True), [(0, {}), (1, {"foo": "baz"}), (2, {})])
+ assert nodes_equal(G.nodes(data="foo"), [(0, None), (1, "baz"), (2, None)])
+ assert nodes_equal(
G.nodes(data="foo", default="bar"), [(0, "bar"), (1, "baz"), (2, "bar")]
)
@@ -367,34 +362,34 @@ class BaseAttrGraphTester(BaseGraphTester):
G = self.K3.copy()
a = {"foo": "bar"}
G.add_node(3, **a)
- assert_nodes_equal(G.nodes(), [0, 1, 2, 3])
- assert_nodes_equal(
+ assert nodes_equal(G.nodes(), [0, 1, 2, 3])
+ assert nodes_equal(
G.nodes(data=True), [(0, {}), (1, {}), (2, {}), (3, {"foo": "bar"})]
)
def test_edge_lookup(self):
G = self.Graph()
G.add_edge(1, 2, foo="bar")
- assert_edges_equal(G.edges[1, 2], {"foo": "bar"})
+ assert edges_equal(G.edges[1, 2], {"foo": "bar"})
def test_edge_attr(self):
G = self.Graph()
G.add_edge(1, 2, foo="bar")
- assert_edges_equal(G.edges(data=True), [(1, 2, {"foo": "bar"})])
- assert_edges_equal(G.edges(data="foo"), [(1, 2, "bar")])
+ assert edges_equal(G.edges(data=True), [(1, 2, {"foo": "bar"})])
+ assert edges_equal(G.edges(data="foo"), [(1, 2, "bar")])
def test_edge_attr2(self):
G = self.Graph()
G.add_edges_from([(1, 2), (3, 4)], foo="foo")
- assert_edges_equal(
+ assert edges_equal(
G.edges(data=True), [(1, 2, {"foo": "foo"}), (3, 4, {"foo": "foo"})]
)
- assert_edges_equal(G.edges(data="foo"), [(1, 2, "foo"), (3, 4, "foo")])
+ assert edges_equal(G.edges(data="foo"), [(1, 2, "foo"), (3, 4, "foo")])
def test_edge_attr3(self):
G = self.Graph()
G.add_edges_from([(1, 2, {"weight": 32}), (3, 4, {"weight": 64})], foo="foo")
- assert_edges_equal(
+ assert edges_equal(
G.edges(data=True),
[
(1, 2, {"foo": "foo", "weight": 32}),
@@ -404,27 +399,27 @@ class BaseAttrGraphTester(BaseGraphTester):
G.remove_edges_from([(1, 2), (3, 4)])
G.add_edge(1, 2, data=7, spam="bar", bar="foo")
- assert_edges_equal(
+ assert edges_equal(
G.edges(data=True), [(1, 2, {"data": 7, "spam": "bar", "bar": "foo"})]
)
def test_edge_attr4(self):
G = self.Graph()
G.add_edge(1, 2, data=7, spam="bar", bar="foo")
- assert_edges_equal(
+ assert edges_equal(
G.edges(data=True), [(1, 2, {"data": 7, "spam": "bar", "bar": "foo"})]
)
G[1][2]["data"] = 10 # OK to set data like this
- assert_edges_equal(
+ assert edges_equal(
G.edges(data=True), [(1, 2, {"data": 10, "spam": "bar", "bar": "foo"})]
)
G.adj[1][2]["data"] = 20
- assert_edges_equal(
+ assert edges_equal(
G.edges(data=True), [(1, 2, {"data": 20, "spam": "bar", "bar": "foo"})]
)
G.edges[1, 2]["data"] = 21 # another spelling, "edge"
- assert_edges_equal(
+ assert edges_equal(
G.edges(data=True), [(1, 2, {"data": 21, "spam": "bar", "bar": "foo"})]
)
G.adj[1][2]["listdata"] = [20, 200]
@@ -436,7 +431,7 @@ class BaseAttrGraphTester(BaseGraphTester):
"listdata": [20, 200],
"weight": 20,
}
- assert_edges_equal(G.edges(data=True), [(1, 2, dd)])
+ assert edges_equal(G.edges(data=True), [(1, 2, dd)])
def test_to_undirected(self):
G = self.K3
@@ -474,10 +469,10 @@ class BaseAttrGraphTester(BaseGraphTester):
G = self.K3.copy()
G.add_edge(0, 0)
G.add_edge(1, 1, weight=2)
- assert_edges_equal(
+ assert edges_equal(
nx.selfloop_edges(G, data=True), [(0, 0, {}), (1, 1, {"weight": 2})]
)
- assert_edges_equal(
+ assert edges_equal(
nx.selfloop_edges(G, data="weight"), [(0, 0, None), (1, 1, 2)]
)
@@ -657,9 +652,9 @@ class TestGraph(BaseAttrGraphTester):
def test_edges_data(self):
G = self.K3
all_edges = [(0, 1, {}), (0, 2, {}), (1, 2, {})]
- assert_edges_equal(G.edges(data=True), all_edges)
- assert_edges_equal(G.edges(0, data=True), [(0, 1, {}), (0, 2, {})])
- assert_edges_equal(G.edges([0, 1], data=True), all_edges)
+ assert edges_equal(G.edges(data=True), all_edges)
+ assert edges_equal(G.edges(0, data=True), [(0, 1, {}), (0, 2, {})])
+ assert edges_equal(G.edges([0, 1], data=True), all_edges)
with pytest.raises(nx.NetworkXError):
G.edges(-1, True)
@@ -723,9 +718,9 @@ class TestGraph(BaseAttrGraphTester):
GG = G.copy()
H = self.Graph()
GG.update(H)
- assert_graphs_equal(G, GG)
+ assert graphs_equal(G, GG)
H.update(G)
- assert_graphs_equal(H, G)
+ assert graphs_equal(H, G)
# update nodes only
H = self.Graph()
diff --git a/networkx/classes/tests/test_graphviews.py b/networkx/classes/tests/test_graphviews.py
index 806117f0..15e37b4a 100644
--- a/networkx/classes/tests/test_graphviews.py
+++ b/networkx/classes/tests/test_graphviews.py
@@ -1,7 +1,7 @@
import pytest
import networkx as nx
-from networkx.testing import assert_edges_equal, assert_nodes_equal
+from networkx.utils import nodes_equal, edges_equal
# Note: SubGraph views are not tested here. They have their own testing file
@@ -111,8 +111,8 @@ class TestToDirected:
def test_already_directed(self):
dd = nx.to_directed(self.dv)
Mdd = nx.to_directed(self.Mdv)
- assert_edges_equal(dd.edges, self.dv.edges)
- assert_edges_equal(Mdd.edges, self.Mdv.edges)
+ assert edges_equal(dd.edges, self.dv.edges)
+ assert edges_equal(Mdd.edges, self.Mdv.edges)
def test_pickle(self):
import pickle
@@ -150,8 +150,8 @@ class TestToUndirected:
def test_already_directed(self):
uu = nx.to_undirected(self.uv)
Muu = nx.to_undirected(self.Muv)
- assert_edges_equal(uu.edges, self.uv.edges)
- assert_edges_equal(Muu.edges, self.Muv.edges)
+ assert edges_equal(uu.edges, self.uv.edges)
+ assert edges_equal(Muu.edges, self.Muv.edges)
def test_pickle(self):
import pickle
@@ -207,8 +207,8 @@ class TestChainsOfViews:
for G in self.graphs:
H = pickle.loads(pickle.dumps(G, -1))
- assert_edges_equal(H.edges, G.edges)
- assert_nodes_equal(H.nodes, G.nodes)
+ assert edges_equal(H.edges, G.edges)
+ assert nodes_equal(H.nodes, G.nodes)
def test_subgraph_of_subgraph(self):
SGv = nx.subgraph(self.G, range(3, 7))
@@ -239,19 +239,19 @@ class TestChainsOfViews:
assert RG._graph is self.G
assert SSG._graph is self.G
assert SG._graph is RG
- assert_edges_equal(SG.edges, SSG.edges)
+ assert edges_equal(SG.edges, SSG.edges)
# should be same as morphing the graph
CG = self.G.copy()
CG.remove_nodes_from(hide_nodes)
CG.remove_edges_from(hide_edges)
- assert_edges_equal(CG.edges(nodes), SSG.edges)
+ assert edges_equal(CG.edges(nodes), SSG.edges)
CG.remove_nodes_from([0, 1, 2, 3])
- assert_edges_equal(CG.edges, SSG.edges)
+ assert edges_equal(CG.edges, SSG.edges)
# switch order: subgraph first, then restricted view
SSSG = self.G.subgraph(nodes)
RSG = nx.restricted_view(SSSG, hide_nodes, hide_edges)
assert RSG._graph is not self.G
- assert_edges_equal(RSG.edges, CG.edges)
+ assert edges_equal(RSG.edges, CG.edges)
def test_subgraph_copy(self):
for origG in self.graphs:
diff --git a/networkx/classes/tests/test_multidigraph.py b/networkx/classes/tests/test_multidigraph.py
index 2bf184c6..0e84890e 100644
--- a/networkx/classes/tests/test_multidigraph.py
+++ b/networkx/classes/tests/test_multidigraph.py
@@ -1,5 +1,5 @@
import pytest
-from networkx.testing import assert_edges_equal
+from networkx.utils import edges_equal
import networkx as nx
from .test_multigraph import BaseMultiGraphTester
from .test_multigraph import TestMultiGraph as _TestMultiGraph
@@ -156,9 +156,9 @@ class BaseMultiDiGraphTester(BaseMultiGraphTester):
# the result is traversal order dependent so we
# can't use the is_shallow() test here.
try:
- assert_edges_equal(H.edges(), [(0, 1), (1, 2), (2, 0)])
+ assert edges_equal(H.edges(), [(0, 1), (1, 2), (2, 0)])
except AssertionError:
- assert_edges_equal(H.edges(), [(0, 1), (1, 2), (1, 2), (2, 0)])
+ assert edges_equal(H.edges(), [(0, 1), (1, 2), (1, 2), (2, 0)])
H = G.to_undirected()
self.is_deep(H, G)
diff --git a/networkx/classes/tests/test_multigraph.py b/networkx/classes/tests/test_multigraph.py
index ec07c229..bf2e98e0 100644
--- a/networkx/classes/tests/test_multigraph.py
+++ b/networkx/classes/tests/test_multigraph.py
@@ -1,7 +1,7 @@
import pytest
import networkx as nx
-from networkx.testing.utils import assert_edges_equal
+from networkx.utils import edges_equal
from .test_graph import BaseAttrGraphTester
from .test_graph import TestGraph as _TestGraph
@@ -119,31 +119,31 @@ class BaseMultiGraphTester(BaseAttrGraphTester):
G = self.Graph()
G.add_edge(1, 2, foo="bar")
G.add_edge(1, 2, "key", foo="biz")
- assert_edges_equal(G.edges[1, 2, 0], {"foo": "bar"})
- assert_edges_equal(G.edges[1, 2, "key"], {"foo": "biz"})
+ assert edges_equal(G.edges[1, 2, 0], {"foo": "bar"})
+ assert edges_equal(G.edges[1, 2, "key"], {"foo": "biz"})
def test_edge_attr4(self):
G = self.Graph()
G.add_edge(1, 2, key=0, data=7, spam="bar", bar="foo")
- assert_edges_equal(
+ assert edges_equal(
G.edges(data=True), [(1, 2, {"data": 7, "spam": "bar", "bar": "foo"})]
)
G[1][2][0]["data"] = 10 # OK to set data like this
- assert_edges_equal(
+ assert edges_equal(
G.edges(data=True), [(1, 2, {"data": 10, "spam": "bar", "bar": "foo"})]
)
G.adj[1][2][0]["data"] = 20
- assert_edges_equal(
+ assert edges_equal(
G.edges(data=True), [(1, 2, {"data": 20, "spam": "bar", "bar": "foo"})]
)
G.edges[1, 2, 0]["data"] = 21 # another spelling, "edge"
- assert_edges_equal(
+ assert edges_equal(
G.edges(data=True), [(1, 2, {"data": 21, "spam": "bar", "bar": "foo"})]
)
G.adj[1][2][0]["listdata"] = [20, 200]
G.adj[1][2][0]["weight"] = 20
- assert_edges_equal(
+ assert edges_equal(
G.edges(data=True),
[
(
diff --git a/networkx/conftest.py b/networkx/conftest.py
index 0d39779c..ad541ba0 100644
--- a/networkx/conftest.py
+++ b/networkx/conftest.py
@@ -139,6 +139,24 @@ def set_warnings():
warnings.filterwarnings(
"ignore", category=DeprecationWarning, message="`almost_equal`"
)
+ warnings.filterwarnings(
+ "ignore", category=DeprecationWarning, message="`assert_nodes_equal`"
+ )
+ warnings.filterwarnings(
+ "ignore", category=DeprecationWarning, message="`assert_edges_equal`"
+ )
+ warnings.filterwarnings(
+ "ignore", category=DeprecationWarning, message="`assert_graphs_equal`"
+ )
+ warnings.filterwarnings(
+ "ignore", category=DeprecationWarning, message="networkx.hits_scipy"
+ )
+ warnings.filterwarnings(
+ "ignore", category=DeprecationWarning, message="networkx.hits_numpy"
+ )
+ warnings.filterwarnings(
+ "ignore", category=DeprecationWarning, message="preserve_random_state"
+ )
@pytest.fixture(autouse=True)
diff --git a/networkx/drawing/tests/test_agraph.py b/networkx/drawing/tests/test_agraph.py
index bf91f335..33e77c36 100644
--- a/networkx/drawing/tests/test_agraph.py
+++ b/networkx/drawing/tests/test_agraph.py
@@ -6,7 +6,7 @@ import pytest
pygraphviz = pytest.importorskip("pygraphviz")
-from networkx.testing import assert_edges_equal, assert_nodes_equal, assert_graphs_equal
+from networkx.utils import nodes_equal, edges_equal, graphs_equal
import networkx as nx
@@ -20,8 +20,8 @@ class TestAGraph:
return G
def assert_equal(self, G1, G2):
- assert_nodes_equal(G1.nodes(), G2.nodes())
- assert_edges_equal(G1.edges(), G2.edges())
+ assert nodes_equal(G1.nodes(), G2.nodes())
+ assert edges_equal(G1.edges(), G2.edges())
assert G1.graph["metal"] == G2.graph["metal"]
def agraph_checks(self, G):
@@ -188,21 +188,21 @@ class TestAGraph:
G = nx.Graph()
A = nx.nx_agraph.to_agraph(G)
H = nx.nx_agraph.from_agraph(A)
- # assert_graphs_equal(G, H)
+ # assert graphs_equal(G, H)
AA = nx.nx_agraph.to_agraph(H)
HH = nx.nx_agraph.from_agraph(AA)
- assert_graphs_equal(H, HH)
+ assert graphs_equal(H, HH)
G.graph["graph"] = {}
G.graph["node"] = {}
G.graph["edge"] = {}
- assert_graphs_equal(G, HH)
+ assert graphs_equal(G, HH)
@pytest.mark.xfail(reason="integer->string node conversion in round trip")
def test_round_trip_integer_nodes(self):
G = nx.complete_graph(3)
A = nx.nx_agraph.to_agraph(G)
H = nx.nx_agraph.from_agraph(A)
- assert_graphs_equal(G, H)
+ assert graphs_equal(G, H)
def test_graphviz_alias(self):
G = self.build_graph(nx.Graph())
diff --git a/networkx/drawing/tests/test_pydot.py b/networkx/drawing/tests/test_pydot.py
index 4ebe2e7e..39371880 100644
--- a/networkx/drawing/tests/test_pydot.py
+++ b/networkx/drawing/tests/test_pydot.py
@@ -3,7 +3,7 @@ from io import StringIO
import tempfile
import os
import networkx as nx
-from networkx.testing import assert_graphs_equal
+from networkx.utils import graphs_equal
import pytest
@@ -36,7 +36,7 @@ class TestPydot:
G2 = G.__class__(nx.nx_pydot.from_pydot(P))
# Validate the original and resulting graphs to be the same.
- assert_graphs_equal(G, G2)
+ assert graphs_equal(G, G2)
fd, fname = tempfile.mkstemp()
@@ -77,7 +77,7 @@ class TestPydot:
Hin = G.__class__(Hin)
# Validate the original and resulting graphs to be the same.
- assert_graphs_equal(G, Hin)
+ assert graphs_equal(G, Hin)
os.close(fd)
os.unlink(fname)
@@ -96,4 +96,4 @@ class TestPydot:
nx.nx_pydot.write_dot(G, fh)
fh.seek(0)
H = nx.nx_pydot.read_dot(fh)
- assert_graphs_equal(G, H)
+ assert graphs_equal(G, H)
diff --git a/networkx/generators/tests/test_atlas.py b/networkx/generators/tests/test_atlas.py
index e9ce00b2..c5d1d7ee 100644
--- a/networkx/generators/tests/test_atlas.py
+++ b/networkx/generators/tests/test_atlas.py
@@ -3,7 +3,7 @@ from itertools import groupby
import pytest
import networkx as nx
-from networkx.testing import assert_edges_equal, assert_nodes_equal
+from networkx.utils import nodes_equal, edges_equal
from networkx import graph_atlas
from networkx import graph_atlas_g
from networkx.generators.atlas import NUM_GRAPHS
@@ -23,8 +23,8 @@ class TestAtlasGraph:
def test_graph(self):
G = graph_atlas(6)
- assert_nodes_equal(G.nodes(), range(3))
- assert_edges_equal(G.edges(), [(0, 1), (0, 2)])
+ assert nodes_equal(G.nodes(), range(3))
+ assert edges_equal(G.edges(), [(0, 1), (0, 2)])
class TestAtlasGraphG:
diff --git a/networkx/generators/tests/test_classic.py b/networkx/generators/tests/test_classic.py
index 3ec36f0f..24077725 100644
--- a/networkx/generators/tests/test_classic.py
+++ b/networkx/generators/tests/test_classic.py
@@ -10,8 +10,7 @@ import itertools
import pytest
import networkx as nx
from networkx.algorithms.isomorphism.isomorph import graph_could_be_isomorphic
-from networkx.testing import assert_edges_equal
-from networkx.testing import assert_nodes_equal
+from networkx.utils import nodes_equal, edges_equal
is_isomorphic = graph_could_be_isomorphic
@@ -135,7 +134,7 @@ class TestGeneratorClassic:
)
mb = nx.barbell_graph(m1, m2, create_using=nx.MultiGraph())
- assert_edges_equal(mb.edges(), b.edges())
+ assert edges_equal(mb.edges(), b.edges())
def test_binomial_tree(self):
graphs = (None, nx.Graph, nx.DiGraph, nx.MultiGraph, nx.MultiDiGraph)
@@ -154,10 +153,10 @@ class TestGeneratorClassic:
assert nx.number_of_edges(g) == m * (m - 1) // 2
mg = nx.complete_graph(m, create_using=nx.MultiGraph)
- assert_edges_equal(mg.edges(), g.edges())
+ assert edges_equal(mg.edges(), g.edges())
g = nx.complete_graph("abc")
- assert_nodes_equal(g.nodes(), ["a", "b", "c"])
+ assert nodes_equal(g.nodes(), ["a", "b", "c"])
assert g.size() == 3
def test_complete_digraph(self):
@@ -179,18 +178,18 @@ class TestGeneratorClassic:
nx.NetworkXError, nx.circular_ladder_graph, 5, create_using=nx.DiGraph
)
mG = nx.circular_ladder_graph(5, create_using=nx.MultiGraph)
- assert_edges_equal(mG.edges(), G.edges())
+ assert edges_equal(mG.edges(), G.edges())
def test_circulant_graph(self):
# Ci_n(1) is the cycle graph for all n
Ci6_1 = nx.circulant_graph(6, [1])
C6 = nx.cycle_graph(6)
- assert_edges_equal(Ci6_1.edges(), C6.edges())
+ assert edges_equal(Ci6_1.edges(), C6.edges())
# Ci_n(1, 2, ..., n div 2) is the complete graph for all n
Ci7 = nx.circulant_graph(7, [1, 2, 3])
K7 = nx.complete_graph(7)
- assert_edges_equal(Ci7.edges(), K7.edges())
+ assert edges_equal(Ci7.edges(), K7.edges())
# Ci_6(1, 3) is K_3,3 i.e. the utility graph
Ci6_1_3 = nx.circulant_graph(6, [1, 3])
@@ -199,9 +198,9 @@ class TestGeneratorClassic:
def test_cycle_graph(self):
G = nx.cycle_graph(4)
- assert_edges_equal(G.edges(), [(0, 1), (0, 3), (1, 2), (2, 3)])
+ assert edges_equal(G.edges(), [(0, 1), (0, 3), (1, 2), (2, 3)])
mG = nx.cycle_graph(4, create_using=nx.MultiGraph)
- assert_edges_equal(mG.edges(), [(0, 1), (0, 3), (1, 2), (2, 3)])
+ assert edges_equal(mG.edges(), [(0, 1), (0, 3), (1, 2), (2, 3)])
G = nx.cycle_graph(4, create_using=nx.DiGraph)
assert not G.has_edge(2, 1)
assert G.has_edge(1, 2)
@@ -217,10 +216,10 @@ class TestGeneratorClassic:
def test_dorogovtsev_goltsev_mendes_graph(self):
G = nx.dorogovtsev_goltsev_mendes_graph(0)
- assert_edges_equal(G.edges(), [(0, 1)])
- assert_nodes_equal(list(G), [0, 1])
+ assert edges_equal(G.edges(), [(0, 1)])
+ assert nodes_equal(list(G), [0, 1])
G = nx.dorogovtsev_goltsev_mendes_graph(1)
- assert_edges_equal(G.edges(), [(0, 1), (0, 2), (1, 2)])
+ assert edges_equal(G.edges(), [(0, 1), (0, 2), (1, 2)])
assert nx.average_clustering(G) == 1.0
assert sorted(nx.triangles(G).values()) == [1, 1, 1]
G = nx.dorogovtsev_goltsev_mendes_graph(10)
@@ -316,7 +315,7 @@ class TestGeneratorClassic:
g = nx.ladder_graph(2)
mg = nx.ladder_graph(2, create_using=nx.MultiGraph)
- assert_edges_equal(mg.edges(), g.edges())
+ assert edges_equal(mg.edges(), g.edges())
def test_lollipop_graph(self):
# number of nodes = m1 + m2
@@ -342,7 +341,7 @@ class TestGeneratorClassic:
)
mb = nx.lollipop_graph(m1, m2, create_using=nx.MultiGraph)
- assert_edges_equal(mb.edges(), b.edges())
+ assert edges_equal(mb.edges(), b.edges())
g = nx.lollipop_graph([1, 2, 3, 4], "abc")
assert len(g) == 7
@@ -368,7 +367,7 @@ class TestGeneratorClassic:
assert not dp.has_edge(1, 0)
mp = nx.path_graph(10, create_using=nx.MultiGraph)
- assert_edges_equal(mp.edges(), p.edges())
+ assert edges_equal(mp.edges(), p.edges())
G = nx.path_graph("abc")
assert len(G) == 3
@@ -391,7 +390,7 @@ class TestGeneratorClassic:
pytest.raises(nx.NetworkXError, star_graph, 10, create_using=nx.DiGraph)
ms = star_graph(10, create_using=nx.MultiGraph)
- assert_edges_equal(ms.edges(), s.edges())
+ assert edges_equal(ms.edges(), s.edges())
G = star_graph("abcdefg")
assert len(G) == 7
@@ -423,7 +422,7 @@ class TestGeneratorClassic:
pytest.raises(nx.NetworkXError, nx.wheel_graph, 10, create_using=nx.DiGraph)
mg = nx.wheel_graph(10, create_using=nx.MultiGraph())
- assert_edges_equal(mg.edges(), g.edges())
+ assert edges_equal(mg.edges(), g.edges())
G = nx.wheel_graph("abc")
assert len(G) == 3
@@ -433,15 +432,15 @@ class TestGeneratorClassic:
"""Tests that the complete 0-partite graph is the null graph."""
G = nx.complete_multipartite_graph()
H = nx.null_graph()
- assert_nodes_equal(G, H)
- assert_edges_equal(G.edges(), H.edges())
+ assert nodes_equal(G, H)
+ assert edges_equal(G.edges(), H.edges())
def test_complete_1_partite_graph(self):
"""Tests that the complete 1-partite graph is the empty graph."""
G = nx.complete_multipartite_graph(3)
H = nx.empty_graph(3)
- assert_nodes_equal(G, H)
- assert_edges_equal(G.edges(), H.edges())
+ assert nodes_equal(G, H)
+ assert edges_equal(G.edges(), H.edges())
def test_complete_2_partite_graph(self):
"""Tests that the complete 2-partite graph is the complete bipartite
@@ -450,8 +449,8 @@ class TestGeneratorClassic:
"""
G = nx.complete_multipartite_graph(2, 3)
H = nx.complete_bipartite_graph(2, 3)
- assert_nodes_equal(G, H)
- assert_edges_equal(G.edges(), H.edges())
+ assert nodes_equal(G, H)
+ assert edges_equal(G.edges(), H.edges())
def test_complete_multipartite_graph(self):
"""Tests for generating the complete multipartite graph."""
diff --git a/networkx/generators/tests/test_ego.py b/networkx/generators/tests/test_ego.py
index 3b16b0fe..19458c11 100644
--- a/networkx/generators/tests/test_ego.py
+++ b/networkx/generators/tests/test_ego.py
@@ -4,7 +4,7 @@ ego graph
"""
import networkx as nx
-from networkx.testing.utils import assert_edges_equal, assert_nodes_equal
+from networkx.utils import nodes_equal, edges_equal
class TestGeneratorEgo:
@@ -19,21 +19,21 @@ class TestGeneratorEgo:
assert nx.is_isomorphic(nx.star_graph(3), H)
G = nx.path_graph(3)
H = nx.ego_graph(G, 0)
- assert_edges_equal(H.edges(), [(0, 1)])
+ assert edges_equal(H.edges(), [(0, 1)])
H = nx.ego_graph(G, 0, undirected=True)
- assert_edges_equal(H.edges(), [(0, 1)])
+ assert edges_equal(H.edges(), [(0, 1)])
H = nx.ego_graph(G, 0, center=False)
- assert_edges_equal(H.edges(), [])
+ assert edges_equal(H.edges(), [])
def test_ego_distance(self):
G = nx.Graph()
G.add_edge(0, 1, weight=2, distance=1)
G.add_edge(1, 2, weight=2, distance=2)
G.add_edge(2, 3, weight=2, distance=1)
- assert_nodes_equal(nx.ego_graph(G, 0, radius=3).nodes(), [0, 1, 2, 3])
+ assert nodes_equal(nx.ego_graph(G, 0, radius=3).nodes(), [0, 1, 2, 3])
eg = nx.ego_graph(G, 0, radius=3, distance="weight")
- assert_nodes_equal(eg.nodes(), [0, 1])
+ assert nodes_equal(eg.nodes(), [0, 1])
eg = nx.ego_graph(G, 0, radius=3, distance="weight", undirected=True)
- assert_nodes_equal(eg.nodes(), [0, 1])
+ assert nodes_equal(eg.nodes(), [0, 1])
eg = nx.ego_graph(G, 0, radius=3, distance="distance")
- assert_nodes_equal(eg.nodes(), [0, 1, 2])
+ assert nodes_equal(eg.nodes(), [0, 1, 2])
diff --git a/networkx/generators/tests/test_interval_graph.py b/networkx/generators/tests/test_interval_graph.py
index 0c7b4292..26f1f0ef 100644
--- a/networkx/generators/tests/test_interval_graph.py
+++ b/networkx/generators/tests/test_interval_graph.py
@@ -6,7 +6,7 @@ import pytest
import networkx as nx
from networkx.generators.interval_graph import interval_graph
-from networkx.testing import assert_edges_equal
+from networkx.utils import edges_equal
class TestIntervalGraph:
@@ -44,7 +44,7 @@ class TestIntervalGraph:
actual_g = interval_graph(intervals)
assert set(actual_g.nodes) == set(expected_graph.nodes)
- assert_edges_equal(expected_graph, actual_g)
+ assert edges_equal(expected_graph, actual_g)
def test_interval_graph_1(self):
intervals = [(1, 2), (2, 3), (3, 4), (1, 4)]
@@ -62,7 +62,7 @@ class TestIntervalGraph:
actual_g = interval_graph(intervals)
assert set(actual_g.nodes) == set(expected_graph.nodes)
- assert_edges_equal(expected_graph, actual_g)
+ assert edges_equal(expected_graph, actual_g)
def test_interval_graph_2(self):
intervals = [(1, 2), [3, 5], [6, 8], (9, 10)]
@@ -73,7 +73,7 @@ class TestIntervalGraph:
actual_g = interval_graph(intervals)
assert set(actual_g.nodes) == set(expected_graph.nodes)
- assert_edges_equal(expected_graph, actual_g)
+ assert edges_equal(expected_graph, actual_g)
def test_interval_graph_3(self):
intervals = [(1, 4), [3, 5], [2.5, 4]]
@@ -89,7 +89,7 @@ class TestIntervalGraph:
actual_g = interval_graph(intervals)
assert set(actual_g.nodes) == set(expected_graph.nodes)
- assert_edges_equal(expected_graph, actual_g)
+ assert edges_equal(expected_graph, actual_g)
def test_interval_graph_4(self):
"""test all possible overlaps"""
@@ -141,4 +141,4 @@ class TestIntervalGraph:
actual_g = interval_graph(intervals)
assert set(actual_g.nodes) == set(expected_graph.nodes)
- assert_edges_equal(expected_graph, actual_g)
+ assert edges_equal(expected_graph, actual_g)
diff --git a/networkx/generators/tests/test_lattice.py b/networkx/generators/tests/test_lattice.py
index 3f72d095..07271e3a 100644
--- a/networkx/generators/tests/test_lattice.py
+++ b/networkx/generators/tests/test_lattice.py
@@ -3,7 +3,7 @@
import pytest
import networkx as nx
-from networkx.testing import assert_edges_equal
+from networkx.utils import edges_equal
from itertools import product
@@ -76,7 +76,7 @@ class TestGrid2DGraph:
assert nx.is_isomorphic(H, G)
G = nx.grid_2d_graph(5, 6)
H = nx.grid_2d_graph(range(5), range(6))
- assert_edges_equal(H, G)
+ assert edges_equal(H, G)
class TestGridGraph:
diff --git a/networkx/generators/tests/test_line.py b/networkx/generators/tests/test_line.py
index fec8893c..e072728d 100644
--- a/networkx/generators/tests/test_line.py
+++ b/networkx/generators/tests/test_line.py
@@ -2,7 +2,7 @@ import networkx as nx
import pytest
import networkx.generators.line as line
-from networkx.testing.utils import assert_edges_equal
+from networkx.utils import edges_equal
def test_node_func():
@@ -29,7 +29,7 @@ def test_edge_func():
G.add_edge(2, 3)
ef = line._edge_func(G)
expected = [(1, 2), (2, 3)]
- assert_edges_equal(ef(), expected)
+ assert edges_equal(ef(), expected)
# digraph
G = nx.MultiDiGraph()
@@ -74,19 +74,19 @@ class TestGeneratorLine:
G = nx.DiGraph()
G.add_edges_from([(0, 1), (1, 2), (2, 3)])
L = nx.line_graph(G)
- assert_edges_equal(L.edges(), [((0, 1), (1, 2)), ((1, 2), (2, 3))])
+ assert edges_equal(L.edges(), [((0, 1), (1, 2)), ((1, 2), (2, 3))])
def test_create1(self):
G = nx.DiGraph()
G.add_edges_from([(0, 1), (1, 2), (2, 3)])
L = nx.line_graph(G, create_using=nx.Graph())
- assert_edges_equal(L.edges(), [((0, 1), (1, 2)), ((1, 2), (2, 3))])
+ assert edges_equal(L.edges(), [((0, 1), (1, 2)), ((1, 2), (2, 3))])
def test_create2(self):
G = nx.Graph()
G.add_edges_from([(0, 1), (1, 2), (2, 3)])
L = nx.line_graph(G, create_using=nx.DiGraph())
- assert_edges_equal(L.edges(), [((0, 1), (1, 2)), ((1, 2), (2, 3))])
+ assert edges_equal(L.edges(), [((0, 1), (1, 2)), ((1, 2), (2, 3))])
class TestGeneratorInverseLine:
diff --git a/networkx/generators/tests/test_nonisomorphic_trees.py b/networkx/generators/tests/test_nonisomorphic_trees.py
index cb6eea86..ced1cbe1 100644
--- a/networkx/generators/tests/test_nonisomorphic_trees.py
+++ b/networkx/generators/tests/test_nonisomorphic_trees.py
@@ -6,7 +6,7 @@ Generators - Non Isomorphic Trees
Unit tests for WROM algorithm generator in generators/nonisomorphic_trees.py
"""
import networkx as nx
-from networkx.testing import assert_edges_equal
+from networkx.utils import edges_equal
class TestGeneratorNonIsomorphicTrees:
@@ -48,9 +48,9 @@ class TestGeneratorNonIsomorphicTrees:
def f(x):
return list(nx.nonisomorphic_trees(x))
- assert_edges_equal(f(3)[0].edges(), [(0, 1), (0, 2)])
- assert_edges_equal(f(4)[0].edges(), [(0, 1), (0, 3), (1, 2)])
- assert_edges_equal(f(4)[1].edges(), [(0, 1), (0, 2), (0, 3)])
+ assert edges_equal(f(3)[0].edges(), [(0, 1), (0, 2)])
+ assert edges_equal(f(4)[0].edges(), [(0, 1), (0, 3), (1, 2)])
+ assert edges_equal(f(4)[1].edges(), [(0, 1), (0, 2), (0, 3)])
def test_nonisomorphic_trees_matrix(self):
trees_2 = [[[0, 1], [1, 0]]]
diff --git a/networkx/generators/tests/test_spectral_graph_forge.py b/networkx/generators/tests/test_spectral_graph_forge.py
index b260f72e..48377a99 100644
--- a/networkx/generators/tests/test_spectral_graph_forge.py
+++ b/networkx/generators/tests/test_spectral_graph_forge.py
@@ -6,7 +6,7 @@ pytest.importorskip("scipy")
from networkx import is_isomorphic
from networkx.exception import NetworkXError
-from networkx.testing import assert_nodes_equal
+from networkx.utils import nodes_equal
from networkx.generators.spectral_graph_forge import spectral_graph_forge
from networkx.generators import karate_club_graph
@@ -19,28 +19,28 @@ def test_spectral_graph_forge():
# common cases, just checking node number preserving and difference
# between identity and modularity cases
H = spectral_graph_forge(G, 0.1, transformation="identity", seed=seed)
- assert_nodes_equal(G, H)
+ assert nodes_equal(G, H)
I = spectral_graph_forge(G, 0.1, transformation="identity", seed=seed)
- assert_nodes_equal(G, H)
+ assert nodes_equal(G, H)
assert is_isomorphic(I, H)
I = spectral_graph_forge(G, 0.1, transformation="modularity", seed=seed)
- assert_nodes_equal(G, I)
+ assert nodes_equal(G, I)
assert not is_isomorphic(I, H)
# with all the eigenvectors, output graph is identical to the input one
H = spectral_graph_forge(G, 1, transformation="modularity", seed=seed)
- assert_nodes_equal(G, H)
+ assert nodes_equal(G, H)
assert is_isomorphic(G, H)
# invalid alpha input value, it is silently truncated in [0,1]
H = spectral_graph_forge(G, -1, transformation="identity", seed=seed)
- assert_nodes_equal(G, H)
+ assert nodes_equal(G, H)
H = spectral_graph_forge(G, 10, transformation="identity", seed=seed)
- assert_nodes_equal(G, H)
+ assert nodes_equal(G, H)
assert is_isomorphic(G, H)
# invalid transformation mode, checking the error raising
diff --git a/networkx/generators/tests/test_trees.py b/networkx/generators/tests/test_trees.py
index 85573ff5..908167fd 100644
--- a/networkx/generators/tests/test_trees.py
+++ b/networkx/generators/tests/test_trees.py
@@ -1,6 +1,6 @@
-import networkx as nx
-from networkx.utils import arbitrary_element
import pytest
+import networkx as nx
+from networkx.utils import arbitrary_element, graphs_equal
@pytest.mark.parametrize("prefix_tree_fn", (nx.prefix_tree, nx.prefix_tree_recursive))
@@ -78,7 +78,7 @@ def test_basic_prefix_tree(prefix_tree_fn):
)
def test_implementations_consistent(strings):
"""Ensure results are consistent between prefix_tree implementations."""
- nx.testing.assert_graphs_equal(
+ assert graphs_equal(
nx.prefix_tree(strings),
nx.prefix_tree_recursive(strings),
)
diff --git a/networkx/readwrite/tests/test_adjlist.py b/networkx/readwrite/tests/test_adjlist.py
index 0066111a..2713895c 100644
--- a/networkx/readwrite/tests/test_adjlist.py
+++ b/networkx/readwrite/tests/test_adjlist.py
@@ -6,7 +6,7 @@ import pytest
import os
import tempfile
import networkx as nx
-from networkx.testing import assert_nodes_equal, assert_edges_equal, assert_graphs_equal
+from networkx.utils import nodes_equal, edges_equal, graphs_equal
class TestAdjlist:
@@ -32,7 +32,7 @@ class TestAdjlist:
bytesIO = io.BytesIO(s)
G = nx.read_multiline_adjlist(bytesIO)
adj = {"1": {"3": {}, "2": {}}, "3": {"1": {}}, "2": {"1": {}}}
- assert_graphs_equal(G, nx.Graph(adj))
+ assert graphs_equal(G, nx.Graph(adj))
def test_unicode(self):
G = nx.Graph()
@@ -42,7 +42,7 @@ class TestAdjlist:
fd, fname = tempfile.mkstemp()
nx.write_multiline_adjlist(G, fname)
H = nx.read_multiline_adjlist(fname)
- assert_graphs_equal(G, H)
+ assert graphs_equal(G, H)
os.close(fd)
os.unlink(fname)
@@ -66,7 +66,7 @@ class TestAdjlist:
fd, fname = tempfile.mkstemp()
nx.write_multiline_adjlist(G, fname, encoding="latin-1")
H = nx.read_multiline_adjlist(fname, encoding="latin-1")
- assert_graphs_equal(G, H)
+ assert graphs_equal(G, H)
os.close(fd)
os.unlink(fname)
@@ -86,8 +86,8 @@ class TestAdjlist:
H = nx.read_adjlist(fname)
H2 = nx.read_adjlist(fname)
assert H is not H2 # they should be different graphs
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
@@ -98,8 +98,8 @@ class TestAdjlist:
H = nx.read_adjlist(fname, create_using=nx.DiGraph())
H2 = nx.read_adjlist(fname, create_using=nx.DiGraph())
assert H is not H2 # they should be different graphs
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
@@ -110,8 +110,8 @@ class TestAdjlist:
H = nx.read_adjlist(fname, nodetype=int)
H2 = nx.read_adjlist(fname, nodetype=int)
assert H is not H2 # they should be different graphs
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
@@ -122,8 +122,8 @@ class TestAdjlist:
H = nx.read_adjlist(fname, nodetype=int, create_using=nx.MultiGraph())
H2 = nx.read_adjlist(fname, nodetype=int, create_using=nx.MultiGraph())
assert H is not H2 # they should be different graphs
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
@@ -134,8 +134,8 @@ class TestAdjlist:
H = nx.read_adjlist(fname, nodetype=int, create_using=nx.MultiDiGraph())
H2 = nx.read_adjlist(fname, nodetype=int, create_using=nx.MultiDiGraph())
assert H is not H2 # they should be different graphs
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
@@ -145,8 +145,8 @@ class TestAdjlist:
nx.write_adjlist(G, fh, delimiter=":")
fh.seek(0)
H = nx.read_adjlist(fh, nodetype=int, delimiter=":")
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
class TestMultilineAdjlist:
@@ -197,8 +197,8 @@ class TestMultilineAdjlist:
H = nx.read_multiline_adjlist(fname)
H2 = nx.read_multiline_adjlist(fname)
assert H is not H2 # they should be different graphs
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
@@ -209,8 +209,8 @@ class TestMultilineAdjlist:
H = nx.read_multiline_adjlist(fname, create_using=nx.DiGraph())
H2 = nx.read_multiline_adjlist(fname, create_using=nx.DiGraph())
assert H is not H2 # they should be different graphs
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
@@ -221,8 +221,8 @@ class TestMultilineAdjlist:
H = nx.read_multiline_adjlist(fname, nodetype=int)
H2 = nx.read_multiline_adjlist(fname, nodetype=int)
assert H is not H2 # they should be different graphs
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
@@ -235,8 +235,8 @@ class TestMultilineAdjlist:
fname, nodetype=int, create_using=nx.MultiGraph()
)
assert H is not H2 # they should be different graphs
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
@@ -251,8 +251,8 @@ class TestMultilineAdjlist:
fname, nodetype=int, create_using=nx.MultiDiGraph()
)
assert H is not H2 # they should be different graphs
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
@@ -262,5 +262,5 @@ class TestMultilineAdjlist:
nx.write_multiline_adjlist(G, fh, delimiter=":")
fh.seek(0)
H = nx.read_multiline_adjlist(fh, nodetype=int, delimiter=":")
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
diff --git a/networkx/readwrite/tests/test_edgelist.py b/networkx/readwrite/tests/test_edgelist.py
index de3f0146..a9f498df 100644
--- a/networkx/readwrite/tests/test_edgelist.py
+++ b/networkx/readwrite/tests/test_edgelist.py
@@ -8,7 +8,7 @@ import os
import textwrap
import networkx as nx
-from networkx.testing import assert_edges_equal, assert_nodes_equal, assert_graphs_equal
+from networkx.utils import nodes_equal, edges_equal, graphs_equal
edges_no_data = textwrap.dedent(
@@ -81,13 +81,13 @@ _expected_edges_multiattr = [
def test_read_edgelist_no_data(data, extra_kwargs):
bytesIO = io.BytesIO(data.encode("utf-8"))
G = nx.read_edgelist(bytesIO, nodetype=int, data=False, **extra_kwargs)
- assert_edges_equal(G.edges(), [(1, 2), (2, 3)])
+ assert edges_equal(G.edges(), [(1, 2), (2, 3)])
def test_read_weighted_edgelist():
bytesIO = io.BytesIO(edges_with_values.encode("utf-8"))
G = nx.read_weighted_edgelist(bytesIO, nodetype=int)
- assert_edges_equal(G.edges(data=True), _expected_edges_weights)
+ assert edges_equal(G.edges(data=True), _expected_edges_weights)
@pytest.mark.parametrize(
@@ -101,7 +101,7 @@ def test_read_weighted_edgelist():
def test_read_edgelist_with_data(data, extra_kwargs, expected):
bytesIO = io.BytesIO(data.encode("utf-8"))
G = nx.read_edgelist(bytesIO, nodetype=int, **extra_kwargs)
- assert_edges_equal(G.edges(data=True), expected)
+ assert edges_equal(G.edges(data=True), expected)
@pytest.fixture
@@ -114,8 +114,8 @@ def example_graph():
def test_parse_edgelist_no_data(example_graph):
G = example_graph
H = nx.parse_edgelist(["1 2", "2 3", "3 4"], nodetype=int)
- assert_nodes_equal(G.nodes, H.nodes)
- assert_edges_equal(G.edges, H.edges)
+ assert nodes_equal(G.nodes, H.nodes)
+ assert edges_equal(G.edges, H.edges)
def test_parse_edgelist_with_data_dict(example_graph):
@@ -124,8 +124,8 @@ def test_parse_edgelist_with_data_dict(example_graph):
["1 2 {'weight': 3}", "2 3 {'weight': 27}", "3 4 {'weight': 3.0}"],
nodetype=int,
)
- assert_nodes_equal(G.nodes, H.nodes)
- assert_edges_equal(G.edges(data=True), H.edges(data=True))
+ assert nodes_equal(G.nodes, H.nodes)
+ assert edges_equal(G.edges(data=True), H.edges(data=True))
def test_parse_edgelist_with_data_list(example_graph):
@@ -133,8 +133,8 @@ def test_parse_edgelist_with_data_list(example_graph):
H = nx.parse_edgelist(
["1 2 3", "2 3 27", "3 4 3.0"], nodetype=int, data=(("weight", float),)
)
- assert_nodes_equal(G.nodes, H.nodes)
- assert_edges_equal(G.edges(data=True), H.edges(data=True))
+ assert nodes_equal(G.nodes, H.nodes)
+ assert edges_equal(G.edges(data=True), H.edges(data=True))
def test_parse_edgelist():
@@ -216,7 +216,7 @@ class TestEdgelist:
fd, fname = tempfile.mkstemp()
nx.write_edgelist(G, fname)
H = nx.read_edgelist(fname)
- assert_graphs_equal(G, H)
+ assert graphs_equal(G, H)
os.close(fd)
os.unlink(fname)
@@ -240,7 +240,7 @@ class TestEdgelist:
fd, fname = tempfile.mkstemp()
nx.write_edgelist(G, fname, encoding="latin-1")
H = nx.read_edgelist(fname, encoding="latin-1")
- assert_graphs_equal(G, H)
+ assert graphs_equal(G, H)
os.close(fd)
os.unlink(fname)
@@ -252,8 +252,8 @@ class TestEdgelist:
H2 = nx.read_edgelist(fname)
assert H is not H2 # they should be different graphs
G.remove_node("g") # isolated nodes are not written in edgelist
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
@@ -265,8 +265,8 @@ class TestEdgelist:
H2 = nx.read_edgelist(fname, create_using=nx.DiGraph())
assert H is not H2 # they should be different graphs
G.remove_node("g") # isolated nodes are not written in edgelist
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
@@ -277,8 +277,8 @@ class TestEdgelist:
H = nx.read_edgelist(fname, nodetype=int)
# isolated nodes are not written in edgelist
G.remove_nodes_from(list(nx.isolates(G)))
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
@@ -289,8 +289,8 @@ class TestEdgelist:
H = nx.read_edgelist(fname, nodetype=int, create_using=nx.MultiGraph())
H2 = nx.read_edgelist(fname, nodetype=int, create_using=nx.MultiGraph())
assert H is not H2 # they should be different graphs
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
@@ -301,7 +301,7 @@ class TestEdgelist:
H = nx.read_edgelist(fname, nodetype=int, create_using=nx.MultiDiGraph())
H2 = nx.read_edgelist(fname, nodetype=int, create_using=nx.MultiDiGraph())
assert H is not H2 # they should be different graphs
- assert_nodes_equal(list(H), list(G))
- assert_edges_equal(list(H.edges()), list(G.edges()))
+ assert nodes_equal(list(H), list(G))
+ assert edges_equal(list(H.edges()), list(G.edges()))
os.close(fd)
os.unlink(fname)
diff --git a/networkx/readwrite/tests/test_gpickle.py b/networkx/readwrite/tests/test_gpickle.py
index e92991db..5059d6db 100644
--- a/networkx/readwrite/tests/test_gpickle.py
+++ b/networkx/readwrite/tests/test_gpickle.py
@@ -2,11 +2,7 @@ import os
import tempfile
import networkx as nx
-from networkx.testing.utils import (
- assert_graphs_equal,
- assert_edges_equal,
- assert_nodes_equal,
-)
+from networkx.utils import nodes_equal, edges_equal, graphs_equal
class TestGpickle:
@@ -53,9 +49,9 @@ class TestGpickle:
(fd, fname) = tempfile.mkstemp()
nx.write_gpickle(G, fname)
Gin = nx.read_gpickle(fname)
- assert_nodes_equal(list(G.nodes(data=True)), list(Gin.nodes(data=True)))
- assert_edges_equal(list(G.edges(data=True)), list(Gin.edges(data=True)))
- assert_graphs_equal(G, Gin)
+ assert nodes_equal(list(G.nodes(data=True)), list(Gin.nodes(data=True)))
+ assert edges_equal(list(G.edges(data=True)), list(Gin.edges(data=True)))
+ assert graphs_equal(G, Gin)
os.close(fd)
os.unlink(fname)
@@ -74,6 +70,6 @@ class TestGpickle:
nx.write_gpickle(G, f, 0)
f.seek(0)
Gin = nx.read_gpickle(f)
- assert_nodes_equal(list(G.nodes(data=True)), list(Gin.nodes(data=True)))
- assert_edges_equal(list(G.edges(data=True)), list(Gin.edges(data=True)))
- assert_graphs_equal(G, Gin)
+ assert nodes_equal(list(G.nodes(data=True)), list(Gin.nodes(data=True)))
+ assert edges_equal(list(G.edges(data=True)), list(Gin.edges(data=True)))
+ assert graphs_equal(G, Gin)
diff --git a/networkx/readwrite/tests/test_graph6.py b/networkx/readwrite/tests/test_graph6.py
index 74d7cea1..ec9c1347 100644
--- a/networkx/readwrite/tests/test_graph6.py
+++ b/networkx/readwrite/tests/test_graph6.py
@@ -4,8 +4,7 @@ import pytest
import networkx as nx
import networkx.readwrite.graph6 as g6
-from networkx.testing.utils import assert_edges_equal
-from networkx.testing.utils import assert_nodes_equal
+from networkx.utils import nodes_equal, edges_equal
class TestGraph6Utils:
@@ -20,8 +19,8 @@ class TestFromGraph6Bytes:
def test_from_graph6_bytes(self):
data = b"DF{"
G = nx.from_graph6_bytes(data)
- assert_nodes_equal(G.nodes(), [0, 1, 2, 3, 4])
- assert_edges_equal(
+ assert nodes_equal(G.nodes(), [0, 1, 2, 3, 4])
+ assert edges_equal(
G.edges(), [(0, 3), (0, 4), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
)
@@ -30,8 +29,8 @@ class TestFromGraph6Bytes:
G = nx.from_graph6_bytes(data)
fh = BytesIO(data)
Gin = nx.read_graph6(fh)
- assert_nodes_equal(G.nodes(), Gin.nodes())
- assert_edges_equal(G.edges(), Gin.edges())
+ assert nodes_equal(G.nodes(), Gin.nodes())
+ assert edges_equal(G.edges(), Gin.edges())
class TestReadGraph6:
@@ -100,8 +99,8 @@ class TestWriteGraph6:
nx.write_graph6(G, f)
f.seek(0)
H = nx.read_graph6(f)
- assert_nodes_equal(G.nodes(), H.nodes())
- assert_edges_equal(G.edges(), H.edges())
+ assert nodes_equal(G.nodes(), H.nodes())
+ assert edges_equal(G.edges(), H.edges())
def test_write_path(self):
with tempfile.NamedTemporaryFile() as f:
diff --git a/networkx/readwrite/tests/test_graphml.py b/networkx/readwrite/tests/test_graphml.py
index 75f1a91b..fbbc1953 100644
--- a/networkx/readwrite/tests/test_graphml.py
+++ b/networkx/readwrite/tests/test_graphml.py
@@ -1,6 +1,6 @@
import pytest
import networkx as nx
-from networkx.testing.utils import assert_edges_equal, assert_nodes_equal
+from networkx.utils import nodes_equal, edges_equal
from networkx.readwrite.graphml import GraphMLWriter
import io
import tempfile
@@ -293,51 +293,51 @@ class TestReadGraphML(BaseGraphML):
def test_read_simple_undirected_graphml(self):
G = self.simple_undirected_graph
H = nx.read_graphml(self.simple_undirected_fh)
- assert_nodes_equal(G.nodes(), H.nodes())
- assert_edges_equal(G.edges(), H.edges())
+ assert nodes_equal(G.nodes(), H.nodes())
+ assert edges_equal(G.edges(), H.edges())
self.simple_undirected_fh.seek(0)
PG = nx.parse_graphml(self.simple_undirected_data)
- assert_nodes_equal(G.nodes(), PG.nodes())
- assert_edges_equal(G.edges(), PG.edges())
+ assert nodes_equal(G.nodes(), PG.nodes())
+ assert edges_equal(G.edges(), PG.edges())
def test_read_undirected_multigraph_graphml(self):
G = self.undirected_multigraph
H = nx.read_graphml(self.undirected_multigraph_fh)
- assert_nodes_equal(G.nodes(), H.nodes())
- assert_edges_equal(G.edges(), H.edges())
+ assert nodes_equal(G.nodes(), H.nodes())
+ assert edges_equal(G.edges(), H.edges())
self.undirected_multigraph_fh.seek(0)
PG = nx.parse_graphml(self.undirected_multigraph_data)
- assert_nodes_equal(G.nodes(), PG.nodes())
- assert_edges_equal(G.edges(), PG.edges())
+ assert nodes_equal(G.nodes(), PG.nodes())
+ assert edges_equal(G.edges(), PG.edges())
def test_read_undirected_multigraph_no_multiedge_graphml(self):
G = self.undirected_multigraph_no_multiedge
H = nx.read_graphml(self.undirected_multigraph_no_multiedge_fh)
- assert_nodes_equal(G.nodes(), H.nodes())
- assert_edges_equal(G.edges(), H.edges())
+ assert nodes_equal(G.nodes(), H.nodes())
+ assert edges_equal(G.edges(), H.edges())
self.undirected_multigraph_no_multiedge_fh.seek(0)
PG = nx.parse_graphml(self.undirected_multigraph_no_multiedge_data)
- assert_nodes_equal(G.nodes(), PG.nodes())
- assert_edges_equal(G.edges(), PG.edges())
+ assert nodes_equal(G.nodes(), PG.nodes())
+ assert edges_equal(G.edges(), PG.edges())
def test_read_undirected_multigraph_only_ids_for_multiedges_graphml(self):
G = self.multigraph_only_ids_for_multiedges
H = nx.read_graphml(self.multigraph_only_ids_for_multiedges_fh)
- assert_nodes_equal(G.nodes(), H.nodes())
- assert_edges_equal(G.edges(), H.edges())
+ assert nodes_equal(G.nodes(), H.nodes())
+ assert edges_equal(G.edges(), H.edges())
self.multigraph_only_ids_for_multiedges_fh.seek(0)
PG = nx.parse_graphml(self.multigraph_only_ids_for_multiedges_data)
- assert_nodes_equal(G.nodes(), PG.nodes())
- assert_edges_equal(G.edges(), PG.edges())
+ assert nodes_equal(G.nodes(), PG.nodes())
+ assert edges_equal(G.edges(), PG.edges())
def test_read_attribute_graphml(self):
G = self.attribute_graph
H = nx.read_graphml(self.attribute_fh)
- assert_nodes_equal(G.nodes(True), sorted(H.nodes(data=True)))
+ assert nodes_equal(G.nodes(True), sorted(H.nodes(data=True)))
ge = sorted(G.edges(data=True))
he = sorted(H.edges(data=True))
for a, b in zip(ge, he):
@@ -494,7 +494,7 @@ class TestReadGraphML(BaseGraphML):
nx.write_graphml(G, fh)
fh.seek(0)
H = nx.read_graphml(fh, node_type=int)
- assert_edges_equal(G.edges(data=True, keys=True), H.edges(data=True, keys=True))
+ assert edges_equal(G.edges(data=True, keys=True), H.edges(data=True, keys=True))
assert G._adj == H._adj
Gadj = {
@@ -1073,9 +1073,9 @@ class TestWriteGraphML(BaseGraphML):
H = nx.read_graphml(fh)
fh.seek(0)
- assert_nodes_equal(G.nodes(), H.nodes())
- assert_edges_equal(G.edges(), H.edges())
- assert_edges_equal(G.edges(data=True), H.edges(data=True))
+ assert nodes_equal(G.nodes(), H.nodes())
+ assert edges_equal(G.edges(), H.edges())
+ assert edges_equal(G.edges(data=True), H.edges(data=True))
self.attribute_named_key_ids_fh.seek(0)
xml = parse(fh)
@@ -1118,9 +1118,9 @@ class TestWriteGraphML(BaseGraphML):
H = nx.read_graphml(fh)
fh.seek(0)
- assert_nodes_equal(G.nodes(), H.nodes())
- assert_edges_equal(G.edges(), H.edges())
- assert_edges_equal(G.edges(data=True), H.edges(data=True))
+ assert nodes_equal(G.nodes(), H.nodes())
+ assert edges_equal(G.edges(), H.edges())
+ assert edges_equal(G.edges(data=True), H.edges(data=True))
self.attribute_numeric_type_fh.seek(0)
xml = parse(fh)
@@ -1146,7 +1146,7 @@ class TestWriteGraphML(BaseGraphML):
self.writer(G, fname)
H = nx.read_graphml(fname)
assert H.is_multigraph()
- assert_edges_equal(G.edges(keys=True), H.edges(keys=True))
+ assert edges_equal(G.edges(keys=True), H.edges(keys=True))
assert G._adj == H._adj
os.close(fd)
os.unlink(fname)
@@ -1162,8 +1162,8 @@ class TestWriteGraphML(BaseGraphML):
self.writer(G, fh)
fh.seek(0)
H = nx.read_graphml(fh, node_type=int)
- assert_nodes_equal(G.nodes(), H.nodes())
- assert_edges_equal(G.edges(), H.edges())
+ assert nodes_equal(G.nodes(), H.nodes())
+ assert edges_equal(G.edges(), H.edges())
assert G.graph == H.graph
def test_mixed_type_attributes(self):
diff --git a/networkx/readwrite/tests/test_p2g.py b/networkx/readwrite/tests/test_p2g.py
index 0b1a910f..93ab1381 100644
--- a/networkx/readwrite/tests/test_p2g.py
+++ b/networkx/readwrite/tests/test_p2g.py
@@ -1,7 +1,7 @@
import networkx as nx
import io
from networkx.readwrite.p2g import read_p2g, write_p2g
-from networkx.testing import assert_edges_equal
+from networkx.utils import edges_equal
class TestP2G:
@@ -29,7 +29,7 @@ c
assert G.name == "name"
assert sorted(G) == ["a", "b", "c"]
edges = [(str(u), str(v)) for u, v in G.edges()]
- assert_edges_equal(G.edges(), [("a", "c"), ("a", "b"), ("c", "a"), ("c", "c")])
+ assert edges_equal(G.edges(), [("a", "c"), ("a", "b"), ("c", "a"), ("c", "c")])
def test_write_p2g(self):
s = b"""foo
@@ -58,4 +58,4 @@ c
write_p2g(G, fh)
fh.seek(0)
H = read_p2g(fh)
- assert_edges_equal(G.edges(), H.edges())
+ assert edges_equal(G.edges(), H.edges())
diff --git a/networkx/readwrite/tests/test_pajek.py b/networkx/readwrite/tests/test_pajek.py
index 7d7e4c48..d5b6f728 100644
--- a/networkx/readwrite/tests/test_pajek.py
+++ b/networkx/readwrite/tests/test_pajek.py
@@ -4,7 +4,7 @@ Pajek tests
import networkx as nx
import os
import tempfile
-from networkx.testing import assert_edges_equal, assert_nodes_equal
+from networkx.utils import nodes_equal, edges_equal
class TestPajek:
@@ -39,12 +39,12 @@ class TestPajek:
data = """*Vertices 2\n1 "1"\n2 "2"\n*Edges\n1 2\n2 1"""
G = nx.parse_pajek(data)
assert sorted(G.nodes()) == ["1", "2"]
- assert_edges_equal(G.edges(), [("1", "2"), ("1", "2")])
+ assert edges_equal(G.edges(), [("1", "2"), ("1", "2")])
def test_parse_pajek(self):
G = nx.parse_pajek(self.data)
assert sorted(G.nodes()) == ["A1", "Bb", "C", "D2"]
- assert_edges_equal(
+ assert edges_equal(
G.edges(),
[
("A1", "A1"),
@@ -62,7 +62,7 @@ class TestPajek:
G = nx.parse_pajek(data)
assert set(G.nodes()) == {"one", "two", "three"}
assert G.nodes["two"] == {"id": "2"}
- assert_edges_equal(
+ assert edges_equal(
set(G.edges()),
{("one", "one"), ("two", "one"), ("two", "two"), ("two", "three")},
)
@@ -71,7 +71,7 @@ class TestPajek:
G = nx.parse_pajek(self.data)
Gin = nx.read_pajek(self.fname)
assert sorted(G.nodes()) == sorted(Gin.nodes())
- assert_edges_equal(G.edges(), Gin.edges())
+ assert edges_equal(G.edges(), Gin.edges())
assert self.G.graph == Gin.graph
for n in G:
assert G.nodes[n] == Gin.nodes[n]
@@ -84,8 +84,8 @@ class TestPajek:
nx.write_pajek(G, fh)
fh.seek(0)
H = nx.read_pajek(fh)
- assert_nodes_equal(list(G), list(H))
- assert_edges_equal(list(G.edges()), list(H.edges()))
+ assert nodes_equal(list(G), list(H))
+ assert edges_equal(list(G.edges()), list(H.edges()))
# Graph name is left out for now, therefore it is not tested.
# assert_equal(G.graph, H.graph)
@@ -124,6 +124,6 @@ class TestPajek:
nx.write_pajek(G, fh)
fh.seek(0)
H = nx.read_pajek(fh)
- assert_nodes_equal(list(G), list(H))
- assert_edges_equal(list(G.edges()), list(H.edges()))
+ assert nodes_equal(list(G), list(H))
+ assert edges_equal(list(G.edges()), list(H.edges()))
assert G.graph == H.graph
diff --git a/networkx/readwrite/tests/test_sparse6.py b/networkx/readwrite/tests/test_sparse6.py
index 141d8230..ac694d65 100644
--- a/networkx/readwrite/tests/test_sparse6.py
+++ b/networkx/readwrite/tests/test_sparse6.py
@@ -3,19 +3,18 @@ import tempfile
import pytest
import networkx as nx
-from networkx.testing.utils import assert_edges_equal
-from networkx.testing.utils import assert_nodes_equal
+from networkx.utils import nodes_equal, edges_equal
class TestSparseGraph6:
def test_from_sparse6_bytes(self):
data = b":Q___eDcdFcDeFcE`GaJ`IaHbKNbLM"
G = nx.from_sparse6_bytes(data)
- assert_nodes_equal(
+ assert nodes_equal(
sorted(G.nodes()),
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17],
)
- assert_edges_equal(
+ assert edges_equal(
G.edges(),
[
(0, 1),
@@ -61,8 +60,8 @@ class TestSparseGraph6:
G = nx.from_sparse6_bytes(data)
fh = BytesIO(data)
Gin = nx.read_sparse6(fh)
- assert_nodes_equal(G.nodes(), Gin.nodes())
- assert_edges_equal(G.edges(), Gin.edges())
+ assert nodes_equal(G.nodes(), Gin.nodes())
+ assert edges_equal(G.edges(), Gin.edges())
def test_read_many_graph6(self):
# Read many graphs into list
@@ -71,7 +70,7 @@ class TestSparseGraph6:
glist = nx.read_sparse6(fh)
assert len(glist) == 2
for G in glist:
- assert_nodes_equal(
+ assert nodes_equal(
G.nodes(),
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17],
)
@@ -152,7 +151,7 @@ class TestWriteSparse6:
gstr = gstr.getvalue().rstrip()
g2 = nx.from_sparse6_bytes(gstr)
assert g2.order() == g.order()
- assert_edges_equal(g2.edges(), g.edges())
+ assert edges_equal(g2.edges(), g.edges())
def test_no_directed_graphs(self):
with pytest.raises(nx.NetworkXNotImplemented):
diff --git a/networkx/testing/utils.py b/networkx/testing/utils.py
index 68faf230..b16c3c1c 100644
--- a/networkx/testing/utils.py
+++ b/networkx/testing/utils.py
@@ -1,3 +1,6 @@
+import warnings
+from networkx.utils import nodes_equal, edges_equal, graphs_equal
+
__all__ = [
"assert_nodes_equal",
"assert_edges_equal",
@@ -7,8 +10,6 @@ __all__ = [
def almost_equal(x, y, places=7):
- import warnings
-
warnings.warn(
(
"`almost_equal` is deprecated and will be removed in version 3.0.\n"
@@ -20,55 +21,33 @@ def almost_equal(x, y, places=7):
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
+ warnings.warn(
+ (
+ "`assert_nodes_equal` is deprecated and will be removed in version 3.0.\n"
+ "Use `from networkx.utils import nodes_equal` and `assert nodes_equal` instead.\n"
+ ),
+ DeprecationWarning,
+ )
+ assert nodes_equal(nodes1, nodes2)
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)
+ warnings.warn(
+ (
+ "`assert_edges_equal` is deprecated and will be removed in version 3.0.\n"
+ "Use `from networkx.utils import edges_equal` and `assert edges_equal` instead.\n"
+ ),
+ DeprecationWarning,
+ )
+ assert edges_equal(edges1, edges2)
def assert_graphs_equal(graph1, graph2):
- assert graph1.adj == graph2.adj
- assert graph1.nodes == graph2.nodes
- assert graph1.graph == graph2.graph
+ warnings.warn(
+ (
+ "`assert_graphs_equal` is deprecated and will be removed in version 3.0.\n"
+ "Use `from networkx.utils import graphs_equal` and `assert graphs_equal` instead.\n"
+ ),
+ DeprecationWarning,
+ )
+ assert graphs_equal(graph1, graph2)
diff --git a/networkx/tests/test_convert.py b/networkx/tests/test_convert.py
index dad757c0..a99b6001 100644
--- a/networkx/tests/test_convert.py
+++ b/networkx/tests/test_convert.py
@@ -1,7 +1,7 @@
import pytest
import networkx as nx
-from networkx.testing import assert_nodes_equal, assert_edges_equal, assert_graphs_equal
+from networkx.utils import nodes_equal, edges_equal, graphs_equal
from networkx.convert import (
to_networkx_graph,
to_dict_of_dicts,
@@ -27,11 +27,11 @@ class TestConvert:
# Dict of [dicts, lists]
GG = source(dod)
- assert_graphs_equal(G, GG)
+ assert graphs_equal(G, GG)
GW = to_networkx_graph(dod)
- assert_graphs_equal(G, GW)
+ assert graphs_equal(G, GW)
GI = nx.Graph(dod)
- assert_graphs_equal(G, GI)
+ assert graphs_equal(G, GI)
# With nodelist keyword
P4 = nx.path_graph(4)
@@ -40,7 +40,7 @@ class TestConvert:
P3.graph = {}
dod = dest(P4, nodelist=[0, 1, 2])
Gdod = nx.Graph(dod)
- assert_graphs_equal(Gdod, P3)
+ assert graphs_equal(Gdod, P3)
def test_exceptions(self):
# NX graph
@@ -78,14 +78,14 @@ class TestConvert:
# Dict of [dicts, lists]
dod = dest(G)
GG = source(dod)
- assert_nodes_equal(sorted(G.nodes()), sorted(GG.nodes()))
- assert_edges_equal(sorted(G.edges()), sorted(GG.edges()))
+ assert nodes_equal(sorted(G.nodes()), sorted(GG.nodes()))
+ assert edges_equal(sorted(G.edges()), sorted(GG.edges()))
GW = to_networkx_graph(dod)
- assert_nodes_equal(sorted(G.nodes()), sorted(GW.nodes()))
- assert_edges_equal(sorted(G.edges()), sorted(GW.edges()))
+ assert nodes_equal(sorted(G.nodes()), sorted(GW.nodes()))
+ assert edges_equal(sorted(G.edges()), sorted(GW.edges()))
GI = nx.Graph(dod)
- assert_nodes_equal(sorted(G.nodes()), sorted(GI.nodes()))
- assert_edges_equal(sorted(G.edges()), sorted(GI.edges()))
+ assert nodes_equal(sorted(G.nodes()), sorted(GI.nodes()))
+ assert edges_equal(sorted(G.edges()), sorted(GI.edges()))
G = cycle_graph(10, create_using=nx.DiGraph)
dod = dest(G)
@@ -108,11 +108,11 @@ class TestConvert:
# Dict of dicts
dod = to_dict_of_dicts(G)
GG = from_dict_of_dicts(dod, create_using=nx.Graph)
- assert_nodes_equal(sorted(G.nodes()), sorted(GG.nodes()))
- assert_edges_equal(sorted(G.edges()), sorted(GG.edges()))
+ assert nodes_equal(sorted(G.nodes()), sorted(GG.nodes()))
+ assert edges_equal(sorted(G.edges()), sorted(GG.edges()))
GW = to_networkx_graph(dod, create_using=nx.Graph)
- assert_nodes_equal(sorted(G.nodes()), sorted(GW.nodes()))
- assert_edges_equal(sorted(G.edges()), sorted(GW.edges()))
+ assert nodes_equal(sorted(G.nodes()), sorted(GW.nodes()))
+ assert edges_equal(sorted(G.edges()), sorted(GW.edges()))
GI = nx.Graph(dod)
assert sorted(G.nodes()) == sorted(GI.nodes())
assert sorted(G.edges()) == sorted(GI.edges())
@@ -122,14 +122,14 @@ class TestConvert:
GG = from_dict_of_lists(dol, create_using=nx.Graph)
# dict of lists throws away edge data so set it to none
enone = [(u, v, {}) for (u, v, d) in G.edges(data=True)]
- assert_nodes_equal(sorted(G.nodes()), sorted(GG.nodes()))
- assert_edges_equal(enone, sorted(GG.edges(data=True)))
+ assert nodes_equal(sorted(G.nodes()), sorted(GG.nodes()))
+ assert edges_equal(enone, sorted(GG.edges(data=True)))
GW = to_networkx_graph(dol, create_using=nx.Graph)
- assert_nodes_equal(sorted(G.nodes()), sorted(GW.nodes()))
- assert_edges_equal(enone, sorted(GW.edges(data=True)))
+ assert nodes_equal(sorted(G.nodes()), sorted(GW.nodes()))
+ assert edges_equal(enone, sorted(GW.edges(data=True)))
GI = nx.Graph(dol)
- assert_nodes_equal(sorted(G.nodes()), sorted(GI.nodes()))
- assert_edges_equal(enone, sorted(GI.edges(data=True)))
+ assert nodes_equal(sorted(G.nodes()), sorted(GI.nodes()))
+ assert edges_equal(enone, sorted(GI.edges(data=True)))
def test_with_multiedges_self_loops(self):
G = cycle_graph(10)
@@ -149,14 +149,14 @@ class TestConvert:
# with self loops, OK
dod = to_dict_of_dicts(XGS)
GG = from_dict_of_dicts(dod, create_using=nx.Graph)
- assert_nodes_equal(XGS.nodes(), GG.nodes())
- assert_edges_equal(XGS.edges(), GG.edges())
+ assert nodes_equal(XGS.nodes(), GG.nodes())
+ assert edges_equal(XGS.edges(), GG.edges())
GW = to_networkx_graph(dod, create_using=nx.Graph)
- assert_nodes_equal(XGS.nodes(), GW.nodes())
- assert_edges_equal(XGS.edges(), GW.edges())
+ assert nodes_equal(XGS.nodes(), GW.nodes())
+ assert edges_equal(XGS.edges(), GW.edges())
GI = nx.Graph(dod)
- assert_nodes_equal(XGS.nodes(), GI.nodes())
- assert_edges_equal(XGS.edges(), GI.edges())
+ assert nodes_equal(XGS.nodes(), GI.nodes())
+ assert edges_equal(XGS.edges(), GI.edges())
# Dict of lists
# with self loops, OK
@@ -164,71 +164,71 @@ class TestConvert:
GG = from_dict_of_lists(dol, create_using=nx.Graph)
# dict of lists throws away edge data so set it to none
enone = [(u, v, {}) for (u, v, d) in XGS.edges(data=True)]
- assert_nodes_equal(sorted(XGS.nodes()), sorted(GG.nodes()))
- assert_edges_equal(enone, sorted(GG.edges(data=True)))
+ assert nodes_equal(sorted(XGS.nodes()), sorted(GG.nodes()))
+ assert edges_equal(enone, sorted(GG.edges(data=True)))
GW = to_networkx_graph(dol, create_using=nx.Graph)
- assert_nodes_equal(sorted(XGS.nodes()), sorted(GW.nodes()))
- assert_edges_equal(enone, sorted(GW.edges(data=True)))
+ assert nodes_equal(sorted(XGS.nodes()), sorted(GW.nodes()))
+ assert edges_equal(enone, sorted(GW.edges(data=True)))
GI = nx.Graph(dol)
- assert_nodes_equal(sorted(XGS.nodes()), sorted(GI.nodes()))
- assert_edges_equal(enone, sorted(GI.edges(data=True)))
+ assert nodes_equal(sorted(XGS.nodes()), sorted(GI.nodes()))
+ assert edges_equal(enone, sorted(GI.edges(data=True)))
# Dict of dicts
# with multiedges, OK
dod = to_dict_of_dicts(XGM)
GG = from_dict_of_dicts(dod, create_using=nx.MultiGraph, multigraph_input=True)
- assert_nodes_equal(sorted(XGM.nodes()), sorted(GG.nodes()))
- assert_edges_equal(sorted(XGM.edges()), sorted(GG.edges()))
+ assert nodes_equal(sorted(XGM.nodes()), sorted(GG.nodes()))
+ assert edges_equal(sorted(XGM.edges()), sorted(GG.edges()))
GW = to_networkx_graph(dod, create_using=nx.MultiGraph, multigraph_input=True)
- assert_nodes_equal(sorted(XGM.nodes()), sorted(GW.nodes()))
- assert_edges_equal(sorted(XGM.edges()), sorted(GW.edges()))
+ assert nodes_equal(sorted(XGM.nodes()), sorted(GW.nodes()))
+ assert edges_equal(sorted(XGM.edges()), sorted(GW.edges()))
GI = nx.MultiGraph(dod) # convert can't tell whether to duplicate edges!
- assert_nodes_equal(sorted(XGM.nodes()), sorted(GI.nodes()))
+ assert nodes_equal(sorted(XGM.nodes()), sorted(GI.nodes()))
# assert_not_equal(sorted(XGM.edges()), sorted(GI.edges()))
assert not sorted(XGM.edges()) == sorted(GI.edges())
GE = from_dict_of_dicts(dod, create_using=nx.MultiGraph, multigraph_input=False)
- assert_nodes_equal(sorted(XGM.nodes()), sorted(GE.nodes()))
+ assert nodes_equal(sorted(XGM.nodes()), sorted(GE.nodes()))
assert sorted(XGM.edges()) != sorted(GE.edges())
GI = nx.MultiGraph(XGM)
- assert_nodes_equal(sorted(XGM.nodes()), sorted(GI.nodes()))
- assert_edges_equal(sorted(XGM.edges()), sorted(GI.edges()))
+ assert nodes_equal(sorted(XGM.nodes()), sorted(GI.nodes()))
+ assert edges_equal(sorted(XGM.edges()), sorted(GI.edges()))
GM = nx.MultiGraph(G)
- assert_nodes_equal(sorted(GM.nodes()), sorted(G.nodes()))
- assert_edges_equal(sorted(GM.edges()), sorted(G.edges()))
+ assert nodes_equal(sorted(GM.nodes()), sorted(G.nodes()))
+ assert edges_equal(sorted(GM.edges()), sorted(G.edges()))
# Dict of lists
# with multiedges, OK, but better write as DiGraph else you'll
# get double edges
dol = to_dict_of_lists(G)
GG = from_dict_of_lists(dol, create_using=nx.MultiGraph)
- assert_nodes_equal(sorted(G.nodes()), sorted(GG.nodes()))
- assert_edges_equal(sorted(G.edges()), sorted(GG.edges()))
+ assert nodes_equal(sorted(G.nodes()), sorted(GG.nodes()))
+ assert edges_equal(sorted(G.edges()), sorted(GG.edges()))
GW = to_networkx_graph(dol, create_using=nx.MultiGraph)
- assert_nodes_equal(sorted(G.nodes()), sorted(GW.nodes()))
- assert_edges_equal(sorted(G.edges()), sorted(GW.edges()))
+ assert nodes_equal(sorted(G.nodes()), sorted(GW.nodes()))
+ assert edges_equal(sorted(G.edges()), sorted(GW.edges()))
GI = nx.MultiGraph(dol)
- assert_nodes_equal(sorted(G.nodes()), sorted(GI.nodes()))
- assert_edges_equal(sorted(G.edges()), sorted(GI.edges()))
+ assert nodes_equal(sorted(G.nodes()), sorted(GI.nodes()))
+ assert edges_equal(sorted(G.edges()), sorted(GI.edges()))
def test_edgelists(self):
P = nx.path_graph(4)
e = [(0, 1), (1, 2), (2, 3)]
G = nx.Graph(e)
- assert_nodes_equal(sorted(G.nodes()), sorted(P.nodes()))
- assert_edges_equal(sorted(G.edges()), sorted(P.edges()))
- assert_edges_equal(sorted(G.edges(data=True)), sorted(P.edges(data=True)))
+ assert nodes_equal(sorted(G.nodes()), sorted(P.nodes()))
+ assert edges_equal(sorted(G.edges()), sorted(P.edges()))
+ assert edges_equal(sorted(G.edges(data=True)), sorted(P.edges(data=True)))
e = [(0, 1, {}), (1, 2, {}), (2, 3, {})]
G = nx.Graph(e)
- assert_nodes_equal(sorted(G.nodes()), sorted(P.nodes()))
- assert_edges_equal(sorted(G.edges()), sorted(P.edges()))
- assert_edges_equal(sorted(G.edges(data=True)), sorted(P.edges(data=True)))
+ assert nodes_equal(sorted(G.nodes()), sorted(P.nodes()))
+ assert edges_equal(sorted(G.edges()), sorted(P.edges()))
+ assert edges_equal(sorted(G.edges(data=True)), sorted(P.edges(data=True)))
e = ((n, n + 1) for n in range(3))
G = nx.Graph(e)
- assert_nodes_equal(sorted(G.nodes()), sorted(P.nodes()))
- assert_edges_equal(sorted(G.edges()), sorted(P.edges()))
- assert_edges_equal(sorted(G.edges(data=True)), sorted(P.edges(data=True)))
+ assert nodes_equal(sorted(G.nodes()), sorted(P.nodes()))
+ assert edges_equal(sorted(G.edges()), sorted(P.edges()))
+ assert edges_equal(sorted(G.edges(data=True)), sorted(P.edges(data=True)))
def test_directed_to_undirected(self):
edges1 = [(0, 1), (1, 2), (2, 0)]
@@ -260,7 +260,7 @@ class TestConvert:
def test_to_edgelist(self):
G = nx.Graph([(1, 1)])
elist = nx.to_edgelist(G, nodelist=list(G))
- assert_edges_equal(G.edges(data=True), elist)
+ assert edges_equal(G.edges(data=True), elist)
def test_custom_node_attr_dict_safekeeping(self):
class custom_dict(dict):
diff --git a/networkx/tests/test_convert_numpy.py b/networkx/tests/test_convert_numpy.py
index b62f823f..f155de35 100644
--- a/networkx/tests/test_convert_numpy.py
+++ b/networkx/tests/test_convert_numpy.py
@@ -4,7 +4,7 @@ np = pytest.importorskip("numpy")
import networkx as nx
from networkx.generators.classic import barbell_graph, cycle_graph, path_graph
-from networkx.testing.utils import assert_graphs_equal
+from networkx.utils import graphs_equal
def test_to_numpy_matrix_deprecation():
@@ -201,9 +201,9 @@ class TestConvertNumpyMatrix:
expected.add_weighted_edges_from([(u, v, 1) for (u, v) in edges])
expected.add_edge(1, 1, weight=2)
actual = nx.from_numpy_matrix(A, parallel_edges=True, create_using=nx.DiGraph)
- assert_graphs_equal(actual, expected)
+ assert graphs_equal(actual, expected)
actual = nx.from_numpy_matrix(A, parallel_edges=False, create_using=nx.DiGraph)
- assert_graphs_equal(actual, expected)
+ assert graphs_equal(actual, expected)
# Now each integer entry in the adjacency matrix is interpreted as the
# number of parallel edges in the graph if the appropriate keyword
# argument is specified.
@@ -213,7 +213,7 @@ class TestConvertNumpyMatrix:
actual = nx.from_numpy_matrix(
A, parallel_edges=True, create_using=nx.MultiDiGraph
)
- assert_graphs_equal(actual, expected)
+ assert graphs_equal(actual, expected)
expected = nx.MultiDiGraph()
expected.add_edges_from(set(edges), weight=1)
# The sole self-loop (edge 0) on vertex 1 should have weight 2.
@@ -221,7 +221,7 @@ class TestConvertNumpyMatrix:
actual = nx.from_numpy_matrix(
A, parallel_edges=False, create_using=nx.MultiDiGraph
)
- assert_graphs_equal(actual, expected)
+ assert graphs_equal(actual, expected)
def test_symmetric(self):
"""Tests that a symmetric matrix has edges added only once to an
@@ -232,7 +232,7 @@ class TestConvertNumpyMatrix:
G = nx.from_numpy_matrix(A, create_using=nx.MultiGraph)
expected = nx.MultiGraph()
expected.add_edge(0, 1, weight=1)
- assert_graphs_equal(G, expected)
+ assert graphs_equal(G, expected)
def test_dtype_int_graph(self):
"""Test that setting dtype int actually gives an integer matrix.
@@ -375,9 +375,9 @@ class TestConvertNumpyArray:
expected.add_weighted_edges_from([(u, v, 1) for (u, v) in edges])
expected.add_edge(1, 1, weight=2)
actual = nx.from_numpy_array(A, parallel_edges=True, create_using=nx.DiGraph)
- assert_graphs_equal(actual, expected)
+ assert graphs_equal(actual, expected)
actual = nx.from_numpy_array(A, parallel_edges=False, create_using=nx.DiGraph)
- assert_graphs_equal(actual, expected)
+ assert graphs_equal(actual, expected)
# Now each integer entry in the adjacency matrix is interpreted as the
# number of parallel edges in the graph if the appropriate keyword
# argument is specified.
@@ -387,7 +387,7 @@ class TestConvertNumpyArray:
actual = nx.from_numpy_array(
A, parallel_edges=True, create_using=nx.MultiDiGraph
)
- assert_graphs_equal(actual, expected)
+ assert graphs_equal(actual, expected)
expected = nx.MultiDiGraph()
expected.add_edges_from(set(edges), weight=1)
# The sole self-loop (edge 0) on vertex 1 should have weight 2.
@@ -395,7 +395,7 @@ class TestConvertNumpyArray:
actual = nx.from_numpy_array(
A, parallel_edges=False, create_using=nx.MultiDiGraph
)
- assert_graphs_equal(actual, expected)
+ assert graphs_equal(actual, expected)
def test_symmetric(self):
"""Tests that a symmetric array has edges added only once to an
@@ -406,7 +406,7 @@ class TestConvertNumpyArray:
G = nx.from_numpy_array(A, create_using=nx.MultiGraph)
expected = nx.MultiGraph()
expected.add_edge(0, 1, weight=1)
- assert_graphs_equal(G, expected)
+ assert graphs_equal(G, expected)
def test_dtype_int_graph(self):
"""Test that setting dtype int actually gives an integer array.
diff --git a/networkx/tests/test_convert_pandas.py b/networkx/tests/test_convert_pandas.py
index 1ad735a7..93be091f 100644
--- a/networkx/tests/test_convert_pandas.py
+++ b/networkx/tests/test_convert_pandas.py
@@ -1,8 +1,6 @@
import pytest
import networkx as nx
-from networkx.testing import assert_nodes_equal
-from networkx.testing import assert_edges_equal
-from networkx.testing import assert_graphs_equal
+from networkx.utils import nodes_equal, edges_equal, graphs_equal
np = pytest.importorskip("numpy")
pd = pytest.importorskip("pandas")
@@ -39,12 +37,12 @@ class TestConvertPandas:
]
)
G = nx.from_pandas_edgelist(self.df, 0, "b", True)
- assert_graphs_equal(G, Gtrue)
+ assert graphs_equal(G, Gtrue)
# MultiGraph
MGtrue = nx.MultiGraph(Gtrue)
MGtrue.add_edge("A", "D", cost=16, weight=4)
MG = nx.from_pandas_edgelist(self.mdf, 0, "b", True, nx.MultiGraph())
- assert_graphs_equal(MG, MGtrue)
+ assert graphs_equal(MG, MGtrue)
def test_from_edgelist_multi_attr(self):
Gtrue = nx.Graph(
@@ -55,7 +53,7 @@ class TestConvertPandas:
]
)
G = nx.from_pandas_edgelist(self.df, 0, "b", ["weight", "cost"])
- assert_graphs_equal(G, Gtrue)
+ assert graphs_equal(G, Gtrue)
def test_from_edgelist_multi_attr_incl_target(self):
Gtrue = nx.Graph(
@@ -66,7 +64,7 @@ class TestConvertPandas:
]
)
G = nx.from_pandas_edgelist(self.df, 0, "b", [0, "b", "weight"])
- assert_graphs_equal(G, Gtrue)
+ assert graphs_equal(G, Gtrue)
def test_from_edgelist_multidigraph_and_edge_attr(self):
# example from issue #2374
@@ -101,8 +99,8 @@ class TestConvertPandas:
edge_attr=["St", "Co", "Mi"],
create_using=nx.MultiDiGraph,
)
- assert_graphs_equal(G1, Gtrue)
- assert_graphs_equal(G2, Gtrue)
+ assert graphs_equal(G1, Gtrue)
+ assert graphs_equal(G2, Gtrue)
def test_from_edgelist_one_attr(self):
Gtrue = nx.Graph(
@@ -113,7 +111,7 @@ class TestConvertPandas:
]
)
G = nx.from_pandas_edgelist(self.df, 0, "b", "weight")
- assert_graphs_equal(G, Gtrue)
+ assert graphs_equal(G, Gtrue)
def test_from_edgelist_int_attr_name(self):
# note: this also tests that edge_attr can be `source`
@@ -121,7 +119,7 @@ class TestConvertPandas:
[("E", "C", {0: "C"}), ("B", "A", {0: "B"}), ("A", "D", {0: "A"})]
)
G = nx.from_pandas_edgelist(self.df, 0, "b", 0)
- assert_graphs_equal(G, Gtrue)
+ assert graphs_equal(G, Gtrue)
def test_from_edgelist_invalid_attr(self):
pytest.raises(
@@ -148,7 +146,7 @@ class TestConvertPandas:
def test_from_edgelist_no_attr(self):
Gtrue = nx.Graph([("E", "C", {}), ("B", "A", {}), ("A", "D", {})])
G = nx.from_pandas_edgelist(self.df, 0, "b")
- assert_graphs_equal(G, Gtrue)
+ assert graphs_equal(G, Gtrue)
def test_from_edgelist(self):
# Pandas DataFrame
@@ -162,11 +160,11 @@ class TestConvertPandas:
edges = pd.DataFrame({"source": source, "target": target, "weight": weight})
GG = nx.from_pandas_edgelist(edges, edge_attr="weight")
- assert_nodes_equal(G.nodes(), GG.nodes())
- assert_edges_equal(G.edges(), GG.edges())
+ assert nodes_equal(G.nodes(), GG.nodes())
+ assert edges_equal(G.edges(), GG.edges())
GW = nx.to_networkx_graph(edges, create_using=nx.Graph)
- assert_nodes_equal(G.nodes(), GW.nodes())
- assert_edges_equal(G.edges(), GW.edges())
+ assert nodes_equal(G.nodes(), GW.nodes())
+ assert edges_equal(G.edges(), GW.edges())
def test_to_edgelist_default_source_or_target_col_exists(self):
@@ -223,13 +221,13 @@ class TestConvertPandas:
Gtrue = graph([(1, 1), (1, 2)])
df = nx.to_pandas_edgelist(Gtrue)
G = nx.from_pandas_edgelist(df, create_using=graph)
- assert_graphs_equal(Gtrue, G)
+ assert graphs_equal(Gtrue, G)
# adjacency
adj = {1: {1: {"weight": 1}, 2: {"weight": 1}}, 2: {1: {"weight": 1}}}
Gtrue = graph(adj)
df = nx.to_pandas_adjacency(Gtrue, dtype=int)
G = nx.from_pandas_adjacency(df, create_using=graph)
- assert_graphs_equal(Gtrue, G)
+ assert graphs_equal(Gtrue, G)
def test_from_adjacency_named(self):
# example from issue #3105
@@ -271,7 +269,7 @@ class TestConvertPandas:
edge_key="attr1",
create_using=nx.MultiGraph(),
)
- assert_graphs_equal(G, Gtrue)
+ assert graphs_equal(G, Gtrue)
df_roundtrip = nx.to_pandas_edgelist(G, edge_key="attr1")
df_roundtrip = df_roundtrip.sort_values("attr1")
@@ -289,7 +287,7 @@ class TestConvertPandas:
]
)
G = nx.from_pandas_edgelist(self.df, 0, "b", True, edge_key="weight")
- assert_graphs_equal(G, Gtrue)
+ assert graphs_equal(G, Gtrue)
def test_nonexisting_edgekey_raises(self):
with pytest.raises(nx.exception.NetworkXError):
diff --git a/networkx/tests/test_convert_scipy.py b/networkx/tests/test_convert_scipy.py
index c246152a..cf4fa818 100644
--- a/networkx/tests/test_convert_scipy.py
+++ b/networkx/tests/test_convert_scipy.py
@@ -5,7 +5,7 @@ sp = pytest.importorskip("scipy")
import scipy.sparse # call as sp.sparse
import networkx as nx
-from networkx.testing import assert_graphs_equal
+from networkx.utils import graphs_equal
from networkx.generators.classic import barbell_graph, cycle_graph, path_graph
@@ -230,11 +230,11 @@ class TestConvertScipy:
actual = nx.from_scipy_sparse_matrix(
A, parallel_edges=True, create_using=nx.DiGraph
)
- assert_graphs_equal(actual, expected)
+ assert graphs_equal(actual, expected)
actual = nx.from_scipy_sparse_matrix(
A, parallel_edges=False, create_using=nx.DiGraph
)
- assert_graphs_equal(actual, expected)
+ assert graphs_equal(actual, expected)
# Now each integer entry in the adjacency matrix is interpreted as the
# number of parallel edges in the graph if the appropriate keyword
# argument is specified.
@@ -244,7 +244,7 @@ class TestConvertScipy:
actual = nx.from_scipy_sparse_matrix(
A, parallel_edges=True, create_using=nx.MultiDiGraph
)
- assert_graphs_equal(actual, expected)
+ assert graphs_equal(actual, expected)
expected = nx.MultiDiGraph()
expected.add_edges_from(set(edges), weight=1)
# The sole self-loop (edge 0) on vertex 1 should have weight 2.
@@ -252,7 +252,7 @@ class TestConvertScipy:
actual = nx.from_scipy_sparse_matrix(
A, parallel_edges=False, create_using=nx.MultiDiGraph
)
- assert_graphs_equal(actual, expected)
+ assert graphs_equal(actual, expected)
def test_symmetric(self):
"""Tests that a symmetric matrix has edges added only once to an
@@ -264,7 +264,7 @@ class TestConvertScipy:
G = nx.from_scipy_sparse_matrix(A, create_using=nx.MultiGraph)
expected = nx.MultiGraph()
expected.add_edge(0, 1, weight=1)
- assert_graphs_equal(G, expected)
+ assert graphs_equal(G, expected)
@pytest.mark.parametrize("sparse_format", ("csr", "csc", "dok"))
@@ -283,4 +283,4 @@ def test_from_scipy_sparse_matrix_formats(sparse_format):
]
)
A = sp.sparse.coo_matrix([[0, 3, 2], [3, 0, 1], [2, 1, 0]]).asformat(sparse_format)
- assert_graphs_equal(expected, nx.from_scipy_sparse_matrix(A))
+ assert graphs_equal(expected, nx.from_scipy_sparse_matrix(A))
diff --git a/networkx/tests/test_relabel.py b/networkx/tests/test_relabel.py
index c4c6e9bc..20118bb0 100644
--- a/networkx/tests/test_relabel.py
+++ b/networkx/tests/test_relabel.py
@@ -1,7 +1,7 @@
import pytest
import networkx as nx
from networkx.generators.classic import empty_graph
-from networkx.testing import assert_nodes_equal, assert_edges_equal
+from networkx.utils import nodes_equal, edges_equal
class TestRelabel:
@@ -29,7 +29,7 @@ class TestRelabel:
degH = (d for n, d in H.degree())
degG = (d for n, d in G.degree())
assert sorted(degH) == sorted(degG)
- assert_nodes_equal(H.nodes(), [1000, 1001, 1002, 1003])
+ assert nodes_equal(H.nodes(), [1000, 1001, 1002, 1003])
H = nx.convert_node_labels_to_integers(G, ordering="increasing degree")
degH = (d for n, d in H.degree())
@@ -92,7 +92,7 @@ class TestRelabel:
G.add_edges_from([("A", "B"), ("A", "C"), ("B", "C"), ("C", "D")])
mapping = {"A": "aardvark", "B": "bear", "C": "cat", "D": "dog"}
H = nx.relabel_nodes(G, mapping)
- assert_nodes_equal(H.nodes(), ["aardvark", "bear", "cat", "dog"])
+ assert nodes_equal(H.nodes(), ["aardvark", "bear", "cat", "dog"])
def test_relabel_nodes_function(self):
G = nx.empty_graph()
@@ -103,13 +103,13 @@ class TestRelabel:
return ord(n)
H = nx.relabel_nodes(G, mapping)
- assert_nodes_equal(H.nodes(), [65, 66, 67, 68])
+ assert nodes_equal(H.nodes(), [65, 66, 67, 68])
def test_relabel_nodes_graph(self):
G = nx.Graph([("A", "B"), ("A", "C"), ("B", "C"), ("C", "D")])
mapping = {"A": "aardvark", "B": "bear", "C": "cat", "D": "dog"}
H = nx.relabel_nodes(G, mapping)
- assert_nodes_equal(H.nodes(), ["aardvark", "bear", "cat", "dog"])
+ assert nodes_equal(H.nodes(), ["aardvark", "bear", "cat", "dog"])
def test_relabel_nodes_orderedgraph(self):
G = nx.OrderedGraph()
@@ -123,39 +123,39 @@ class TestRelabel:
G = nx.DiGraph([("A", "B"), ("A", "C"), ("B", "C"), ("C", "D")])
mapping = {"A": "aardvark", "B": "bear", "C": "cat", "D": "dog"}
H = nx.relabel_nodes(G, mapping, copy=False)
- assert_nodes_equal(H.nodes(), ["aardvark", "bear", "cat", "dog"])
+ assert nodes_equal(H.nodes(), ["aardvark", "bear", "cat", "dog"])
def test_relabel_nodes_multigraph(self):
G = nx.MultiGraph([("a", "b"), ("a", "b")])
mapping = {"a": "aardvark", "b": "bear"}
G = nx.relabel_nodes(G, mapping, copy=False)
- assert_nodes_equal(G.nodes(), ["aardvark", "bear"])
- assert_edges_equal(G.edges(), [("aardvark", "bear"), ("aardvark", "bear")])
+ assert nodes_equal(G.nodes(), ["aardvark", "bear"])
+ assert edges_equal(G.edges(), [("aardvark", "bear"), ("aardvark", "bear")])
def test_relabel_nodes_multidigraph(self):
G = nx.MultiDiGraph([("a", "b"), ("a", "b")])
mapping = {"a": "aardvark", "b": "bear"}
G = nx.relabel_nodes(G, mapping, copy=False)
- assert_nodes_equal(G.nodes(), ["aardvark", "bear"])
- assert_edges_equal(G.edges(), [("aardvark", "bear"), ("aardvark", "bear")])
+ assert nodes_equal(G.nodes(), ["aardvark", "bear"])
+ assert edges_equal(G.edges(), [("aardvark", "bear"), ("aardvark", "bear")])
def test_relabel_isolated_nodes_to_same(self):
G = nx.Graph()
G.add_nodes_from(range(4))
mapping = {1: 1}
H = nx.relabel_nodes(G, mapping, copy=False)
- assert_nodes_equal(H.nodes(), list(range(4)))
+ assert nodes_equal(H.nodes(), list(range(4)))
def test_relabel_nodes_missing(self):
G = nx.Graph([("A", "B"), ("A", "C"), ("B", "C"), ("C", "D")])
mapping = {0: "aardvark"}
# copy=True
H = nx.relabel_nodes(G, mapping, copy=True)
- assert_nodes_equal(H.nodes, G.nodes)
+ assert nodes_equal(H.nodes, G.nodes)
# copy=False
GG = G.copy()
nx.relabel_nodes(G, mapping, copy=False)
- assert_nodes_equal(G.nodes, GG.nodes)
+ assert nodes_equal(G.nodes, GG.nodes)
def test_relabel_copy_name(self):
G = nx.Graph()
@@ -181,13 +181,13 @@ class TestRelabel:
def test_relabel_selfloop(self):
G = nx.DiGraph([(1, 1), (1, 2), (2, 3)])
G = nx.relabel_nodes(G, {1: "One", 2: "Two", 3: "Three"}, copy=False)
- assert_nodes_equal(G.nodes(), ["One", "Three", "Two"])
+ assert nodes_equal(G.nodes(), ["One", "Three", "Two"])
G = nx.MultiDiGraph([(1, 1), (1, 2), (2, 3)])
G = nx.relabel_nodes(G, {1: "One", 2: "Two", 3: "Three"}, copy=False)
- assert_nodes_equal(G.nodes(), ["One", "Three", "Two"])
+ assert nodes_equal(G.nodes(), ["One", "Three", "Two"])
G = nx.MultiDiGraph([(1, 1)])
G = nx.relabel_nodes(G, {1: 0}, copy=False)
- assert_nodes_equal(G.nodes(), [0])
+ assert nodes_equal(G.nodes(), [0])
def test_relabel_multidigraph_inout_merge_nodes(self):
for MG in (nx.MultiGraph, nx.MultiDiGraph):
diff --git a/networkx/utils/misc.py b/networkx/utils/misc.py
index 2df5f48b..ad6e3506 100644
--- a/networkx/utils/misc.py
+++ b/networkx/utils/misc.py
@@ -41,6 +41,9 @@ __all__ = [
"create_random_state",
"create_py_random_state",
"PythonRandomInterface",
+ "nodes_equal",
+ "edges_equal",
+ "graphs_equal",
]
@@ -540,3 +543,107 @@ def create_py_random_state(random_state=None):
return random.Random(random_state)
msg = f"{random_state} cannot be used to generate a random.Random instance"
raise ValueError(msg)
+
+
+def nodes_equal(nodes1, nodes2):
+ """Check if nodes are equal.
+
+ Equality here means equal as Python objects.
+ Node data must match if included.
+ The order of nodes is not relevant.
+
+ Parameters
+ ----------
+ nodes1, nodes2 : iterables of nodes, or (node, datadict) tuples
+
+ Returns
+ -------
+ bool
+ True if nodes are equal, False otherwise.
+ """
+ nlist1 = list(nodes1)
+ nlist2 = list(nodes2)
+ try:
+ d1 = dict(nlist1)
+ d2 = dict(nlist2)
+ except (ValueError, TypeError):
+ d1 = dict.fromkeys(nlist1)
+ d2 = dict.fromkeys(nlist2)
+ return d1 == d2
+
+
+def edges_equal(edges1, edges2):
+ """Check if edges are equal.
+
+ Equality here means equal as Python objects.
+ Edge data must match if included.
+ The order of the edges is not relevant.
+
+ Parameters
+ ----------
+ edges1, edges2 : iterables of 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)
+
+ Returns
+ -------
+ bool
+ True if edges are equal, False otherwise.
+ """
+ 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
+ if c1 != c2:
+ return False
+ # can check one direction because lengths are the same.
+ for n, nbrdict in d1.items():
+ for nbr, datalist in nbrdict.items():
+ if n not in d2:
+ return False
+ if nbr not in d2[n]:
+ return False
+ d2datalist = d2[n][nbr]
+ for data in datalist:
+ if datalist.count(data) != d2datalist.count(data):
+ return False
+ return True
+
+
+def graphs_equal(graph1, graph2):
+ """Check if graphs are equal.
+
+ Equality here means equal as Python objects (not isomorphism).
+ Node, edge and graph data must match.
+
+ Parameters
+ ----------
+ graph1, graph2 : graph
+
+ Returns
+ -------
+ bool
+ True if graphs are equal, False otherwise.
+ """
+ return (
+ graph1.adj == graph2.adj
+ and graph1.nodes == graph2.nodes
+ and graph1.graph == graph2.graph
+ )