[pypy-svn] r17994 - in pypy/dist/pypy/translator: goal tool tool/test
pedronis at codespeak.net
pedronis at codespeak.net
Fri Sep 30 02:04:49 CEST 2005
Author: pedronis
Date: Fri Sep 30 02:04:47 2005
New Revision: 17994
Modified:
pypy/dist/pypy/translator/goal/driver.py
pypy/dist/pypy/translator/tool/taskengine.py
pypy/dist/pypy/translator/tool/test/test_taskengine.py
Log:
closure for _depending_on and use it to compute optinally skipped goal based on skipped suggestions
Modified: pypy/dist/pypy/translator/goal/driver.py
==============================================================================
--- pypy/dist/pypy/translator/goal/driver.py (original)
+++ pypy/dist/pypy/translator/goal/driver.py Fri Sep 30 02:04:47 2005
@@ -55,18 +55,11 @@
self.runner = runner
self.done = {}
-
- maybe_skip = {}
- def add_maybe_skip(goal):
- if goal in maybe_skip:
- return
- maybe_skip[goal] = True
- for depending in self._depending_on(goal):
- add_maybe_skip(depending)
+ maybe_skip = []
for goal in self.backend_select_goals(disable):
- add_maybe_skip(goal)
- self.maybe_skip = maybe_skip.keys()
+ maybe_skip.extend(self._depending_on_closure(goal))
+ self.maybe_skip = dict.fromkeys(maybe_skip).keys()
if default_goal:
default_goal, = self.backend_select_goals([default_goal])
Modified: pypy/dist/pypy/translator/tool/taskengine.py
==============================================================================
--- pypy/dist/pypy/translator/tool/taskengine.py (original)
+++ pypy/dist/pypy/translator/tool/taskengine.py Fri Sep 30 02:04:47 2005
@@ -87,6 +87,17 @@
l.append(task_name)
return l
+ def _depending_on_closure(self, goal):
+ d = {}
+ def track(goal):
+ if goal in d:
+ return
+ d[goal] = True
+ for depending in self._depending_on(goal):
+ track(depending)
+ track(goal)
+ return d.keys()
+
def _execute(self, goals, *args, **kwds):
task_skip = kwds.get('task_skip', [])
for goal in self._plan(goals, skip=task_skip):
Modified: pypy/dist/pypy/translator/tool/test/test_taskengine.py
==============================================================================
--- pypy/dist/pypy/translator/tool/test/test_taskengine.py (original)
+++ pypy/dist/pypy/translator/tool/test/test_taskengine.py Fri Sep 30 02:04:47 2005
@@ -17,6 +17,17 @@
task_C.task_deps = ['B']
+ def task_D(self):
+ pass
+ task_D.task_deps = ['E']
+
+ def task_E(self):
+ pass
+ task_E.task_deps = ['F']
+
+ def task_F(self):
+ pass
+
abc = ABC()
assert abc._plan('B') == ['B']
@@ -28,6 +39,19 @@
assert dict.fromkeys(abc._depending_on('B'), True) == {'A':True, 'C':True}
assert abc._depending_on('A') == []
+ assert abc._depending_on('F') == ['E']
+ assert abc._depending_on('E') == ['D']
+ assert abc._depending_on('D') == []
+
+ assert abc._depending_on_closure('C') == ['C']
+ assert dict.fromkeys(abc._depending_on_closure('B'), True) == {'A':True, 'C':True, 'B': True}
+ assert abc._depending_on_closure('A') == ['A']
+
+ assert dict.fromkeys(abc._depending_on_closure('F'), True) == {'D':True, 'E':True, 'F': True}
+ assert dict.fromkeys(abc._depending_on_closure('E'), True) == {'D':True, 'E':True}
+ assert abc._depending_on_closure('D') == ['D']
+
+
def test_execute():
class ABC(SimpleTaskEngine):
More information about the Pypy-commit
mailing list