text:
Plugin still supported?

Just curious is this plugin still supported? I consider it is one of the most important features in my PKM-process and rely on it a lot. It's actually one of the reasons I prefer LogSeq to Obsidian.
If the author doesn't have time to support it - that's fine - I'd like to know would my PRs be reviewed&merged if I begin to support and develop it myself?
Thanks!

@neoromantic you did not get a reply to your important question, unfortunately.
BTW, I was also on Obsidian and have more or less decided to switch to Logseq. Automatic Linker is an important plug-in for me too, but it is not the only reason for my switch.
Anyway, there is now a plug-in for Obsidian that does the same: Freelinking.

Hi, apologies for my extended leave from maintenance, i will be gradually easing into development in the coming days. PR's would definitely be appreciateed got quite the backlog.!

source: gharchive/issue

authors: DutchPete neoromantic sawhney17

license: MIT

license_type: permissive

license_source: github-api


text:
Upload of an empty file fails

There is a zero division error when calculating progress; but even with that taken care of, there is some issue with multi-part-uploading an empty file.
This old discussion might be of use: https://github.com/kr/s3/issues/30

Hi @bosonogi Thanks for heads-up on the client side we will fix it for the next version for s3 related discussion I will have to check it out and get back to you later.

@bosonogi
We will completely forbid uploading of files with size = 0.

Fixed in 0.7.0

Yes, we have this on the backlog now and we will allow uploading of empty files, although I can't give a timeline just yet.

authors: SenadI bosonogi christiansbg

repo: sbg/sevenbridges-python

license_source: bigquery


text:
Seems C# has API breaking changes

Describe the bug
Using Godot 4.1 dev 3
The Godot C# API has been updated in a way that cases compilation issues.
To Reproduce
Steps to reproduce the behavior:
Download the project, build it and get hundreds of errors
Expected behavior
No build errors
To be real, I started fixing them and realized I may need about a 1 or 2 days to fix them.
If this project is still active, I'll do what I can to fix all the compilation errors and even work on the project.
What's the state of this being moved to C++ core?

When the tool becomes feature complete.  I'll be open to rewriting it in C++ to make it part of core, that is if the team accepts it.

I talked with Stefan and we decided to maintain this Plugin as C# plugin as long as there is no official solution from Godotengine itself. I made a FAQ Entry about this: https://github.com/sboron/terrain-tool-godot4/wiki/FAQ
There I have access rights to this Repo and will help provide an official Version for Godot 4.1
Everyone is invited to use this code as inspiration to make a native implementation ~!
I close this Ticket now.


text:
How to create an sbt task that is assembly without the tests.

I am trying to create a custom task that runs sbt assembly without running any tests.
lazy val assemblyWithoutTest = taskKey[sbt.File]
assemblyWithoutTest := {
  assembly
}

assemblyWithoutTest.settings := {
  assembly.settings
}

test in assemblyWithoutTest := {}

I have seen the issue https://github.com/sbt/sbt-assembly/issues/140 but it does not satisfy the requirement we have been and it should be a separate task.
I also tried this:
import sbtassembly.AssemblyKeys._
assemblyWithoutTest= assemblySettings
test in assemblyWithoutTest := {}

But it does not compile
I have been going through the source code and I found this:
assembly := Assembly.assemblyTask(assembly).value

What is this define and assign? It's really confusing.

I concur that sbt assembly shouldn't be running tests. It makes the system less stable and less flexible. You would expect sbt coverage test coverageReport clean compile assembly to make sense as a sequence of actions and binding these together makes the system confusing, inconsistent, slower and more fragile. It's not good design. Do one thing and do it well.

authors: philliptaylorpro vamsiampolu

repo: sbt/sbt-assembly

license: mit


text:
[1.3.0-RC3] Heap exhaustion when running multiple commands with many whitespaces

sbt version:

master (8793034039b4b40f7b3c68b8fa761e1a3aac5d8f) :negative_squared_cross_mark:
1.3.0-RC3 :negative_squared_cross_mark:
1.3.0-RC2 :heavy_check_mark:
1.2.8 :heavy_check_mark:

$ cat .jvmopts
-Xms1536m
-Xmx1536m
-Xss8m

steps
$ sbt ";clean                                                    ;clean                                                    ;clean                                                    ;clean"

problem
Exception in thread "classloader-cache-cleanup-0" java.lang.OutOfMemoryError: Java heap space
        at scala.collection.convert.DecorateAsScala.mapAsScalaConcurrentMapConverter(DecorateAsScala.scala:77)
        at scala.collection.convert.DecorateAsScala.mapAsScalaConcurrentMapConverter$(DecorateAsScala.scala:76)
        at scala.collection.JavaConverters$.mapAsScalaConcurrentMapConverter(JavaConverters.scala:77)
        at sbt.internal.classpath.ClassLoaderCache.sbt$internal$classpath$ClassLoaderCache$$closeExpiredLoaders(ClassLoaderCache.scala:75)
	at sbt.internal.classpath.ClassLoaderCache$CleanupThread.run(ClassLoaderCache.scala:100)
java.lang.OutOfMemoryError: Java heap space
	at scala.collection.immutable.HashSet$HashTrieSet.updated0(HashSet.scala:551)
	at scala.collection.immutable.HashSet.$plus(HashSet.scala:84)
	at scala.collection.immutable.HashSet.$plus(HashSet.scala:35)
	at scala.collection.mutable.SetBuilder.$plus$eq(SetBuilder.scala:28)
	at scala.collection.mutable.SetBuilder.$plus$eq(SetBuilder.scala:24)
	at scala.collection.generic.Growable.loop$1(Growable.scala:56)
	at scala.collection.generic.Growable.$plus$plus$eq(Growable.scala:61)
	at scala.collection.generic.Growable.$plus$plus$eq$(Growable.scala:53)
	at scala.collection.mutable.SetBuilder.$plus$plus$eq(SetBuilder.scala:24)
	at scala.collection.generic.GenericTraversableTemplate.$anonfun$flatten$1(GenericTraversableTemplate.scala:174)
	at scala.collection.generic.GenericTraversableTemplate$$Lambda$306/0x0000000840471840.apply(Unknown Source)
	at scala.collection.Iterator.foreach(Iterator.scala:941)
	at scala.collection.Iterator.foreach$(Iterator.scala:941)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1429)
	at scala.collection.MapLike$DefaultKeySet.foreach(MapLike.scala:181)
	at scala.collection.generic.GenericTraversableTemplate.flatten(GenericTraversableTemplate.scala:173)
	at scala.collection.generic.GenericTraversableTemplate.flatten$(GenericTraversableTemplate.scala:171)
	at scala.collection.AbstractTraversable.flatten(Traversable.scala:108)
	at sbt.internal.AKeyIndex.tasks(KeyIndex.scala:122)
	at sbt.internal.KeyIndex0.tasks(KeyIndex.scala:221)
	at sbt.internal.Act$.$anonfun$taskKeyExtra$1(Act.scala:115)
	at sbt.internal.Act$$$Lambda$4490/0x00000008413a4840.apply(Unknown Source)
	at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:237)
	at scala.collection.TraversableLike$$Lambda$17/0x00000008400da840.apply(Unknown Source)
	at scala.collection.immutable.List.foreach(List.scala:392)
	at scala.collection.TraversableLike.map(TraversableLike.scala:237)
	at scala.collection.TraversableLike.map$(TraversableLike.scala:230)
	at scala.collection.immutable.List.map(List.scala:298)
	at sbt.internal.Act$.taskKeyExtra(Act.scala:113)
	at sbt.internal.Act$.$anonfun$scopedKeyFull$5(Act.scala:86)
	at sbt.internal.Act$$$Lambda$4481/0x000000084139f840.apply(Unknown Source)
	at scala.Function1.$anonfun$andThen$1(Function1.scala:57)
Error during sbt execution: java.lang.OutOfMemoryError: Java heap space

