Skip to content

Conversation

@gu-scala-steward-public-repos
Copy link
Contributor

@gu-scala-steward-public-repos gu-scala-steward-public-repos bot commented Mar 28, 2025

About this PR

Updates:

Usage

Please merge!

I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.

If you have any feedback, just mention me in the comments below.

Configure Scala Steward for your repository with a .scala-steward.conf file.

Have a fantastic day writing Scala!

💡 Applied Scalafix Migrations
  • org.typelevel:{cats-effect,cats-effect-laws}:3.0.0 (created no change)
    • github:typelevel/cats-effect/v3_0_0?sha=v3.0.0
  • org.typelevel:{cats-effect,cats-effect-laws}:3.3.0 (created no change)
    • github:typelevel/cats-effect/v3_3_0?sha=series/3.x
🔍 Files still referring to the old version numbers

The following files still refer to the old version numbers.
You might want to review and update them manually.

cdk/package.json
pnpm-lock.yaml
build.sbt
handlers/discount-expiry-notifier/package-lock.json
⚙ Adjust future updates

Add these to your .scala-steward.conf file to ignore future updates of these dependencies:

updates.ignore = [
  { groupId = "ch.qos.logback", artifactId = "logback-classic" },
  { groupId = "com.beachape", artifactId = "enumeratum" },
  { groupId = "com.eed3si9n", artifactId = "sbt-assembly" },
  { groupId = "com.fasterxml.jackson.core", artifactId = "jackson-annotations" },
  { groupId = "com.fasterxml.jackson.core", artifactId = "jackson-core" },
  { groupId = "com.fasterxml.jackson.core", artifactId = "jackson-databind" },
  { groupId = "com.fasterxml.jackson.dataformat", artifactId = "jackson-dataformat-cbor" },
  { groupId = "com.fasterxml.jackson.datatype", artifactId = "jackson-datatype-jdk8" },
  { groupId = "com.fasterxml.jackson.datatype", artifactId = "jackson-datatype-jsr310" },
  { groupId = "com.fasterxml.jackson.module", artifactId = "jackson-module-parameter-names" },
  { groupId = "com.fasterxml.jackson.module", artifactId = "jackson-module-scala" },
  { groupId = "com.google.cloud", artifactId = "google-cloud-bigquery" },
  { groupId = "com.softwaremill.sttp.client3", artifactId = "async-http-client-backend-cats-ce2" },
  { groupId = "com.softwaremill.sttp.client3", artifactId = "circe" },
  { groupId = "com.softwaremill.sttp.client3", artifactId = "core" },
  { groupId = "com.softwaremill.sttp.client3", artifactId = "okhttp-backend" },
  { groupId = "com.softwaremill.sttp.client3", artifactId = "zio" },
  { groupId = "com.softwaremill.sttp.client3", artifactId = "zio-json" },
  { groupId = "com.softwaremill.sttp.tapir", artifactId = "tapir-aws-lambda" },
  { groupId = "com.softwaremill.sttp.tapir", artifactId = "tapir-aws-lambda-zio" },
  { groupId = "com.softwaremill.sttp.tapir", artifactId = "tapir-core" },
  { groupId = "com.softwaremill.sttp.tapir", artifactId = "tapir-json-zio" },
  { groupId = "com.softwaremill.sttp.tapir", artifactId = "tapir-swagger-ui-bundle" },
  { groupId = "com.stripe", artifactId = "stripe-java" },
  { groupId = "commons-io", artifactId = "commons-io" },
  { groupId = "dev.zio", artifactId = "zio" },
  { groupId = "dev.zio", artifactId = "zio" },
  { groupId = "dev.zio", artifactId = "zio-logging-slf4j" },
  { groupId = "dev.zio", artifactId = "zio-test" },
  { groupId = "dev.zio", artifactId = "zio-test-sbt" },
  { groupId = "io.circe", artifactId = "circe-generic" },
  { groupId = "io.circe", artifactId = "circe-parser" },
  { groupId = "joda-time", artifactId = "joda-time" },
  { groupId = "org.asynchttpclient", artifactId = "async-http-client" },
  { groupId = "org.http4s", artifactId = "http4s-circe" },
  { groupId = "org.http4s", artifactId = "http4s-core" },
  { groupId = "org.http4s", artifactId = "http4s-dsl" },
  { groupId = "org.http4s", artifactId = "http4s-server" },
  { groupId = "org.mockito", artifactId = "mockito-core" },
  { groupId = "org.scala-lang.modules", artifactId = "scala-parallel-collections" },
  { groupId = "org.scala-lang.modules", artifactId = "scala-xml" },
  { groupId = "org.scala-sbt", artifactId = "sbt" },
  { groupId = "org.scala-sbt", artifactId = "scripted-plugin" },
  { groupId = "org.scalacheck", artifactId = "scalacheck" },
  { groupId = "org.scalameta", artifactId = "sbt-scalafmt" },
  { groupId = "org.scalamock", artifactId = "scalamock" },
  { groupId = "org.typelevel", artifactId = "cats-core" },
  { groupId = "org.typelevel", artifactId = "cats-effect" }
]

