Skip to content

Commit 190da1a

Browse files
committedJun 10, 2024
Migrate to Scala 3
1 parent cabdc81 commit 190da1a

34 files changed

+108
-109
lines changed
 

‎build.sbt

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
ThisBuild / organization := "io.latis-data"
2-
ThisBuild / scalaVersion := "2.13.14"
2+
ThisBuild / scalaVersion := "3.3.1"
33

44
val fs2DataVersion = "1.8.1"
5-
val http4sVersion = "0.23.27"
6-
val latisVersion = "ea2ab6c"
7-
val latisHapiVersion = "e30933f"
5+
val http4sVersion = "0.23.25"
6+
val latisVersion = "4abcef6" //TODO: update when latis3's scala-3 branch is merged
7+
val latisHapiVersion = "3e21c35" //TODO: update when latis3-hapi's scala-3 branch is merged
88

99
lazy val root = (project in file("."))
1010
.settings(

‎src/main/scala/latis/ops/ConvertHapiTypes.scala

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package latis.ops
22

3-
import cats.syntax.all._
3+
import cats.syntax.all.*
44

5-
import latis.data._
6-
import latis.data.Data._
7-
import latis.model._
5+
import latis.data.*
6+
import latis.data.Data.*
7+
import latis.model.*
88
import latis.util.LatisException
99

1010
/**

‎src/main/scala/latis/ops/ToHapiTime.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package latis.ops
22

3-
import cats.implicits._
3+
import cats.implicits.*
44

55
import latis.data.Sample
6-
import latis.model._
6+
import latis.model.*
77
import latis.time.Time
88
import latis.time.TimeFormat
99
import latis.util.LatisException

‎src/main/scala/latis/service/hapi/AboutResponse.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ final case class AboutResponse(
2828
object AboutResponse {
2929

3030
/** JSON encoder */
31-
implicit val encoder: Encoder[AboutResponse] =
31+
given encoder: Encoder[AboutResponse] =
3232
Encoder.forProduct8(
3333
"version",
3434
"status",

‎src/main/scala/latis/service/hapi/AboutService.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package latis.service.hapi
22

33
import cats.effect.Concurrent
4-
import io.circe.syntax._
4+
import io.circe.syntax.*
55
import org.http4s.HttpRoutes
6-
import org.http4s.circe._
6+
import org.http4s.circe.*
77
import org.http4s.dsl.Http4sDsl
88

99
import latis.util.LatisConfig

‎src/main/scala/latis/service/hapi/Bin.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package latis.service.hapi
22

33
import io.circe.Encoder
4-
import io.circe.generic.semiauto._
4+
import io.circe.generic.semiauto.*
55

66
/**
77
* Represents a parameter's bin.
@@ -25,13 +25,13 @@ final case class Bin(
2525
object Bin {
2626

2727
/** JSON encoder */
28-
implicit val encoder: Encoder[Bin] =
28+
given encoder: Encoder[Bin] =
2929
deriveEncoder[Bin].mapJsonObject { obj =>
3030
obj.filter {
3131
case ("centers", _) =>
3232
// Keep "centers" regardless of its value if "ranges" is
3333
// null or missing.
34-
obj("ranges").map(_.isNull).getOrElse(true)
34+
obj("ranges").forall(_.isNull)
3535
case (_, v) =>
3636
// Remove all other null fields.
3737
!v.isNull

‎src/main/scala/latis/service/hapi/Capabilities.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ final case class Capabilities(
1818
object Capabilities {
1919

2020
/** JSON encoder */
21-
implicit val encoder: Encoder[Capabilities] =
21+
given encoder: Encoder[Capabilities] =
2222
Encoder.forProduct3("HAPI", "status", "outputFormats") { x =>
2323
(x.version, x.status, x.formats)
2424
}

‎src/main/scala/latis/service/hapi/CapabilitiesService.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package latis.service.hapi
22

33
import cats.effect.Concurrent
4-
import io.circe.syntax._
4+
import io.circe.syntax.*
55
import org.http4s.HttpRoutes
6-
import org.http4s.circe._
6+
import org.http4s.circe.*
77
import org.http4s.dsl.Http4sDsl
88

99
/** Implements the `/capabilities` endpoint. */

‎src/main/scala/latis/service/hapi/Catalog.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ final case class Catalog(
1818
object Catalog {
1919

2020
/** JSON encoder */
21-
implicit val encoder: Encoder[Catalog] =
21+
given encoder: Encoder[Catalog] =
2222
Encoder.forProduct3("HAPI", "status", "catalog") { x =>
2323
(x.version, x.status, x.catalog)
2424
}

‎src/main/scala/latis/service/hapi/CatalogService.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package latis.service.hapi
22

33
import cats.effect.Concurrent
4-
import cats.implicits._
5-
import io.circe.syntax._
4+
import cats.implicits.*
5+
import io.circe.syntax.*
66
import org.http4s.HttpRoutes
7-
import org.http4s.circe._
7+
import org.http4s.circe.*
88
import org.http4s.dsl.Http4sDsl
99

1010
/**

‎src/main/scala/latis/service/hapi/DataService.scala

+8-8
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,22 @@ package latis.service.hapi
33
import cats.data.EitherT
44
import cats.data.NonEmptyList
55
import cats.effect.Concurrent
6-
import cats.implicits._
6+
import cats.implicits.*
77
import fs2.Stream
8-
import io.circe.syntax._
9-
import org.http4s.{Status => _, _}
10-
import org.http4s.circe._
8+
import io.circe.syntax.*
9+
import org.http4s.{Status as _, *}
10+
import org.http4s.circe.*
1111
import org.http4s.dsl.Http4sDsl
1212
import org.http4s.headers.`Content-Type`
13-
import org.log4s._
13+
import org.log4s.*
1414

1515
/** Implements the `/data` endpoint. */
1616
class DataService[F[_]: Concurrent](
1717
alg: DataAlgebra[F] with InfoAlgebra[F]
1818
) extends Http4sDsl[F] {
19-
import Format._
20-
import Include._
21-
import QueryDecoders._
19+
import Format.*
20+
import Include.*
21+
import QueryDecoders.*
2222

2323
private[this] val logger = getLogger
2424

‎src/main/scala/latis/service/hapi/DataType.scala

+5-5
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,21 @@ import io.circe.Json
77
sealed trait DataType
88

99
/** String data */
10-
final case object HString extends DataType
10+
case object HString extends DataType
1111

1212
/** Double data, 8-byte IEEE 754 format */
13-
final case object HDouble extends DataType
13+
case object HDouble extends DataType
1414

1515
/** Integer data, 4-byte signed, little-endian */
16-
final case object HInteger extends DataType
16+
case object HInteger extends DataType
1717

1818
/** Time string data, restricted ISO 8601 */
19-
final case object HIsoTime extends DataType
19+
case object HIsoTime extends DataType
2020

2121
object DataType {
2222

2323
/** JSON encoder */
24-
implicit val encoder: Encoder[DataType] =
24+
given encoder: Encoder[DataType] =
2525
Encoder.instance {
2626
case HString => Json.fromString("string")
2727
case HDouble => Json.fromString("double")

‎src/main/scala/latis/service/hapi/Dataset.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ object Dataset {
2929
Dataset(id, id)
3030

3131
/** JSON encoder */
32-
implicit val encoder: Encoder[Dataset] =
32+
given encoder: Encoder[Dataset] =
3333
Encoder.forProduct2("id", "title") { x =>
3434
(x.id, x.title)
3535
}

‎src/main/scala/latis/service/hapi/Format.scala

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
package latis.service.hapi
22

3-
import cats.implicits._
3+
import cats.implicits.*
44
import org.http4s.ParseFailure
55
import org.http4s.QueryParamDecoder
66
import org.http4s.QueryParameterValue
7-
import org.http4s.dsl.io._
7+
import org.http4s.dsl.io.*
88

99
/** Wrapper for `format` parameter. */
1010
sealed trait Format
1111

1212
object Format {
13-
final case object Csv extends Format
14-
final case object Binary extends Format
15-
final case object Json extends Format
13+
case object Csv extends Format
14+
case object Binary extends Format
15+
case object Json extends Format
1616

17-
implicit val formatDecoder: QueryParamDecoder[Format] =
17+
given formatDecoder: QueryParamDecoder[Format] =
1818
new QueryParamDecoder[Format] {
1919
override def decode(qpv: QueryParameterValue) = qpv.value match {
2020
case "csv" => Csv.validNel

‎src/main/scala/latis/service/hapi/HapiError.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ object HapiError {
1616
HapiError(HapiService.version, status)
1717

1818
/** JSON encoder */
19-
implicit val encoder: Encoder[HapiError] =
19+
given encoder: Encoder[HapiError] =
2020
Encoder.forProduct2("HAPI", "status") { x =>
2121
(x.version, x.status)
2222
}

‎src/main/scala/latis/service/hapi/HapiInterpreter.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package latis.service.hapi
33
import cats.Applicative
44
import cats.data.EitherT
55
import cats.data.NonEmptyList
6-
import cats.implicits._
6+
import cats.implicits.*
77
import fs2.Stream
88
import io.circe.JsonObject
99

‎src/main/scala/latis/service/hapi/HapiService.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package latis.service.hapi
22

33
import cats.effect.IO
4-
import cats.implicits._
4+
import cats.implicits.*
55
import org.http4s.HttpRoutes
66

77
import latis.catalog.Catalog

‎src/main/scala/latis/service/hapi/Include.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
package latis.service.hapi
22

3-
import cats.implicits._
3+
import cats.implicits.*
44
import org.http4s.ParseFailure
55
import org.http4s.QueryParamDecoder
66
import org.http4s.QueryParameterValue
7-
import org.http4s.dsl.io._
7+
import org.http4s.dsl.io.*
88

99
/** Wrapper for `include` parameter. */
1010
final case class Include(header: Boolean) extends AnyVal
1111

1212
object Include {
1313

14-
implicit val includeDecoder: QueryParamDecoder[Include] =
14+
given includeDecoder: QueryParamDecoder[Include] =
1515
new QueryParamDecoder[Include] {
1616
override def decode(qpv: QueryParameterValue) = qpv.value match {
1717
case "header" => Include(true).validNel

‎src/main/scala/latis/service/hapi/InfoResponse.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package latis.service.hapi
22

33
import io.circe.Encoder
44
import io.circe.Json
5-
import io.circe.syntax._
5+
import io.circe.syntax.*
66

77
/**
88
* Represents a response from the `info` service.
@@ -24,7 +24,7 @@ object InfoResponse {
2424
*
2525
* Note that we are flattening out the `metadata` field.
2626
*/
27-
implicit val encoder: Encoder[InfoResponse] =
27+
given encoder: Encoder[InfoResponse] =
2828
new Encoder[InfoResponse] {
2929
override def apply(x: InfoResponse): Json =
3030
Encoder[Metadata].apply(x.metadata).deepMerge(

‎src/main/scala/latis/service/hapi/InfoService.scala

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@ package latis.service.hapi
22

33
import cats.data.EitherT
44
import cats.effect.Concurrent
5-
import cats.implicits._
6-
import io.circe.syntax._
5+
import cats.implicits.*
6+
import io.circe.syntax.*
77
import org.http4s.HttpRoutes
8-
import org.http4s.circe._
8+
import org.http4s.circe.*
99
import org.http4s.dsl.Http4sDsl
10-
import org.log4s._
10+
import org.log4s.*
1111

1212
/** Implements the `/info` endpoint. */
1313
class InfoService[F[_]: Concurrent](alg: InfoAlgebra[F]) extends Http4sDsl[F] {
14-
import QueryDecoders._
14+
import QueryDecoders.*
1515

1616
private[this] val logger = getLogger
1717

‎src/main/scala/latis/service/hapi/LandingPageService.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package latis.service.hapi
22

33
import cats.Monad
4-
import cats.syntax.all._
4+
import cats.syntax.all.*
55
import org.http4s.HttpRoutes
66
import org.http4s.dsl.Http4sDsl
7-
import org.http4s.scalatags._
7+
import org.http4s.scalatags.*
88
import scalatags.Text
9-
import scalatags.Text.all._
9+
import scalatags.Text.all.*
1010

1111
/** Implements the HAPI landing page. */
1212
class LandingPageService[F[_]: Monad](alg: CatalogAlgebra[F]) extends Http4sDsl[F] {

‎src/main/scala/latis/service/hapi/Latis3Interpreter.scala

+6-6
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import scala.collection.immutable.ListMap
55
import cats.data.EitherT
66
import cats.data.NonEmptyList
77
import cats.effect.IO
8-
import cats.implicits._
8+
import cats.implicits.*
99
import fs2.Stream
1010
import fs2.data.json
1111
import fs2.data.json.circe.tokenizerForEncoder
@@ -30,11 +30,11 @@ import latis.ops.UnaryOperation
3030
import latis.output.BinaryEncoder
3131
import latis.output.CsvEncoder
3232
import latis.output.JsonEncoder
33-
import latis.time.{Time => LTime}
34-
import latis.util.HapiUtils._
33+
import latis.time.{Time as LTime}
34+
import latis.util.HapiUtils.*
3535
import latis.util.Identifier
36-
import latis.util.Identifier.IdentifierStringContext
37-
import latis.util.dap2.parser.ast._
36+
import latis.util.Identifier.*
37+
import latis.util.dap2.parser.ast.*
3838
import latis.util.hapi.DataCodec
3939

4040
class Latis3Interpreter(catalog: Catalog) extends HapiInterpreter[IO] {
@@ -67,7 +67,7 @@ class Latis3Interpreter(catalog: Catalog) extends HapiInterpreter[IO] {
6767
// This would indicate that the parameter wasn't found, so we
6868
// should return an error.
6969
missing = params.flatMap(_.find(! hasVariable(dataset, _)))
70-
_ <- EitherT.fromOption[IO](missing.map(UnknownParam), ()).swap
70+
_ <- EitherT.fromOption[IO](missing.map(UnknownParam.apply), ()).swap
7171
// Get the metadata.
7272
metadata <- EitherT.fromEither[IO](getDatasetMetadata(dataset))
7373
} yield params.map { ps =>

‎src/main/scala/latis/service/hapi/Metadata.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package latis.service.hapi
22

33
import cats.data.NonEmptyList
44
import io.circe.Encoder
5-
import io.circe.generic.semiauto._
5+
import io.circe.generic.semiauto.*
66

77
/**
88
* Represents metadata for HAPI datasets.
@@ -44,7 +44,7 @@ object Metadata {
4444
*
4545
* This encoder will drop parameters that are None.
4646
*/
47-
implicit val encoder: Encoder[Metadata] =
47+
given encoder: Encoder[Metadata] =
4848
deriveEncoder[Metadata].mapJsonObject {
4949
_.filter {
5050
case (_, v) => !v.isNull

‎src/main/scala/latis/service/hapi/Parameter.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package latis.service.hapi
22

33
import io.circe.Encoder
44
import io.circe.JsonObject
5-
import io.circe.generic.semiauto._
5+
import io.circe.generic.semiauto.*
66

77
/**
88
* Represents a parameter in a HAPI dataset.
@@ -35,7 +35,7 @@ object Parameter {
3535
* This encoder will drop parameters that are None except for
3636
* units and fill, which are always required.
3737
*/
38-
implicit val encoder: Encoder[Parameter] =
38+
given encoder: Encoder[Parameter] =
3939
deriveEncoder[Parameter].mapJsonObject { obj =>
4040
JsonObject.fromIterable {
4141
obj.toList.filter {

‎src/main/scala/latis/service/hapi/QueryDecoders.scala

+4-5
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,15 @@ package latis.service.hapi
33
import java.time.LocalDateTime
44

55
import cats.data.NonEmptyList
6-
import cats.implicits._
6+
import cats.implicits.*
77
import org.http4s.ParseFailure
88
import org.http4s.QueryParamDecoder
99
import org.http4s.QueryParameterValue
10-
import org.http4s.dsl.io._
10+
import org.http4s.dsl.io.*
1111

1212
/** Shared query decoders and matchers. */
1313
object QueryDecoders {
1414

15-
1615
object DatasetMatcher extends OptionalQueryParamDecoderMatcher[String]("dataset")
1716
object StartTimeMatcher extends OptionalValidatingQueryParamDecoderMatcher[LocalDateTime]("start")
1817
object StopTimeMatcher extends OptionalValidatingQueryParamDecoderMatcher[LocalDateTime]("stop")
@@ -24,7 +23,7 @@ object QueryDecoders {
2423
object ParamMatcher extends OptionalQueryParamDecoderMatcher[NonEmptyList[String]]("parameters")
2524

2625
/** Decoder for non-empty simple CSV query parameters. */
27-
implicit def csvDecoder[A : QueryParamDecoder]: QueryParamDecoder[NonEmptyList[A]] =
26+
given csvDecoder[A : QueryParamDecoder]: QueryParamDecoder[NonEmptyList[A]] =
2827
new QueryParamDecoder[NonEmptyList[A]] {
2928
override def decode(qpv: QueryParameterValue) =
3029
if (qpv.value.isEmpty) {
@@ -47,7 +46,7 @@ object QueryDecoders {
4746
}
4847

4948
/** Decoder for restricted ISO 8601 time strings. */
50-
implicit val restrictedISO8601: QueryParamDecoder[LocalDateTime] =
49+
given restrictedISO8601: QueryParamDecoder[LocalDateTime] =
5150
new QueryParamDecoder[LocalDateTime] {
5251
override def decode(qpv: QueryParameterValue) =
5352
Time.parse(qpv.value).toValidNel(

‎src/main/scala/latis/service/hapi/Status.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ object Status {
2323
val `1501`: Status = Status(1501, "Internal server error - upstream request error")
2424

2525
/** JSON encoder */
26-
implicit val encoder: Encoder[Status] =
26+
given encoder: Encoder[Status] =
2727
Encoder.forProduct2("code", "message") { x =>
2828
(x.code, x.message)
2929
}

‎src/main/scala/latis/service/hapi/TimeStampLocation.scala

+8-8
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@ import io.circe.Json
77
sealed trait TimeStampLocation
88

99
/** Time stamp at the beginning of the window. */
10-
final case object Begin extends TimeStampLocation
10+
case object Begin extends TimeStampLocation
1111

1212
/** Time stamp at the center of the window. */
13-
final case object Center extends TimeStampLocation
13+
case object Center extends TimeStampLocation
1414

1515
/** Time stamp at the end of the window. */
16-
final case object End extends TimeStampLocation
16+
case object End extends TimeStampLocation
1717

1818
/** Time stamp elsewhere in window or unknown. */
19-
final case object Other extends TimeStampLocation
19+
case object Other extends TimeStampLocation
2020

2121
object TimeStampLocation {
2222

@@ -30,11 +30,11 @@ object TimeStampLocation {
3030
}
3131

3232
/** JSON encoder */
33-
implicit val encoder: Encoder[TimeStampLocation] =
33+
given encoder: Encoder[TimeStampLocation] =
3434
Encoder.instance {
35-
case Begin => Json.fromString("begin")
35+
case Begin => Json.fromString("begin")
3636
case Center => Json.fromString("center")
37-
case End => Json.fromString("end")
38-
case Other => Json.fromString("other")
37+
case End => Json.fromString("end")
38+
case Other => Json.fromString("other")
3939
}
4040
}

‎src/main/scala/latis/util/HapiUtils.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package latis.util
22

3-
import cats.syntax.all._
3+
import cats.syntax.all.*
44

5-
import latis.service.hapi._
5+
import latis.service.hapi.*
66
import latis.time.TimeFormat
77

88
object HapiUtils {

‎src/test/scala/latis/service/hapi/BinSuite.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package latis.service.hapi
22

3-
import io.circe._
4-
import io.circe.syntax._
3+
import io.circe.*
4+
import io.circe.syntax.*
55
import munit.FunSuite
66

77
class BinSuite extends FunSuite {

‎src/test/scala/latis/service/hapi/CapabilitiesServiceSuite.scala

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package latis.service.hapi
22

33
import cats.effect.IO
4-
import io.circe._
5-
import io.circe.syntax._
4+
import io.circe.*
5+
import io.circe.syntax.*
66
import munit.CatsEffectSuite
7-
import org.http4s._
8-
import org.http4s.circe._
9-
import org.http4s.implicits._
7+
import org.http4s.*
8+
import org.http4s.circe.*
9+
import org.http4s.implicits.*
1010

1111
class CapabilitiesServiceSuite extends CatsEffectSuite {
1212

‎src/test/scala/latis/service/hapi/DataServiceSuite.scala

+13-13
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ package latis.service.hapi
22

33
import cats.data.NonEmptyList
44
import cats.effect.IO
5-
import cats.syntax.all._
5+
import cats.syntax.all.*
66
import io.circe.Json
7-
import io.circe.syntax._
7+
import io.circe.syntax.*
88
import munit.CatsEffectSuite
9-
import org.http4s._
10-
import org.http4s.circe._
9+
import org.http4s.*
10+
import org.http4s.circe.*
1111
import org.http4s.headers.`Content-Type`
12-
import org.http4s.implicits._
13-
import org.http4s.{Status => _}
12+
import org.http4s.implicits.*
13+
import org.http4s.{Status as _}
1414
import scodec.codecs
1515

1616
import latis.catalog.Catalog
@@ -20,12 +20,12 @@ import latis.data.Sample
2020
import latis.data.SeqFunction
2121
import latis.dataset.MemoizedDataset
2222
import latis.metadata.Metadata
23-
import latis.model._
24-
import latis.service.hapi.HapiError._
23+
import latis.model.*
24+
import latis.service.hapi.HapiError.*
2525
import latis.service.hapi.HapiInterpreter.noopInterpreter
26-
import latis.service.hapi.{Status => HStatus}
26+
import latis.service.hapi.{Status as HStatus}
2727
import latis.time.Time
28-
import latis.util.Identifier._
28+
import latis.util.Identifier.*
2929

3030
class DataServiceSuite extends CatsEffectSuite {
3131

@@ -63,7 +63,7 @@ class DataServiceSuite extends CatsEffectSuite {
6363
private lazy val dataService = new DataService[IO](latisInterp).service
6464

6565
/** Assert GET request to given URI returns a particular status. */
66-
def assertStatus(uri: Uri, status: HStatus)(implicit loc: munit.Location): IO[Unit] = {
66+
def assertStatus(uri: Uri, status: HStatus)(using loc: munit.Location): IO[Unit] = {
6767
val service = new DataService[IO](noopInterpreter).service
6868
val req = Request[IO](Method.GET, uri)
6969

@@ -73,7 +73,7 @@ class DataServiceSuite extends CatsEffectSuite {
7373
}
7474

7575
/** Assert the CSV decoder rejects the argument. */
76-
def csvDecoderReject(arg: String)(implicit loc: munit.Location): Unit =
76+
def csvDecoderReject(arg: String)(using loc: munit.Location): Unit =
7777
QueryDecoders.csvDecoder[String].decode(QueryParameterValue(arg))
7878
.fold(_ => assert(cond = true), _ => fail(s"Accepted bad input: '$arg'"))
7979

@@ -219,7 +219,7 @@ class DataServiceSuite extends CatsEffectSuite {
219219
val req = Request[IO](Method.GET, uri"/data?dataset=testdataset&start=2000-01-01&stop=2000-01-06&format=binary")
220220
val resp = dataService.orNotFound(req)
221221

222-
val encoder = codecs.list(codecs.utf8 ~ codecs.int32L)
222+
val encoder = codecs.list(codecs.utf8 :: codecs.int32L)
223223
val testBin = encoder.encode(
224224
List(
225225
("2000-01-01T00:00:00.000Z", 1),

‎src/test/scala/latis/service/hapi/LandingPageServiceSuite.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import org.http4s.Method
66
import org.http4s.Request
77
import org.http4s.Status
88
import org.http4s.headers.`Content-Length`
9-
import org.http4s.implicits._
9+
import org.http4s.implicits.*
1010

1111
import latis.catalog.Catalog
1212
import latis.dataset.MemoizedDataset

‎src/test/scala/latis/service/hapi/TimeParseSuite.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class TimeParseSuite extends FunSuite {
88

99
val expected = LocalDateTime.of(2018, 1, 1, 0, 0, 0)
1010

11-
def testParse(str: String)(implicit loc: munit.Location): Unit =
11+
def testParse(str: String)(using loc: munit.Location): Unit =
1212
Time.parse(str) match {
1313
case Some(t) => assertEquals(t, expected)
1414
case None => fail(s"Failed to parse time string: $str")

‎src/test/scala/latis/service/hapi/ToHapiTimeSuite.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ package latis.service.hapi
22

33
import munit.CatsEffectSuite
44

5-
import latis.data._
5+
import latis.data.*
66
import latis.dataset.MemoizedDataset
77
import latis.metadata.Metadata
8-
import latis.model._
8+
import latis.model.*
99
import latis.ops.ToHapiTime
1010
import latis.time.Time
1111

0 commit comments

Comments
 (0)
Please sign in to comment.