Skip to content

Commit 8d901b7

Browse files
pomadchinmetasim
andauthored
Bump frameless version up (#574)
Co-authored-by: Simeon H.K. Fitch <fitch@astraea.io>
1 parent 8d73fbf commit 8d901b7

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

build.sbt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,10 @@ lazy val datasource = project
120120
moduleName := "rasterframes-datasource",
121121
libraryDependencies ++= Seq(
122122
compilerPlugin("org.scalamacros" % "paradise" % "2.1.1" cross CrossVersion.full),
123+
compilerPlugin("org.typelevel" % "kind-projector" % "0.13.2" cross CrossVersion.full),
123124
sttpCatsCe2,
124125
stac4s,
126+
framelessRefined excludeAll ExclusionRule(organization = "com.github.mpilquist"),
125127
geotrellis("s3").value excludeAll ExclusionRule(organization = "com.github.mpilquist"),
126128
spark("core").value % Provided,
127129
spark("mllib").value % Provided,

datasource/src/main/scala/org/locationtech/rasterframes/datasource/stac/api/encoders/StacSerializers.scala

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@ import com.azavea.stac4s._
88
import com.azavea.stac4s.types.ItemDatetime
99
import eu.timepit.refined.api.{RefType, Validate}
1010
import frameless.{Injection, SQLTimestamp, TypedEncoder, TypedExpressionEncoder}
11+
import frameless.refined
1112
import org.apache.spark.sql.catalyst.encoders.ExpressionEncoder
1213
import org.apache.spark.sql.jts.JTSTypes
1314

1415
import java.time.Instant
16+
import scala.reflect.ClassTag
1517

1618
/** STAC API Dataframe relies on the Frameless Expressions derivation. */
1719
trait StacSerializers {
@@ -42,9 +44,12 @@ trait StacSerializers {
4244
implicit val itemDatetimeCatalystType: Injection[ItemDatetimeCatalystType, String] = Injection(_.repr, ItemDatetimeCatalystType.fromString)
4345
implicit val itemDatetimeInjection: Injection[ItemDatetime, ItemDatetimeCatalyst] = Injection(ItemDatetimeCatalyst.fromItemDatetime, ItemDatetimeCatalyst.toDatetime)
4446

45-
/** Refined types support, https://github.com/typelevel/frameless/issues/257#issuecomment-914392485 */
46-
implicit def refinedInjection[F[_, _], T, P](implicit refType: RefType[F], validate: Validate[T, P]): Injection[F[T, P], T] =
47-
Injection(refType.unwrap, value => refType.refine[P](value).valueOr(errMsg => throw new IllegalArgumentException(s"Value $value does not satisfy refinement predicate: $errMsg")))
47+
/** Refined types support, proxies to avoid frameless.refined import in the client code */
48+
implicit def refinedInjection[F[_, _]: RefType, T, R: Validate[T, *]]: Injection[F[T, R], T] =
49+
refined.refinedInjection
50+
51+
implicit def refinedEncoder[F[_, _]: RefType, T: TypedEncoder, R: Validate[T, *]](implicit ct: ClassTag[F[T, R]]): TypedEncoder[F[T, R]] =
52+
refined.refinedEncoder
4853

4954
/** Set would be stored as Array */
5055
implicit def setInjection[T]: Injection[Set[T], List[T]] = Injection(_.toList, _.toSet)

project/RFDependenciesPlugin.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,9 @@ object RFDependenciesPlugin extends AutoPlugin {
5454
val `scala-logging` = "com.typesafe.scala-logging" %% "scala-logging" % "3.8.0"
5555
val stac4s = "com.azavea.stac4s" %% "client" % "0.7.2"
5656
val sttpCatsCe2 = "com.softwaremill.sttp.client3" %% "async-http-client-backend-cats-ce2" % "3.3.15"
57-
val frameless = "org.typelevel" %% "frameless-dataset" % "0.10.1"
58-
val `better-files` = "com.github.pathikrit" %% "better-files" % "3.9.1"
57+
val frameless = "org.typelevel" %% "frameless-dataset-spark31" % "0.11.1"
58+
val framelessRefined = "org.typelevel" %% "frameless-refined-spark31" % "0.11.1"
59+
val `better-files` = "com.github.pathikrit" %% "better-files" % "3.9.1" % Test
5960
}
6061
import autoImport._
6162

0 commit comments

Comments
 (0)