def iter_search_nodes(self, **conditions):
for n in self.traverse():<EOL><INDENT>conditions_passed = <NUM_LIT:0><EOL>for key, value in six.iteritems(conditions):<EOL><INDENT>if hasattr(n, key) and getattr(n, key) == value:<EOL><INDENT>conditions_passed +=<NUM_LIT:1><EOL><DEDENT><DEDENT>if conditions_passed == len(conditions):<EOL><INDENT>yield n<EOL><DEDENT><DEDENT>
Search nodes in an interative way. Matches are being yield as
they are being found. This avoids to scan the full tree
topology before returning the first matches. Useful when
dealing with huge trees.