def grok_vars(elements):
    """Returns a list of vars for which the value is being appropriately set
    This currently includes the default filter, for-based iterators,
    and the explicit use of set"""
    default_vars = []
    iterbody = None
    if hasattr(elements, 'body'):
        iterbody = elements.body
    elif hasattr(elements, 'nodes'):
        iterbody = elements.nodes

    for element in iterbody:
        if isinstance(element, jinja2.nodes.Output):
            default_vars = default_vars + grok_vars(element)
        elif isinstance(element, jinja2.nodes.Filter):
            e_name = grok_filter_name(element)
            if e_name not in default_vars:
                default_vars.append(e_name)
        elif isinstance(element, jinja2.nodes.For):
            default_vars = grok_for_node(element, default_vars)
        elif isinstance(element, jinja2.nodes.If):
            default_vars = grok_if_node(element, default_vars)
        elif isinstance(element, jinja2.nodes.Assign):
            default_vars.append(element.target.name)
        elif isinstance(element, jinja2.nodes.FromImport):
            for from_var in element.names:
                default_vars.append(from_var)

    return default_vars
def grok_vars ( elements ) : default_vars = [ ] iterbody = None if hasattr ( elements , 'body' ) : iterbody = elements . body elif hasattr ( elements , 'nodes' ) : iterbody = elements . nodes for element in iterbody : if isinstance ( element , jinja2 . nodes . Output ) : default_vars = default_vars + grok_vars ( element ) elif isinstance ( element , jinja2 . nodes . Filter ) : e_name = grok_filter_name ( element ) if e_name not in default_vars : default_vars . append ( e_name ) elif isinstance ( element , jinja2 . nodes . For ) : default_vars = grok_for_node ( element , default_vars ) elif isinstance ( element , jinja2 . nodes . If ) : default_vars = grok_if_node ( element , default_vars ) elif isinstance ( element , jinja2 . nodes . Assign ) : default_vars . append ( element . target . name ) elif isinstance ( element , jinja2 . nodes . FromImport ) : for from_var in element . names : default_vars . append ( from_var ) return default_vars
Returns a list of vars for which the value is being appropriately set
    This currently includes the default filter, for-based iterators,
    and the explicit use of set