in core/src/main/scala/com/spotify/featran/FlatExtractor.scala [195:213]
def featureValues[F: FeatureBuilder: ClassTag](records: M[T]): M[F] =
featureResults(records).map(_._1)
@nowarn(
"msg=evidence parameter evidence.* of type scala.reflect.ClassTag\\[.\\] .* is never used"
)
def featureResults[F: FeatureBuilder: ClassTag](
records: M[T]
): M[(F, Map[String, FeatureRejection])] = {
val fb = FeatureBuilder[F].newBuilder
records.cross(converters).cross(dimSize).map { case ((record, convs), size) =>
fb.init(size)
convs.foreach { case (fn, aggr, conv) =>
val a = aggr.map(conv.decodeAggregator)
conv.unsafeBuildFeatures(fn(record), a, fb)
}
(fb.result, fb.rejections)
}
}