<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def get_step_output(section, default_output):
    '''determine step output'''
    step_output: sos_targets = sos_targets()
    #
    if 'provides' in section.options and default_output:
        step_output = default_output

    # look for input statement.
    output_idx = find_statement(section, 'output')
    if output_idx is None:
        return step_output

    # output statement
    value = section.statements[output_idx][2]
    # output, depends, and process can be processed multiple times
    try:
        svars = ['output_from', 'named_output', 'sos_step', 'sos_variable']
        old_values = {
            x: env.sos_dict.dict()[x]
            for x in svars
            if x in env.sos_dict.dict()
        }
        env.sos_dict.quick_update({
            'output_from': no_output_from,
            'named_output': no_named_output,
            'sos_step': no_sos_step,
            'sos_variable': no_sos_variable,
        })
        args, kwargs = SoS_eval(
            f'__null_func__({value})', extra_dict=env.sos_dict.dict())
        if not any(isinstance(x, (dynamic, remote)) for x in args):
            step_output = sos_targets(
                *args, **{
                    x: y
                    for x, y in kwargs.items()
                    if x not in SOS_TARGETS_OPTIONS
                })
    except SyntaxError:
        raise
    except Exception as e:
        if 'STEP' in env.config['SOS_DEBUG'] or 'ALL' in env.config['SOS_DEBUG']:
            env.log_to_file('STEP', f"Args {value} cannot be determined: {e}")
    finally:
        [env.sos_dict.dict().pop(x) for x in svars]
        env.sos_dict.quick_update(old_values)

    if 'provides' in section.options and default_output is not None and step_output.valid(
    ):
        for out in default_output:
            # 981
            if not isinstance(out, sos_step) and out not in step_output:
                raise ValueError(
                    f'Defined output fail to produce expected output: {step_output} generated, {default_output} expected.'
                )
    return step_output