From 647e29bb2d1735fb4b2134b2e8917d484260fa68 Mon Sep 17 00:00:00 2001 From: Oleg Nizhnikov Date: Wed, 30 Nov 2022 12:56:06 +0100 Subject: [PATCH 1/7] Upgrade scala 2.13 --- modules/core/src/test/scala/tofu/ScopedSuite.scala | 2 +- modules/core/src/test/scala/tofu/syntax/FEitherSuite.scala | 2 ++ modules/core3/src/test/scala/tofu/syntax/FEitherSuite.scala | 2 ++ .../test/scala/tofu/control/CatsInstancesFromBindSuite.scala | 5 ++--- modules/kernel/src/main/scala/tofu/internal/NonTofu.scala | 3 +-- .../src/main/scala/tofu/logging/TethysBuilder.scala | 3 +-- .../main/scala/tofu/logging/impl/ContextLoggingImpl.scala | 2 ++ .../scala/tofu/logging/impl/ContextSyncLoggingImpl.scala | 2 ++ .../src/main/scala/tofu/logging/impl/SyncLogging.scala | 2 ++ .../src/main/scala/tofu/logging/impl/UniversalLogging.scala | 2 ++ .../src/main/scala/tofu/logging/location/Location.scala | 2 ++ .../src/test/scala/tofu/logging/zlogs/ZLogsSuite.scala | 2 -- project/Dependencies.scala | 2 +- 13 files changed, 20 insertions(+), 11 deletions(-) diff --git a/modules/core/src/test/scala/tofu/ScopedSuite.scala b/modules/core/src/test/scala/tofu/ScopedSuite.scala index ea3ca5c82..981984c27 100644 --- a/modules/core/src/test/scala/tofu/ScopedSuite.scala +++ b/modules/core/src/test/scala/tofu/ScopedSuite.scala @@ -10,7 +10,7 @@ import scala.annotation.nowarn import scala.concurrent.Future class ScopedSuite { - @nowarn("msg=parameter value") + @nowarn("cat=unused-params") def doSomething[F[_]: ContextShift: Async, A](fa: F[A], ea: => A)(calcEc: ExecutionContext)(implicit ec: ExecutionContext, block: Blocker diff --git a/modules/core/src/test/scala/tofu/syntax/FEitherSuite.scala b/modules/core/src/test/scala/tofu/syntax/FEitherSuite.scala index 57674d027..634a59517 100644 --- a/modules/core/src/test/scala/tofu/syntax/FEitherSuite.scala +++ b/modules/core/src/test/scala/tofu/syntax/FEitherSuite.scala @@ -11,7 +11,9 @@ import tofu.Raise import tofu.syntax.feither._ import java.util.concurrent.atomic.AtomicInteger +import scala.annotation.nowarn +@nowarn("cat=lint-infer-any") class FEitherSuite extends AnyWordSpec with Matchers { // --Helpers------------------------------------ diff --git a/modules/core3/src/test/scala/tofu/syntax/FEitherSuite.scala b/modules/core3/src/test/scala/tofu/syntax/FEitherSuite.scala index 57674d027..634a59517 100644 --- a/modules/core3/src/test/scala/tofu/syntax/FEitherSuite.scala +++ b/modules/core3/src/test/scala/tofu/syntax/FEitherSuite.scala @@ -11,7 +11,9 @@ import tofu.Raise import tofu.syntax.feither._ import java.util.concurrent.atomic.AtomicInteger +import scala.annotation.nowarn +@nowarn("cat=lint-infer-any") class FEitherSuite extends AnyWordSpec with Matchers { // --Helpers------------------------------------ diff --git a/modules/higherKindCore/src/test/scala/tofu/control/CatsInstancesFromBindSuite.scala b/modules/higherKindCore/src/test/scala/tofu/control/CatsInstancesFromBindSuite.scala index 5c0ce61e1..603f15f39 100644 --- a/modules/higherKindCore/src/test/scala/tofu/control/CatsInstancesFromBindSuite.scala +++ b/modules/higherKindCore/src/test/scala/tofu/control/CatsInstancesFromBindSuite.scala @@ -1,7 +1,6 @@ package tofu.control import cats.{Applicative, FlatMap} -import tofu.compat.unused import tofu.instances.bind._ class CatsInstancesFromBindSuite { @@ -10,7 +9,7 @@ class CatsInstancesFromBindSuite { requireFlatMap[F[Nothing, *]] } - def requireApplicative[F[_]](implicit @unused applicative: Applicative[F]): Unit = () + def requireApplicative[F[_]](implicit applicative: Applicative[F]): Unit = () - def requireFlatMap[F[_]](implicit @unused flatMap: FlatMap[F]): Unit = () + def requireFlatMap[F[_]](implicit flatMap: FlatMap[F]): Unit = () } diff --git a/modules/kernel/src/main/scala/tofu/internal/NonTofu.scala b/modules/kernel/src/main/scala/tofu/internal/NonTofu.scala index a21daabfc..ff54d85cb 100644 --- a/modules/kernel/src/main/scala/tofu/internal/NonTofu.scala +++ b/modules/kernel/src/main/scala/tofu/internal/NonTofu.scala @@ -1,5 +1,4 @@ package tofu.internal -import tofu.compat.unused /** workaround for scala 2.12.10 derivation */ sealed abstract class IsTofu[+F[_]] @@ -12,7 +11,7 @@ sealed abstract class NonTofu[+F[_]] object NonTofu extends NonTofu[Nothing] { /** This results in ambigous implicits if there is implicit evidence of `IsTofo[F]` */ - implicit def ambiguousIfPresent[F[_]](implicit @unused _ev: IsTofu[F]): NonTofu[F] = this + implicit def ambiguousIfPresent[F[_]](implicit _ev: IsTofu[F]): NonTofu[F] = this /** This always declares an instance of `Refute` * diff --git a/modules/logging/structured/src/main/scala/tofu/logging/TethysBuilder.scala b/modules/logging/structured/src/main/scala/tofu/logging/TethysBuilder.scala index 73e36e9a2..3e053b65d 100644 --- a/modules/logging/structured/src/main/scala/tofu/logging/TethysBuilder.scala +++ b/modules/logging/structured/src/main/scala/tofu/logging/TethysBuilder.scala @@ -8,7 +8,6 @@ import cats.kernel.Monoid import tofu.logging.LogRenderer.LogRendererUnit import tethys.commons.RawJson import tethys.writers.tokens.TokenWriter -import tofu.compat.unused class TethysBuilder(prefix: String = "", postfix: String = "") extends LogBuilder[String] { type Top = TokenWriter @@ -17,7 +16,7 @@ class TethysBuilder(prefix: String = "", postfix: String = "") extends LogBuilde type Output = Unit /** override to add predefined fields */ - def predefined(@unused tokenWriter: TokenWriter): Unit = {} + def predefined(tokenWriter: TokenWriter): Unit = {} def writeValue(value: LogParamValue, writer: TokenWriter): Unit = value match { case StrValue(v) => writer.writeString(v) diff --git a/modules/logging/structured/src/main/scala/tofu/logging/impl/ContextLoggingImpl.scala b/modules/logging/structured/src/main/scala/tofu/logging/impl/ContextLoggingImpl.scala index 6a754fa3f..f16ca4644 100644 --- a/modules/logging/structured/src/main/scala/tofu/logging/impl/ContextLoggingImpl.scala +++ b/modules/logging/structured/src/main/scala/tofu/logging/impl/ContextLoggingImpl.scala @@ -5,7 +5,9 @@ package impl import cats.Applicative import cats.syntax.applicative._ import org.slf4j.{Logger, Marker} +import scala.annotation.nowarn +@nowarn("cat=lint-infer-any") class ContextLoggingImpl[F[_]: Applicative, C: Loggable, Service](context: F WithContext C, logger: Logger) extends LoggingImpl[F](logger) { diff --git a/modules/logging/structured/src/main/scala/tofu/logging/impl/ContextSyncLoggingImpl.scala b/modules/logging/structured/src/main/scala/tofu/logging/impl/ContextSyncLoggingImpl.scala index 53a3be39d..89255d642 100644 --- a/modules/logging/structured/src/main/scala/tofu/logging/impl/ContextSyncLoggingImpl.scala +++ b/modules/logging/structured/src/main/scala/tofu/logging/impl/ContextSyncLoggingImpl.scala @@ -5,7 +5,9 @@ package impl import org.slf4j.{Logger, Marker} import tofu.syntax.monadic._ import cats.Monad +import scala.annotation.nowarn +@nowarn("cat=lint-infer-any") class ContextSyncLoggingImpl[F[_]: Monad, C: Loggable](context: F WithContext C, logger: Logger)(implicit F: Delay[F]) extends LoggingImpl[F](logger) { diff --git a/modules/logging/structured/src/main/scala/tofu/logging/impl/SyncLogging.scala b/modules/logging/structured/src/main/scala/tofu/logging/impl/SyncLogging.scala index 57dde6a5d..3f1e4ee58 100644 --- a/modules/logging/structured/src/main/scala/tofu/logging/impl/SyncLogging.scala +++ b/modules/logging/structured/src/main/scala/tofu/logging/impl/SyncLogging.scala @@ -5,7 +5,9 @@ import org.slf4j.{Logger, Marker} import tofu.syntax.monadic._ import cats.Monad import tofu.Delay +import scala.annotation.nowarn +@nowarn("cat=lint-infer-any") class SyncLogging[F[_]: Monad](logger: Logger)(implicit F: Delay[F]) extends LoggingImpl[F](logger) { override def trace(message: String, values: LoggedValue*): F[Unit] = F.delay(logger.trace(message, values: _*)).whenA(traceEnabled) diff --git a/modules/logging/structured/src/main/scala/tofu/logging/impl/UniversalLogging.scala b/modules/logging/structured/src/main/scala/tofu/logging/impl/UniversalLogging.scala index ff3156268..2121d89a7 100644 --- a/modules/logging/structured/src/main/scala/tofu/logging/impl/UniversalLogging.scala +++ b/modules/logging/structured/src/main/scala/tofu/logging/impl/UniversalLogging.scala @@ -5,7 +5,9 @@ import cats.FlatMap import org.slf4j.{Logger, LoggerFactory, Marker} import tofu.logging.Logging.{Debug, Error, Info, Trace, Warn} import tofu.{Delay, WithContext} +import scala.annotation.nowarn +@nowarn("cat=lint-infer-any") object UniversalLogging { private[impl] final def enabled(level: Logging.Level, logger: Logger): Boolean = level match { case Trace => logger.isTraceEnabled() diff --git a/modules/logging/structured/src/main/scala/tofu/logging/location/Location.scala b/modules/logging/structured/src/main/scala/tofu/logging/location/Location.scala index 30decd0d1..f1dfd061e 100644 --- a/modules/logging/structured/src/main/scala/tofu/logging/location/Location.scala +++ b/modules/logging/structured/src/main/scala/tofu/logging/location/Location.scala @@ -5,6 +5,7 @@ import tofu.logging.Loggable import scala.annotation.tailrec import scala.collection.mutable import scala.reflect.macros.blackbox +import scala.annotation.nowarn case class Location(file: String, line: Int, applicationPoint: String) @@ -16,6 +17,7 @@ object Location { implicit def location: Location = macro LocationMacro.getEnclosingPosition } +@nowarn("cat=lint-infer-any") object LocationMacro { /** Based on Izumi Logstage CodePosition */ diff --git a/modules/zio/logging/src/test/scala/tofu/logging/zlogs/ZLogsSuite.scala b/modules/zio/logging/src/test/scala/tofu/logging/zlogs/ZLogsSuite.scala index 398e33047..68361cc16 100644 --- a/modules/zio/logging/src/test/scala/tofu/logging/zlogs/ZLogsSuite.scala +++ b/modules/zio/logging/src/test/scala/tofu/logging/zlogs/ZLogsSuite.scala @@ -21,7 +21,6 @@ import zio.console.Console import zio._ import scala.jdk.CollectionConverters._ -import scala.annotation.nowarn class ZLogsSuite extends AnyFlatSpec with Matchers { @@ -54,7 +53,6 @@ class ZLogsSuite extends AnyFlatSpec with Matchers { val logLayer: URLayer[Has[CtxService], Has[ZLogging.Make]] = ZLogging.Make.layerPlainWithContext(_.get) - @nowarn("cat=unused-locals") val program = for { logs <- ZIO.service[ZLogging.Make] implicit0(logger: ULogging) = logs.byName(Name) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index f11bdc054..4cf71fc7c 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -8,7 +8,7 @@ object Dependencies { object Version { val scala212 = "2.12.16" - val scala213 = "2.13.8" + val scala213 = "2.13.10" val circe = "0.14.2" From f05408b37e949d121bfc9f4029d6d26dc2df993d Mon Sep 17 00:00:00 2001 From: Oleg Nizhnikov Date: Wed, 30 Nov 2022 13:27:51 +0100 Subject: [PATCH 2/7] ci generated --- .github/workflows/ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a0e7f48c1..204772ac4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,7 +24,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] - scala: [2.13.8, 2.12.16] + scala: [2.13.10, 2.12.16] java: [temurin@8, temurin@17] runs-on: ${{ matrix.os }} steps: @@ -88,7 +88,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] - scala: [2.13.8] + scala: [2.13.10] java: [temurin@8] runs-on: ${{ matrix.os }} steps: @@ -123,12 +123,12 @@ jobs: ~/Library/Caches/Coursier/v1 key: ${{ runner.os }}-sbt-cache-v2-${{ hashFiles('**/*.sbt') }}-${{ hashFiles('project/build.properties') }} - - name: Download target directories (2.13.8) + - name: Download target directories (2.13.10) uses: actions/download-artifact@v2 with: - name: target-${{ matrix.os }}-2.13.8-${{ matrix.java }} + name: target-${{ matrix.os }}-2.13.10-${{ matrix.java }} - - name: Inflate target directories (2.13.8) + - name: Inflate target directories (2.13.10) run: | tar xf targets.tar rm targets.tar From a094c819e61967d2ad44215ffc71ef7256900237 Mon Sep 17 00:00:00 2001 From: Oleg Nizhnikov Date: Wed, 30 Nov 2022 13:46:07 +0100 Subject: [PATCH 3/7] Ignore binary incompatibilities in examples --- build.sbt | 11 ++++++++--- project/Dependencies.scala | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/build.sbt b/build.sbt index 1b88b20d3..43d7be520 100644 --- a/build.sbt +++ b/build.sbt @@ -276,7 +276,7 @@ lazy val examplesZIO2 = .settings( defaultSettings, name := "tofu-examples-zio2", - noPublishSettings + exampleSettings ) .dependsOn(zio2Logging, loggingDer, loggingLayout) @@ -350,7 +350,7 @@ lazy val examples = project libraryDependencies ++= http4s, defaultSettings, name := "tofu-examples", - noPublishSettings, + exampleSettings, ) .dependsOn(mainModuleDeps: _*) @@ -360,7 +360,7 @@ lazy val examplesCE3 = project libraryDependencies ++= List(doobieCoreCE3, doobieH2CE3, derevo, groovy), defaultSettings, name := "tofu-examples-ce3", - noPublishSettings, + exampleSettings, ) .dependsOn(ce3MainModuleDeps: _*) @@ -464,6 +464,8 @@ lazy val scalacWarningConfig = scalacOptions += { s"-Wconf:$contextDeprecationInfo,$verboseWarnings" } +ThisBuild / libraryDependencySchemes += "io.circe" %% "circe-core" % "early-semver" + lazy val macros = Seq( scalacOptions ++= { if (minorVersion.value == 13) Seq("-Ymacro-annotations") else Seq() }, libraryDependencies ++= { if (minorVersion.value == 12) Seq(compilerPlugin(macroParadise)) else Seq() } @@ -472,6 +474,9 @@ lazy val macros = Seq( lazy val noPublishSettings = defaultSettings ++ Seq(publish := {}, publishArtifact := false, publishTo := None, publish / skip := true) +lazy val exampleSettings = + noPublishSettings ++ Set(evictionErrorLevel := Level.Info) + addCommandAlias("fmt", "all tofu/scalafmtSbt tofu/scalafmtAll") addCommandAlias("checkfmt", "all tofu/scalafmtSbtCheck tofu/scalafmtCheckAll") diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 4cf71fc7c..36d91c70f 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -10,7 +10,7 @@ object Dependencies { val scala213 = "2.13.10" - val circe = "0.14.2" + val circe = "0.14.3" val tethys = "0.26.0" From 60b88cdb3bfd95cb179b3a81421ed4378b084cf5 Mon Sep 17 00:00:00 2001 From: Oleg Nizhnikov Date: Wed, 30 Nov 2022 13:48:44 +0100 Subject: [PATCH 4/7] fmt sbt --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 43d7be520..5e6ec6148 100644 --- a/build.sbt +++ b/build.sbt @@ -474,7 +474,7 @@ lazy val macros = Seq( lazy val noPublishSettings = defaultSettings ++ Seq(publish := {}, publishArtifact := false, publishTo := None, publish / skip := true) -lazy val exampleSettings = +lazy val exampleSettings = noPublishSettings ++ Set(evictionErrorLevel := Level.Info) addCommandAlias("fmt", "all tofu/scalafmtSbt tofu/scalafmtAll") From aa339283f4b47b2c98efbc15ec22237f142ba104 Mon Sep 17 00:00:00 2001 From: Oleg Nizhnikov Date: Wed, 30 Nov 2022 14:00:50 +0100 Subject: [PATCH 5/7] Upgrade logback --- .../logging/logback/ConsoleContextLayout.scala | 18 +++++++++++++----- project/Dependencies.scala | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/modules/logging/layout/src/main/scala/tofu/logging/logback/ConsoleContextLayout.scala b/modules/logging/layout/src/main/scala/tofu/logging/logback/ConsoleContextLayout.scala index 8dabdd4b8..c1b3c5312 100644 --- a/modules/logging/layout/src/main/scala/tofu/logging/logback/ConsoleContextLayout.scala +++ b/modules/logging/layout/src/main/scala/tofu/logging/logback/ConsoleContextLayout.scala @@ -7,6 +7,7 @@ import ch.qos.logback.classic.spi.{ILoggingEvent, IThrowableProxy, LoggerContext import org.slf4j.Marker import tofu.logging.LoggedValue import tofu.logging.impl.ContextMarker +import org.slf4j.event.KeyValuePair class ConsoleContextLayout extends PatternLayout { @@ -15,7 +16,6 @@ class ConsoleContextLayout extends PatternLayout { } class WrappedEvent(event: ILoggingEvent) extends ILoggingEvent { - lazy val getMDCPropertyMap: util.Map[String, String] = { val map = new util.HashMap[String, String] map.putAll(event.getMDCPropertyMap) @@ -48,8 +48,16 @@ class WrappedEvent(event: ILoggingEvent) extends ILoggingEvent { def getThrowableProxy: IThrowableProxy = event.getThrowableProxy def getCallerData: Array[StackTraceElement] = event.getCallerData def hasCallerData: Boolean = event.hasCallerData - def getMarker: Marker = event.getMarker - def getMdc: util.Map[String, String] = getMDCPropertyMap - def getTimeStamp: Long = event.getTimeStamp - def prepareForDeferredProcessing(): Unit = event.prepareForDeferredProcessing() + + def getMdc: util.Map[String, String] = getMDCPropertyMap + def getTimeStamp: Long = event.getTimeStamp + def prepareForDeferredProcessing(): Unit = event.prepareForDeferredProcessing() + + def getMarkerList(): util.List[Marker] = event.getMarkerList + + def getNanoseconds(): Int = event.getNanoseconds + + def getSequenceNumber(): Long = event.getSequenceNumber + + def getKeyValuePairs(): util.List[KeyValuePair] = event.getKeyValuePairs() } diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 36d91c70f..c7869e206 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -34,7 +34,7 @@ object Dependencies { val fs2CE3 = "3.2.14" - val logback = "1.2.11" + val logback = "1.4.1" val monix = "3.4.1" From 045787253e975fa4854f522798fc250fcaf8ae62 Mon Sep 17 00:00:00 2001 From: Odomontois Date: Wed, 30 Nov 2022 15:22:27 +0100 Subject: [PATCH 6/7] Update logback --- project/Dependencies.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 6751eff00..03a326d60 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -34,7 +34,7 @@ object Dependencies { val fs2CE3 = "3.2.14" - val logback = "1.4.1" + val logback = "1.4.5" val monix = "3.4.1" From f330178f6e212c536169dd4c619008b41e3160b2 Mon Sep 17 00:00:00 2001 From: Oleg Nizhnikov Date: Mon, 1 May 2023 17:52:59 +0200 Subject: [PATCH 7/7] fix link to retain contextual path --- website/docusaurus.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 8c60252d4..29def9acb 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -73,7 +73,7 @@ module.exports = { position: "right" }, { - href: "pathname:///api/index.html", + href: "pathname:///api/", label: "API", position: "right" }