expectation
Clean happens and sbt returns
notes
Relevant stack trace duing the freeze via jstack:
"main" #1 prio=5 os_prio=0 cpu=42036.01ms elapsed=70.11s tid=0x00007f4d78012800 nid=0x6568 runnable  [0x00007f4d7d099000]
   java.lang.Thread.State: RUNNABLE
	at scala.collection.generic.GenericTraversableTemplate.genericBuilder(GenericTraversableTemplate.scala:72)
	at scala.collection.generic.GenericTraversableTemplate.genericBuilder$(GenericTraversableTemplate.scala:72)
	at scala.collection.AbstractTraversable.genericBuilder(Traversable.scala:108)
	at scala.collection.generic.GenTraversableFactory$GenericCanBuildFrom.apply(GenTraversableFactory.scala:59)
	at scala.collection.generic.GenTraversableFactory$GenericCanBuildFrom.apply(GenTraversableFactory.scala:54)
	at scala.collection.TraversableLike.collect(TraversableLike.scala:273)
	at scala.collection.TraversableLike.collect$(TraversableLike.scala:272)
	at scala.collection.AbstractTraversable.collect(Traversable.scala:108)
	at sbt.internal.util.complete.FixedSetExamples.examplesWithRemovedPrefix(ExampleSource.scala:46)
	at sbt.internal.util.complete.FixedSetExamples.withAddedPrefix(ExampleSource.scala:42)
	at sbt.internal.util.complete.ParserWithExamples.derive(Parser.scala:866)
	at sbt.internal.util.complete.SeqParser.derive(Parser.scala:690)
	at sbt.internal.util.complete.MapParser.derive(Parser.scala:767)
	at sbt.internal.util.complete.SeqParser.derive(Parser.scala:690)
	at sbt.internal.util.complete.MapParser.derive(Parser.scala:767)
	at sbt.internal.util.complete.TokenStart.derive(Parser.scala:806)
	at sbt.internal.util.complete.ParserWithExamples.derive(Parser.scala:865)
	at sbt.internal.util.complete.MapParser.derive(Parser.scala:767)
	at sbt.internal.util.complete.BindParser.derive(Parser.scala:752)
	at sbt.internal.util.complete.ParserSeq.$anonfun$derive$3(Parser.scala:734)
	at sbt.internal.util.complete.ParserSeq$$Lambda$4460/0x00000008413ab840.apply(Unknown Source)
	at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:237)
	at scala.collection.TraversableLike$$Lambda$17/0x00000008400db040.apply(Unknown Source)
	at scala.collection.immutable.List.foreach(List.scala:392)
	at scala.collection.TraversableLike.map(TraversableLike.scala:237)
	at scala.collection.TraversableLike.map$(TraversableLike.scala:230)
	at scala.collection.immutable.List.map(List.scala:298)
	at sbt.internal.util.complete.ParserSeq.derive(Parser.scala:734)
	at sbt.internal.util.complete.BindParser.derive(Parser.scala:752)
	at sbt.internal.util.complete.MapParser.derive(Parser.scala:767)
	at sbt.internal.util.complete.BindParser.derive(Parser.scala:752)
	at sbt.internal.util.complete.MatchedString.derive(Parser.scala:792)
	at sbt.internal.util.complete.MapParser.derive(Parser.scala:767)
	at sbt.internal.util.complete.SeqParser.derive(Parser.scala:690)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.MapParser.derive(Parser.scala:767)
	at sbt.internal.util.complete.And.derive(Parser.scala:822)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.MapParser.derive(Parser.scala:767)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.MapParser.derive(Parser.scala:767)
	at sbt.internal.util.complete.Repeat.derive(Parser.scala:941)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.MapParser.derive(Parser.scala:767)
	at sbt.internal.util.complete.SeqParser.derive(Parser.scala:690)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.HomParser.derive(Parser.scala:703)
	at sbt.internal.util.complete.MapParser.derive(Parser.scala:767)
	at sbt.internal.util.complete.BindParser.derive(Parser.scala:752)
	at sbt.internal.util.complete.MapParser.derive(Parser.scala:767)
	at sbt.internal.util.complete.ParserMain.loop$1(Parser.scala:483)
	at sbt.internal.util.complete.ParserMain.result(Parser.scala:485)
	at sbt.internal.util.complete.ParserMain.result$(Parser.scala:471)
	at sbt.internal.util.complete.Parser$.result(Parser.scala:138)
	at sbt.internal.util.complete.ParserMain.parse(Parser.scala:434)
	at sbt.internal.util.complete.ParserMain.parse$(Parser.scala:433)
	at sbt.internal.util.complete.DefaultParsers$.parse(Parsers.scala:344)
	at sbt.Command$.process(Command.scala:186)
	at sbt.MainLoop$.process$1(MainLoop.scala:188)
	at sbt.MainLoop$.processCommand(MainLoop.scala:223)
	at sbt.MainLoop$.$anonfun$next$2(MainLoop.scala:142)
	at sbt.MainLoop$$$Lambda$622/0x0000000840662040.apply(Unknown Source)
	at sbt.State$StateOpsImpl$.runCmd$1(State.scala:273)
	at sbt.State$StateOpsImpl$.process$extension(State.scala:277)
	at sbt.MainLoop$.$anonfun$next$1(MainLoop.scala:142)
	at sbt.MainLoop$$$Lambda$621/0x0000000840660c40.apply(Unknown Source)
	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:19)
	at sbt.MainLoop$.next(MainLoop.scala:142)
	at sbt.MainLoop$.run(MainLoop.scala:133)
	at sbt.MainLoop$.$anonfun$runWithNewLog$1(MainLoop.scala:111)
	at sbt.MainLoop$$$Lambda$614/0x000000084065d040.apply(Unknown Source)
	at sbt.io.Using.apply(Using.scala:27)
	at sbt.MainLoop$.runWithNewLog(MainLoop.scala:105)
	at sbt.MainLoop$.runAndClearLast(MainLoop.scala:60)
	at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:45)
	at sbt.MainLoop$.runLogged(MainLoop.scala:36)
	at sbt.StandardMain$.runManaged(Main.scala:124)
	at sbt.xMainImpl$.run(Main.scala:67)
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@11.0.3/Native Method)
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@11.0.3/NativeMethodAccessorImpl.java:62)
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@11.0.3/DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(java.base@11.0.3/Method.java:566)
	at sbt.internal.XMainConfiguration.runXMain(XMainConfiguration.scala:46)
	at sbt.xMain.run(Main.scala:39)
	at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:111)
	at xsbt.boot.Launch$.withContextLoader(Launch.scala:130)
	at xsbt.boot.Launch$.run(Launch.scala:111)
	at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:37)
	at xsbt.boot.Launch$.launch(Launch.scala:119)
	at xsbt.boot.Launch$.apply(Launch.scala:20)
	at xsbt.boot.Boot$.runImpl(Boot.scala:56)
	at xsbt.boot.Boot$.main(Boot.scala:18)
	at xsbt.boot.Boot.main(Boot.scala)

The step above sounds like a stupid use-case, but it's a simplification of a problem I ran into with the following script invocation:
sbt "
    ; clean
    ; protofmtCheck
    ; protostyleCheck
    ; scalafmtCheckAll
    ; scalafmtSbtCheck
    ; scalafix --check
    ; protomerge
    ; compile
    ; test
    "

The workaround in that case was obviously to remove the cosmetic heading whitespaces, but it took a while to figure it out.

@bjaglin Thanks for the report!

https://github.com/sbt/sbt/pull/4871

@eatkins It can't be #4871 because that's after RC-3. So maybe it goes back to #4811 or some fixes after that.

repo: sbt/sbt


text:
java12 flag --enable-preview has no effect

steps
sbt version: 1.3.0-RC5
java -version
openjdk 12.0.2 2019-07-16
OpenJDK Runtime Environment (build 12.0.2+10)
OpenJDK 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)
macOS Mojave 10.14.6
problem
I'm trying to use preview features of java12, so I need to pass these options:
javacOptions ++= Seq("--release", "12", "--enable-preview")
javaOptions += "--enable-preview"

javac options works. My classes are compiled using --enable-preview
But the runtime refuses to run. I get there errors :
Error reading API from class file: com.mycompany.SomeClass : java.lang.UnsupportedClassVersionError: Preview features are not enabled for com/mycompany/SomeClass (class file version 56.65535). Try running with '--enable-preview'

notes

It works if I set JAVA_OPTS='--enable-preview'.
IntelliJ doesn't recognize the flag either (the project structure is taken from build.sbt).

Thanks for the report, but javaOptions only take effect under forking - https://www.scala-sbt.org/1.0/docs/Forking.html#Forked+JVM+options, so I think it's working as expected.
I guess it would be useful to have forked compilation in this kind of situation, but sbt doesn't directly support (it might indirectly via javaHome).

The behavior is quite weird : the errors happen during the compile task but the classes are correclty compiled. Then I run test and nothing happen. 0 tests are executed and the build succeed.
Adding fork := true doesn't solve it
Do I have a choice but to set it on sbt's runtime?

Currently the compilation happens mostly within the same JVM, so you'd have to specify the flag when you start sbt.

I just ran in to this (with a jdk 21 preview feature). Took some head scratching and googling before I found this thread. Would be nice if a helpful message explained what was going on and how to deal with it...

@domsj how would sbt know when to print such a message?

authors: SethTisue apflieger domsj eed3si9n


text:
clean and then clean crash sbt on Docker

steps
sbt version: 1.3.2 or 1.3.0
$ docker run -w /code -v $(pwd):/code \
-v $(pwd)/localsbtspace:/.sbt hseeberger/scala-sbt:8u222_1.3.2_2.12.10 \
sbt -Dsbt.global.base=.sbt/global -Dsbt.boot.directory=.sbt/boot/ clean

$ docker run -w /code -v $(pwd):/code \
-v $(pwd)/localsbtspace:/.sbt hseeberger/scala-sbt:8u222_1.3.2_2.12.10 \
sbt -Dsbt.global.base=.sbt/global -Dsbt.boot.directory=.sbt/boot/ clean

