[geneagrapher] 182/226: Changed Graph.seeds member from list of Node objects to a set of Node objects.
Doug Torrance
dtorrance-guest at moszumanska.debian.org
Sat Jul 11 17:11:05 UTC 2015
This is an automated email from the git hooks/post-receive script.
dtorrance-guest pushed a commit to branch master
in repository geneagrapher.
commit c864091bfecb46fa500ec904916555b660d83007
Author: David Alber <alber.david at gmail.com>
Date: Sun Nov 27 21:24:46 2011 -0800
Changed Graph.seeds member from list of Node objects to a set of Node objects.
---
geneagrapher/graph/graph.py | 26 +++++++++++++-------------
geneagrapher/graph/node.py | 3 +++
tests/test_graph_methods.py | 18 +++++++++---------
3 files changed, 25 insertions(+), 22 deletions(-)
diff --git a/geneagrapher/graph/graph.py b/geneagrapher/graph/graph.py
index ea76ad3..7dafa70 100644
--- a/geneagrapher/graph/graph.py
+++ b/geneagrapher/graph/graph.py
@@ -19,23 +19,25 @@ class Graph(dict):
Graph class constructor.
Parameters:
- seeds: a list of Node objects representing the tree seed nodes
+ seeds: a set of Node objects representing the tree seed nodes
(omit to create an empty graph)
"""
+ dict.__init__(self)
self.seeds = seeds
+ if self.seeds is None:
+ self.seeds = set()
self.supp_id = -1
# Verify type of seeds is what we expect.
- if self.seeds is not None:
- if not isinstance(self.seeds, list):
- raise TypeError("Unexpected parameter type: expected list of \
+ if not isinstance(self.seeds, set):
+ raise TypeError("Unexpected parameter type: expected set of \
Node objects for 'seeds'")
- for seed in self.seeds:
- if not isinstance(seed, Node):
- raise TypeError("Unexpected parameter type: expected list \
+ for seed in self.seeds:
+ if not isinstance(seed, Node):
+ raise TypeError("Unexpected parameter type: expected set \
of Node objects for 'seeds'")
- if self.seeds is not None:
+ if self.seeds != set():
self.update([(seed.get_id(), seed) for seed in self.seeds])
def has_node(self, id):
@@ -80,17 +82,15 @@ of Node objects for 'seeds'")
node.set_id(self.supp_id)
self.supp_id -= 1
self[node.get_id()] = node
- if self.seeds is None:
- self.seeds = [node]
- elif is_seed:
- self.seeds.append(node)
+ if self.seeds == set() or is_seed:
+ self.seeds.add(node)
def generate_dot_file(self, include_ancestors, include_descendants):
"""
Return a string that contains the content of the Graphviz dotfile
format for this graph.
"""
- if self.seeds is None:
+ if self.seeds == set():
return ""
queue = []
diff --git a/geneagrapher/graph/node.py b/geneagrapher/graph/node.py
index 40f9d0e..39596a3 100644
--- a/geneagrapher/graph/node.py
+++ b/geneagrapher/graph/node.py
@@ -37,6 +37,9 @@ for 'descendants'")
def __cmp__(self, n2):
return self.record.__cmp__(n2.record)
+ def __hash__(self):
+ return hash(self.get_id())
+
def add_ancestor(self, ancestor): # NOTE: is this used?
"""
Add an ancestor id to the ancestor set.
diff --git a/tests/test_graph_methods.py b/tests/test_graph_methods.py
index f64947d..2846ee8 100644
--- a/tests/test_graph_methods.py
+++ b/tests/test_graph_methods.py
@@ -10,16 +10,16 @@ class TestGraphMethods(unittest.TestCase):
self.record1 = Record(u"Carl Friedrich Gau\xdf",
u"Universit\xe4t Helmstedt", 1799, 18231)
self.node1 = Node(self.record1, set(), set())
- self.graph1 = Graph([self.node1])
+ self.graph1 = Graph(set([self.node1]))
def test001_init_empty(self):
# Test the constructor.
graph = Graph()
- self.assertEquals(graph.seeds, None)
+ self.assertEquals(graph.seeds, set())
def test002_init(self):
# Test the constructor.
- self.assert_(self.graph1.seeds == [self.node1])
+ self.assert_(self.graph1.seeds == set([self.node1]))
self.assertEquals(self.graph1.keys(), [18231])
self.assertEquals(self.graph1[18231], self.node1)
@@ -66,7 +66,7 @@ class TestGraphMethods(unittest.TestCase):
self.graph1.add_node("Leonhard Euler", "Universitaet Basel", 1726,
38586, set(), set())
self.assertEquals([38586, 18231], self.graph1.get_node_list())
- self.assertEquals(self.graph1.seeds, [self.node1])
+ self.assertEquals(self.graph1.seeds, set([self.node1]))
def test010_add_second_node_seed(self):
# Test the add_node() method when adding a second node and
@@ -74,16 +74,16 @@ class TestGraphMethods(unittest.TestCase):
self.graph1.add_node("Leonhard Euler", "Universitaet Basel", 1726,
38586, set(), set(), True)
self.assertEquals([38586, 18231], self.graph1.get_node_list())
- self.assertEquals(self.graph1.seeds, [self.node1,
- self.graph1.get_node(38586)])
+ self.assertEquals(self.graph1.seeds, set([self.node1,
+ self.graph1[38586]]))
def test011_add_node_seed(self):
# Test the add_node() method when no seeds exist.
graph = Graph()
- self.assertEquals(graph.seeds, None)
+ self.assertEquals(graph.seeds, set())
graph.add_node("Leonhard Euler", "Universitaet Basel", 1726,
38586, set(), set())
- self.assertEquals(graph.seeds, [graph.get_node(38586)])
+ self.assertEquals(graph.seeds, set([graph[38586]]))
def test012_add_node_already_present(self):
self.graph1.add_node("Leonhard Euler", "Universitaet Basel", 1726,
@@ -108,7 +108,7 @@ class TestGraphMethods(unittest.TestCase):
node = Node(record, set(), set())
self.graph1.add_node_object(node)
self.assertEquals([38586, 18231], self.graph1.get_node_list())
- self.assertEquals(self.graph1.seeds, [self.node1])
+ self.assertEquals(self.graph1.seeds, set([self.node1]))
def test014_generate_dot_file(self):
# Test the generate_dot_file() method.
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/geneagrapher.git
More information about the debian-science-commits
mailing list