def _process(G, name, value):
    # Jinja defaults to ascii parser in python 2.x unless you set utf-8 support on per module level
    # Instead we're just assuming every string to be a unicode string
    if isinstance(value, str):
        value = to_unicode(value)
    template_ast = ENV.parse(value)
    # Dependencies of the node represent jinja variables used in the template
    # We're connecting nodes with an edge for every depencency to traverse them in the right order
    # and also make sure that we don't have missing or cyclic dependencies upfront.
    dependencies = meta.find_undeclared_variables(template_ast)
    if dependencies:
        G.add_node(name, template=value)
        for dependency in dependencies:
            G.add_edge(dependency, name)
    else:
        G.add_node(name, value=value)
Determines whether parameter is a template or a value. Adds graph nodes and edges accordingly.
dataset/ETHPy150Open StackStorm/st2/st2common/st2common/util/param.py/_process