problem
I have pipeline in Drone CI that in the first step does
sbt -Dsbt.boot.directory=.sbt/boot/  -Dsbt.global.base=.sbt/global clean
and second step again
sbt -Dsbt.boot.directory=.sbt/boot/  -Dsbt.global.base=.sbt/global clean
Both are run in the docker container from some jvm image and share state by persistent .sbt directory. The first step resolves sbt, scala compiler and dependences but the second fails with
+ sbt -Dsbt.boot.directory=.sbt/boot/ -Dsbt.ivy.home=.ivy2 -Dsbt.global.base=.sbt/global clean
0s
2
[info] Loading settings for project myapp-build from plugins.sbt ...
4s
3
[info] Loading project definition from /drone/src/git.company.com/research/myapp/project
5s
4
[info] Compiling 1 Scala source to /drone/src/git.company.com/research/myapp/project/target/scala-2.12/sbt-1.0/classes ...
6s
5
[error] /drone/src/git.company.com/research/myapp/project/build.scala:1:12: object typesafe is not a member of package com
7s
6
[error] import com.typesafe.sbt.SbtNativePackager._
7s
7
[error]            ^
7s
8
[error] /drone/src/git.company.com/research/myapp/project/build.scala:2:12: object typesafe is not a member of package com
7s
9
[error] import com.typesafe.sbt.packager.Keys._
7s
10
[error]            ^
7s
11
[error] /drone/src/git.company.com/research/myapp/project/build.scala:3:8: not found: object sbt
7s
12
[error] import sbt._
7s
13

and many more similar.
It is fixed when I revert to 1.2.8.
expectation
Is there some state of sbt shared by different than .sbt directory? Seems it is missing some files in the classpath, probably some directory was not persisted.

@ppiotrow Thanks for the report. Could you please provide a sample project that would cause this so we can reproduce it on our machines?

@eed3si9n I'll work on the minimal project example. Now I managed to reproduce error using this command
docker run -w /code -v $(pwd):/code -v $(pwd)/localsbtspace:/.sbt hseeberger/scala-sbt:8u222_1.3.2_2.12.10 sbt -Dsbt.global.base=.sbt/global -Dsbt.boot.directory=.sbt/boot/ clean compile
(try the same again)

This particular docker image has nothing to do with an error as I'm using custom image in my builds. I can fix build by invoking rm -rf project/target.

I think I managed to create sample failing project. Hope there were no local dependencies to my setup https://github.com/ppiotrow/failing-sbt-13

This issue will be expedited via the Lightbend subscription.

A quick diagnosis is that the Coursier cache is not mapped across the run, but project/target is, so that's causing the issue. Here's my workaround:
docker run -w /code -v $(pwd):/code \
-v $(pwd)/localsbtspace:/.sbt hseeberger/scala-sbt:8u222_1.3.2_2.12.10 \
sbt -Dsbt.global.base=/.sbt/global \
  -Dsbt.boot.directory=/.sbt/boot/ \
  -Dsbt.coursier.home=/.sbt/coursier/ clean

Note the absolute paths on global base, boot directory, and Coursier cache.
demo
$ git clean -fdx
...
$ docker run -w /code -v $(pwd):/code \
-v $(pwd)/localsbtspace:/.sbt hseeberger/scala-sbt:8u222_1.3.2_2.12.10 \
sbt -Dsbt.global.base=/.sbt/global -Dsbt.boot.directory=/.sbt/boot/ -Dsbt.coursier.home=/.sbt/coursier/ clean
[info] [launcher] getting org.scala-sbt sbt 1.3.2  (this may take some time)...
:: loading settings :: url = jar:file:/usr/share/sbt/bin/sbt-launch.jar!/org/apache/ivy/core/settings/ivysettings.xml
:: loading settings :: url = jar:file:/usr/share/sbt/bin/sbt-launch.jar!/org/apache/ivy/core/settings/ivysettings.xml
:: loading settings :: url = jar:file:/usr/share/sbt/bin/sbt-launch.jar!/org/apache/ivy/core/settings/ivysettings.xml
:: loading settings :: url = jar:file:/usr/share/sbt/bin/sbt-launch.jar!/org/apache/ivy/core/settings/ivysettings.xml
:: retrieving :: org.scala-sbt#boot-app
	confs: [default]
	81 artifacts copied, 0 already retrieved
[info] [launcher] getting Scala 2.12.10 (for sbt)...
:: retrieving :: org.scala-sbt#boot-scala
	confs: [default]
	6 artifacts copied, 0 already retrieved
