def METHOD_NAME(adjustment: Weights, metrics: Iterable[Metric]) -> Weights:
    zero = Weights(
        prefix_matches=0,
        edit_distance=0,
        recency=0,
        proximity=0,
    )
    acc = asdict(zero)
    for metric in metrics:
        for key, val in asdict(metric.weight).items():
            acc[key] += val
    for key, val in asdict(adjustment).items():
        if val:
            acc[key] /= val
        else:
            acc[key] = 0
    return Weights(**acc)