[Zope-CVS] CVS: Packages/pypes/pypes - graph.py:1.9

Casey Duncan casey at zope.com
Tue May 25 22:40:17 EDT 2004


Update of /cvs-repository/Packages/pypes/pypes
In directory cvs.zope.org:/tmp/cvs-serv19497

Modified Files:
	graph.py 
Log Message:
Change iterTopological() to use abstract object markers and identity checks instead of integers and equality checks. Since one of the markers is None, this allows elimination of None equality checks. In theory this is a optimization, but it was done more for readability and correctness than performance.


=== Packages/pypes/pypes/graph.py 1.8 => 1.9 ===
--- Packages/pypes/pypes/graph.py:1.8	Sun Feb 29 00:44:48 2004
+++ Packages/pypes/pypes/graph.py	Tue May 25 22:40:16 2004
@@ -482,8 +482,8 @@
 
     def iterTopological(self):
         UNDISCOVERED = None
-        DISCOVERED = 1
-        EXPLORED = 2
+        DISCOVERED = object()
+        EXPLORED = object()
         status = {}
         nodes = []
         for n in self._nodes.keys():
@@ -491,7 +491,7 @@
                 nodes.append(n)
             while nodes:
                 dn = nodes[-1]
-                if status.get(dn) == EXPLORED:
+                if status.get(dn) is EXPLORED:
                     nodes.pop()
                 else:
                     referers, targets = self._nodes[dn]
@@ -501,17 +501,17 @@
                         if isinstance(targets, self._nodeSetFactory):
                             for t in targets:
                                 ts = status.get(t)
-                                if ts == UNDISCOVERED:
+                                if ts is UNDISCOVERED:
                                     is_explored = False
                                     nodes.append(t)
-                                elif ts == DISCOVERED:
+                                elif ts is DISCOVERED:
                                     raise GraphCycleError, t
                         else:
                             ts = status.get(targets)
-                            if ts == UNDISCOVERED:
+                            if ts is UNDISCOVERED:
                                 is_explored = False
                                 nodes.append(targets)
-                            elif ts == DISCOVERED:
+                            elif ts is DISCOVERED:
                                 raise GraphCycleError, targets
                     if is_explored:
                         status[dn] = EXPLORED




More information about the Zope-CVS mailing list