[info] Loading settings for project code-build from plugins.sbt ...
[info] Loading project definition from /code/project
[warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings.
[info] Compiling 1 Scala source to /code/project/target/scala-2.12/sbt-1.0/classes ...
[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.10. Compiling...
[info]   Compilation completed in 6.531s.
[info] Done compiling.
[info] Loading settings for project root from build.sbt ...
[info] Set current project to myapp (in build file:/code/)
[success] Total time: 0 s, completed Nov 6, 2019 8:43:50 PM
$ docker run -w /code -v $(pwd):/code \
-v $(pwd)/localsbtspace:/.sbt hseeberger/scala-sbt:8u222_1.3.2_2.12.10 \
sbt -Dsbt.global.base=/.sbt/global -Dsbt.boot.directory=/.sbt/boot/ -Dsbt.coursier.home=/.sbt/coursier/ clean
[info] Loading settings for project code-build from plugins.sbt ...
[info] Loading project definition from /code/project
[info] Loading settings for project root from build.sbt ...
[info] Set current project to myapp (in build file:/code/)
[success] Total time: 1 s, completed Nov 6, 2019 8:44:24 PM

regression?
update task here doesn't seem to be validating the existence of JAR files. I am not sure if that's a new behavior or not, but certainly that's resulting to the error happening at compile-time as opposed to invalidation and re-resolving of the artifacts.
Even if we restore the invalidation, it might be good to print out a warning saying that the expected JARs are missing in the previously resolved location, which should be a rare occurrence

I confirm that sbt.coursier.home is working workaround. The problem is that it is not documented in https://www.scala-sbt.org/1.x/docs/Command-Line-Reference.html

Run into the same problem, used a different location for coursier cache, reverting this (using the defaults) resolved the problem.

authors: eed3si9n ppiotrow robstoll


text:
Launcher jar left corrupt when bootstrap download "successfully fails"

steps
# on a fresh install, i.e.
#   rm -rf ~/.sbt/ ~/.cache/
# and with curl in path:
SBT_LAUNCH_REPO=https://www.google.com/nope ../sbt -d ""

problem
Typical situation: we have a private Artifactory, or other local caching server we need to pull dependencies through, or we have the HTTP proxy vars set incorrectly for whatever reason, or as in the example, the $SBT_LAUNCH_REPO value is simply set incorrectly:
Bootstrapping fails and then subsequent invocation of sbt fail immediately because some HTML body e.g. "404 Not Found" was written to the the boot-jarfile:
Error: Invalid or corrupt jarfile /root/.cache/sbt/boot/sbt-launch/1.5.5/sbt-launch-1.5.5.jar

expectation
sbt should detect and cleanup any failed download, not leaveing the system in a state where we are unable to launch sbt again.
notes
This should be fixable by asking curl to exit with fail with non-zero exit code, and checking $? instead of just testing -f.
(man curl)
...
       -f, --fail
              (HTTP) Fail silently (no output at all) on server errors. This is mostly done to better enable
              scripts  etc to better deal with failed attempts. In normal cases when an HTTP server fails to
              deliver a document, it returns an HTML document stating so (which often also describes why and
              more). This flag will prevent curl from outputting that and return error 22.

              This  method is not fail-safe and there are occasions where non-successful response codes will
              slip through, especially when authentication is involved (response codes 401 and 407).

~I have yet to test how this works~ It fails in a similar fashion when wget is the only client available, but I believe wget at least already considers HTTP errors, and exits with non-zero. But it needs to be checked for.

Thanks for the report!
I'm guessing the problem is around here? https://github.com/sbt/sbt/blob/d197b5b77b014aa2320c70a7aabc6d851149b854/sbt#L116-L126
If you have some bandwidth to work on this, would you be open to sending a PR for this?

Alright, are there any tests covering this launcher script btw?

We have some tests here - https://github.com/sbt/sbt/tree/develop/launcher-package/integration-test/src/test/scala


text:
Fix cached update task

Fixes sbt/sbt#3226
One of the checks that the cached update task performs is called depsUpdated, which checks if the subproject dependencies have been thawed out of cache of now.
For this to function correctly, when we thaw the UpdateReport from JSON, we need to mark the report as cached. This was done subtley in sbt 0.13 for sbinary (https://github.com/sbt/sbt-zero-thirteen/blob/v0.13.15/main/actions/src/main/scala/sbt/CacheIvy.scala#L66-L67).

Great job chasing this one.

source: gharchive/pull-request


text:
Smartc

Description
Concise description of proposed changes, We recommend using screenshots and videos for better description
Additional Information

[ ] I have read the contributing docs (if this is your first contribution)
[ ] This is not a duplicate of any existing pull request

Related Issues
Closes #{issue number}
Note: If your changes are small and straightforward, you may skip the creation of an issue beforehand and remove this section. However, for medium-to-large changes, it is recommended to have an open issue for discussion and approval prior to submitting a pull request.
Your ENS/address:

update

You are creating a PR into the main SE-2 repo. I think you wanted to create it in your fork.


text:
Compiler crash: scala.reflect.internal.FatalError: Found unknown label apply

Hi,
The following code crashes the compiler when using scala 2.11.7 and scala-js 0.6.5:
case class Bug() {

  def doSomething(a: Int, b: Int) {}

  def bug(e: Boolean) {
    0 match {
      case 1 => (doSomething _).tupled( (123, 456) )
      case 2 if e =>
    }

    if (false) Unit
  }
}

The line at case 1 seems to trigger the bug. It doesn't really matter what tupled method is called.
When removing either the case 2  or the if (false) line the code compiles.
The following exception is thrown:
[error] Found unknown label apply at source-/home/jeroen/dev/projects/scalajs-bug/src/main/scala/Bug.scala,line-6,offset=86: default4()
scala.reflect.internal.FatalError: Found unknown label apply at source-/home/jeroen/dev/projects/scalajs-bug/src/main/scala/Bug.scala,line-6,offset=86: default4()
	at scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:58)
	at scala.tools.nsc.Global.abort(Global.scala:269)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genLabelApply(GenJSCode.scala:1848)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genApply(GenJSCode.scala:1650)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genStatOrExpr(GenJSCode.scala:1254)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genStatOrExpr(GenJSCode.scala:1229)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genStat(GenJSCode.scala:1163)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$47.apply(GenJSCode.scala:2284)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$47.apply(GenJSCode.scala:2284)
	at scala.collection.immutable.List.map(List.scala:274)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genBlock(GenJSCode.scala:2284)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genStatOrExpr(GenJSCode.scala:1335)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$genMatch$2.genBody$2(GenJSCode.scala:2209)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$genMatch$2.apply(GenJSCode.scala:2217)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$genMatch$2.apply(GenJSCode.scala:2194)
	at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:778)
	at scala.collection.immutable.List.foreach(List.scala:383)
	at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:777)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genMatch(GenJSCode.scala:2194)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genStatOrExpr(GenJSCode.scala:1387)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genBlock(GenJSCode.scala:2285)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genStatOrExpr(GenJSCode.scala:1335)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genStat(GenJSCode.scala:1163)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$47.apply(GenJSCode.scala:2284)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$47.apply(GenJSCode.scala:2284)
	at scala.collection.immutable.List.map(List.scala:274)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genBlock(GenJSCode.scala:2284)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genStatOrExpr(GenJSCode.scala:1335)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genStat(GenJSCode.scala:1163)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.org$scalajs$core$compiler$GenJSCode$JSCodePhase$$genBody$1(GenJSCode.scala:1136)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genMethodDef(GenJSCode.scala:1141)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$genMethodWithInfoBuilder$1$$anonfun$apply$9.apply(GenJSCode.scala:820)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$genMethodWithInfoBuilder$1$$anonfun$apply$9.apply(GenJSCode.scala:781)
	at org.scalajs.core.compiler.util.ScopedVar$.withScopedVars(ScopedVar.scala:35)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$genMethodWithInfoBuilder$1.apply(GenJSCode.scala:781)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$genMethodWithInfoBuilder$1.apply(GenJSCode.scala:737)
	at org.scalajs.core.compiler.util.ScopedVar$.withScopedVars(ScopedVar.scala:35)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genMethodWithInfoBuilder(GenJSCode.scala:737)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$genMethod$1.apply(GenJSCode.scala:698)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$genMethod$1.apply(GenJSCode.scala:698)
	at org.scalajs.core.compiler.util.ScopedVar$.withScopedVars(ScopedVar.scala:35)
	at org.scalajs.core.compiler.JSEncoding$class.withNewLocalNameScope(JSEncoding.scala:54)
	at org.scalajs.core.compiler.GenJSCode.withNewLocalNameScope(GenJSCode.scala:31)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genMethod(GenJSCode.scala:697)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.org$scalajs$core$compiler$GenJSCode$JSCodePhase$$gen$1(GenJSCode.scala:347)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$org$scalajs$core$compiler$GenJSCode$JSCodePhase$$gen$1$1.apply(GenJSCode.scala:332)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$org$scalajs$core$compiler$GenJSCode$JSCodePhase$$gen$1$1.apply(GenJSCode.scala:332)
	at scala.collection.immutable.List.foreach(List.scala:383)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.org$scalajs$core$compiler$GenJSCode$JSCodePhase$$gen$1(GenJSCode.scala:332)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.genClass(GenJSCode.scala:359)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$apply$1$$anonfun$apply$2.apply(GenJSCode.scala:261)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$apply$1$$anonfun$apply$2.apply(GenJSCode.scala:248)
	at org.scalajs.core.compiler.util.ScopedVar$.withScopedVars(ScopedVar.scala:35)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$apply$1.apply(GenJSCode.scala:248)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase$$anonfun$apply$1.apply(GenJSCode.scala:230)
	at scala.collection.immutable.List.foreach(List.scala:383)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.apply(GenJSCode.scala:230)
	at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:430)
	at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:397)
	at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:397)
	at scala.collection.Iterator$class.foreach(Iterator.scala:743)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1174)
	at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:397)
	at org.scalajs.core.compiler.GenJSCode$JSCodePhase.run(GenJSCode.scala:168)
	at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1625)
	at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1610)
	at scala.tools.nsc.Global$Run.compileSources(Global.scala:1605)
	at scala.tools.nsc.Global$Run.compile(Global.scala:1703)
	at xsbt.CachedCompiler0.run(CompilerInterface.scala:116)
	at xsbt.CachedCompiler0.run(CompilerInterface.scala:95)
	at xsbt.CompilerInterface.run(CompilerInterface.scala:26)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:101)
	at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:47)
	at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:41)
	at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply$mcV$sp(AggressiveCompile.scala:97)
	at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply(AggressiveCompile.scala:97)
	at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply(AggressiveCompile.scala:97)
	at sbt.compiler.AggressiveCompile.sbt$compiler$AggressiveCompile$$timed(AggressiveCompile.scala:162)
	at sbt.compiler.AggressiveCompile$$anonfun$3.compileScala$1(AggressiveCompile.scala:96)
	at sbt.compiler.AggressiveCompile$$anonfun$3.apply(AggressiveCompile.scala:139)
	at sbt.compiler.AggressiveCompile$$anonfun$3.apply(AggressiveCompile.scala:86)
	at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:38)
	at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:36)
	at sbt.inc.IncrementalCommon.cycle(IncrementalCommon.scala:31)
	at sbt.inc.Incremental$$anonfun$1.apply(Incremental.scala:39)
	at sbt.inc.Incremental$$anonfun$1.apply(Incremental.scala:38)
	at sbt.inc.Incremental$.manageClassfiles(Incremental.scala:66)
	at sbt.inc.Incremental$.compile(Incremental.scala:38)
	at sbt.inc.IncrementalCompile$.apply(Compile.scala:26)
	at sbt.compiler.AggressiveCompile.compile2(AggressiveCompile.scala:153)
	at sbt.compiler.AggressiveCompile.compile1(AggressiveCompile.scala:70)
	at sbt.compiler.AggressiveCompile.apply(AggressiveCompile.scala:45)
	at sbt.Compiler$.apply(Compiler.scala:74)
	at sbt.Compiler$.apply(Compiler.scala:65)
	at sbt.Defaults$.sbt$Defaults$$compileTaskImpl(Defaults.scala:777)
	at sbt.Defaults$$anonfun$compileTask$1.apply(Defaults.scala:769)
	at sbt.Defaults$$anonfun$compileTask$1.apply(Defaults.scala:769)
	at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
	at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
	at sbt.std.Transform$$anon$4.work(System.scala:63)
	at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
	at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
	at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
	at sbt.Execute.work(Execute.scala:235)
	at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
	at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
	at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
	at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

Confirmed, thanks for the report. Here is smaller minimization:
class Bug {
  def doSomething(a: Int, b: Int): Unit = ()

  def bug(e: Boolean): Unit = {
    0 match {
      case 1 => (doSomething _).tupled((123, 456))
      case 2 if e =>
    }

    if (false) ()
  }
}

Tree after mixin:
[[syntax trees at end of                     mixin]] // HelloWorld.scala
package helloworld {
  class Bug extends Object {
    def doSomething(a: Int, b: Int): Unit = ();
    def bug(e: Boolean): Unit = {
      {
        case <synthetic> val x1: Int = 0;
        (x1: Int) match {
          case 1 => {
            {
              (new <$anon: Function2>(Bug.this): Function2)
            }
          }.tupled().apply(new Tuple2$mcII$sp(123, 456))
          case 2 => {
            if (e)
              ()
            else
              default4();
            scala.runtime.BoxedUnit.UNIT
          }
          case _ => default4(){
            throw new MatchError(scala.Int.box(x1))
          }
        }
      };
      ()
    };
    def <init>(): helloworld.Bug = {
      Bug.super.<init>();
      ()
    }
  }
}

There is indeed a BoxedUnit.UNIT after the if/else that calls default4(), which is not a pattern we recognize. I have no idea why it appears for this code, but it does.

authors: jeroentervoorde sjrd

repo: scala-js/scala-js


text:
main() in test scope is executed twice under CommonJSModule & scalaJSUseMainModuleInitializer settings

when:
scalaJSUseMainModuleInitializer in Test := true
scalaJSModuleKind := ModuleKind.CommonJSModule

A main() in test will be executed twice by a single sbt test:run
object TmpApp {
  def main(args: Array[String]): Unit = {
    println("asdf")
  }
}

output:
[info] Running anywhere.TmpApp
asdf
asdf

scalajs version 0.6.21

I cannot reproduce the issue. With the files in this gist, running test:run emits:
> test:run
[info] Compiling 1 Scala source to C:\Users\Sepi\Documents\Projets\test\target\scala-2.12\test-classes...
[info] Fast optimizing C:\Users\Sepi\Documents\Projets\test\target\scala-2.12\test-test-fastopt.js
[info] Running TmpApp
asdf
[success] Total time: 2 s, completed 09-dÚc.-2017 21:59:31