Or, add these to slow down future updates of these dependencies:

dependencyOverrides = [
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "ch.qos.logback", artifactId = "logback-classic" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.beachape", artifactId = "enumeratum" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.eed3si9n", artifactId = "sbt-assembly" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.fasterxml.jackson.core", artifactId = "jackson-annotations" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.fasterxml.jackson.core", artifactId = "jackson-core" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.fasterxml.jackson.core", artifactId = "jackson-databind" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.fasterxml.jackson.dataformat", artifactId = "jackson-dataformat-cbor" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.fasterxml.jackson.datatype", artifactId = "jackson-datatype-jdk8" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.fasterxml.jackson.datatype", artifactId = "jackson-datatype-jsr310" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.fasterxml.jackson.module", artifactId = "jackson-module-parameter-names" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.fasterxml.jackson.module", artifactId = "jackson-module-scala" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.google.cloud", artifactId = "google-cloud-bigquery" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.softwaremill.sttp.client3", artifactId = "async-http-client-backend-cats-ce2" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.softwaremill.sttp.client3", artifactId = "circe" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.softwaremill.sttp.client3", artifactId = "core" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.softwaremill.sttp.client3", artifactId = "okhttp-backend" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.softwaremill.sttp.client3", artifactId = "zio" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.softwaremill.sttp.client3", artifactId = "zio-json" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.softwaremill.sttp.tapir", artifactId = "tapir-aws-lambda" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.softwaremill.sttp.tapir", artifactId = "tapir-aws-lambda-zio" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.softwaremill.sttp.tapir", artifactId = "tapir-core" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.softwaremill.sttp.tapir", artifactId = "tapir-json-zio" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.softwaremill.sttp.tapir", artifactId = "tapir-swagger-ui-bundle" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "com.stripe", artifactId = "stripe-java" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "commons-io", artifactId = "commons-io" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "dev.zio", artifactId = "zio" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "dev.zio", artifactId = "zio" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "dev.zio", artifactId = "zio-logging-slf4j" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "dev.zio", artifactId = "zio-test" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "dev.zio", artifactId = "zio-test-sbt" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "io.circe", artifactId = "circe-generic" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "io.circe", artifactId = "circe-parser" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "joda-time", artifactId = "joda-time" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "org.asynchttpclient", artifactId = "async-http-client" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "org.http4s", artifactId = "http4s-circe" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "org.http4s", artifactId = "http4s-core" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "org.http4s", artifactId = "http4s-dsl" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "org.http4s", artifactId = "http4s-server" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "org.mockito", artifactId = "mockito-core" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "org.scala-lang.modules", artifactId = "scala-parallel-collections" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "org.scala-lang.modules", artifactId = "scala-xml" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "org.scala-sbt", artifactId = "sbt" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "org.scala-sbt", artifactId = "scripted-plugin" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "org.scalacheck", artifactId = "scalacheck" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "org.scalameta", artifactId = "sbt-scalafmt" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "org.scalamock", artifactId = "scalamock" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "org.typelevel", artifactId = "cats-core" }
  },
  {
    pullRequests = { frequency = "30 days" },
    dependency = { groupId = "org.typelevel", artifactId = "cats-effect" }
  }
]
labels: dependencies

