[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