summaryrefslogtreecommitdiff
path: root/misc/openlayers/tools/toposort.py
diff options
context:
space:
mode:
Diffstat (limited to 'misc/openlayers/tools/toposort.py')
-rw-r--r--misc/openlayers/tools/toposort.py35
1 files changed, 0 insertions, 35 deletions
diff --git a/misc/openlayers/tools/toposort.py b/misc/openlayers/tools/toposort.py
deleted file mode 100644
index ba586ef..0000000
--- a/misc/openlayers/tools/toposort.py
+++ /dev/null
@@ -1,35 +0,0 @@
-"""
-toposort.py
-Sorts dictionary keys based on lists of dependencies.
-"""
-
-class MissingDependency(Exception):
- """Exception raised when a listed dependency is not in the dictionary."""
-
-class Sorter(object):
- def __init__(self, dependencies):
- self.dependencies = dependencies
- self.visited = set()
- self.sorted = ()
-
- def sort(self):
- for key in self.dependencies:
- self._visit(key)
- return self.sorted
-
- def _visit(self, key):
- if key not in self.visited:
- self.visited.add(key)
- if not self.dependencies.has_key(key):
- raise MissingDependency(key)
- for depends in self.dependencies[key]:
- self._visit(depends)
- self.sorted += (key,)
-
-def toposort(dependencies):
- """Returns a tuple of the dependencies dictionary keys sorted by entries
- in the dependency lists. Given circular dependencies, sort will impose
- an order. Raises MissingDependency if a key is not found.
- """
- s = Sorter(dependencies)
- return s.sort()