@classmethod
def many(cls, *objs: List[TVector]) -> List['Metric']:
    '\n        Construct many of a Metric from the base parts.\n\n        Useful if you separately compute numerators and denomenators, etc.\n        '
    lengths = [len(o) for o in objs]
    if (len(set(lengths)) != 1):
        raise IndexError(f'Uneven {cls.__name__} constructions: {lengths}')
    return [cls(*items) for items in zip(*objs)]
Construct many of a Metric from the base parts.

Useful if you separately compute numerators and denomenators, etc.
@classmethod
def many(cls, *objs: List[TVector]) -> List['Metric']:
    '\n        Construct many of a Metric from the base parts.\n\n        Useful if you separately compute numerators and denomenators, etc.\n        '
    lengths = [len(o) for o in objs]
    if (len(set(lengths)) != 1):
        raise IndexError(f'Uneven {cls.__name__} constructions: {lengths}')
    return [cls(*items) for items in zip(*objs)]