net: golang.org/x/crypto/ssh panic error

What version of Go are you using (go version)?

> go version
go version go1.16.4 linux/amd64

Does this issue reproduce with the latest release?
yes, currently I use the latest release
What operating system and processor architecture are you using (go env)?
go env Output
> go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/xxx/.cache/go-build"
GOENV="/home/xxx/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/xxx/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/xxx/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/snap/go/7696"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/snap/go/7696/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.16.4"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build759619279=/tmp/go-build -gno-record-gcc-switches"

What did you do?
I create 3 project
the main project is the starting point of the program with a cli interface. The main purpose of this project is to parse command line args, load the plugin, and run a function inside the plugin by passing all the parsed args.
the second project is just a lib that wraps the ssh client and provide a easy way to run ssh commands.
the third project is the plugin that use the ssh lib.
it just call the GetSshClient function defined in the above lib and run some commands by using the SshRunCommand function defined in the same lib.
it has two functions:

doSsh : the entry-point and it spawn a gorutine for each passed hostname
SshWorker: the function of the gorutine that create the ssh client and exec some ssh commands.

all three projects are located in a different git repository
the main cli and the lib ones have their own go.mod file.
the lib is loaded the main cli project with the go get command
the plugin project is loaded in the main cli project as a git submodule and it doesn't have a go.mod file.
I create a plugin_test.go file to test the plugin "entry-point" function and all works great!
but when i build with the command go build  -buildmode=plugin -o build/ssh.so the plugin and use it with the cli compiled command I get the strange error reported below (I run it by passing only one hostname in the cli command).
the code below rappresent the functions defined in the lib
func GetSshClient(host string, user string, key string) (*ssh.Client, error) {
	sshConf, err := getSshConfig(user, key)
	if err != nil {
		return nil, err
	}

	connection, err := ssh.Dial("tcp", host, sshConf)
	if err != nil {
		return nil, err
	}

	return connection, nil
}

//create a ssh client configuration with kay auth
func getSshConfig(user string, keyfile string) (*ssh.ClientConfig, error) {
	buffer, err := ioutil.ReadFile(keyfile)
	if err != nil {
		return nil, err
	}

	key, err := ssh.ParsePrivateKey(buffer)
	if err != nil {
		return nil, err
	}

	sshConfig := &ssh.ClientConfig{
		User:            user,
		HostKeyCallback: ssh.InsecureIgnoreHostKey(),
		Auth: []ssh.AuthMethod{
			ssh.PublicKeys(key),
		},
	}
	return sshConfig, nil
}

//run command on provided client and return the stdout
func SshRunCommand(client *ssh.Client, command string) (string, error) {
	session, err := client.NewSession()
	if err != nil {
		return "", err
	}
	defer session.Close()

	out, err := session.Output(command)
	if err != nil {
		return "", err
	}
	outs := string(out)
	return outs, nil
}

What did you expect to see?
no error
What did you see instead?
here the mentioned error
panic: interface conversion: *net.TCPConn is not io.Closer: missing method Close

goroutine 21 [running]:
golang.org/x/crypto/ssh.newTransport(0x7f7e11701e58, 0xc0001db410, 0x7a93c0, 0xc0001145d0, 0xc0001db401, 0xc00001f4c0)
       xxx/vendor/golang.org/x/crypto/ssh/transport.go:210 +0x2a8
golang.org/x/crypto/ssh.(*connection).clientHandshake(0xc000074c80, 0x7ffeb5f890c8, 0xc, 0xc000206410, 0x0, 0x0)
        xxx/vendor/golang.org/x/crypto/ssh/client.go:106 +0x1a5
golang.org/x/crypto/ssh.NewClientConn(0x7f7e1149b588, 0xc0001db410, 0x7ffeb5f890c8, 0xc, 0xc0000be000, 0x7f7e1149b588, 0xc0001db410, 0x0, 0x0, 0x7f7e1064e1c0, ...)
       xxxl/vendor/golang.org/x/crypto/ssh/client.go:83 +0x126
golang.org/x/crypto/ssh.Dial(0x7f7e1057e1c8, 0x3, 0x7ffeb5f890c8, 0xc, 0xc0000be000, 0x0, 0x0, 0x0)
       xxx/vendor/golang.org/x/crypto/ssh/client.go:177 +0xb8
xxx/lib.GetSshClient(0x7ffeb5f890c8, 0xc, 0xc000021c58, 0x8, 0xc00015ed80, 0x1a, 0x24, 0x0, 0x0)
        xxx/vendor/xxx/lib/ssh.go:20 +0x9c
xxx/plugin/juju.(*SshPkg).SshWorker(0xc00019cfa0, 0x7ffeb5f890c8, 0xc, 0xc0001f00c0)
       xxx/plugin/ssh/ssh_exec.go:48 +0x359
created by xxx/plugin/ssh.(*SshPkg).doSsh
       xxx/plugin/ssh/ssh_exec.go:100 +0xe5

Can you provide a minimal reproducer for your setup?

This is a bug in the plugin package, it is unrelated to the ssh package. Somehow the type definition for *net.TCPConn has lost its Close method or is inconsistent between the plugin and the main program. I’d suggest bisecting or at least building with earlier versions of Go to try to narrow down the problem.
/cc @thanm @cherrymui

hi all,
I've fix it by removing all golang reference on the system and reinstall it again

yeah, that could explain it. the plugin package requires that the compiler that built the main package and builds each plugin must match exactly.
I’m going to close this as solved for the moment. please comment if the issue occurs again.


Adds RabbitmqBrokerConfig type to be used for configuring a Broker/Trigger

Changes

🎁  Adds a RabbitmqBrokerConfig resource for configuring a Broker/Trigger setup

/kind enhancement
/hold for tests

/hold cancel
The codecoverage is expected to decline from this as it's not being used yet

/retest


Need Style and Conventions Doc

We should have an md for committing. Would have things like:

PRs must be squashed before commit
Must be go fmt'd
Provide a description, unit, and type for all new metrics. Descriptions should not be in the Add line, but in another data structure or a constant (See keepalive collectors for the constants, and the memcached for a datastructure version.
Run esc when changing any html or js files
JS needs to be compiled from typescript.
Everything gets a code review before going into master

The reason for this is not waste anyone's time. Without this we waste our own time by having to keep telling people about these things, and we waste the time of the commiter by making them jump through unknown hoops.

note: i have the habit of running find . -name '*.go' | xargs gofmt -w regularly, and often it updates web/static.go like so:
diff --git a/cmd/bosun/web/static.go b/cmd/bosun/web/static.go
index da21097..47f6262 100644
--- a/cmd/bosun/web/static.go
+++ b/cmd/bosun/web/static.go
@@ -1802,8 +1802,8 @@ var _esc_data = map[string]*_esc_file{
        },

        "/js/.editorconfig": {
-               local: "web/static/js/.editorconfig",
-               size:  55,
+               local:      "web/static/js/.editorconfig",
+               size:       55,
                compressed: "\x1f\x8b\b\x00\x00\tn\x88\x00\xff\x8a֊\xe5\xca\xccKI\xcd+\x89/.\xa9\xccIU\xb0U(IL\xe2*)\xca̍/)J\xcc\xcc\xc9\xccK\x8f
        },

this is cumbersome. i presume esc generates this go file, would be nice if it did so in a way that go fmt agrees with.

@mjibson 's party tool must be used for adding 3rd party dependencies, details at http://godoc.org/github.com/mjibson/party . That also means all external source files are put into project_root/_third_party directory and included into PR.

@Dieterbe that's a bug in esc which should be fixed

@Dieterbe esc has been fixed. go get -u github.com/mjibson/esc for the new one.

I've made a PR for this: https://github.com/bosun-monitor/bosun/pull/828


Final Milestone: One Page App

In this checkpoint we used CSS classes, added and removed via javascript event listeners, to show and hide different sections of the page. We also added a nabber, a contact section, a footer and used an api to display the date.

Hi @CRClothier ,
:thumbsup: This is good to make it this far, your project is really nice, congratulations on the good work you have done so far.
Keep on coding, good job so far! :clap:
There are some issues that you still need to work on to go to the next project but you are almost there!

Required Changes  :recycle:

[ ] You have  done a great job working on the project, only one little issue is remaining, the MIT license link is broken, please fix that and submit for a re-review.

Check the comments under the review.

Cheers and Happy coding! :clap: :clap: :clap:
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, do not open a new Pull Request for re-reviews. You should use the same Pull Request submitted for the first review, either valid or invalid unless it is requested otherwise.

As described in the Code reviews limits policy you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.


fix(tarball): fix git error handling

Fix error handling, which fails if a git command errors as the error
code is a number in that case.
See https://npm.community/t/5542

This was fixed by #170

:/

Sorry, I was going top-to-bottom and merged that one first 🙈

Well, it seems to be older, I probably just didn't check I guess?


Enhancement: Implement real Pydantic v2 support

Summary

As raised by @lucidfrontier45 in #48, we need Pydantic v2 support in pydantic-argparse.
We now have pseudo-Pydantic v2 support, as the pydantic dependency is at least unpinned.

See: #55
See: v0.9.0

However this is just a shim to the Pydantic v1 API.
We should implement real Pydantic v2 support.
I think maintaining both Pydantic v1 and v2 compatibility is probably unreasonable (TBD).
More information to follow...

Notes

Looks like our forks may have done some of the heavy-lifting

See: https://github.com/cody-mar10/pydantic-argparse
See: https://github.com/alejoe91/pydantic-argparse/tree/pydantic2

Dear @SupImDos,
is there any possible update soon?

Dear @SupImDos, is there any possible update soon?

Unfortunately I've been very busy lately, so its hard to put a timeline on things at the moment. I would say its definitely still on my radar, but I would be happy to accept PRs to get things moving. Sorry!

Thank you for your answer. No pressure. If I find some time, I'll try to put together some solutions from the other forks.

 In that case, maybe this package should pivot to just supporting Pydantic v1 and eventually be deprecated / archived 🎉.

 In that case, maybe this package should pivot to just supporting Pydantic v1 and eventually be deprecated / archived 🎉.

"might", I haven't compared the functionalities

I forked to pydantic2-argparse: https://pypi.org/project/pydantic2-argparse/


Problem on bazel building target with GPU support(Ubuntu16.04)

bazel build --config=opt --config=cuda tensorflow/tools/pip_package:build_pi
p_package:
DEBUG: /home/ubuntu/.cache/bazel/_bazel_ubuntu/712f0e98e13675fc83790945ec267f95/external/bazel_tools/tools/cpp/lib_cc_configure.bzl:115:5:
Auto-Configuration Warning: 'TMP' environment variable is not set, using 'C:\Windows\Temp' as default
ERROR: cc_toolchain_suite '@local_config_cuda//crosstool:toolchain' does not contain a toolchain for CPU 'k8', you may want to add an entry for 'local|compiler' into toolchains and toolchain_identifier 'local_linux' into the corresponding cc_toolchain rule (see --incompatible_disable_cc_toolchain_label_from_crosstool_proto).
INFO: Elapsed time: 0.181s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (0 packages loaded)

I had this problem with bazel-0.18.0. Try 0.19.0 instead.

@iweigele Thank you, I try bazel-0.19.2,this problem is sloved but new problem arise...
ERROR: Analysis of target '//tensorflow/tools/pip_package:build_pip_package' failed; build aborted: no such package '@icu//': java.io.IOException: thread interrupted
Do u know how to deal?

No, sorry. I haven't seen that one.  I will post back if I come across something helpful though.

Can you please provide following information? Thanks!
System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04):
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device:
TensorFlow installed from (source or binary):
TensorFlow version:
Python version:
Installed using virtualenv? pip? conda?:
Bazel version (if compiling from source):
GCC/Compiler version (if compiling from source):
CUDA/cuDNN version:
GPU model and memory:

