@pytest.mark.parametrize('exname,source,target,colnos',
    [(exname, source, target, list(colnos))
        for exname in examples.keys()
        for source in range(1,3)
        for target in range(2,4)
        for colnos in powerset(range(1,3))])
def test_row_similarity(exname, source, target, colnos):
    if exname == 't0' and any(colno > 0 for colno in colnos):
        pytest.skip('Not enough columns in t0.')
    if exname.startswith('t1_sub') and any(colno > 1 for colno in colnos):
        pytest.skip('Not enough columns in %s.' + (exname,))
    with analyzed_bayesdb_generator(examples[exname](), 1, 1) \
            as (bdb, generator_id):
        bqlfn.bql_row_similarity(bdb, generator_id, None, source, target,
            *colnos)
        sql = 'select bql_row_similarity(?, NULL, ?, ?%s%s)' % \
            ('' if 0 == len(colnos) else ', ', ', '.join(map(str, colnos)))
        bdb.sql_execute(sql, (generator_id, source, target)).fetchall()
dataset/ETHPy150Open probcomp/bayeslite/tests/test_core.py/test_row_similarity/operator `%` -> `+`