def construct_hook(loader: yaml.Loader, node: yaml.Node) -> Py:
    conn_name = loader.construct_yaml_str(node)
    if not re.match(r'\w+', conn_name):
        raise ValueError(
            f'Error constructing hook. Expected connection name, found {conn_name}'
        )
    return Py(f'$HOOK.{conn_name}')
def construct_variable(loader: yaml.Loader, node: yaml.Node) -> Py:
    var_id = loader.construct_yaml_str(node)
    if not re.match(r'\w+', var_id):
        raise ValueError(
            f'Error constructing variable. Expected variable id, found {var_id}'
        )
    return Py(f'$VARIABLE.{var_id}')
def construct_template(loader: yaml.Loader, node: yaml.Node):
    template_str = loader.construct_yaml_str(node)
    return Py(f"jinja2.Template('{template_str}')")