Describe the problem
Provide the exact sequence of commands / steps that you executed before running into the problem

@ymodak
System information：
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Ubuntu 16.04
TensorFlow installed from (source or binary): source
TensorFlow version:1.12.0
Python version:3.6.5
Installed using virtualenv? pip? conda?: pip
Bazel version (if compiling from source):19.2
GCC/Compiler version (if compiling from source):5.4.0
CUDA/cuDNN version: cuda10.0/cuDNN v7.4.1
GPU model and memory: 12G per GPU


[question] Rationale behind $router.navigate

I was wondering what the reasons are behind using a URL parameter in $router.navigate instead of a component name ?
To replace $location.path('/register'), I would have expect to write (maybe wrongly) :
$router.navigate('register');

instead of
$router.navigate('/register');

I was a bit surprised, as ng-link is working with component names.
To avoid remembering the URL, it's possible to do :
var url = $router.generate('register');
$router.navigate(url);

But that feels overkill... Am I missing something ? Or what are the reasons to use a url instead of a component name ?

I agree, also using the component names would make it work like $state.go in ui-router as well.

👍

+1 expect answers as well.

+1


tries to run livestreamer from wrong location

the instructions in the readme say to install livestreamer in the vlc instalation directory, which for me is C:\Program Files (x86)\VideoLAN\VLC
The extention then tries to load it from C:\Users(user)\AppData\Roaming\vlc\lua\extensions\userdata\vlclive\livestreamer
using VLC 2.1.5 on Windows 8.1 x64

Hello :)
I did some changes some time ago, but due to no feedback I did not update the readme etc.
I currently don't have much time but I'll try to update the readme and give some more instructions on how it works.
Thanks for your feedback and stay tuned :+1:

I changed it to only accept livestreamer if you set it as a path variable under windows and other OSs


Skip Seurat conversion of datasets that will cause it to fail

Context
See conversations on ux and ingestion.
Also - Seurat Failure Investigations.
Note: This portal change should be implemented after cellxgene-schema must warn when a Seurat conversion cannot be performed#162

@brianraymor @pablo-gar We'll be skipping seurat conversion for any dataset that has at least one matrix in the anndata object that would fail seurat conversion. Based on discussion in this issue we will be considering both X and raw.X; currently I am also testing layers for convertibility based on the same dimensions criterion. If any of these fail (sparse nonzero size or dense size exceeds 2^31 - 1), then we skip seurat conversion. cc @metakuni

Reviewed further with @pablo-gar - looking at the anndata2seurat function in the scieasy code, it appears that it converts only X and raw.X, which suggests that testing layers for failure cases is not required.
https://github.com/chanzuckerberg/single-cell-data-portal/blob/44b98b49bd3a38bf19d[…]75e14d2b4e0586/backend/corpora/dataset_processing/make_seurat.R
https://github.com/cellgeni/sceasy/blob/f8f0628a280e0880ea94b00100b463e1f6ba1994/R/functions.R#L187

Moved this into Ready for Prod since the fix will be deployed to prod today. The outstanding PR which installs cellxgene-schema from PyPI instead of Test PyPI will be merged after today's prod deployment. (This is due to our current lack of a hot fix workflow)

Deployed to prod yesterday.


Evaluate Succinct to use Spark as a document store

Succinct http://succinct.cs.berkeley.edu/wp/wordpress/
[Data-source] -> Spark Streaming -> {RDD} Document store at Spark

Any progress on this Milindu, expecting a wiki page of your findings

Hi @SamTube405, I finished my analysis and pushed the [wiki page] to the repo.(https://github.com/scorelab/OpenADS/wiki/Succinct)

Hi @agentmilindu, This project also leverages the succinct data-structure [1] to compress RDDs, so the compression + indexing as a package was no more a surprise tool.
Also since we have streaming scenario Berkeley succinct pre-processing might take 0.4 ms to compress 1KB of data per core, so no worries there. Can you extend the pcap code to have succinct data-store, and provide on-the fly insights (counts, avg), better to have performance metrics
REF:
[1] https://en.wikipedia.org/wiki/Succinct_data_structure

@SamTube405 Yeah, let's extend the pcap code to work with succinct data-store! :)

archive


Update GUI to disable button until box checked, grammar fixes

I updated the Contact Registration window to disable the Register Contact button until the 'agree' box has been checked. Feels more user friendly this way. I also included some minor grammar/spelling fixes.

Thanks, this is much appreciated :)


Make grpc tests runnable in parallel and improve logging

Please provide a description of this PR:

@howardjohn: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
86217520f23f6fd1a6d576635e7009944147e9e6
link
true
/test lint_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
86217520f23f6fd1a6d576635e7009944147e9e6
link
true
/test lint_istio

integ-telemetry-istiodremote_istio
86217520f23f6fd1a6d576635e7009944147e9e6
link
true
/test integ-telemetry-istiodremote_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
86217520f23f6fd1a6d576635e7009944147e9e6
link
true
/test lint_istio

integ-telemetry-istiodremote_istio
86217520f23f6fd1a6d576635e7009944147e9e6
link
true
/test integ-telemetry-istiodremote_istio

unit-tests_istio
86217520f23f6fd1a6d576635e7009944147e9e6
link
true
/test unit-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
86217520f23f6fd1a6d576635e7009944147e9e6
link
true
/test lint_istio

integ-telemetry-istiodremote_istio
86217520f23f6fd1a6d576635e7009944147e9e6
link
true
/test integ-telemetry-istiodremote_istio

unit-tests_istio
86217520f23f6fd1a6d576635e7009944147e9e6
link
true
/test unit-tests_istio

integ-pilot-istiodremote_istio
86217520f23f6fd1a6d576635e7009944147e9e6
link
true
/test integ-pilot-istiodremote_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-telemetry-istiodremote_istio
86217520f23f6fd1a6d576635e7009944147e9e6
link
true
/test integ-telemetry-istiodremote_istio

unit-tests_istio
86217520f23f6fd1a6d576635e7009944147e9e6
link
true
/test unit-tests_istio

integ-pilot-istiodremote_istio
86217520f23f6fd1a6d576635e7009944147e9e6
link
true
/test integ-pilot-istiodremote_istio

lint_istio
a66a78fc5102597fef77bd1f6c2181472e1997c2
link
true
/test lint_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


Added »concrete droupout« Wrapper

- What I did
Implemented the Concrete Dropout paper w.r.t. yaringal's implementation (determines the optimal dropout rate on its own).
- How I did it
Used a keras wrapper. Modifying the keras Dense/Conv2d-Layers itself would result in more elegant code, but this version should work as well.
- How you can verify it
With the attached test file and with the following example call:
from __future__ import print_function

import keras
from keras.datasets import mnist
from keras.callbacks import Callback
from keras.models import Sequential, Model
from keras.layers import Dense, Dropout, Input
from keras.optimizers import RMSprop

import numpy as np

from cdropout import ConcreteDropout

class CD_Callback(Callback):
    def set_model(self, model):
        super(CD_Callback, self).set_model(model)
        self.probs = {}
        for layer in self.model.layers:
            if isinstance(layer, ConcreteDropout):
                self.probs[layer.name] = []
    def on_epoch_end(self, batch, logs=None):
        for layer in self.model.layers:
            if isinstance(layer, ConcreteDropout):
                self.probs[layer.name] += [np.squeeze(np.exp(layer.get_weights()[2]))]
                print('{} Propability for »Concrete Dropout«: {:.3f}' \
                    .format(layer.name, np.squeeze(np.exp(layer.get_weights()[2]))))

batch_size = 4096
num_classes = 10
epochs = 501

# the data, split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train = x_train.reshape(60000, 784)
x_test = x_test.reshape(10000, 784)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')

# convert class vectors to binary class matrices
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)

inp = Input(shape=(784,))
model = ConcreteDropout(Dense(512, activation='relu'),
                        len(x_train),
                        seed=42,
                        name='concrete_dropout_input')(inp)
model = ConcreteDropout(Dense(512, activation='relu'),
                        len(x_train),
                        seed=42,
                        name='concrete_dropout_hidden')(model)
model = ConcreteDropout(Dense(num_classes, activation='softmax'),
                        len(x_train),
                        seed=42,
                        name='concrete_dropout_output')(model)
model = Model(inp, model)

model.summary()
model.compile(loss='categorical_crossentropy',
              optimizer=RMSprop(),
              metrics=['accuracy'])
callback = CD_Callback()
history = model.fit(x_train, y_train,
                    batch_size=batch_size,
                    epochs=epochs,
                    verbose=1,
                    validation_data=(x_test, y_test),
                    callbacks = [ callback ])
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])

The dropout rate should converge to respecively 0.29, 0.33 and 0.82 for each layer in above example as visualized in the following plot:

One test finally fails due to keras issue. See #12305


Reproducibility

Retraining a model leads to different evaluation due to different random seed. For instance NER f1 score with BidLSTM-CRF can go from 90.22 to 91.07 (on eng.testb).

adding for Keras reproducibility, the classical:

import numpy as np
np.random.seed(1)

adding for tensorflow reproducibility:

from tensorflow import set_random_seed
set_random_seed(1)

(does it add a tensorflow backend dependency in Keras?)

test ...

make random seed optional

So we simply systematically averaging results over 10 training runs to get something stable.


Get Tests Building

Awesome work on Trussed and Solo Keys. 😄
I cloned the repo and found the tests wouldn't build. I've made changes to fix this in the most obvious way, and verified that the tests are still passing on my machine.