as expected.

Test again in https://github.com/cuzfrog/scalajs-playground/tree/master/scalajs-app-test
If there's a test framework dependency, it occurs. But the TmpApp itself has nothing to do with any of the test frameworks. Comment out these dependencies, and it behaves normally.

OK, I can reproduce it now. Note that CommonJSModule is not necessary for the reproduction.
Also, this does not happen in 1.0.0-M1+ anymore. It was fixed "accidentally" by this change:
https://github.com/scala-js/scala-js/commit/291d907264bcdf72ea53790e1eac710c7f095d76#diff-dd593403434ec9de3670cb5722f10171R752
We should be able to backport that specific line change to 0.6.x.
However, please note that, in any case, if you have scalaJSUseMainModuleInitializer in Test := true, then when running test (not test:run), your main method will also be run, and there's nothing you or we can do about it. Worse: it can be executed multiple times since we use multiple JS engines to run tests in parallel, and each one will run the main method.
So in general, the combination scalaJSUseMainModuleInitializer in Test := true + having a testing framework is something that does not make much sense, irrespective of the present issue.

This was fixed in ce4004ee3caddee9a9622bf44f25a1f19e568720.

authors: cuzfrog sjrd


text:
Better error message when executing tests with Node missing

I was running some tests via the ScalaJSJUnitPlugin, and got this error:
org.scalajs.testing.common.RPCCore$ClosedException: org.scalajs.testing.adapter.JSEnvRPC$RunTerminatedException

Which was fixed by installing Node. A better error message if Node is not installed would probably be nice.

I think this is a valid request. The first step IMO is to improve ExternalJSRun so that it throws a more structured exception:
https://github.com/scala-js/scala-js-js-envs/blob/1262dbee020172fe1b0f47842ed6a4a3edfd332c/js-envs/src/main/scala/org/scalajs/jsenv/ExternalJSRun.scala#L186
Then, we can walk the cause chain in the sbt plugin and look for that exception specifically and improve the message. Similar to this (a bit more complicated though ;)):
https://github.com/scala-js/scala-js/blob/ddd750cdd937e140539f349f04331a6b83dc24e6/sbt-plugin/src/main/scala/org/scalajs/sbtplugin/ScalaJSPluginInternal.scala#L75


text:
newer http4s SHA

goals here:

get on same SHA as 2.13 build has, which is good because
1a) reduce unnecessary 2.12/2.13 differences
1b) it's newer, better to move forward if we can, even though we can't unfreeze entirely until we have ScalaTest 3.1
see if EntityDecoderSpec still fails, as it has in recent runs
(probably ScalaCheck's fault, but we can pursue that next)

queued: https://scala-ci.typesafe.com/view/scala-2.12.x/job/scala-2.12.x-integrate-community-build/4816/

queued: https://scala-ci.typesafe.com/view/scala-2.12.x/job/scala-2.12.x-integrate-community-build/4818/

EntityDecoderSpec still fails. will deal with that separately

repo: scala/community-builds


text:
improve performance of the parse part of BootstrapSuite

Currently, our combined performance of parse/traverse/pos/tokens is insufficient to finish BootstrapSuite in reasonable time. We need to take a look what's slowing us down this much.

Performance hasn't really been an issue for us throughout the history of the project. We didn't do any significant performance optimizations, so we can probably be much faster, but for now noone seems to care, so I'm closing the issue until a real need materializes.

repo: scalameta/scalameta


text:
Revert "Sanity checks use guard" - fix activity toasts not appearing

Changing these conditions to guard means that they are now reversed, thus breaking activity toast behavior. This PR simply reverts back to the original if let conditionals.
(I personally believe these cases are clearer using if let _ =  anyway.)
This reverts commit 2ac97b4dcd738790b875d03f1cc754b87d1f5891

Fixed on master. Thanks!

authors: eli-symbolab scalessec

repo: scalessec/Toast-Swift


text:
Update sbt-scoverage to 2.0.9

About this PR
📦 Updates org.scoverage:sbt-scoverage from 2.0.8 to 2.0.9
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. 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!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scoverage", artifactId = "sbt-scoverage" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "org.scoverage", artifactId = "sbt-scoverage" }
}]

labels: sbt-plugin-update, early-semver-patch, semver-spec-patch, commit-count:1

Codecov Report
Patch and project coverage have no change.

Comparison is base (756847b) 87.22% compared to head (73eb40f) 87.22%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##           master     #787   +/-   ##
=======================================
  Coverage   87.22%   87.22%
=======================================
  Files         141      141
  Lines        1527     1527
  Branches      254      254
=======================================
  Hits         1332     1332
  Misses        195      195

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

authors: codecov-commenter scala-steward

repo: scapegoat-scala/scapegoat


text:
Time tracking should not update the reporting period

Current (wrong behavior)
When pressing save in the time tracking form, the back-end updates the reporting period.
Target behavior
When the user presses save on the time tracking form, the back-end must not update the reporting period. Assignment of the reporting period must be changed on a different view.

Also when a new work is reported, the work shall be assigned to the reporting period which is not closed and which fits best in terms of date-range

repo: scaphilo/koalixcrm


text:
remove interactive mode

o-Matic has two modes interactive and non-interactive.
Current o-Matic code is not doing DRY and contains repeat of similar operations.
I think most of people use o-Matic with --justdoit option.  I would like to remove
interactive mode rather than refactor keeping two modes.
Any opinions?

I don't have any objections to that. Really, the interactive mode was mostly me learning how to make an interactive bash script with menus - had a lot of fun learning that way back when ;)
But seriously - removing it would be Keeping It Simple, and I like the KISS principle these days.
Although alternatively I can see a way in which the script could be rewritten with interactive mode in mind but just reuses the functions used by --justdoit.
I'd do that myself but really these days I've honestly lost interest in the whole xrdp thing and have moved on. :)
Regards.

No problem, I still have interest in xrdp.
Some people complained that o-Matic doesn't work on Ubuntu 16.04 since people also still want to use useful your tool. Someone have to maintain o-Matic for that reason.  I do as I can.
However, I also doing my own RH-Matic for Red Hat clones. To maintain both of these in finite time, o-Matic can be simplified and needs to be simplified. This is anther reason to remove interactive mode.
Simplifying not necessarily means removing interactive mode.  After simplifying o-Matic, I'm going to do xorgxrdp build and rootless build. Thanks for your work so far.

authors: metalefty scarygliders

license: isc


text:
[BUG] '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)' with verify=False

Checklist

[x ] I checked the FAQ section of the documentation
[ x] I looked for similar issues in the issue tracker
[x ] I am using the latest version of Schemathesis

Describe the bug
I am trying to use schemathesis against a base_url of a real service listening for incoming requests - I need to use the https protocol, but I don't want to / can't fetch the CA cert every time.
In order to proceed with testing I've specified response = case.call_and_validate(verify=False) in my test case definition, but in the logs I'm still getting errors related to SSL cert verification.
I've also tried to split the call in two (i.e. response = case.call(verify=False); case.validate_response(response)), but I'm seeing the same issue and validate_response does not support the verify argument.
This is the openAPI spec I'm using: https://raw.githubusercontent.com/kubeflow/model-registry/main/api/openapi/model-registry.yaml
This is the full trace of one such failure:
self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x10fe47290>, conn = <urllib3.connection.HTTPSConnection object at 0x10fe44590>, method = 'GET'
url = '/api/model_registry/v1alpha3/serving_environments/0/inference_services?name=entity-name&externalId=10&pageSize=100&orderBy=ID&sortOrder=DESC', body = None
headers = {'User-Agent': 'schemathesis/3.38.9', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'X-Schemathesis-TestCaseId': 'BEwkUo'}
retries = Retry(total=0, connect=None, read=False, redirect=None, status=None), timeout = Timeout(connect=10.0, read=10.0, total=None), chunked = False, response_conn = <urllib3.connection.HTTPSConnection object at 0x10fe44590>
preload_content = False, decode_content = False, enforce_content_length = True

    def _make_request(
        self,
        conn: BaseHTTPConnection,
        method: str,
        url: str,
        body: _TYPE_BODY | None = None,
        headers: typing.Mapping[str, str] | None = None,
        retries: Retry | None = None,
        timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT,
        chunked: bool = False,
        response_conn: BaseHTTPConnection | None = None,
        preload_content: bool = True,
        decode_content: bool = True,
        enforce_content_length: bool = True,
    ) -> BaseHTTPResponse:
        """
        Perform a request on a given urllib connection object taken from our
        pool.

        :param conn:
            a connection from one of our connection pools

        :param method:
            HTTP request method (such as GET, POST, PUT, etc.)

        :param url:
            The URL to perform the request on.

        :param body:
            Data to send in the request body, either :class:`str`, :class:`bytes`,
            an iterable of :class:`str`/:class:`bytes`, or a file-like object.

        :param headers:
            Dictionary of custom headers to send, such as User-Agent,
            If-None-Match, etc. If None, pool headers are used. If provided,
            these headers completely replace any pool-specific headers.

        :param retries:
            Configure the number of retries to allow before raising a
            :class:`~urllib3.exceptions.MaxRetryError` exception.

            Pass ``None`` to retry until you receive a response. Pass a
            :class:`~urllib3.util.retry.Retry` object for fine-grained control
            over different types of retries.
            Pass an integer number to retry connection errors that many times,
            but no other types of errors. Pass zero to never retry.

            If ``False``, then retries are disabled and any exception is raised
            immediately. Also, instead of raising a MaxRetryError on redirects,
            the redirect response will be returned.

        :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int.

        :param timeout:
            If specified, overrides the default timeout for this one
            request. It may be a float (in seconds) or an instance of
            :class:`urllib3.util.Timeout`.

        :param chunked:
            If True, urllib3 will send the body using chunked transfer
            encoding. Otherwise, urllib3 will send the body using the standard
            content-length form. Defaults to False.

        :param response_conn:
            Set this to ``None`` if you will handle releasing the connection or
            set the connection to have the response release it.

        :param preload_content:
          If True, the response's body will be preloaded during construction.

        :param decode_content:
            If True, will attempt to decode the body based on the
            'content-encoding' header.

        :param enforce_content_length:
            Enforce content length checking. Body returned by server must match
            value of Content-Length header, if present. Otherwise, raise error.
        """
        self.num_requests += 1

        timeout_obj = self._get_timeout(timeout)
        timeout_obj.start_connect()
        conn.timeout = Timeout.resolve_default_timeout(timeout_obj.connect_timeout)

        try:
            # Trigger any extra validation we need to do.
            try:
