def unsafeBuildFeatures()

in core/src/main/scala/com/spotify/featran/transformers/Transformer.scala [120:170]


  def unsafeBuildFeatures(a: Option[Any], c: Option[Any], fb: FeatureBuilder[_]): Unit =
    optBuildFeatures(a.asInstanceOf[Option[A]], c.asInstanceOf[Option[C]], fb)

  def unsafeFeatureDimension(c: Option[Any]): Int =
    optFeatureDimension(c.asInstanceOf[Option[C]])

  def flatRead[T: FlatReader]: T => Option[Any]

  def flatWriter[T](implicit fw: FlatWriter[T]): Option[A] => fw.IF

  def unsafeFlatWriter[T](implicit fw: FlatWriter[T]): Option[Any] => fw.IF =
    (o: Option[Any]) => flatWriter.apply(o.asInstanceOf[Option[A]]).asInstanceOf[fw.IF]

  // ================================================================================
  // Transformer parameter and aggregator persistence
  // ================================================================================

  /** Encode aggregator summary of the current extraction. */
  def encodeAggregator(c: C): String

  /** Decode aggregator summary from a previous extraction. */
  def decodeAggregator(s: String): C

  /** Compile time parameters. */
  def params: Map[String, String] = Map.empty

  /**
   * Settings including compile time parameters and runtime aggregator summary.
   * @param c
   *   aggregator summary
   */
  def settings(c: Option[C]): Settings =
    Settings(
      this.getClass.getCanonicalName,
      name,
      params,
      optFeatureNames(c),
      c.map(encodeAggregator)
    )
}

case class Settings(
  cls: String,
  name: String,
  params: Map[String, String],
  featureNames: Seq[String],
  aggregators: Option[String]
)

abstract private[featran] class OneDimensional[A, B, C](name: String)
    extends Transformer[A, B, C](name) {