Thank you!


obinskit: init at 1.1.1

Motivation for this change
This is the configuration software for the enthusiast Anne Pro mechanical keyboard, used to update the firmware, change keyboard settings, clear Bluetooth connections from the device, set up backlighting colours, and so forth. I'm an owner of one and don't think I'm alone so I thought it'd be convenient to have this packaged. They have an official Github, but the software is proprietary to my knowledge (no license provided).
I've tested that the software works with my own Anne Pro II.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

@GrahamcOfBorg eval

I've removed libffmpeg.so and libnode.so because electron_3 already provides these.

@worldofpeace thanks for the CR, I should've taken care of the feedback now, and squashed.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-already-reviewed/2617/110


[Web] "Maximum call stack exceeded" with dev_build=yes on Quest browser

Tested versions
Reproducible on:

v4.3-beta2
37cf266b578864096bb7160c4f14fa8ac61fc38b or later

System information
Meta Quest 3, Meta Quest Browser, Emscripten 3.1.61
Issue description
Using dev_build=yes with a web build, Godot crashes with "Maximum call stack exceeded" right after start up.
When building without dev_build=yes, then everything works fine!
Via git bisect, I've discovered that 37cf266b578864096bb7160c4f14fa8ac61fc38b is the first revision to introduce the issue.
It's a relatively weird commit to cause the problem, because it's just changing the order that platform specific flags are applied. However, maybe dev_build=yes was supposed to override something that after that change it doesn't? I still need to experiment with that part.
Steps to reproduce

Checkout master
Build with scons platform=web target=template_debug dev_build=yes
Export a WebXR project
Open with Meta Quest Browser
After loading finishes, the game fails to start with "Maximum call stack exceeded"

Minimal reproduction project (MRP)
I've been testing with this project: https://gitlab.com/snopek-games/godot4-webxr-demo

Can you try if it works with this line not dependent on threads?
https://github.com/godotengine/godot/blob/04bf7d4cade645a5923cc80d87ac1c6109e2cdfe/platform/web/detect.py#L229

Using verbose=yes, I grabbed build commands (one compilation, one linkning) to see the flags before and after 37cf266b578864096bb7160c4f14fa8ac61fc38b.

The only difference appears to be -Os changing to -O0: so, switching from optimizing for size, to no optimizations.
If I change my build command to scons platform=web target=template_debug dev_build=yes optimize=size, then, sure enough, it works!
But I guess we probably actually want no optimizations with dev_build=yes, except that it unfortunately seems to lead to exceeding the maximum stack size on the Quest browser. :-/ I'm not sure what the right solution should be here?
@adamscott @Faless What do you think?

Fixed by https://github.com/godotengine/godot/pull/94107


nix-shell: ERROR: Repository not found<EMAIL_ADDRESS>

https://github.com/dfinity/sdk/blob/master/nix/default.nix#L5-L11
This comment does not explain where to obtain the common repo, and the one it provides as a fallback does not exist:
<EMAIL_ADDRESS>

dfinity-lab contains repositories that aren't open-sourced yet.

well that's retarded. i guess i'm not using this blockchain

Can this issue be reopened? It's still not possible to get nix-shell to work as described in the contributing guidelines.

i.e. https://github.com/dfinity/sdk/blob/d10f20b18790718a07af9dbc8c5a9833ccb2b83e/.github/CONTRIBUTING.adoc

@ggreif I’m wondering if I can stub out the common repo using the mechanism below.
https://github.com/dfinity/sdk/blob/b0a8cc3557dc218779756464c67875d47c227183/nix/default.nix

I'm working around this on macOS with nix-shell -p rustc cargo libiconv openssl_1_1 pkgconfig darwin.apple_sdk.frameworks.DiskArbitration darwin.apple_sdk.frameworks.Foundation for now.


fix: prod cronjob

:tada: This PR is included in version 0.34.2 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


feat: document resetting all collected messages in setUp

TestTransport use static properties, that are not resetted between tests event when Symfony Kernel is rebooted.

Hi @benito103e
these properties are reset between tests (or at least, they should be :sweat_smile:)
This behavior is tested here:
https://github.com/zenstruck/messenger-test/blob/1.x/tests/TransportsAreResetCorrectly/UsingTraitInteractsWithMessengerTest.php
Do your test does not shutdown the kernel between each test? (maybe KernelTestCase::tearDown() is overridden, and parent::tearDown() not called?)
If it does, this is a bug. Could you provide a reproducer? I've not encountered this bug in my projects, although I'm using a lot this library :thinking:

Hi @nikophil,
You're right, these properties are reset after a test that implements InteractsWithMessenger but not after a test that doesn't.
So if we have this scenario :

Test1 add messages on transport but doesn't care about messenger assertions so doesn't implement InteractsWithMessenger
messages remains in transports
Test2 implements InteractsWithMessenger and should reset collected messages before tests.

Maybe we should add a #[Before] attribute to InteractsWithMessenger::_resetMessengerTransports

ok you're right, that's a bug :sweat_smile:
Maybe a #[BeforeClass] would do the job?

I know we had complex problems around this in the past.
@kbond any clue why we don't call these methods before each test?
        TestTransport::resetAll();
        TestBus::resetAll();

Ahah I can easily push the "before" modification but it's going to be a bit tricky for the associated automatic test...

@nikophil I agree, this would be equivalent to calling _resetMessengerTransports inside _initializeTestTransports

I think what would be ideal is having the test transport behave exactly like the InMemoryTransport (messages reset during kernel reboots) unless TestTransport::initialize() is called.
Maybe not exactly like in memory - we'd probably want to take into account the default transport config. (ie test://?intercept=false would process the messages immediately still)

@kbond InMemoryTransport uses object properties. While TestTransport uses static class properties.
So InMemoryTransport is automatically reset on each kernel reboot like all services, objects uses by kernel.
But class static properties require a specific call to be cleared.

Yep, my thought was to mimic the InMemoryTransport behaviour when using in a test that doesn't have InteractsWithMessenger trait. (reset the static properties on kernel reboot)

Hey! I've thought a little bit more to this problem
What if we make TestTransport implement ResetInterface? this is what is done in InMemoryTransport
At first I was thinking it would call reset() between each messages, like it is done in "real life", but because we never add ResetServicesListener to the dispatcher (it is added "on the go" by messenger:consume command), the reset() method is not called between messages. So the we'd only reset the transports at the end of a test, in KernelTestCas::tearDown(), disregarding to the usage of InteractsWithMessenger trait.
WDYT?

Hey guys.
I've raised pull request in order to speedup this improvement. But it seems like there are a couple of test cases which have been written to be sure that state is persistant between tests.
see https://github.com/zenstruck/messenger-test/blob/7164fce81adab79b2a98bdf8f0df8047ac6d1c91/tests/InteractsWithMessengerTest.php#L522
so my PR seems like a BC break.

fixed by #90


Feature/electron ecc

