def expression_nodes(expression):
        todo = [expression]
        while todo:
            expression = todo.pop()
            if expression is not None:
                yield expression
            if isinstance(expression, Expression):
                todo.extend(expression.children or ())
Parse author or committer attribute lines and return
dataset/ETHPy150Open KristianOellegaard/django-hvad/hvad/query.py/expression_nodes--crossover with--dataset/ETHPy150Open edgewall/trac/tracopt/versioncontrol/git/git_fs.py/_parse_user_time