def get_signature_vars(section):
    '''Get signature variables which are variables that will be
    saved with step signatures'''

    # signature vars should contain parameters defined in global section
    # #1155
    signature_vars = set(
        section.parameters.keys()
        & accessed_vars(strip_param_defs(section.global_stmts)))

    input_idx = find_statement(section, 'input')
    after_input_idx = 0 if input_idx is None else input_idx + 1

    for statement in section.statements[after_input_idx:]:
        if statement[0] == '=':
            signature_vars |= accessed_vars('='.join(statement[1:3]))
        elif statement[0] == '!':
            signature_vars |= accessed_vars(statement[1])
    # finally, tasks..
    if section.task:
        signature_vars |= accessed_vars(section.task)

    return {x for x in signature_vars if not x.startswith('__')}
Get signature variables which are variables that will be
    saved with step signatures