Adds support for flashing ECC keys for udp cloud connectivity
Adds latest Electron tinker at [TODO FIRMWARE RELEASE LINK(todo)

Discussed with team. Though it'd be wonderful to ship this functionality, there appears to be some WIP and we'd prefer to wait until it's all set to go.


Integrate the opentelemetry-ebpf project with the OpenTelemetry helm chart

Is your feature request related to a problem? Please describe.
See #55 for original question: we would like to see the eBPF project integrate with a helm chart as an example.
Describe the solution you'd like
Right now, we have an integration with a vendor with https://github.com/signalfx/splunk-otel-collector-chart but it would be great to add this to https://github.com/open-telemetry/opentelemetry-helm-charts.
Describe alternatives you've considered
No response
Additional context
No response

Hey @atoulme may I work on that?

It's yours! We discussed just taking whatever we have in the splunk repo and upstream it to opentelemetry. Please feel free to go ahead.

This issue can be closed, as https://github.com/open-telemetry/opentelemetry-helm-charts/pull/855 merged.

Indeed, thanks @nicolastakashi !


failed to build

when i try to build this tool
PS D:\0insta\experiment\dovi_tool-main> cargo build --release
Compiling dovi_tool v1.5.6 (D:\0insta\experiment\dovi_tool-main)
error: failed to run custom build command for dovi_tool v1.5.6 (D:\0insta\experiment\dovi_tool-main)
Caused by:
process didn't exit successfully: D:\0insta\experiment\dovi_tool-main\target\release\build\dovi_tool-f2d5df1864241a79\build-script-build (exit code: 101)
--- stderr
thread 'main' panicked at 'called Result::unwrap() on an Err value: could not find repository from 'D:\0insta\experiment\dovi_tool-main'; class=Repository (6); code=NotFound (-3)', build.rs:10:20
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
how can i solve this problem?

Hm, that would be because the build requires that the git repo is present in the directory.
If you only downloaded the source zip, it wouldn't be.
I'll have to see how to fix that.

Should work now.


Multer

multer: multiple image upload capability now implemented. up to 20 images can be uploaded simultaneously. images now display as a small gallery on story page. images still displaying at full size when you click into the specific story - may want to style this (my simple css rule is not effecting them for some reason, probably conflicting with other css).
"image" key in Story model now "images"
don't forget to re create the database for new changes to take effect.

checking on what is causing the conflict


Add psych as dependency and fix schema load on psych >= 4.0.1

Add psych as dependency and fix schema load on psych >= 4.0.1, because from version 4 psych, has changed the API for load_safe.
Resolves #1684

Codecov Report
Base: 93.49% // Head: 93.98% // Increases project coverage by +0.48% :tada:

Coverage data is based on head (503720c) compared to base (203f272).
Patch coverage: 0.00% of modified lines in pull request are covered.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1685      +/-   ##
==========================================
+ Coverage   93.49%   93.98%   +0.48%
==========================================
  Files         128      128
  Lines        5812     5648     -164
==========================================
- Hits         5434     5308     -126
+ Misses        378      340      -38

Impacted Files
Coverage Δ

lib/active_graph/tasks/migration.rake
34.61% <0.00%> (+1.28%)
:arrow_up:

lib/active_graph/core/label.rb
73.49% <0.00%> (-11.39%)
:arrow_down:

lib/active_graph/migrations/schema_migration.rb
88.88% <0.00%> (-11.12%)
:arrow_down:

lib/active_graph/core/schema.rb
89.58% <0.00%> (-10.42%)
:arrow_down:

lib/rails/generators/active_graph_generator.rb
65.45% <0.00%> (-0.62%)
:arrow_down:

lib/active_graph/node/property.rb
93.75% <0.00%> (-0.54%)
:arrow_down:

lib/active_graph/shared.rb
88.00% <0.00%> (-0.47%)
:arrow_down:

lib/active_graph/migrations/schema.rb
96.00% <0.00%> (-0.43%)
:arrow_down:

lib/active_graph/migration.rb
81.39% <0.00%> (-0.43%)
:arrow_down:

lib/active_graph/core/query_find_in_batches.rb
92.30% <0.00%> (-0.29%)
:arrow_down:

... and 40 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

@chytreg please help me understand. When psych is not specified in the gemspec how does it get pulled in? Furthermore, we probably shouldn't be changing the required version like that. It might break other people's code if they rely on an earlier version. We should have some type of conditional statement.

When psych is not specified in the gemspec how does it get pulled in?

since ruby 1.9.2 psych is a part of MRI (note from psych project), usually you don't need to upgrade the version which comes with ruby, but in my project when we switched to ruby ~> 3 we had problems with builtin psych version and explicit upgrade solves our compatibility issues.
Currently the projects uses Dependabot to keep all the gems updated, and we noticed that newer version of psych breaks activegraph, I think in some point you may hit that problem of psych compatibility issues.

It might break other people's code if they rely on an earlier version. We should have some type of conditional statement.

That's true I will put the conditional instead since it's the only place it breaks.
My current situation:
# Gemfile
ruby 3.2.0
activegraph 11.2.0

without psych ~> 3 in Gemfile I get:
ArgumentError: wrong number of arguments (given 2, expected 1)
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/3.2.0/psych.rb:322:in `safe_load'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/activegraph-11.2.0/lib/active_graph/tasks/migration.rake:86:in `block (3 levels) in <top (required)>'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `block in execute'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `each'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `execute'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/sentry-ruby-5.8.0/lib/sentry/rake.rb:26:in `execute'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `synchronize'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `invoke_with_call_chain'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/lib/rake/task.rb:188:in `invoke'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/lib/rake/application.rb:160:in `invoke_task'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `each'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block in top_level'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/lib/rake/application.rb:125:in `run_with_threads'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/lib/rake/application.rb:110:in `top_level'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/lib/rake/application.rb:83:in `block in run'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/lib/rake/application.rb:80:in `run'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/Users/chytreg/.asdf/installs/ruby/3.2.0/bin/rake:25:in `load'
/Users/chytreg/.asdf/installs/ruby/3.2.0/bin/rake:25:in `<main>'

with psych ~> 3 it works, but with psych >=4.0.1 it causes what I've described here: https://github.com/neo4jrb/activegraph/issues/1684
Hmm, but what I see, in the source of my ruby is:
# /Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/3.2.0/psych.rb:322:in `safe_load'
  def self.safe_load yaml, permitted_classes: [], permitted_symbols: [], aliases: false, filename: nil, fallback: nil, symbolize_names: false, freeze: false, strict_integer: false
    result = parse(yaml, filename: filename)

So by adding psych ~> 3 I probably downgrade the version
Im not sure where to check which psych version ruby uses, but will try to figure it out.

So from ruby 3.1.0 MRI comes with https://www.ruby-lang.org/en/news/2021/12/25/ruby-3-1-0-released/ psych 4.0.1
It was core team decision to stay with that https://bugs.ruby-lang.org/issues/17866

Thank you @chytreg for the detailed explanation. Why 4.0.1 and not 4.0.0?

Why 4.0.1 and not 4.0.0?

On psych 4.0.0 it raises another sort of error, it looks like the 4.0.0 it's buggy that's why ruby team included 4.0.1
Psych 4.0.0 does not come with any ruby by default, so the only chance to get this error is having lock in the Gemfile to version 4.0.0 I would consider it as a very rare edge case.
BTW the psych team on Github issues recommends the update to 4.0.1 as a fix for that https://github.com/ruby/psych/issues/504
Psych::DisallowedClass: Tried to load unspecified class: Symbol
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/class_loader.rb:99:in `find'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/class_loader.rb:28:in `load'
(eval):2:in `symbol'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/class_loader.rb:32:in `symbolize'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/class_loader.rb:84:in `symbolize'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/scalar_scanner.rb:74:in `tokenize'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/to_ruby.rb:65:in `deserialize'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/to_ruby.rb:128:in `visit_Psych_Nodes_Scalar'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/visitor.rb:30:in `visit'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/visitor.rb:6:in `accept'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/to_ruby.rb:35:in `accept'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/to_ruby.rb:345:in `block in revive_hash'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/to_ruby.rb:343:in `each'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/to_ruby.rb:343:in `each_slice'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/to_ruby.rb:343:in `revive_hash'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/to_ruby.rb:167:in `visit_Psych_Nodes_Mapping'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/visitor.rb:30:in `visit'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/visitor.rb:6:in `accept'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/to_ruby.rb:35:in `accept'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/to_ruby.rb:318:in `visit_Psych_Nodes_Document'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/visitor.rb:30:in `visit'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/visitor.rb:6:in `accept'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych/visitors/to_ruby.rb:35:in `accept'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych.rb:334:in `safe_load'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych.rb:587:in `block in safe_load_file'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych.rb:586:in `open'
/Users/chytreg/.asdf/installs/ruby/3.2.0/lib/ruby/gems/3.2.0/gems/psych-4.0.0/lib/psych.rb:586:in `safe_load_file'

Yes, but we don't want to add our own error on 4.0.0 but rather have it fail on errors that are out of our control. So this version should use the new api as well.

Yes you are right, best would be have 4.0.0 instead of 4.0.1. Should I reopen the PR?


Another entity is selected if reorder tables then open the context menu of one entity

Storage Explorer Version: 1.29.0-dev
Build Number: 20230406.3
Branch: main
Platform/OS: Windows 10/Linux Ubuntu 22.04/MacOS Ventura 13.3 (Apple M1 Pro)
Architecture: ia32/x64
How Found: From running test cases
Regression From: Previous release (1.28.1)
Steps to Reproduce

Expand one storage account -> Tables.
Create a table -> Add two entities.
Reorder the entities.
Select one entity -> Right click it or press the context menu key.
Check whether the entity is still selected.

Expected Experience
The entity is still selected.

Actual Experience
The other entity is selected.

Verified this issue on the build main 20230413.5. Reproduce.
we are going to re-open it and verify it on a newer build.

Verified this issue on the build main 20230414.2. Fixed.


Update Default Provider Chain to include ProcessCredentialsProvider

Issue #, if available:
1388
Description of changes:
Add the ProcessCredentialsProvider to the default chain. At least Boto and Go SDKs appear to include it in their default chains.
Check all that applies:

[X] Did a review by yourself.
[ ] Added proper tests to cover this PR. (If tests are not applicable, explain.)
[ ] Checked if this PR is a breaking (APIs have been changed) change.
[ ] Checked if this PR will not introduce cross-platform inconsistent behavior.
[ ] Checked if this PR would require a ReadMe/Wiki update.

Check which platforms you have built SDK on to verify the correctness of this PR.

[X] Linux
[ ] Windows
[ ] Android
[ ] MacOS
[ ] IOS
[ ] Other Platforms

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Super small change, not sure if more is needed. My C++ skills are also rather lacking if there is more that needs to be done.

this pr has been merged, Thanks again for the contribution!


Make Cozytv faster. | Cozytv is faster with the '--hls-prefer-ffmpeg' perameter.

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I remove or skip any mandatory* field

Checklist

[X] I'm requesting a site-specific feature
[X] I've verified that I'm running yt-dlp version 2023.01.06 (update instructions) or later (specify commit)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've searched the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue
[ ] I've read about sharing account credentials and I'm willing to share it if required

Region
Denmark & USA.
Example URLs
Normal front-end https://cozy.tv/nick/replays/2023-01-26
CDN: https://cozycdn.foxtrotstream.xyz/replays/nick/2023-01-26/index.m3u8
Provide a description that is worded well enough to be understood
As stated in the title using --hls-prefer-ffmpeg makes the process go wayyy faster
It takes around 4 minutes for a 1 hour and 47 minutes with the parameter
Without the parameter the ETA says it would take around 2 hours without In the start but after around 5-7 minutes it's 15% done
Meta:
I have tried to fix it myself, but i simply doesn't know enough python to do so
I am willing to help with fixing the problem if needed.
Debug is without the --hls...
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
[debug] Command-line config: ['-vU', 'https://cozy.tv/nick/replays/2023-01-26']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2023.01.06 [6becd25]
[debug] Python 3.10.9 (CPython x86_64 64bit) - Linux-6.1.6-artix1-1-x86_64-with-glibc2.36 (OpenSSL 3.0.7 1 Nov 2022, glibc 2.36)
[debug] exe versions: ffmpeg 5.1.2 (setts), ffprobe 5.1.2, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.16.0, brotli-1.0.9, certifi-2022.12.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-10.4
[debug] Proxy map: {}
[debug] Loaded 1760 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: 2023.01.06, Current version: 2023.01.06
yt-dlp is up to date (2023.01.06)

Even tho there is a "fix" to it, it just seems like a temporary fix and not a solution.
This is also more for users who are noobs to this field

This should have the desired effect, if the effect is worthwhile. It re-applies the yt-dl default which is (sensibly) changed in yt-dlp -- not that this extractor exists in yt-dl:
--- old/yt_dlp/extractor/cozytv.py
+++ new/yt_dlp/extractor/cozytv.py
@@ -24,7 +24,8 @@
         id = f'{uploader}-{date}'
         data_json = self._download_json(f'https://api.cozy.tv/cache/{uploader}/replay/{date}', id)
         formats, subtitles = self._extract_m3u8_formats_and_subtitles(
-            f'https://cozycdn.foxtrotstream.xyz/replays/{uploader}/{date}/index.m3u8', id, ext='mp4')
+            f'https://cozycdn.foxtrotstream.xyz/replays/{uploader}/{date}/index.m3u8', id, ext='mp4',
+            entry_protocol='m3u8')
         return {
             'id': id,
             'title': data_json.get('title'),

I have no intention of changing the default downloader unless the downloads are broken. You can use -N, --downloader aria2c or ffmpeg for better speeds
PS: The network rework will probably improve speed due to connection pooling


Support **DictConfig hparam serialization

What does this PR do?
Context: Passing an unpacked DictConfig to __init__() and then calling save_hyperparameters()
Bug: save_hyperparameters() deals with the unpacked DictConfig as a dict which might still contain values of type DictConfig. Upon serialization during saving, this errors out because it is handled with yaml.dump().
Fix: Enables OmegaConf to serialize the object as originally intended by casting back to a DictConfig.
Before submitting

[ ] Was this discussed/approved via a Github issue? (no need for typos and docs improvements)
[x] Did you read the contributor guideline, Pull Request section?
[x] Did you make sure your PR does only one thing, instead of bundling different changes together? Otherwise, we ask you to create a separate PR for every change.
[ ] Did you make sure to update the documentation with your changes?
[ ] Did you write any new necessary tests?
[ ] Did you verify new and existing tests pass locally with your changes?
[ ] If you made a notable change (that affects users), did you update the CHANGELOG?

PR review
Anyone in the community is free to review the PR once the tests have passed.
If we didn't discuss your PR in Github issues there's a high chance it will not be merged.
Did you have fun?
Always.

Hello @romesc-CMU! Thanks for opening this PR.

In the file pytorch_lightning/core/saving.py:

Line 364:66: W504 line break after binary operator
Line 364:68: W291 trailing whitespace
Line 365:85: E202 whitespace before ')'

Do see the Hitchhiker's guide to code style

Let me update this to actual casting, I was using the OmegaConf API, but this is likely creating a new object which is definitely not memory efficient...

For a bit more clarification, this is fixing the case where the LightningModule is defined like the following example:
class LightningTemplateModel(LightningModule):     def __init__(self,                  in_features: int = 28 * 28,                  hidden_dim: int = 1000,                  out_features: int = 10,                  drop_prob: float = 0.2,                  batch_size: int = 2,                  learning_rate: float = 0.001 * 8,                  optimizer_name: str = 'adam',                  data_root: str = './datasets',                  ds = None,                  **kwargs                  ):         # init superclass         super().__init__()         self.save_hyperparameters()
followed by this constructor call:
model = LightningTemplateModel(**cfg.model, **cfg.data)
I am unpacking the DictConfig before using it. I actually think this works better than passing the DictConfig directly because it respects the default kwargs. So if something is missing from the cfg, the default in kwargs fills in. It seems that the best practices interface for a LightningModule will list out all the arguments with defaults like above as it is way more explicit and easy to use. With that in mind, I would prefer to unpack, but that leads me to the issue where save_hyperparameters() sees the args as their own items which might be DictConfigs themselves (this happens when OmegaConf creates a heirarchical DictConfig I guess. That's what this fix is addresses. There might be a better way to do this, and I'm open to suggestions from others of course!

I don't understand what is an unpacked DictConfig.
Looking at the fix, it does not make much sense to me.

I don't understand what is an 'unpacked DictConfig'. What are you actually passing in as hparams?

like this LightningTemplateModel(**cfg.model, **cfg.data)

Looking at the fix, it does not make much sense to me.

and what you dont like?

I see, so you a dict that have some DictConfig objects in it?
now it makes more sense.

Made all the requested changes. All (non docs) CI tests are passing!

@Borda is this actually [blocked by #2639]?
if anything, it seems like it's blocking #2639 😅
Either way, enabling this enhancement is IMO much more minor than that PR which definitely still needs more discussion. =]


🐛 BUG: Logging is very heavy if certificate has expired.

What version of nebula are you using? (nebula -version)
1.8.2
What operating system are you using?
Linux
Describe the Bug
In an example here where the CA had expired before I deployed everything.
I found a bug with Nebula 1.8.2.  if the CA is expired, the log output if written to a file is truly ginormous.  over 100MB in just an hour with this kind of output.  Running cat in a terminal to view a log like this is a lot of data.  the rate of output should be reduced.
Logs from affected hosts
time="2024-03-14T03:34:51Z" level=info msg="Invalid certificate from host" cert="NebulaCertificate {\n\tDetails {\n\t\tName: centosclient\n\t\tIps: [\n\t\t\t<IP_ADDRESS>/24\n\t\t]\n\t\tSubnets: []\n\t\tGroups: [\n\t\t\t\"servers\"\n\t\t]\n\t\tNot before: 2024-03-12 21:00:16 +0000 UTC\n\t\tNot After: 2024-03-13 21:00:16 +0000 UTC\n\t\tIs CA: false\n\t\tIssuer: e19330d7f9fe73a05132490eaf0debacbbcf068b42cf12e27ebc63756da40172\n\t\tPublic key: 838ee739b1e32a75ac233b891f36a0974896b78f7ccd776fee148421bfee7b53\n\t\tCurve: CURVE25519\n\t}\n\tFingerprint: bf74b3578cbb5d0ad9c4ef2281861f92f3d6ffd7b50c2776e7f277c210bd27d1\n\tSignature: a9495dc92ef541f83f2603ed12aa62938c6b42ea1f64ac9f22acb831cd2e2dae8ee06c958ca2dc7fb4c7d2401bf369b3c080522709bd983af71e31d5ef1ce209\n}" error="certificate validation failed: certificate is expired" handshake="map[stage:1 style:ix_psk0]" udpAddr="<IP_ADDRESS>:11308"
time="2024-03-14T03:34:52Z" level=info msg="Invalid certificate from host" cert="NebulaCertificate {\n\tDetails {\n\t\tName: centosclient\n\t\tIps: [\n\t\t\t<IP_ADDRESS>/24\n\t\t]\n\t\tSubnets: []\n\t\tGroups: [\n\t\t\t\"servers\"\n\t\t]\n\t\tNot before: 2024-03-12 21:00:16 +0000 UTC\n\t\tNot After: 2024-03-13 21:00:16 +0000 UTC\n\t\tIs CA: false\n\t\tIssuer: e19330d7f9fe73a05132490eaf0debacbbcf068b42cf12e27ebc63756da40172\n\t\tPublic key: 838ee739b1e32a75ac233b891f36a0974896b78f7ccd776fee148421bfee7b53\n\t\tCurve: CURVE25519\n\t}\n\tFingerprint: bf74b3578cbb5d0ad9c4ef2281861f92f3d6ffd7b50c2776e7f277c210bd27d1\n\tSignature: a9495dc92ef541f83f2603ed12aa62938c6b42ea1f64ac9f22acb831cd2e2dae8ee06c958ca2dc7fb4c7d2401bf369b3c080522709bd983af71e31d5ef1ce209\n}" error="certificate validation failed: certificate is expired" handshake="map[stage:1 style:ix_psk0]" udpAddr="<IP_ADDRESS>:11308"
time="2024-03-14T03:34:52Z" level=info msg="Invalid certificate from host" cert="NebulaCertificate {\n\tDetails {\n\t\tName: centosclient\n\t\tIps: [\n\t\t\t<IP_ADDRESS>/24\n\t\t]\n\t\tSubnets: []\n\t\tGroups: [\n\t\t\t\"servers\"\n\t\t]\n\t\tNot before: 2024-03-12 21:00:16 +0000 UTC\n\t\tNot After: 2024-03-13 21:00:16 +0000 UTC\n\t\tIs CA: false\n\t\tIssuer: e19330d7f9fe73a05132490eaf0debacbbcf068b42cf12e27ebc63756da40172\n\t\tPublic key: 838ee739b1e32a75ac233b891f36a0974896b78f7ccd776fee148421bfee7b53\n\t\tCurve: CURVE25519\n\t}\n\tFingerprint: bf74b3578cbb5d0ad9c4ef2281861f92f3d6ffd7b50c2776e7f277c210bd27d1\n\tSignature: a9495dc92ef541f83f2603ed12aa62938c6b42ea1f64ac9f22acb831cd2e2dae8ee06c958ca2dc7fb4c7d2401bf369b3c080522709bd983af71e31d5ef1ce209\n}" error="certificate validation failed: certificate is expired" handshake="map[stage:1 style:ix_psk0]" udpAddr="<IP_ADDRESS>:11308"
time="2024-03-14T03:34:53Z" level=info msg="Invalid certificate from host" cert="NebulaCertificate {\n\tDetails {\n\t\tName: centosclient\n\t\tIps: [\n\t\t\t<IP_ADDRESS>/24\n\t\t]\n\t\tSubnets: []\n\t\tGroups: [\n\t\t\t\"servers\"\n\t\t]\n\t\tNot before: 2024-03-12 21:00:16 +0000 UTC\n\t\tNot After: 2024-03-13 21:00:16 +0000 UTC\n\t\tIs CA: false\n\t\tIssuer: e19330d7f9fe73a05132490eaf0debacbbcf068b42cf12e27ebc63756da40172\n\t\tPublic key: 838ee739b1e32a75ac233b891f36a0974896b78f7ccd776fee148421bfee7b53\n\t\tCurve: CURVE25519\n\t}\n\tFingerprint: bf74b3578cbb5d0ad9c4ef2281861f92f3d6ffd7b50c2776e7f277c210bd27d1\n\tSignature: a9495dc92ef541f83f2603ed12aa62938c6b42ea1f64ac9f22acb831cd2e2dae8ee06c958ca2dc7fb4c7d2401bf369b3c080522709bd983af71e31d5ef1ce209\n}" error="certificate validation failed: certificate is expired" handshake="map[stage:1 style:ix_psk0]" udpAddr="<IP_ADDRESS>:11308"
time="2024-03-14T03:35:17Z" level=info msg="Invalid certificate from host" cert="NebulaCertificate {\n\tDetails {\n\t\tName: amazonlinuxclient\n\t\tIps: [\n\t\t\t<IP_ADDRESS>/24\n\t\t]\n\t\tSubnets: []\n\t\tGroups: [\n\t\t\t\"servers\"\n\t\t]\n\t\tNot before: 2024-03-12 21:00:11 +0000 UTC\n\t\tNot After: 2024-03-13 21:00:11 +0000 UTC\n\t\tIs CA: false\n\t\tIssuer: e19330d7f9fe73a05132490eaf0debacbbcf068b42cf12e27ebc63756da40172\n\t\tPublic key: e294d9e5e261a3a12f11cbb398fe4469c12698f7770df9d164d22f2fccc36326\n\t\tCurve: CURVE25519\n\t}\n\tFingerprint: 7e9dbed3ed342168a63cea22fe673709e404f243fb85e9f82de30d762c8b762a\n\tSignature: b1f0c71efd95fea64664e3f7be377fb435eba062f5a7adcf26f09ab8702c77e4bbab3e6fc79a4e56351adeaff77d2327484fcda32f596483b85f4547dc941a09\n}" error="certificate validation failed: certificate is expired" handshake="map[stage:1 style:ix_psk0]" udpAddr="<IP_ADDRESS>:60146"

Config files from affected hosts

This is somewhat exploitable in practice/with intent; I'm able to generate ~15MiB in logs in 10-12 seconds from a single client that has a random/unauthorized CA/cert pair with only the server's IP address and port, using nothing but the nebula client itself, roughly double the bandwidth being sent to the server. I haven't tried multiple clients and/or a specialized attack yet.
Removing the cert field would make a significant difference, though a more complete fix may be to also de-duplicate log entries (at least for invalid/unauthorized requests).
CWE-779

Suppress large numbers of duplicate log messages and replace them with periodic summaries. For example, syslog may include an entry that states "last message repeated X times" when recording repeated events.

That said I think syslog and journald both have deduplication, but journald at least will only do that for single-line messages IIRC (in any case it does not seem to dedupe these)


improving config validation

Motivation
Config and parameter validation is all over the place in CmdFunctions. The quality of validation was inconsistent and missing in many cases.
Modifications
Implemented validation system using annotations.
Centralize validation code to be easier to read and find as well as allow code re-usability
Result
will also add to CmdSource and CmdSink in subsequent PRs

@sijie @srkukarni please review


library doesn't play nice with typescript right now

I tried importing the library into a typescript project and got the following error:
Cannot find module 'svelte-youtube-embed' or its corresponding type declarations.ts(2307)

To work around this, I added the following to my app.d.ts file
declare module 'svelte-youtube-embed' {
	import type { SvelteComponentTyped } from 'svelte';
	class Youtube extends SvelteComponentTyped<{
		id: string;
		thumbnail?: string;
		animations?: boolean;
	}> {}

	export default Youtube;
}

While this solves the problem today, I'd like to see the library itself maintain it's types because apis/props can be added and (more importantly) be removed and I'd like to be able to get that information for free!

I think that will not be necessary. I took some drastic measures to mitigate this.
Please try 0.3.0

this works now. Thank you so much!


Implement futures-0.3 Spawn for &MainContext

I'm trying to use the MainContext as a futures-0.1 Executor with the help of the futures-0.1 compatibility layer.
It seems that the futures-0.3 Spawn needs to be implemented for a reference, so that's what I did (see 0.3.0-alpha.16: futures-util/src/compat/executor.rs).
I can confirm that with this change I can use the main-context as a futures-0.1 executor by calling futures::task::SpawnExt.compat() on it.
Does this make sense?

btw you can see the same is done for futures-rs here.

Thanks! The CI failures are not your fault but from https://github.com/gtk-rs/gtk/pull/827 and your code is perfectly fine :)
Out of curiosity, which futures-0.1 APIs do you want to use on top of the std futures provided by glib/gio/etc?

I was trying to use existing futures-0.1 code to connect the Glib MainLoop (for the GUI) with a Tokio ThreadPool (for the main application logic), so I needed an Executor.
But I think I'll upgrade to futures-0.3, seems more sustainable :)


40 Position and Size Information of the Drawing Area Contents

resolves #40
The coordinates and dimensions of the view box are returned in a normalized fashion
The following changes were implemented in the class MainW in cellpose/gui/gui.py:

when a change in the view of the image occurs (zooming or panning), a new method is triggered:
this new method onViewChanged was implemented
information of the view box p0 are extracted using self.p0.viewRect():

x and y coordinates are extracted in form of tuples representing intervals using .left() and .right() for x / .up() and .bottom() for y
width and height are extracted using .width() and .height()

if an image is opened, size information of the current image is extracted using self.img.image (width and height)
the information above is normalized:

the tuples representing coordinates are divided by the image width for x / image height for y
the view box dimensions are divided by the corresponding image dimension

This ticket is part of the former issue 12. The values normalized_x, normalized_y, normalized_width, normalized_height can later be used in ticket 42 (in combination with ticket 41).
normalized_x refers to the left and right border of the view box in relation to the image; normalized_y to the upper and lower border. Therefore, these show if the image has been moved around. The individual values in the tuples can be accessed using [0] or [1].
normalized_width and normalized_height indicate the zoom level. The bigger these values, the more zoomed-out the pictures is.
Information for testing
I recommend using print-statements to check the values returned.
This could look for example like this:

for the regular coordinates and dimensions:

print(f"Viewbox coordinates: x={x_coordinates}, y={y_coordinates}")
print(f"Viewbox dimensions: width={width}, height={height}")

for the normalized coordinates and dimensions:

print(f"Normalized Viewbox coordinates: x={normalized_x}, y={normalized_y}")
print(f"Normalized Viewbox dimensions: width={normalized_width}, height={normalized_height}")

These statements are also included in the commit 8c2b80e8257a56ee264e86a7823f892ee7cb642d.
Showcase
Using the suggested print statements from above for testing, this should lead to a similar output in your console:

if the image is slightly smaller than the view box and (more or less) centered:

if the image is moved like this:

if the image is zoomed in:

The dimensions should only change, when you zoom in or out (or if you change the window size).
If you move the left upper corner of the image into the left upper corner of the view box, the first values of the normalized intervals should be close to 0 for both x and y.
Similarly, if you move the bottom right corner to the bottom right corner, the values should be close to 1.

The method is called so that any change in the view box leaves a comment with the relevant info., be it a zoom-in, zoom-out or a drag motion on the image.
If I place the top left corner of the image approx. at the top left corner of the main window, the values for the first coordinates of x and y are around zero, as we want them to.
If one zooms in, the viewbox dimensions decrease, which reflects the narrowing scope of visibility. In the same manner, if one zooms out, the dimensions of the viewbox increase.
The viewbox dimensions and coordinates are normed appropriately in relation to the image dimensions, so that the currently viewed area can be passed onto the minimap in ticket dynamically adjusting highlight area (minimap orientation) #42 and the highlight area can be drawn according to the current size of the minimap.

So, it all works perfectly and as requested, the documentation is very clear and the code is nicely structured, great job again! :))
As a small suggestion, it would maybe be useful to place the if-statement inside a try-except block, to avoid errors?
Other than that, I noticed that a requirement for ticket #41 is that "the size of the area doesn't get bigger then the minimap (cap width & height)". This method, however, does return viewbox values that would go outside the scope of the minimap (for example when the viewbox is bigger than the image), so I'm not sure if the requirement is totally necessary. This is more of a problem for 41 and 42, but thought it was worth pointing out.

Hey Nicolás,
Thank you very much for the detailed review!
I have implemented the try/except version, good idea!
And I agree, it is important to remember the size scope for 41. I would however consider this a part of ticket 41 rather than this one :)

Other than that, I noticed that a requirement for ticket #41 is that "the size of the area doesn't get bigger then the minimap (cap width & height)". This method, however, does return viewbox values that would go outside the scope of the minimap (for example when the viewbox is bigger than the image), so I'm not sure if the requirement is totally necessary. This is more of a problem for 41 and 42, but thought it was worth pointing out.

Limiting the highlight area is intended to ensure that when you see the entire image, the area on the minimap simply does not leave the minimap but suggests that you can see everything because the entire image is framed in white. However, this is actually more cosmetic than absolutely necessary.


CloudWatch handler

Hello,
I can't seem to find any information about using Monolog in combination with Amazon CloudWatch.
That is why I have some questions about the integration:

Has cloudwatch been discussed before?
Are there any 3rd party handlers available or under construction?
Is there another / better way of integrating logs with CloudWatch like for example logging to a file and syncing it?
Are there any plans of adding a CloudWatch handler?

Thanks!

You can log to a file and pick that up in AWS logs.
$logger = new Monolog('mylogger');
$logger->pushHandler(new \Monolog\Handler\ErrorLogHandler());
$logger->pushHandler(new \Monolog\Handler\StreamHandler("/my_application/errors.log"));

Then install the agent for cloud watch on your Amazon servers. Finally setup the config file: /etc/awslogs/awslogs.conf
[ /my_application/errors.log]
datetime_format = %b %d %H:%M:%S
file = /my_application/errors.log
buffer_duration = 5000
log_stream_name = MyAppLogStream
initial_position = start_of_file
log_group_name = ApplicationLogs

Thanks @tegansnyder.
We also found 2 other possible solutions when logging inside a Docker container:

Log to the php://stdout or php://stderr stream with the StreamHandler.
Log to the errorlog with the ErrorLogHandler. Not that this will require a link from the error-log file to /dev/stdout

Next you will need to configure the Amazon CloudWatch Logs logging driver:
http://docs.docker.com/engine/reference/logging/awslogs/
However it might still be handy to create a CloudwatchHandler in Monolog based on the aws-sdk library: https://github.com/aws/aws-sdk-php
This way the logs don't need to be passed by an agent or a logs-driver.

I think a CloudWatch-specific handler might be a good thing if it helps smooth the setup process, but if it depends on AWS SDK it definitely belongs in its own package/repository. You can then link it in the wiki page of third party handlers.

Just created CloudWatch Monolog Handler https://github.com/maxbanton/cwh


RFC: Enhancing gql.tada with Server-side GraphQL Type Retrieval

This RFC proposes leveraging GraphQL's introspection capabilities in gql.tada to automate type definition for server-side resolvers, eliminating the need for manually writing queries for type extraction.
Proposal
This RFC proposes leveraging GraphQL's introspection capabilities in gql.tada to automate type definition for server-side resolvers, eliminating the need for manually writing queries for type extraction.
Proposed Solution
Introduce a new API e.g. graphql.field<T, F>(), where T is the type (e.g., Query or Mutation) and F is the field name (e.g., addPost). This function utilizes the already stored introspection data, and further utilizes the args and type declaration of fields.
type Query {
    getPost(id: ID): Post
}

type Mutation {
    addPost(id: ID!, author: String!, title: String!, content: String!, url: String!):
}

Using the example schema, the API simplifies type generation:
type AddPostVariables =  VariablesOf<typeof graphql.field<"Mutation", "addPost">>
type AddPostResult =  ReturnType<typeof graphql.field<"Mutation", "addPost">>

// Use in server-side resolver
const addPostResolver = async (args: AddPostVariables): Promise<AddPostResult> => {
    // Implementation...
};

Summary
This enhancement streamlines the development process, ensuring type safety and reducing boilerplate by automatically deriving types from the GraphQL schema.
The proposed introspection-based solution offers an alternate approach to the issue described in gql.tada GitHub issue #10, addressing the need for simplified type generation. By automatically deriving types directly from the GraphQL schema using introspection, it circumvents the manual effort and complexity currently discussed in the issue, providing a streamlined and type-safe method for handling GraphQL operations on the server side.

Preliminary thought here that this is out-of-scope of gql.tada. Sorry! ❤
The general idea of what we're currently experimenting with is captured here: #10
The context here is that I don't think SDL-first schema builders (aka “schema-first”) are a particularly good experience, and generally regarded as outdated by many members of the server-side GraphQL community.
Even if we wanted to support it, the spirit of gql.tada would dictate that we should instead parse SDL, and not provide loose types that you can annotate (which is more along the lines of what GraphQL Code Generator can do for you already)
In other words, there's, in my opinion, no improvement to be had from the experience here compared to GraphQL Code Generator, and the goal of having a beginner friendly approach (#10) isn't compatible with SDL-resolver-type annotations.
A project that is already doing this afaik though is Elysia
However, our focus is more on integrating code-first schema builders at a type level with gql.tada.
Hope that makes sense 🙌

I applaud you for explicitly outscoping this from the project! ❤


Feature request: make 300ms click delay configurable

This is a:

[ ] bug
[X] enhancement
[X] feature-discussion (RFC)

Info:

Swiper Version: 4.5.0
Platform/Target and Browser Versions: Mac OS X, Chrome 73 mobile emulator and iOS 12.2 Safari
Live Link or JSFiddle/Codepen or website with isssue: N/A

It appears that the code enforces a 300ms delay before triggering click events (“Event will be fired when user click/tap on Swiper after 300ms delay.”). It looks like this is hardcoded into the project.
Is this decision related to how mobile browsers used to work with a click delay? If so, this changed years ago:

As of Chrome 32 (back in 2014) this delay is gone for mobile-optimized sites, without removing pinch-zooming! Firefox and IE/Edge did the same shortly afterwards, and in March 2016 a similar fix landed in iOS 9.3.

any reaction here?

Removed in v5


Design contribution

I wanted to know if there's a channel(e.g slack) where Designers can join to contribute to umami or any suggestions on how to contribute... thanks guys!!!!

There is not slack channel, but you can start a discussion here,  https://github.com/mikecao/umami/discussions


Add feature_importances_ property for XGBClassifier

I added feature_importances_ property for scikit-learn compatibility.

do we also want to include early stop to the sklearn interface? this PR reminds me this question from kaggle. please ignore this question if early stop has been in the sklearn interface.


Components page - Disabled inputs (range, text, etc) don't appear in iOS Chrome

this one still isnt fixed for me...

I see—this is a broader issue of re-sizing iframes across the board to include all of the iframe content without truncating. I'll rephrase the bug for the issue


pull request for e2e test at 12/19/2016 03:15:18

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


[BUG]:  Volume condition abnormal logs are not reported on iscsi initiator session removal

Describe the bug
Volume condition abnormal logs are not reported on iscsi initiator session removal and connection to the volume is lost as a result of this.
To Reproduce
Steps to reproduce the behavior:

Step 1  Create a iSCSI PVC
Step 2 Create a POD using PVC.
Step 3 Delete the iSCSI session.
PVC is not updated with the volume condition

Expected behavior
PVC has to be updated with the volume condition being abnormal

This is now addressed in above PR, hence closing this issue.


Add SOCKS5 SSH proxy support in Ray

Related to #1538, enables running Modin with Ray autoscaler in a typical enterprise network.

@anmyachev here's the first try to add proxy support: https://github.com/vnlitvinov/ray/tree/add-ssh-proxy
It reads another parameter from auth section of the .yml file named ssh_proxy_command and, if it's non-empty, adds it as -o ProxyCommand=that_value.

Per discussion with Ray devs, I'll be changing the PR there back to specify full ProxyCommand, then they would hopefully accept it.

Fixed by https://github.com/ray-project/ray/pull/8833 - now there is an optional ssh_proxy_command option under auth which, if present, is passed as-is to ssh as -o ProxyCommand=<value>. For now it requires using Ray from master.


Regex validation pattern

The field/form validation is not allowing dashes with this pattern, however it should,
nga.field('username')
    .attributes({ placeholder: 'No space allowed, 5 chars min' })
    .validation({ required: true, pattern: '[A-Za-z0-9\.\-_]{5,20}' }),

ng-admin is using angular.js validation (see the input directive). Your bug is probably an Angular bug, please open an Issue in the Angular.js repository.

thanks, will do


Howto: Use reselect at component-level without connect

In your docs, it is only mentioned how to use reselect at the connect-level, but this wouldn't work with some parts of our application, what we needed was some way to apply functions to the props of the components, and it was actually quite easy to do this with reselect:
I created a function to wrap components with, called select:
let React = require('react');
let _     = require('lodash');

let select = (...selectors) => {
    return (WrappedComponent) => {

        let NewWrappedComponent = React.createClass({
            render: function () {
                let appliedSelectors = selectors.map(fn => {
                    return fn(this.props);
                });
                let calculatedProps = _.merge(...appliedSelectors);
                return <WrappedComponent {...this.props} {...calculatedProps} />;

            }
        });
        return NewWrappedComponent;
    };
};

module.exports = select;

With select you can easily use selectors at Component-level:
let { createSelector } = require('reselect');
let React = require('react');

let shopItemsSelector = state => state.shop.items
let taxPercentSelector = state => state.shop.taxPercent

const subtotalSelector = createSelector(
  shopItemsSelector,
  items => items.reduce((acc, item) => acc + item.value, 0)
)

let Component = select(subTotalSelector)(React.createClass({...}));

I've just build it, so it's really simple at the moment, but it works really good for me, hot-reloading worked out of the box.
I just wanted to share, because someone might have the same use-case as I did.

Thanks @TN1ck. I think to be more consistent with (state, props) it should be
let appliedSelectors = selectors.map(fn => {
  return fn(_, this.props);
})

Also here is a version with ES6 classes:
import React, { Component } from 'react'
import _ from 'lodash'

const select = (...selectors) => {
  return WrappedComponent => class extends Component {
    render() {
      const appliedSelectors = selectors.map(fn => {
        return fn(_, this.props)
      })
      const calculatedProps = _.merge(...appliedSelectors)
      return (
        <WrappedComponent {...this.props} {...calculatedProps} />
      )
    }
  }
}

export default select

@TN1ck @panayi Great, I appreciate both of you writing this up! Thanks.
@panayi Looks like you are passing lodash as the 1st param into the function getting memoized? I guess that was intended to be a placeholder. I'm not sure that I agree about (_, props) being more consistent, my initial feeling is that I would leave that function call how @TN1ck had it.
This would be a good fit for this FAQ question on the readme if anyone fancies submitting a pull request. No worries if not, I'll get around to adding it soon.

@TN1ck Sorry, I'm not following what the purpose of this is.  Do you have a more concrete example and an explanation of why you can't use reselect in the normal way?
Thanks.

@TN1ck I don't understand how this code works. Won't appliedSelectors just be an array of the results of running the passed-passed in selectors? Something like: [2, 'cool val', {}].


Possibility of obtaining per-frame camera localization confidences

Hi @lahavlipson @zachteed!
Great work, thanks a lot for releasing such a neat implementation!
I wonder whether it is possible to obtain confidences in a way that is correlated with the camera pose estimation quality. In an ideal scenario, I need the per-frame confidences which captures the uncertainty of camera localization to design an objective. I noticed that there are confidence weights estimated for each edge in the factor graph. But they were not quite helpful when I compare them across frames in a video. Also between two videos (one with bad, another with good camera localization results), the average confidence weights of the video with bad camera localization was higher. Do you have any idea how I can capture such uncertainty from the model?

Hi @mkocabas Can you tell me where is the screen shot picture you put from? I am also interested in pose estimation confidence.Thanks


Minor typo in your ReadMe.md file

Hello, thanks a lot for the roadmap
I think you meant to say star in your Wrap Up section!

Indeed! Thank you.


feat: use performance timeline 2 APIs and release 2.0

use performance timeline 2 APIs to replace Navigation Timing 1 APIs
add a number of redirect count

I removed some blank characters on the border, All javascript files replace TAB with 2 space characters.
Another, Can you post a new version to Google Chrome Web Store?

Thanks! I am thinking about adding "minimum_chrome_version": "57" to manifest to target only newer Chrome which has support for Navigation Timing 2:
https://www.chromestatus.com/feature/5409443269312512
This way code can be simplified as there will be no need to support older API. What do you think? Can you make this change?

@alex-vv
No need to add minimum_chrome_version, this code is compatible with a version number less than 55.

I published version 2 in Google Chrome Web Store (will take some time to update).

that's great, thank you very much.


Cannot find "CapWatchSessionDelegate" in scope

After following the steps as defined, I tried to build an app and got the error in the subject of this issue. Can anyone assist with this issue? Perhaps I am missing some step?
Thanks!

I forgot to add relevant information, hope this helps:
Xcode 15 beta 6 (15A5219j)
Dependencies:
  "dependencies": {
    "@capacitor/android": "^5.2.3",
    "@capacitor/core": "^5.2.3",
    "@capacitor/ios": "^5.2.3",
    "axios": "^1.4.0",
    "core-js": "^3.8.3",
    "lodash-es": "^4.17.21",
    "register-service-worker": "^1.7.2",
    "vue": "^3.2.13",
    "vue-router": "^4.0.3",
    "vue3-qr-reader": "^1.0.0"
  },
  "devDependencies": {
    "@capacitor/cli": "^5.2.3",
    "@vue/cli-plugin-babel": "~5.0.0",
    "@vue/cli-plugin-pwa": "~5.0.0",
    "@vue/cli-plugin-router": "~5.0.0",
    "@vue/cli-service": "~5.0.0",
    "sass": "^1.32.7",
    "sass-loader": "^13.3.2"
  }

Error comes from the AppDelegate.swift file.
Please let me know if you require anything else!

@giralte-ionic it is present in my package.json, as shown below.
"dependencies": {
    ...
    "@capacitor/watch": "^0.1.7",
    ...
}

When I try to build my app using this package it results in the following exception:
✔ Copying web assets from dist to android/app/src/main/assets/public in 12.58ms
✔ Creating capacitor.config.json in android/app/src/main/assets in 573.42μs
✔ copy android in 20.29ms
✔ Updating Android plugins in 1.08ms
[info] Found 1 Capacitor plugin for android:
<EMAIL_ADDRESS>✔ update android in 26.78ms
✔ Copying web assets from dist to ios/App/App/public in 17.18ms
✔ Creating capacitor.config.json in ios/App/App in 709.13μs
✔ copy ios in 22.78ms
✔ Updating iOS plugins in 1.53ms
[info] Found 1 Capacitor plugin for ios:
<EMAIL_ADDRESS>✖ Updating iOS native dependencies with pod install - failed!
✖ update ios - failed!
[error] Analyzing dependencies
        Searching for inspections failed: undefined method `map' for nil:NilClass

        ――― MARKDOWN TEMPLATE ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

        ### Command

        ```
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/bin/pod install
        ```

        ### Report

        * What did you do?

        * What did you expect to happen?

        * What happened instead?

        ### Stack

        ```
        CocoaPods : 1.12.1
        Ruby : ruby 3.2.2 (2023-03-30 revision e51014f9c0) [arm64-darwin22]
        RubyGems : 3.4.10
        Host : macOS 13.5 (22G74)
        Xcode : 14.3.1 (14E300c)
        Git : git version 2.40.0
        Ruby lib dir : /opt/homebrew/Cellar/ruby/3.2.2_1/lib
        Repositories : trunk - CDN - https://cdn.cocoapods.org/
        ```

        ### Plugins

        ```
        cocoapods-deintegrate : 1.0.5
        cocoapods-plugins     : 1.0.0
        cocoapods-search      : 1.0.1
        cocoapods-trunk       : 1.6.0
        cocoapods-try         : 1.2.0
        ```

        ### Podfile

        ```ruby
        require_relative '../../node_modules/@capacitor/ios/scripts/pods_helpers'

        platform :ios, '13.0'
        use_frameworks!

        # workaround to avoid Xcode caching of Pods that requires
        # Product -> Clean Build Folder after new Cordova plugins installed
        # Requires CocoaPods 1.6 or newer
        install! 'cocoapods', :disable_input_output_paths => true

        def capacitor_pods
        pod 'Capacitor', :path => '../../node_modules/@capacitor/ios'
        pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios'
        pod 'CapacitorWatch', :path => '../../node_modules/@capacitor/watch'
        end

        target 'App' do
        capacitor_pods
        # Add your Pods here
        end

        post_install do |installer|
        assertDeploymentTarget(installer)
        end
        ```

        ### Error

        ```
        RuntimeError - `PBXProject` attempted to initialize an object with unknown ISA `XCLocalSwiftPackageReference`
        from attributes: `{"isa"=>"XCLocalSwiftPackageReference",
        "relativePath"=>"../../node_modules/@capacitor/watch/CapWatch-Watch-SPM"}`
        If this ISA was generated by Xcode please file an issue: https://github.com/CocoaPods/Xcodeproj/issues/new
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/xcodeproj-1.22.0/lib/xcodeproj/project/object.rb:359:in
        `rescue in object_with_uuid'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/xcodeproj-1.22.0/lib/xcodeproj/project/object.rb:349:in
        `object_with_uuid'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/xcodeproj-1.22.0/lib/xcodeproj/project/object.rb:300:in
        `block (2 levels) in configure_with_plist'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/xcodeproj-1.22.0/lib/xcodeproj/project/object.rb:299:in
        `each'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/xcodeproj-1.22.0/lib/xcodeproj/project/object.rb:299:in
        `block in configure_with_plist'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/xcodeproj-1.22.0/lib/xcodeproj/project/object.rb:296:in
        `each'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/xcodeproj-1.22.0/lib/xcodeproj/project/object.rb:296:in
        `configure_with_plist'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/xcodeproj-1.22.0/lib/xcodeproj/project.rb:272:in
        `new_from_plist'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/xcodeproj-1.22.0/lib/xcodeproj/project.rb:213:in
        `initialize_from_file'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/xcodeproj-1.22.0/lib/xcodeproj/project.rb:113:in `open'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/cocoapods-1.12.1/lib/cocoapods/installer/analyzer.rb:1194:in
        `block (2 levels) in inspect_targets_to_integrate'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/cocoapods-1.12.1/lib/cocoapods/installer/analyzer.rb:1193:in
        `each'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/cocoapods-1.12.1/lib/cocoapods/installer/analyzer.rb:1193:in
        `block in inspect_targets_to_integrate'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/cocoapods-1.12.1/lib/cocoapods/user_interface.rb:64:in
        `section'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/cocoapods-1.12.1/lib/cocoapods/installer/analyzer.rb:1188:in
        `inspect_targets_to_integrate'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/cocoapods-1.12.1/lib/cocoapods/installer/analyzer.rb:107:in
        `analyze'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/cocoapods-1.12.1/lib/cocoapods/installer.rb:422:in `analyze'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/cocoapods-1.12.1/lib/cocoapods/installer.rb:244:in `block in
        resolve_dependencies'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/cocoapods-1.12.1/lib/cocoapods/user_interface.rb:64:in
        `section'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/cocoapods-1.12.1/lib/cocoapods/installer.rb:243:in
        `resolve_dependencies'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/cocoapods-1.12.1/lib/cocoapods/installer.rb:162:in `install!'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/cocoapods-1.12.1/lib/cocoapods/command/install.rb:52:in `run'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/claide-1.1.0/lib/claide/command.rb:334:in `run'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/cocoapods-1.12.1/lib/cocoapods/command.rb:52:in `run'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/gems/cocoapods-1.12.1/bin/pod:55:in `<top (required)>'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/bin/pod:25:in `load'
        /opt/homebrew/Cellar/cocoapods/1.12.1/libexec/bin/pod:25:in `<main>'
        ```

        ――― TEMPLATE END ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

        [!] Oh no, an error occurred.

        Search for existing GitHub issues similar to yours:
        https://github.com/CocoaPods/CocoaPods/search?q=%60PBXProject%60+attempted+to+initialize+an+object+with+unknown+ISA+%60XCLocalSwiftPackageReference%60+from+attributes%3A+%60%7B%22isa%22%3D%3E%22XCLocalSwiftPackageReference%22%2C+%22relativePath%22%3D%3E%22..%2F..%2Fnode_modules%2F%40capacitor%2Fwatch%2FCapWatch-Watch-SPM%22%7D%60%0AIf+this+ISA+was+generated+by+Xcode+please+file+an+issue%3A+https%3A%2F%2Fgithub.com%2FCocoaPods%2FXcodeproj%2Fissues%2Fnew&type=Issues

        If none exists, create a ticket, with the template displayed above, on:
        https://github.com/CocoaPods/CocoaPods/issues/new

        Be sure to first read the contributing guide for details on how to properly submit a ticket:
        https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md

        Don't forget to anonymize any private data!

        Looking for related issues on cocoapods/cocoapods...

error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

try adding import CapacitorWatch to the top of your AppDelegate.swift file. The top should look like so:
import UIKit
import Capacitor
import WatchConnectivity
import CapacitorWatch

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        assert(WCSession.isSupported(), "This sample requires Watch Connectivity support!")
        WCSession.default.delegate = CapWatchSessionDelegate.shared
        WCSession.default.activate()
        // Override point for customization after application launch.
        return true
    }

Thanks for the update! I'll try it out as soon as I'm able to and I'll let you know if it works!

@CrixuAMG any feedback? I would like to close this issue

My apologies for the late answer, it's been very busy and as such I've missed the notification from github. I haven't been able to fully test it yet, but will close the issue for now to test it at a later moment.
Thanks for the update and your patience!


systemd: reduce container privilege by whitelisting NET_ADMIN capability

The --privileged flag grants all capabilities to the container, and breaks some of the cgroups isolations that docker containers typically enjoy.  This is heavy handed for the typical user, who just wants the container to act as a gateway to the internet (and not as a general access point the host, akin to ssh).  I think it's worth considering narrowing the scope of privilege granted to openvpn, especially given its likelihood as a target for attackers.
I don't believe openvpn requires any capabilities that aren't covered by NET_ADMIN, which itself is pretty generous (see capabilities(7)).  Removing --privileged also reduces the collection of devices exposed to the container, although to be frank, the documentation is lacking here.
I've tested this on my UDP-based setup on CoreOS, but I'm happy to test additional use cases and discuss the pros/cons of this PR.

Good catch. This was discussed sometime ago in #157 and the cap-add feature should be mature enough to avoid tripping users that didn't have the feature or have issues with (i.e. #157).
Thanks!


Tighten bounds on primitive on Hackage

Building fails with:
[3 of 4] Compiling Data.Chimera     ( Data/Chimera.hs, /tmp/chimera-<IP_ADDRESS>/dist-newstyle/build/x86_64-linux/ghc-9.6.3/chimera-<IP_ADDRESS>/build/Data/Chimera.o, /tmp/chimera-<IP_ADDRESS>/dist-newstyle/build/x86_64-linux/ghc-9.6.3/chimera-<IP_ADDRESS>/build/Data/Chimera.dyn_o ) [Data.Primitive.Array package changed]

Data/Chimera.hs:386:20: error: [GHC-76037]
    Not in scope: ‘A.fromListN’
    NB: the module ‘Data.Primitive.Array’ does not export ‘fromListN’.
    Suggested fix:
      Perhaps use one of these:
        ‘G.fromListN’ (imported from Data.Vector.Generic),
        ‘U.fromListN’ (imported from Data.Vector.Unboxed),
        ‘V.fromListN’ (imported from Data.Vector)
    |
386 |   pure $ Chimera $ A.fromListN (bits + 1) (z : zs)
    |                    ^^^^^^^^^^^

Data/Chimera.hs:430:20: error: [GHC-76037]
    Not in scope: ‘A.fromListN’
    NB: the module ‘Data.Primitive.Array’ does not export ‘fromListN’.
    Suggested fix:
      Perhaps use one of these:
        ‘G.fromListN’ (imported from Data.Vector.Generic),
        ‘U.fromListN’ (imported from Data.Vector.Unboxed),
        ‘V.fromListN’ (imported from Data.Vector)
    |
430 |   pure $ Chimera $ A.fromListN (bits + 1) (z : zs)
    |                    ^^^^^^^^^^^

Data/Chimera.hs:504:31: error: [GHC-76037]
    Not in scope: ‘A.fromListN’
    NB: the module ‘Data.Primitive.Array’ does not export ‘fromListN’.
    Suggested fix:
      Perhaps use one of these:
        ‘G.fromListN’ (imported from Data.Vector.Generic),
        ‘U.fromListN’ (imported from Data.Vector.Unboxed),
        ‘V.fromListN’ (imported from Data.Vector)
    |
504 | fromListWithDef a = Chimera . A.fromListN (bits + 1) . go0
    |                               ^^^^^^^^^^^

Data/Chimera.hs:526:33: error: [GHC-76037]
    Not in scope: ‘A.fromListN’
    NB: the module ‘Data.Primitive.Array’ does not export ‘fromListN’.
    Suggested fix:
      Perhaps use one of these:
        ‘G.fromListN’ (imported from Data.Vector.Generic),
        ‘U.fromListN’ (imported from Data.Vector.Unboxed),
        ‘V.fromListN’ (imported from Data.Vector)
    |
526 | fromVectorWithDef a = Chimera . A.fromListN (bits + 1) . go0
    |                                 ^^^^^^^^^^^
Error: cabal: Failed to build chimera-<IP_ADDRESS>.

but everything works fine with
cabal build --constraint='primitive<0.9'

I think it needs a bounds revision!

Thanks! I’m AFK, is it any better now?