>               self._validate_conn(conn)

.venv/lib/python3.11/site-packages/urllib3/connectionpool.py:466:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.venv/lib/python3.11/site-packages/urllib3/connectionpool.py:1095: in _validate_conn
    conn.connect()
.venv/lib/python3.11/site-packages/urllib3/connection.py:730: in connect
    sock_and_verified = _ssl_wrap_socket_and_match_hostname(
.venv/lib/python3.11/site-packages/urllib3/connection.py:909: in _ssl_wrap_socket_and_match_hostname
    ssl_sock = ssl_wrap_socket(
.venv/lib/python3.11/site-packages/urllib3/util/ssl_.py:469: in ssl_wrap_socket
    ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
.venv/lib/python3.11/site-packages/urllib3/util/ssl_.py:513: in _ssl_wrap_socket_impl
    return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.py:517: in wrap_socket
    return self.sslsocket_class._create(
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.py:1104: in _create
    self.do_handshake()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <ssl.SSLSocket [closed] fd=-1, family=2, type=1, proto=0>, block = False

    @_sslcopydoc
    def do_handshake(self, block=False):
        self._check_connected()
        timeout = self.gettimeout()
        try:
            if timeout == 0.0 and block:
                self.settimeout(None)
>           self._sslobj.do_handshake()
E           ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)

/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.py:1382: SSLCertVerificationError

During handling of the above exception, another exception occurred:

self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x10fe47290>, method = 'GET', url = '/api/model_registry/v1alpha3/serving_environments/0/inference_services?name=entity-name&externalId=10&pageSize=100&orderBy=ID&sortOrder=DESC'
body = None, headers = {'User-Agent': 'schemathesis/3.38.9', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'X-Schemathesis-TestCaseId': 'BEwkUo'}
retries = Retry(total=0, connect=None, read=False, redirect=None, status=None), redirect = False, assert_same_host = False, timeout = Timeout(connect=10.0, read=10.0, total=None), pool_timeout = None, release_conn = False, chunked = False
body_pos = None, preload_content = False, decode_content = False, response_kw = {}
parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/api/model_registry/v1alpha3/serving_environments/0/inference_services', query='name=entity-name&externalId=10&pageSize=100&orderBy=ID&sortOrder=DESC', fragment=None)
destination_scheme = None, conn = None, release_this_conn = True, http_tunnel_required = False, err = None, clean_exit = False

    def urlopen(  # type: ignore[override]
        self,
        method: str,
        url: str,
        body: _TYPE_BODY | None = None,
        headers: typing.Mapping[str, str] | None = None,
        retries: Retry | bool | int | None = None,
        redirect: bool = True,
        assert_same_host: bool = True,
        timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT,
        pool_timeout: int | None = None,
        release_conn: bool | None = None,
        chunked: bool = False,
        body_pos: _TYPE_BODY_POSITION | None = None,
        preload_content: bool = True,
        decode_content: bool = True,
        **response_kw: typing.Any,
    ) -> BaseHTTPResponse:
        """
        Get a connection from the pool and perform an HTTP request. This is the
        lowest level call for making a request, so you'll need to specify all
        the raw details.

        .. note::

           More commonly, it's appropriate to use a convenience method
           such as :meth:`request`.

        .. note::

           `release_conn` will only behave as expected if
           `preload_content=False` because we want to make
           `preload_content=False` the default behaviour someday soon without
           breaking backwards compatibility.

        :param method:
            HTTP request method (such as GET, POST, PUT, etc.)

        :param url:
            The URL to perform the request on.

        :param body:
            Data to send in the request body, either :class:`str`, :class:`bytes`,
            an iterable of :class:`str`/:class:`bytes`, or a file-like object.

        :param headers:
            Dictionary of custom headers to send, such as User-Agent,
            If-None-Match, etc. If None, pool headers are used. If provided,
            these headers completely replace any pool-specific headers.

        :param retries:
            Configure the number of retries to allow before raising a
            :class:`~urllib3.exceptions.MaxRetryError` exception.

            If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. Pass a
            :class:`~urllib3.util.retry.Retry` object for fine-grained control
            over different types of retries.
            Pass an integer number to retry connection errors that many times,
            but no other types of errors. Pass zero to never retry.

            If ``False``, then retries are disabled and any exception is raised
            immediately. Also, instead of raising a MaxRetryError on redirects,
            the redirect response will be returned.

        :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int.

        :param redirect:
            If True, automatically handle redirects (status codes 301, 302,
            303, 307, 308). Each redirect counts as a retry. Disabling retries
            will disable redirect, too.

        :param assert_same_host:
            If ``True``, will make sure that the host of the pool requests is
            consistent else will raise HostChangedError. When ``False``, you can
            use the pool on an HTTP proxy and request foreign hosts.

        :param timeout:
            If specified, overrides the default timeout for this one
            request. It may be a float (in seconds) or an instance of
            :class:`urllib3.util.Timeout`.

        :param pool_timeout:
            If set and the pool is set to block=True, then this method will
            block for ``pool_timeout`` seconds and raise EmptyPoolError if no
            connection is available within the time period.

        :param bool preload_content:
            If True, the response's body will be preloaded into memory.

        :param bool decode_content:
            If True, will attempt to decode the body based on the
            'content-encoding' header.

        :param release_conn:
            If False, then the urlopen call will not release the connection
            back into the pool once a response is received (but will release if
            you read the entire contents of the response such as when
            `preload_content=True`). This is useful if you're not preloading
            the response's content immediately. You will need to call
            ``r.release_conn()`` on the response ``r`` to return the connection
            back into the pool. If None, it takes the value of ``preload_content``
            which defaults to ``True``.

        :param bool chunked:
            If True, urllib3 will send the body using chunked transfer
            encoding. Otherwise, urllib3 will send the body using the standard
            content-length form. Defaults to False.

        :param int body_pos:
            Position to seek to in file-like body in the event of a retry or
            redirect. Typically this won't need to be set because urllib3 will
            auto-populate the value when needed.
        """
        parsed_url = parse_url(url)
        destination_scheme = parsed_url.scheme

        if headers is None:
            headers = self.headers

        if not isinstance(retries, Retry):
            retries = Retry.from_int(retries, redirect=redirect, default=self.retries)

        if release_conn is None:
            release_conn = preload_content

        # Check host
        if assert_same_host and not self.is_same_host(url):
            raise HostChangedError(self, url, retries)

        # Ensure that the URL we're connecting to is properly encoded
        if url.startswith("/"):
            url = to_str(_encode_target(url))
        else:
            url = to_str(parsed_url.url)

        conn = None

        # Track whether `conn` needs to be released before
        # returning/raising/recursing. Update this variable if necessary, and
        # leave `release_conn` constant throughout the function. That way, if
        # the function recurses, the original value of `release_conn` will be
        # passed down into the recursive call, and its value will be respected.
        #
        # See issue #651 [1] for details.
        #
        # [1] <https://github.com/urllib3/urllib3/issues/651>
        release_this_conn = release_conn

        http_tunnel_required = connection_requires_http_tunnel(
            self.proxy, self.proxy_config, destination_scheme
        )

        # Merge the proxy headers. Only done when not using HTTP CONNECT. We
        # have to copy the headers dict so we can safely change it without those
        # changes being reflected in anyone else's copy.
        if not http_tunnel_required:
            headers = headers.copy()  # type: ignore[attr-defined]
            headers.update(self.proxy_headers)  # type: ignore[union-attr]

        # Must keep the exception bound to a separate variable or else Python 3
        # complains about UnboundLocalError.
        err = None

        # Keep track of whether we cleanly exited the except block. This
        # ensures we do proper cleanup in finally.
        clean_exit = False

        # Rewind body position, if needed. Record current position
        # for future rewinds in the event of a redirect/retry.
        body_pos = set_file_position(body, body_pos)

        try:
            # Request a connection from the queue.
            timeout_obj = self._get_timeout(timeout)
            conn = self._get_conn(timeout=pool_timeout)

            conn.timeout = timeout_obj.connect_timeout  # type: ignore[assignment]

            # Is this a closed/new connection that requires CONNECT tunnelling?
            if self.proxy is not None and http_tunnel_required and conn.is_closed:
                try:
                    self._prepare_proxy(conn)
                except (BaseSSLError, OSError, SocketTimeout) as e:
                    self._raise_timeout(
                        err=e, url=self.proxy.url, timeout_value=conn.timeout
                    )
                    raise

            # If we're going to release the connection in ``finally:``, then
            # the response doesn't need to know about the connection. Otherwise
            # it will also try to release it and we'll have a double-release
            # mess.
            response_conn = conn if not release_conn else None

            # Make the request on the HTTPConnection object
>           response = self._make_request(
                conn,
                method,
                url,
                timeout=timeout_obj,
                body=body,
                headers=headers,
                chunked=chunked,
                retries=retries,
                response_conn=response_conn,
                preload_content=preload_content,
                decode_content=decode_content,
                **response_kw,
            )

.venv/lib/python3.11/site-packages/urllib3/connectionpool.py:789:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x10fe47290>, conn = <urllib3.connection.HTTPSConnection object at 0x10fe44590>, method = 'GET'
url = '/api/model_registry/v1alpha3/serving_environments/0/inference_services?name=entity-name&externalId=10&pageSize=100&orderBy=ID&sortOrder=DESC', body = None
headers = {'User-Agent': 'schemathesis/3.38.9', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'X-Schemathesis-TestCaseId': 'BEwkUo'}
retries = Retry(total=0, connect=None, read=False, redirect=None, status=None), timeout = Timeout(connect=10.0, read=10.0, total=None), chunked = False, response_conn = <urllib3.connection.HTTPSConnection object at 0x10fe44590>
preload_content = False, decode_content = False, enforce_content_length = True

    def _make_request(
        self,
        conn: BaseHTTPConnection,
        method: str,
        url: str,
        body: _TYPE_BODY | None = None,
        headers: typing.Mapping[str, str] | None = None,
        retries: Retry | None = None,
        timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT,
        chunked: bool = False,
        response_conn: BaseHTTPConnection | None = None,
        preload_content: bool = True,
        decode_content: bool = True,
        enforce_content_length: bool = True,
    ) -> BaseHTTPResponse:
        """
        Perform a request on a given urllib connection object taken from our
        pool.

        :param conn:
            a connection from one of our connection pools

        :param method:
            HTTP request method (such as GET, POST, PUT, etc.)

        :param url:
            The URL to perform the request on.

        :param body:
            Data to send in the request body, either :class:`str`, :class:`bytes`,
            an iterable of :class:`str`/:class:`bytes`, or a file-like object.

        :param headers:
            Dictionary of custom headers to send, such as User-Agent,
            If-None-Match, etc. If None, pool headers are used. If provided,
            these headers completely replace any pool-specific headers.

        :param retries:
            Configure the number of retries to allow before raising a
            :class:`~urllib3.exceptions.MaxRetryError` exception.

            Pass ``None`` to retry until you receive a response. Pass a
            :class:`~urllib3.util.retry.Retry` object for fine-grained control
            over different types of retries.
            Pass an integer number to retry connection errors that many times,
            but no other types of errors. Pass zero to never retry.

            If ``False``, then retries are disabled and any exception is raised
            immediately. Also, instead of raising a MaxRetryError on redirects,
            the redirect response will be returned.

        :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int.

        :param timeout:
            If specified, overrides the default timeout for this one
            request. It may be a float (in seconds) or an instance of
            :class:`urllib3.util.Timeout`.

        :param chunked:
            If True, urllib3 will send the body using chunked transfer
            encoding. Otherwise, urllib3 will send the body using the standard
            content-length form. Defaults to False.

        :param response_conn:
            Set this to ``None`` if you will handle releasing the connection or
            set the connection to have the response release it.

        :param preload_content:
          If True, the response's body will be preloaded during construction.

        :param decode_content:
            If True, will attempt to decode the body based on the
            'content-encoding' header.

        :param enforce_content_length:
            Enforce content length checking. Body returned by server must match
            value of Content-Length header, if present. Otherwise, raise error.
        """
        self.num_requests += 1

        timeout_obj = self._get_timeout(timeout)
        timeout_obj.start_connect()
        conn.timeout = Timeout.resolve_default_timeout(timeout_obj.connect_timeout)

        try:
            # Trigger any extra validation we need to do.
            try:
                self._validate_conn(conn)
            except (SocketTimeout, BaseSSLError) as e:
                self._raise_timeout(err=e, url=url, timeout_value=conn.timeout)
                raise

        # _validate_conn() starts the connection to an HTTPS proxy
        # so we need to wrap errors with 'ProxyError' here too.
        except (
            OSError,
            NewConnectionError,
            TimeoutError,
            BaseSSLError,
            CertificateError,
            SSLError,
        ) as e:
            new_e: Exception = e
            if isinstance(e, (BaseSSLError, CertificateError)):
                new_e = SSLError(e)
            # If the connection didn't successfully connect to it's proxy
            # then there
            if isinstance(
                new_e, (OSError, NewConnectionError, TimeoutError, SSLError)
            ) and (conn and conn.proxy and not conn.has_connected_to_proxy):
                new_e = _wrap_proxy_error(new_e, conn.proxy.scheme)
>           raise new_e
E           urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)

.venv/lib/python3.11/site-packages/urllib3/connectionpool.py:490: SSLError

The above exception was the direct cause of the following exception:

self = <requests.adapters.HTTPAdapter object at 0x10f494410>, request = <PreparedRequest [GET]>, stream = False, timeout = Timeout(connect=10.0, read=10.0, total=None), verify = True, cert = None, proxies = OrderedDict()

    def send(
        self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None
    ):
        """Sends PreparedRequest object. Returns Response object.

        :param request: The :class:`PreparedRequest <PreparedRequest>` being sent.
        :param stream: (optional) Whether to stream the request content.
        :param timeout: (optional) How long to wait for the server to send
            data before giving up, as a float, or a :ref:`(connect timeout,
            read timeout) <timeouts>` tuple.
        :type timeout: float or tuple or urllib3 Timeout object
        :param verify: (optional) Either a boolean, in which case it controls whether
            we verify the server's TLS certificate, or a string, in which case it
            must be a path to a CA bundle to use
        :param cert: (optional) Any user-provided SSL certificate to be trusted.
        :param proxies: (optional) The proxies dictionary to apply to the request.
        :rtype: requests.Response
        """

        try:
            conn = self.get_connection_with_tls_context(
                request, verify, proxies=proxies, cert=cert
            )
        except LocationValueError as e:
            raise InvalidURL(e, request=request)

        self.cert_verify(conn, request.url, verify, cert)
        url = self.request_url(request, proxies)
        self.add_headers(
            request,
            stream=stream,
            timeout=timeout,
            verify=verify,
            cert=cert,
            proxies=proxies,
        )

        chunked = not (request.body is None or "Content-Length" in request.headers)

        if isinstance(timeout, tuple):
            try:
                connect, read = timeout
                timeout = TimeoutSauce(connect=connect, read=read)
            except ValueError:
                raise ValueError(
                    f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, "
                    f"or a single float to set both timeouts to the same value."
                )
        elif isinstance(timeout, TimeoutSauce):
            pass
        else:
            timeout = TimeoutSauce(connect=timeout, read=timeout)

        try:
>           resp = conn.urlopen(
                method=request.method,
                url=url,
                body=request.body,
                headers=request.headers,
                redirect=False,
                assert_same_host=False,
                preload_content=False,
                decode_content=False,
                retries=self.max_retries,
                timeout=timeout,
                chunked=chunked,
            )

.venv/lib/python3.11/site-packages/requests/adapters.py:667:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.venv/lib/python3.11/site-packages/urllib3/connectionpool.py:843: in urlopen
    retries = retries.increment(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = Retry(total=0, connect=None, read=False, redirect=None, status=None), method = 'GET', url = '/api/model_registry/v1alpha3/serving_environments/0/inference_services?name=entity-name&externalId=10&pageSize=100&orderBy=ID&sortOrder=DESC'
response = None, error = SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)'))
_pool = <urllib3.connectionpool.HTTPSConnectionPool object at 0x10fe47290>, _stacktrace = <traceback object at 0x11a243e00>

    def increment(
        self,
        method: str | None = None,
        url: str | None = None,
        response: BaseHTTPResponse | None = None,
        error: Exception | None = None,
        _pool: ConnectionPool | None = None,
        _stacktrace: TracebackType | None = None,
    ) -> Self:
        """Return a new Retry object with incremented retry counters.

        :param response: A response object, or None, if the server did not
            return a response.
        :type response: :class:`~urllib3.response.BaseHTTPResponse`
        :param Exception error: An error encountered during the request, or
            None if the response was received successfully.

        :return: A new ``Retry`` object.
        """
        if self.total is False and error:
            # Disabled, indicate to re-raise the error.
            raise reraise(type(error), error, _stacktrace)

        total = self.total
        if total is not None:
            total -= 1

        connect = self.connect
        read = self.read
        redirect = self.redirect
        status_count = self.status
        other = self.other
        cause = "unknown"
        status = None
        redirect_location = None

        if error and self._is_connection_error(error):
            # Connect retry?
            if connect is False:
                raise reraise(type(error), error, _stacktrace)
            elif connect is not None:
                connect -= 1

        elif error and self._is_read_error(error):
            # Read retry?
            if read is False or method is None or not self._is_method_retryable(method):
                raise reraise(type(error), error, _stacktrace)
            elif read is not None:
                read -= 1

        elif error:
            # Other retry?
            if other is not None:
                other -= 1

        elif response and response.get_redirect_location():
            # Redirect retry?
            if redirect is not None:
                redirect -= 1
            cause = "too many redirects"
            response_redirect_location = response.get_redirect_location()
            if response_redirect_location:
                redirect_location = response_redirect_location
            status = response.status

        else:
            # Incrementing because of a server error like a 500 in
            # status_forcelist and the given method is in the allowed_methods
            cause = ResponseError.GENERIC_ERROR
            if response and response.status:
                if status_count is not None:
                    status_count -= 1
                cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status)
                status = response.status

        history = self.history + (
            RequestHistory(method, url, error, status, redirect_location),
        )

        new_retry = self.new(
            total=total,
            connect=connect,
            read=read,
            redirect=redirect,
            status=status_count,
            other=other,
            history=history,
        )

        if new_retry.is_exhausted():
            reason = error or ResponseError(cause)