@gu-scala-steward-public-repos gu-scala-steward-public-repos bot added the dependencies Pull requests that update a dependency file label Mar 28, 2025
Comment on lines +28 to +29
given Decoder[Identity] = deriveDecoder
given Decoder[RequestContext] = deriveDecoder
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can't quite work out how it compiled before, as semiauto should need the full chain defined. Unfortunately because it uses deriving.Mirror, it's not possible to see the actual implicits used in Intellij before/after.

val parallelCollections = "org.scala-lang.modules" %% "scala-parallel-collections" % "1.0.4"
val commonsIO = "commons-io" % "commons-io" % "2.18.0"
val jodaTime = "joda-time" % "joda-time" % "2.13.1"
val tapirVersion = "1.11.33"// stick with 1.11.33 for now as later versions indirectly pull in netty-codec-base which duplicates netty-codec content
Copy link
Member

@johnduffell johnduffell Jun 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to avoid splitting between netty 4.1 and 4.2 as the jars have been shifted around.

The netty-codec module has been split into a number of different sub-modules, which the netty-codec module then depends on. In other words, netty-codec is now multiple jar files instead of one.

AWS sdk is still on the 4.1 until this (or similar) is merged aws/aws-sdk-java-v2#6205
But later versions of tapir (via ZIO) are on 4.2.

See netty migration guide for the reasoning behind the incompatibility
https://github.com/netty/netty/wiki/Netty-4.2-Migration-Guide#:~:text=The%20netty%2Dcodec%20module%20has%20been%20split%20into%20a%20number%20of%20different%20sub%2Dmodules%2C%20which%20the%20netty%2Dcodec%20module%20then%20depends%20on.%20In%20other%20words%2C%20netty%2Dcodec%20is%20now%20multiple%20jar%20files%20instead%20of%20one.

val circeVersion = "0.14.10"
val sttpVersion = "3.10.1"

val awsSdkVersion = "2.31.71"
Copy link
Member

@johnduffell johnduffell Jun 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I separated this by one line from the non aws ones, so that it doesn't cause git conflicts as the automatic PRs are raised separately for AWS and non AWS bumps.

Comment on lines +120 to +141
val assemblyMergeStrategyDiscardModuleInfo =
assembly / assemblyMergeStrategy := {
case PathList("META-INF", "maven", "org.webjars", "swagger-ui", "pom.properties") =>
MergeStrategy.singleOrError
case PathList(ps @ _*) if ps.last == "module-info.class" => MergeStrategy.discard
case PathList(ps @ _*) if ps.last == "deriving.conf" => MergeStrategy.filterDistinctLines
case PathList("META-INF", "io.netty.versions.properties") => MergeStrategy.discard
case PathList("mime.types") => MergeStrategy.filterDistinctLines
case PathList("logback.xml") => MergeStrategy.preferProject
/*
* AWS SDK v2 includes a codegen-resources directory in each jar, with conflicting names.
* This appears to be for generating clients from HTTP services.
* So it's redundant in a binary artefact.
*/
case PathList("codegen-resources", _*) => MergeStrategy.discard
case PathList("META-INF", "FastDoubleParser-LICENSE") => MergeStrategy.concat
case PathList("META-INF", "FastDoubleParser-NOTICE") => MergeStrategy.concat
case PathList("META-INF", "okio.kotlin_module") => MergeStrategy.discard
case x =>
val oldStrategy = (assembly / assemblyMergeStrategy).value
oldStrategy(x)
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just a small reformat, no change needed in the end

Copy link
Contributor

@ecguardian ecguardian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me 👍

@johnduffell johnduffell merged commit 146766b into main Jun 26, 2025
52 checks passed
@johnduffell johnduffell deleted the update/non_aws branch June 26, 2025 13:04
// Override to fix this vulnerability https://github.com/guardian/support-service-lambdas/security/dependabot/24
// This is a transitive dependency of async-http-client-backend-cats-ce2 so when we upgrade that we can remove this
val asyncHttpClientOverride = "org.asynchttpclient" % "async-http-client" % "2.12.4"
val asyncHttpClientOverride = "org.asynchttpclient" % "async-http-client" % "3.0.2"
Copy link
Member

@johnduffell johnduffell Jun 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should not have been bumped a major version due to binary incompatiblity at run time #2910
Actually this override is no longer needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants