Move yield_full_tree() in its own member function.
R=dpranke@chromium.org
BUG=
TEST=
Review URL: http://codereview.chromium.org/8114005
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@103757 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/gclient.py b/gclient.py
index a53626b..671250c 100644
--- a/gclient.py
+++ b/gclient.py
@@ -275,15 +275,7 @@
self._requirements.add(self.url.module_name)
if self.name and self.should_process:
- def yield_full_tree(root):
- """Depth-first recursion."""
- yield root
- for i in root.dependencies:
- for j in yield_full_tree(i):
- if j.should_process:
- yield j
-
- for obj in yield_full_tree(self.root):
+ for obj in self.root.depth_first_tree():
if obj is self or not obj.name:
continue
# Step 1: Find any requirements self may need.
@@ -610,15 +602,22 @@
sys.exit(2)
def subtree(self, include_all):
- """Breadth first"""
- result = []
+ """Breadth first recursion excluding root node."""
dependencies = self.dependencies
for d in dependencies:
if d.should_process or include_all:
- result.append(d)
+ yield d
for d in dependencies:
- result.extend(d.subtree(include_all))
- return result
+ for i in d.subtree(include_all):
+ yield i
+
+ def depth_first_tree(self):
+ """Depth-first recursion including the root node."""
+ yield self
+ for i in self.dependencies:
+ for j in i.depth_first_tree():
+ if j.should_process:
+ yield j
def get_custom_deps(self, name, url):
"""Returns a custom deps if applicable."""