def etv(b, component, dataset, solve_for=None, **kwargs):
    """
    compute the ETV column from the time_ephem and time_ecl columns (used in the
        ETV dataset).

    This is usually passed as an argument to
     <phoebe.frontend.bundle.Bundle.add_constraint>.
    """
    time_ephem = b.get_parameter(qualifier='time_ephems', component=
        component, dataset=dataset, context=['dataset', 'model'])
    time_ecl = b.get_parameter(qualifier='time_ecls', component=component,
        dataset=dataset)
    etv = b.get_parameter(qualifier='etvs', component=component, dataset=
        dataset)
    if solve_for in [None, etv]:
        lhs = etv
        rhs = time_ecl - time_ephem
    else:
        raise NotImplementedError
    return lhs, rhs, [], {'component': component, 'dataset': dataset}
