from typing import List
from typing import Callable


def abstract_calc_sim(query: List[str],
                      content: List[List[str]],
                      func_vec: Callable[[List[str], List[str]], float]) -> List[float]:
    """
    Calculate the sim_scores for every query compared to each element of content

    Parameters
    ----------
    query
        element to compare to every element of content
    content
        content to compare similarity for
    func_vec
            function for similarity_scores

    Returns
    -------
    sim_scores
        similarity scores
    """
    sim_scores = []
    for i in content:
        if i and query:
            sim_value = func_vec(query, i)
            sim_scores.append(sim_value)
        else:
            sim_scores.append(float(0))
    return sim_scores