Fixed database typo and removed unnecessary class identifier.
This commit is contained in:
parent
00ad49a143
commit
45fb349a7d
5098 changed files with 952558 additions and 85 deletions
2
venv/Lib/site-packages/networkx/testing/__init__.py
Normal file
2
venv/Lib/site-packages/networkx/testing/__init__.py
Normal file
|
@ -0,0 +1,2 @@
|
|||
from networkx.testing.utils import *
|
||||
from networkx.testing.test import run
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
34
venv/Lib/site-packages/networkx/testing/test.py
Normal file
34
venv/Lib/site-packages/networkx/testing/test.py
Normal file
|
@ -0,0 +1,34 @@
|
|||
def run(verbosity=1, doctest=False):
|
||||
"""Run NetworkX tests.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
verbosity: integer, optional
|
||||
Level of detail in test reports. Higher numbers provide more detail.
|
||||
|
||||
doctest: bool, optional
|
||||
True to run doctests in code modules
|
||||
"""
|
||||
|
||||
import pytest
|
||||
|
||||
pytest_args = ["-l"]
|
||||
|
||||
if verbosity and int(verbosity) > 1:
|
||||
pytest_args += ["-" + "v" * (int(verbosity) - 1)]
|
||||
|
||||
if doctest:
|
||||
pytest_args += ["--doctest-modules"]
|
||||
|
||||
pytest_args += ["--pyargs", "networkx"]
|
||||
|
||||
try:
|
||||
code = pytest.main(pytest_args)
|
||||
except SystemExit as exc:
|
||||
code = exc.code
|
||||
|
||||
return code == 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
run()
|
Binary file not shown.
Binary file not shown.
160
venv/Lib/site-packages/networkx/testing/tests/test_utils.py
Normal file
160
venv/Lib/site-packages/networkx/testing/tests/test_utils.py
Normal file
|
@ -0,0 +1,160 @@
|
|||
import networkx as nx
|
||||
from networkx.testing import assert_graphs_equal, assert_edges_equal, assert_nodes_equal
|
||||
|
||||
# thanks to numpy for this GenericTest class (numpy/testing/test_utils.py)
|
||||
|
||||
|
||||
class _GenericTest:
|
||||
@classmethod
|
||||
def _test_equal(cls, a, b):
|
||||
cls._assert_func(a, b)
|
||||
|
||||
@classmethod
|
||||
def _test_not_equal(cls, a, b):
|
||||
try:
|
||||
cls._assert_func(a, b)
|
||||
passed = True
|
||||
except AssertionError:
|
||||
pass
|
||||
else:
|
||||
raise AssertionError("a and b are found equal but are not")
|
||||
|
||||
|
||||
class TestNodesEqual(_GenericTest):
|
||||
_assert_func = assert_nodes_equal
|
||||
|
||||
def test_nodes_equal(self):
|
||||
a = [1, 2, 5, 4]
|
||||
b = [4, 5, 1, 2]
|
||||
self._test_equal(a, b)
|
||||
|
||||
def test_nodes_not_equal(self):
|
||||
a = [1, 2, 5, 4]
|
||||
b = [4, 5, 1, 3]
|
||||
self._test_not_equal(a, b)
|
||||
|
||||
def test_nodes_with_data_equal(self):
|
||||
G = nx.Graph()
|
||||
G.add_nodes_from([1, 2, 3], color="red")
|
||||
H = nx.Graph()
|
||||
H.add_nodes_from([1, 2, 3], color="red")
|
||||
self._test_equal(G.nodes(data=True), H.nodes(data=True))
|
||||
|
||||
def test_edges_with_data_not_equal(self):
|
||||
G = nx.Graph()
|
||||
G.add_nodes_from([1, 2, 3], color="red")
|
||||
H = nx.Graph()
|
||||
H.add_nodes_from([1, 2, 3], color="blue")
|
||||
self._test_not_equal(G.nodes(data=True), H.nodes(data=True))
|
||||
|
||||
|
||||
class TestEdgesEqual(_GenericTest):
|
||||
_assert_func = assert_edges_equal
|
||||
|
||||
def test_edges_equal(self):
|
||||
a = [(1, 2), (5, 4)]
|
||||
b = [(4, 5), (1, 2)]
|
||||
self._test_equal(a, b)
|
||||
|
||||
def test_edges_not_equal(self):
|
||||
a = [(1, 2), (5, 4)]
|
||||
b = [(4, 5), (1, 3)]
|
||||
self._test_not_equal(a, b)
|
||||
|
||||
def test_edges_with_data_equal(self):
|
||||
G = nx.MultiGraph()
|
||||
nx.add_path(G, [0, 1, 2], weight=1)
|
||||
H = nx.MultiGraph()
|
||||
nx.add_path(H, [0, 1, 2], weight=1)
|
||||
self._test_equal(G.edges(data=True, keys=True), H.edges(data=True, keys=True))
|
||||
|
||||
def test_edges_with_data_not_equal(self):
|
||||
G = nx.MultiGraph()
|
||||
nx.add_path(G, [0, 1, 2], weight=1)
|
||||
H = nx.MultiGraph()
|
||||
nx.add_path(H, [0, 1, 2], weight=2)
|
||||
self._test_not_equal(
|
||||
G.edges(data=True, keys=True), H.edges(data=True, keys=True)
|
||||
)
|
||||
|
||||
def test_no_edges(self):
|
||||
G = nx.MultiGraph()
|
||||
H = nx.MultiGraph()
|
||||
self._test_equal(G.edges(data=True, keys=True), H.edges(data=True, keys=True))
|
||||
|
||||
def test_duplicate_edges(self):
|
||||
a = [(1, 2), (5, 4), (1, 2)]
|
||||
b = [(4, 5), (1, 2)]
|
||||
self._test_not_equal(a, b)
|
||||
|
||||
def test_duplicate_edges_with_data(self):
|
||||
a = [(1, 2, {"weight": 10}), (5, 4), (1, 2, {"weight": 1})]
|
||||
b = [(4, 5), (1, 2), (1, 2, {"weight": 1})]
|
||||
self._test_not_equal(a, b)
|
||||
|
||||
def test_order_of_edges_with_data(self):
|
||||
a = [(1, 2, {"weight": 10}), (1, 2, {"weight": 1})]
|
||||
b = [(1, 2, {"weight": 1}), (1, 2, {"weight": 10})]
|
||||
self._test_equal(a, b)
|
||||
|
||||
def test_order_of_multiedges(self):
|
||||
wt1 = {"weight": 1}
|
||||
wt2 = {"weight": 2}
|
||||
a = [(1, 2, wt1), (1, 2, wt1), (1, 2, wt2)]
|
||||
b = [(1, 2, wt1), (1, 2, wt2), (1, 2, wt2)]
|
||||
self._test_not_equal(a, b)
|
||||
|
||||
def test_order_of_edges_with_keys(self):
|
||||
a = [(1, 2, 0, {"weight": 10}), (1, 2, 1, {"weight": 1}), (1, 2, 2)]
|
||||
b = [(1, 2, 1, {"weight": 1}), (1, 2, 2), (1, 2, 0, {"weight": 10})]
|
||||
self._test_equal(a, b)
|
||||
a = [(1, 2, 1, {"weight": 10}), (1, 2, 0, {"weight": 1}), (1, 2, 2)]
|
||||
b = [(1, 2, 1, {"weight": 1}), (1, 2, 2), (1, 2, 0, {"weight": 10})]
|
||||
self._test_not_equal(a, b)
|
||||
|
||||
|
||||
class TestGraphsEqual(_GenericTest):
|
||||
_assert_func = assert_graphs_equal
|
||||
|
||||
def test_graphs_equal(self):
|
||||
G = nx.path_graph(4)
|
||||
H = nx.Graph()
|
||||
nx.add_path(H, range(4))
|
||||
self._test_equal(G, H)
|
||||
|
||||
def test_digraphs_equal(self):
|
||||
G = nx.path_graph(4, create_using=nx.DiGraph())
|
||||
H = nx.DiGraph()
|
||||
nx.add_path(H, range(4))
|
||||
self._test_equal(G, H)
|
||||
|
||||
def test_multigraphs_equal(self):
|
||||
G = nx.path_graph(4, create_using=nx.MultiGraph())
|
||||
H = nx.MultiGraph()
|
||||
nx.add_path(H, range(4))
|
||||
self._test_equal(G, H)
|
||||
|
||||
def test_multidigraphs_equal(self):
|
||||
G = nx.path_graph(4, create_using=nx.MultiDiGraph())
|
||||
H = nx.MultiDiGraph()
|
||||
nx.add_path(H, range(4))
|
||||
self._test_equal(G, H)
|
||||
|
||||
def test_graphs_not_equal(self):
|
||||
G = nx.path_graph(4)
|
||||
H = nx.Graph()
|
||||
nx.add_cycle(H, range(4))
|
||||
self._test_not_equal(G, H)
|
||||
|
||||
def test_graphs_not_equal2(self):
|
||||
G = nx.path_graph(4)
|
||||
H = nx.Graph()
|
||||
nx.add_path(H, range(3))
|
||||
self._test_not_equal(G, H)
|
||||
|
||||
def test_graphs_not_equal3(self):
|
||||
G = nx.path_graph(4)
|
||||
H = nx.Graph()
|
||||
nx.add_path(H, range(4))
|
||||
H.name = "path_graph(4)"
|
||||
self._test_not_equal(G, H)
|
65
venv/Lib/site-packages/networkx/testing/utils.py
Normal file
65
venv/Lib/site-packages/networkx/testing/utils.py
Normal file
|
@ -0,0 +1,65 @@
|
|||
__all__ = [
|
||||
"assert_nodes_equal",
|
||||
"assert_edges_equal",
|
||||
"assert_graphs_equal",
|
||||
"almost_equal",
|
||||
]
|
||||
|
||||
|
||||
def almost_equal(x, y, places=7):
|
||||
return round(abs(x - y), places) == 0
|
||||
|
||||
|
||||
def assert_nodes_equal(nodes1, nodes2):
|
||||
# Assumes iterables of nodes, or (node,datadict) tuples
|
||||
nlist1 = list(nodes1)
|
||||
nlist2 = list(nodes2)
|
||||
try:
|
||||
d1 = dict(nlist1)
|
||||
d2 = dict(nlist2)
|
||||
except (ValueError, TypeError):
|
||||
d1 = dict.fromkeys(nlist1)
|
||||
d2 = dict.fromkeys(nlist2)
|
||||
assert d1 == d2
|
||||
|
||||
|
||||
def assert_edges_equal(edges1, edges2):
|
||||
# Assumes iterables with u,v nodes as
|
||||
# edge tuples (u,v), or
|
||||
# edge tuples with data dicts (u,v,d), or
|
||||
# edge tuples with keys and data dicts (u,v,k, d)
|
||||
from collections import defaultdict
|
||||
|
||||
d1 = defaultdict(dict)
|
||||
d2 = defaultdict(dict)
|
||||
c1 = 0
|
||||
for c1, e in enumerate(edges1):
|
||||
u, v = e[0], e[1]
|
||||
data = [e[2:]]
|
||||
if v in d1[u]:
|
||||
data = d1[u][v] + data
|
||||
d1[u][v] = data
|
||||
d1[v][u] = data
|
||||
c2 = 0
|
||||
for c2, e in enumerate(edges2):
|
||||
u, v = e[0], e[1]
|
||||
data = [e[2:]]
|
||||
if v in d2[u]:
|
||||
data = d2[u][v] + data
|
||||
d2[u][v] = data
|
||||
d2[v][u] = data
|
||||
assert c1 == c2
|
||||
# can check one direction because lengths are the same.
|
||||
for n, nbrdict in d1.items():
|
||||
for nbr, datalist in nbrdict.items():
|
||||
assert n in d2
|
||||
assert nbr in d2[n]
|
||||
d2datalist = d2[n][nbr]
|
||||
for data in datalist:
|
||||
assert datalist.count(data) == d2datalist.count(data)
|
||||
|
||||
|
||||
def assert_graphs_equal(graph1, graph2):
|
||||
assert graph1.adj == graph2.adj
|
||||
assert graph1.nodes == graph2.nodes
|
||||
assert graph1.graph == graph2.graph
|
Loading…
Add table
Add a link
Reference in a new issue