>           raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
E           urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='<SNIP>', port=443): Max retries exceeded with url: /api/model_registry/v1alpha3/serving_environments/0/inference_services?name=entity-name&externalId=10&pageSize=100&orderBy=ID&sortOrder=DESC (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)')))

.venv/lib/python3.11/site-packages/urllib3/util/retry.py:519: MaxRetryError

During handling of the above exception, another exception occurred:

admin_client_token = '<SNIP>'

    @wraps(test)
>   def test_function(*args: Any, **kwargs: Any) -> Any:

.venv/lib/python3.11/site-packages/schemathesis/_hypothesis.py:80:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.venv/lib/python3.11/site-packages/hypothesis/core.py:1431: in _raise_to_user
    raise the_error_hypothesis_found
tests/model_registry/test_rest_api.py:13: in test_mr_api
    response = case.call_and_validate(verify=False)
.venv/lib/python3.11/site-packages/schemathesis/specs/openapi/checks.py:407: in ignored_auth
    new_response = case.operation.schema.transport.send(case)
.venv/lib/python3.11/site-packages/schemathesis/transports/__init__.py:169: in send
    response = session.request(**data)  # type: ignore
.venv/lib/python3.11/site-packages/requests/sessions.py:589: in request
    resp = self.send(prep, **send_kwargs)
.venv/lib/python3.11/site-packages/requests/sessions.py:703: in send
    r = adapter.send(request, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <requests.adapters.HTTPAdapter object at 0x10f494410>, request = <PreparedRequest [GET]>, stream = False, timeout = Timeout(connect=10.0, read=10.0, total=None), verify = True, cert = None, proxies = OrderedDict()

    def send(
        self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None
    ):
        """Sends PreparedRequest object. Returns Response object.

        :param request: The :class:`PreparedRequest <PreparedRequest>` being sent.
        :param stream: (optional) Whether to stream the request content.
        :param timeout: (optional) How long to wait for the server to send
            data before giving up, as a float, or a :ref:`(connect timeout,
            read timeout) <timeouts>` tuple.
        :type timeout: float or tuple or urllib3 Timeout object
        :param verify: (optional) Either a boolean, in which case it controls whether
            we verify the server's TLS certificate, or a string, in which case it
            must be a path to a CA bundle to use
        :param cert: (optional) Any user-provided SSL certificate to be trusted.
        :param proxies: (optional) The proxies dictionary to apply to the request.
        :rtype: requests.Response
        """

        try:
            conn = self.get_connection_with_tls_context(
                request, verify, proxies=proxies, cert=cert
            )
        except LocationValueError as e:
            raise InvalidURL(e, request=request)

        self.cert_verify(conn, request.url, verify, cert)
        url = self.request_url(request, proxies)
        self.add_headers(
            request,
            stream=stream,
            timeout=timeout,
            verify=verify,
            cert=cert,
            proxies=proxies,
        )

        chunked = not (request.body is None or "Content-Length" in request.headers)

        if isinstance(timeout, tuple):
            try:
                connect, read = timeout
                timeout = TimeoutSauce(connect=connect, read=read)
            except ValueError:
                raise ValueError(
                    f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, "
                    f"or a single float to set both timeouts to the same value."
                )
        elif isinstance(timeout, TimeoutSauce):
            pass
        else:
            timeout = TimeoutSauce(connect=timeout, read=timeout)

        try:
            resp = conn.urlopen(
                method=request.method,
                url=url,
                body=request.body,
                headers=request.headers,
                redirect=False,
                assert_same_host=False,
                preload_content=False,
                decode_content=False,
                retries=self.max_retries,
                timeout=timeout,
                chunked=chunked,
            )

        except (ProtocolError, OSError) as err:
            raise ConnectionError(err, request=request)

        except MaxRetryError as e:
            if isinstance(e.reason, ConnectTimeoutError):
                # TODO: Remove this in 3.0.0: see #2811
                if not isinstance(e.reason, NewConnectionError):
                    raise ConnectTimeout(e, request=request)

            if isinstance(e.reason, ResponseError):
                raise RetryError(e, request=request)

            if isinstance(e.reason, _ProxyError):
                raise ProxyError(e, request=request)

            if isinstance(e.reason, _SSLError):
                # This branch is for urllib3 v1.22 and later.
>               raise SSLError(e, request=request)
E               requests.exceptions.SSLError: HTTPSConnectionPool(host='<SNIP>', port=443): Max retries exceeded with url: /api/model_registry/v1alpha3/serving_environments/0/inference_services?name=entity-name&externalId=10&pageSize=100&orderBy=ID&sortOrder=DESC (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)')))
E               Falsifying explicit example: test_mr_api(
E                   admin_client_token='<SNIP>',
E                   case=,
E               )

.venv/lib/python3.11/site-packages/requests/adapters.py:698: SSLError

Something else I notice that might be causing issues is that in some of these calls the url seems to be truncated to only be the API endpoint, rather than base_url+endpoint, e.g.:
self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x10fe47290>, method = 'GET', url = '/api/model_registry/v1alpha3/serving_environments/0/inference_services?name=entity-name&externalId=10&pageSize=100&orderBy=ID&sortOrder=DESC'
[...]
parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/api/model_registry/v1alpha3/[...]

Hi! Thanks for reporting!
Can you specify the full code snippet you have for Schemathesis tests?

The minimal code example would be
schema = schemathesis.from_pytest_fixture("generate_schema")

@schema.parametrize()
def test_mr_api(case, admin_client_token):
    case.headers["Authorization"] = f"Bearer {admin_client_token}"
    case.headers["Content-Type"] = "application/json"
    response = case.call_and_validate(verify=False)

With the generate_schema fixture being
@pytest.fixture(scope="class")
def generate_schema(model_registry_instance_rest_endpoint):
    schema = schemathesis.from_uri(uri=
        "https://raw.githubusercontent.com/kubeflow/model-registry/main/api/openapi/model-registry.yaml",
        base_url=f"https://{model_registry_instance_rest_endpoint}/"
    )
    return schema

After some debugging, I think the bug comes from https://github.com/schemathesis/schemathesis/blob/eef6f36c70a8bc0ba30a45aa09de76985cd78c39/src/schemathesis/specs/openapi/checks.py#L407
There's no kwargs defined when the send call is made, and verify thus defaults to True

To follow up, I explicitly excluded the ignored_auth checks from my test and indeed the SSL validation error is not present anymore

Thank you so much for so many details! Now I realize that the bug is in the ignored_auth check where the case & response are modified in-place. I am going to fix it soon

Since I have your attention, going OT from the issue, but any idea why I might be getting the following error?
E   hypothesis.errors.FailedHealthCheck: It looks like your strategy is filtering out a lot of data. Health check found 50 filtered examples but only 0 good ones. This will make your tests much slower, and also will probably distort the data generation quite a lot. You should adapt your strategy to filter less. This can also be caused by a low max_leaves parameter in recursive() calls
E   See https://hypothesis.readthedocs.io/en/latest/healthchecks.html for more information about this. If you want to disable just this health check, add HealthCheck.filter_too_much to the suppress_health_check settings for this test.

From the docs I see:
Check for when the test is filtering out too many examples, either through use of assume() or filter(), or occasionally for Hypothesis internal reasons.

I assume in this specific case it is popping up [...] for Hypothesis internal reasons., but I'm not really sure what that means 😄

That essentially boils down to the schema complexity and there is not that much we can do about it right now. In many cases, we can't get the required data sample by construction so we fall back on generating something that MAY be of the shape we need and then calling filter to reject instances that are not matching the expectations. Hence the error message from Hypothesis. In Schemathesis CLI there are some specific error messages for such situations, but from the user perspective there are two options:

Disabling this health check
Simplifying the schema

The latter is not obvious, specifically for cases with references (i.e. $ref). This will change in the future once I finish refactoring for Schemathesis V4 and get into the guts of hypothesis-jsonschema to make it more performant and avoid pathological scenarios with  $ref;.

repo: schemathesis/schemathesis


text:
🛑 findabooktoread.com is down

In 914778f, findabooktoread.com (https://findabooktoread.com/) was down:

HTTP code: 502
Response time: 89 ms

Resolved: findabooktoread.com is back up in d9a7a0d after 7 minutes.

repo: schollz/upptime