ochttp doesn't implement http.Hijacker

I'm using gorilla websockets on a /websockets route exposed by my http server.
I started using ochttp.Handler to get automagic instrumentation (which is great!) but it apparently doesn't allow hijacking the connection: gorilla errors out saying that the response doesn't implement (http.Hijacker.
Do you think it's something that would make sense to implement in ochttp? Or do you recommend exposing my websocket endpoint with a normal http handler separately?
Thanks!

We should consider implementing all the optional interfaces ResponsesWriter might implement in net/http: Flusher, Pusher, Hijacker, etc.

@t-bast is this with an HTTP/1 connection? Does your service allow http.ServeMux successfully when integrated with gorilla/mux?
@ramonza we might need to be conservative with the interfaces that we implement because http.Hijack and HTTP/2 connections are incompatible.

@t-bast no worries, I've been able to repro this and perhaps it'll serve as our non-regression integration test later on at https://gist.github.com/odeke-em/3c2c664416933f2b349cd662b0b63c68.
Actually someone, @basvanbeek might be interested in a gorilla/mux solution over the next couple of weeks when free.

Alright, after some investigation I've concluded that we can safely just make plugin/ochttp's response proxy the call to Hijacker because even the standard library on HTTP/2 connections
if we ask a handler if it implements http.Hijacker it returns true, but on invoking Hijack() it actually panics and the following short integration test should prove it
Server
package main

import (
	"fmt"
	"log"
	"net/http"
	"time"

	"go.opencensus.io/plugin/ochttp"
)

func main() {
	mux := http.NewServeMux()
	mux.HandleFunc("/tick", tick)
	mux.HandleFunc("/hijack", checkHijack)
	h := &ochttp.Handler{
		Handler: mux,
	}
	if err := http.ListenAndServeTLS(":9944", "cert.pem", "key.pem", h); err != nil {
		log.Fatalf("http.ListenAndServeTLS error: %v", err)
	}
}

func checkHijack(w http.ResponseWriter, r *http.Request) {
	log.Printf("Got connection to checkHijack: %+v\n", r)
	h, ok := w.(http.Hijacker)
	log.Printf("h: %v ok: %v\n", h, ok)
	h.Hijack()
}

func tick(w http.ResponseWriter, r *http.Request) {
	log.Printf("Got connection: %+v\n", r)
	for {
		<-time.After(time.Second)
		fmt.Fprintf(w, "The time right now is: %s\n", time.Now())
		w.(http.Flusher).Flush()
	}
}

Client
package main

import (
	"crypto/tls"
	"flag"
	"io"
	"log"
	"net/http"
	"os"

	"golang.org/x/net/http2"

	"go.opencensus.io/plugin/ochttp"
)

func main() {
	var route string
	flag.StringVar(&route, "route", "/tick", "the route to check, alternatives are either /tick or /hijack")
	flag.Parse()
	tr := &http.Transport{
		TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
	}
	http2.ConfigureTransport(tr)
	c := &http.Client{
		Transport: &ochttp.Transport{Base: tr},
	}
	c.Transport = tr
	res, err := c.Get("https://localhost:9944" + route)
	if err != nil {
		log.Fatalf("err: %v", err)
	}
	log.Printf("res: %v\n", res)
	io.Copy(os.Stdout, res.Body)
}

Running it in HTTP/2

Streaming should work on visiting /tick -- proving it is an HTTP/2 connection
Visiting /hijack should panic the handler -- proving further that we have an HTTP/2 connection whose ResponseWriter.(http.Hijacker).Hijack() is a fatal interaction with HTTP/2. This is because  with HTTP/2 we can have multiple requests bidirectionally multiplexed on the same connection while with HTTP/1.X Hijack() takes control of the entire connection and is allowed
The HTTP/1.X variant should pass.

The fix is simple, the tests a little more comprehensive but I'll get this in shortly as I chow down on this dinner.

Awesome thanks guys for the quick and thorough investigation.
It's indeed for HTTP/1.x connections, since for HTTP/2 it probably wouldn't make sense to use a websocket because of the full duplex and multiplexing it already offers.

Thank you for reporting this and for using OpenCensus @t-bast!
I mailed out a fix in #648, we'll merge it in the morning(i.e. a few hours) and you'll be on your way in no time :)

I just had a look at the PR, looks good to me :)
Great work @odeke-em, loving OpenCensus more and more!


python3Packages.hdf5plugin: 4.1.3 -> 4.2.0

Diff: https://github.com/silx-kit/hdf5plugin/compare/refs/tags/v4.1.3...v4.2.0
Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

@ofborg build python3Packages.hdf5plugin python3Packages.hdf5plugin.passthru.tests

Already included in #257792, closing.


Update registry version in Dockerfile.armhf

Similar to https://github.com/docker/docker/pull/19516 this updates the registry version and re-enables the TestCrossRepositoryLayerPush which then works on ARM:
PASS: docker_cli_push_test.go:150: DockerRegistrySuite.TestCrossRepositoryLayerPush	5.799s

LGTM

LGTM

shouldn't affect WindowsTp4, so merging


[fix] don't transform webpack2 query objects

Webpack2 supports query objects which are returned by parseQuery, not a new object instance.
https://github.com/webpack/loader-utils/blob/master/index.js#L68
Because of this, we shouldn't transform the parseQuery result directly which is what this PR addresses.

Thanks!

Thank you! Can you please publish this?


beds/bedrolls doesn't reduce eyeHeight making mobs see the player over walls

seems resetHeight / yOffset / getEyeHeight are inconsistent over EntityPlayer / EntityPlayerMP as well. probably needs some investigation what numbers are correct. refering to yOffset in EntityPlayerMP.getEyeHeight()  seems to fix the issue

fixed for next release


How to install go-swagger on linux and use its embedded swagger commands?

Problem statement
I can install go-swagger on linux with Go, but cannot use the swagger commands
root@photon [ ~ ]# go install github.com/go-swagger/go-swagger/cmd/swagger@latest
go: downloading github.com/go-openapi/analysis v0.21.4
go: downloading github.com/go-openapi/loads v0.21.2
go: downloading github.com/go-openapi/runtime v0.26.0
go: downloading github.com/go-openapi/spec v0.20.9
go: downloading github.com/go-openapi/strfmt v0.21.7
go: downloading github.com/go-openapi/swag v0.22.4
go: downloading github.com/go-openapi/validate v0.22.1
go: downloading github.com/gorilla/handlers v1.5.1
go: downloading golang.org/x/sys v0.8.0
go: downloading github.com/go-openapi/errors v0.20.4
go: downloading go.mongodb.org/mongo-driver v1.11.3
go: downloading github.com/go-openapi/jsonpointer v0.19.6
go: downloading github.com/spf13/viper v1.16.0
go: downloading golang.org/x/tools v0.9.3
go: downloading github.com/go-openapi/jsonreference v0.20.2
go: downloading github.com/felixge/httpsnoop v1.0.3
go: downloading github.com/fsnotify/fsnotify v1.6.0
go: downloading github.com/spf13/afero v1.9.5
go: downloading github.com/spf13/cast v1.5.1
go: downloading github.com/spf13/jwalterweatherman v1.1.0
go: downloading github.com/Masterminds/semver/v3 v3.2.0
go: downloading github.com/google/uuid v1.3.0
go: downloading github.com/huandu/xstrings v1.3.3
go: downloading github.com/imdario/mergo v0.3.12
go: downloading github.com/shopspring/decimal v1.2.0
go: downloading golang.org/x/crypto v0.9.0
go: downloading github.com/rogpeppe/go-internal v1.9.0
go: downloading golang.org/x/text v0.9.0
go: downloading github.com/subosito/gotenv v1.4.2
go: downloading github.com/pelletier/go-toml/v2 v2.0.8
go: downloading golang.org/x/mod v0.10.0
# runtime/cgo
_cgo_export.c:3:10: fatal error: stdlib.h: No such file or directory
    3 | #include <stdlib.h>
      |          ^~~~~~~~~~
compilation terminated.
root@photon [ ~ ]# swagger
-bash: swagger: command not found

Environment
swagger version: 0.30.5
go version: 1.20.12
OS: Linux (Photon/OpenSUSE)

You probably need to install glibc-devel or something. Or run go install with cgo disabled

I installed the build-essential, it can resolve the issue during installation. Is there any possible to document the installation using go on the offcial doc for go-swagger? I didn't find any installation with go in https://goswagger.io/install.html...

You may need to add $(go env GOPATH)/bin to your $PATH.


Feature names for LinearRegressor fitted_params

Currently, the fitted parameters (coefficient and intercept) for LinearRegressor does not include feature names, which makes mapping coefficients back to their input columns complicated when combined with transformations such as OneHotEncoder. E.g.
julia> fps = fitted_params(selected_model)

julia> fps.machines
3-element Array{Any,1}:
 NodalMachine{UnivariateStandardizer} @ 5…02
 NodalMachine{LinearRegressor} @ 6…58
 NodalMachine{OneHotEncoder} @ 8…55

julia> fps.fitted_params_given_machine[fps.machines[2]]
(coefs = [XXX],
 intercept = XXX,)

I think this would be a useful diagnostic feature to have something like
julia> fps.fitted_params_given_machine[fps.machines[2]]
(coefs = [XXX],
 intercept = XXX,
 names = [XXX])

Hi, I'm also interested in this.
If we have:
using MLJ, MLJLinearModels

data = DataFrame(A = rand(10000), B = categorical(rand((1:5),10000)))
label = categorical(rand((1,2,3), 10000))
lr = @pipeline LogRegPipe(
    encode = OneHotEncoder(drop_last = true),
    lr = MultinomialClassifier()
) prediction_type = :probabilistic
m = machine(lr, data, label)
MLJ.fit!(m)

ms, params = fitted_params(m)
coefs = params[ms[1]][1] # 6 x 3 array

is my understanding correct that then coefs would be like ?
7×3 Array{Float64,2}:
  0.00883906   0.0285588   -0.0373979  # <- intercept
  0.0259289   -0.0593046    0.0333757  # <- A
 -0.047085    -0.0247367    0.0718217  # <- B__1
  0.019338     0.0152594   -0.0345974  # <- B__2
  0.0185169    0.0486821   -0.0671989  # <- B__3
 -0.0152293    0.0186303   -0.00340103 # <- B__4
  0.00146942  -0.00146942  -0.00845713 # <- B__5

If you could tell me this, I think I can work on this to upstream into this package.
/cc @tlienart @ablaom

the last row = intercept, so shift everything up once and put intercept on the last row and that's correct.

thanks for the quick reply, okay.

it's more a matter of finding the time to do it...

hehe, I see. Do you want to implement this by yourself ? otherwise I may try to submit a PR about this if I have time next week.


Implement updated spec rules related to CATs

Problem

CAT identifiers could previously collide, which made their use ambiguous
for access control
CAT tag class did not enforce strongly that all CATs are at the front and
this is not required for correctness
CAT identifiers could be version 0 before

Based on https://github.com/CHIP-Specifications/connectedhomeip-spec/pull/5437
we need to fix this.
Fixes #20746
Change overview

Checks CATs are valid when adding/updating NOCs
Adds an AreValid() method to CATValues to ensure
correctness

Testing

Added unit tests for all new methods
Cert tests still pass

This could be an opportunity to address this comment: https://github.com/project-chip/connectedhomeip/pull/20253/files#r913412111

This could be an opportunity to address this comment: https://github.com/project-chip/connectedhomeip/pull/20253/files#r913412111

Done


Add files via upload

School-Website: https://www.chf.de/

@rexlNico I have to close this request without merging, because you requested to add a non-existent domain to this repository: Host chf-stuttgart.de not found: 3(NXDOMAIN) Please ensure that you are familiar with this repository rules located at the bottom of this page and submit a new request with the correct information. Thank you for understanding!


Fix year and month select styling

The padding made the text not fit the height, and being cut off. Removing fixes this issue.

This is not the solution. box-sizing: border-box should be used.
Can you provide a codepen to demonstrate this?

Hi Daniel, removing the padding was the first thing that came to my mind that fixed the issue I was having. If setting box-sizing: border-boxalso fixes the issue, then let's close this PR.


Merge pull request #1 from mxstbr/master

pull from master

Coverage remained the same at 98.217% when pulling 104f89647343ffe59f2521d6574e18205fa6c02d on abduld:master into 5111cd490394d96f42107aa555e2ffe00a79be46 on mxstbr:master.


GoneMad Player

Since the last update, when i scrobble using GoneMad player the artist name get the album title added to it. So instead of scrobbling "The Sound — Skeletons",  it scrobble "The Sound - From The Lion's Mouth — Skeletons" and the artist name become "The Sound - From The Lion's Mouth"

This is likely a change with GoneMad Player and not necessarily SLS.


Adding new Atomik theme; adding new theme documentation engine.

Teaser about the new Atomik theme can be found here: https://www.youtube.com/watch?v=518rQMMBPU0

By following the instructions described at https://documentation.concretecms.org/tutorials/submitting-user-interface-pull-requests-for-concrete5-version-9 I have this error:
ERROR in ../concrete/themes/atomik/skins/default/scss/main.scss
Module build failed (from ./node_modules/css-loader/index.js):
ModuleBuildError: Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
SassError: Can't find stylesheet to import.
  ╷
5 │ @import './bootstrap-overrides';
  │         ^^^^^^^^^^^^^^^^^^^^^^^

I think your bedrock is probably out of date, @mlocati

I don't think that's the issue: here's the state of my bedrock repo:

I'll try to check what's going wrong.


Add configuration option for optimization functions

This lets users specify optimization functions for our core classes.
Some mild issues:

There is some code duplication here
We're taking up the entire foo.optimization namespace with a string, which stops us from being able to add other things.

cc @jcrist

This PR has stalled and should be closed. Given that some of the configuration was implemented in #6087, perhaps the original issue #6083 should be closed too?


Fix how scripts reload outside of ScriptEditor

Relates to #82113
Fixes #89239
Fixes #89029

#82113 made script being reloaded from outside ScriptEditor. The current Resource::reload_from_file() implementation indirectly calls Object::set_edited(true) on the script resource, so any script reloaded that way ends up being overwritten by the engine when a scene they are in is saved.
This is simply making sure we apply the same logic in Script::reload_from_file() as in ScriptEditor::reload_scripts(). Although, it feels quite weird that we purposefully call that method when Script::editor_can_reload_from_file() returns false.

CC @nongvantinh

Hi @paulloz,
When Script::editor_can_reload_from_file() returns false, it means the Editor won't update to reflect new changes in that script.
If the file is edited outside the editor and we don't use the internal editor, there's no way to get the latest changes. Consequently, whenever we use data of that file from ResourceCache, we always get outdated data, which can lead to issues requiring the most current and valid data. For instance, when we press Ctrl + S and the resource's state is marked as edited, then we save the current state of that script using ResourceCache, causing it to override the changes we made previously.
This problem stems from the Script::reload_from_file() method, which hasn't been used before. If it were, this issue would have occurred long ago. However, thanks to #82113, we now know that it doesn't function correctly.

Thanks!


Include SCSS files in NPM release

Can you please include the SCSS files in the output when this is required from NPM? I understand the potential ramifications of this decision as far as potential bugs (I changed the default font-size and now it doesn't work... help), but it is somewhat annoying to have to copy the CSS file into a custom CSS file and either convert it THERE to be SCSS or create overrides for the CSS and override the old school way.

You can import the .css file by omitting the extension. I have this in my .scss file:
@import "../node_modules/alertifyjs/build/css/alertify";

They should be included imo, for people who want to customise them. It's very annoying having to come back to the Github repo to manually pull the SCSS files everytime they change.

Agreed, I also need this, plz.

It would be nice to have the scss files included. I have currently the problem that I can't increase the size of the component easily because everything depends on the body.


extent, location, and projection convenience

These changes add convenience when dealing with bounds, lonlats, and projection objects.
Instead of this
location.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326");

we can now write
location.transform("EPSG:900913", "EPSG:4326");

Instead of this
map.setCenter(new OpenLayers.LonLat(12345, 67890));

we can now write
map.setCenter([12345, 67890]);

Instead of configuring a map like this
var map = new OpenLayers.Map({
    div: "map",
    maxExtent: new OpenLayers.Bounds(-180, -90, 180, 90),
    restrictedExtent: new OpenLayers.Bounds(-180, -90, 180, 90),
    projection: new OpenLayers.Projection("foo"),
    displayProjection: new OpenLayers.Projection("bar"),
    center: new OpenLayers.LonLat(0, 0)
});

we can now write
var map = new OpenLayers.Map({
    div: "map",
    maxExtent: [-180, -90, 180, 90],
    restrictedExtent: [-180, -90, 180, 90],
    projection: "foo",
    displayProjection: "bar",
    center: [0, 0]
});

Looks good! Please merge.

Great work Tim! The only thing to complain about is that one test in Projection.html fails. I'm trying to figure out what's wrong right now.

Thanks for the reviews.  I didn't run the tests after the latest merge.  Those failing tests were due to merging b9517a4cb5a6a21bcf440d3613ce19331fe9b55d (name projection was shortened to p and my code was using the longer name).  I'll fix this up now.

Apologies for the failing tests.  Chrome's cache is killing me.


First attempt at Actions implementation

Co-authored-by: markk<EMAIL_ADDRESS>

Do we want to have CI run on every push? or just the three main ones (develop, main and release)? or all branches.

Do we want to have CI run on every push? or just the three main ones (develop, main and release)? or all branches.

Ideally the main three branches, and on any pull requests made.


Diabolic UI conflicts with other addons

Description
Hi, i'm having some sound issues wiht other addons only when diabolic ui is active, for example Wholly and classic quest log addon, this is the answer they gave me:
The latest version of Wholly will play the sound using the following:
PlaySound(PlaySoundKitID and "igCharacterInfoOpen" or 839);
Note that this is done to handle the situation where Wholly is running in an older environment or the newer one where the sounds need to be numbers.  I would imagine that your custom UI is defining PlaySoundKitID which is causing the problem.  I would suggest you contact them to tell them that if they are setting up a value for this in the global space they are causing problems in other addons.  PlaySoundKitID is something Blizzard controls.
Version Number
1.3.70
Steps to Reproduce
For classic quest log

Install
and press "L" to open the quest log
For wholly requires the grail database
install both
Type /wholly

Only DiabolicUI Enabled
Yes keep getting the errors

I'd say the problem here is that wholly makes assumptions based on he existance of a global command or not, while they should be checking for either client build version or existence of the SOUNDKIT table instead. Because PlaySoundKitID is NOT something Blizzard controls in 7.3.0.
I've posted some suggested fixes for them in your closed bug report over at Curseforge, so hopefully they'll take a look at those and include them. :)

DiabolicUI does this differently now, and should be compatible with all Ace3-based addons, and all those that use the same bad method as Ace3.


Lossless scaling not always working correctly after the overlay closes

Lossless scaling is a tool that uses frame interpolation to generate intermediary frames from an existing picture in games. When using it with poe2 with this tool open, when exiting the overlay after price checking it will not always re-attach itself to the poe2 process and it instead still sees the 'hidden' overlay from this tool. It also seems to happen at other random times when this tool is open, but I don't know what causes that.
A way to work around this would be to add an option in the settings to always close the overlay instead of hiding it under certain situations.

oh that auto closes this, hmm.
Well this is pushed not, let me know if this is working

OOhhh if i put text: Fixes #issue it closes automatically? intersting

It's working correctly now with that option.

Ah, i figured out what else it was that was randomly causing it to happen, when tabbing out of the game, then tabbing back into the game lossless scaling attaches to the awakened overlay instead of the game for some reason.

Hmmm, yeah i don't  think i use lossless so this isn't a problem for me.
Is this still occurring, since reopen?

I have no idea how to fix that unfortunately, hopefully someone with better knowledge than me on electron can help, a temporary workaround for now though is to start the application with --no-overlay, then it instead opens the overlay in a browser and not over the game.

Hmmm, yeah i don't think i use lossless so this isn't a problem for me. Is this still occurring, since reopen?

The new option did fix lossless breaking when opening the price check interface, but the issue of it breaking when alt-tabbing out of the game, then alt-tabbing back in remains.
I have no idea how to fix that unfortunately, hopefully someone with better knowledge than me on electron can help, a temporary workaround for now though is to start the application with --no-overlay, then it instead opens the overlay in a browser and not over the game.


Test with a fresh Firebase environment

Tested with example rules from README.md and only Google Sign In method enabled.


action button not working and sync error Android 14

The action button doesn't work and I'm only able to connect once, after that I have to forget the watch in the app and connect again.
Steps to reproduce:

open app
connect watch as instructed
all settings sync perfectly
disconnect watch by short pressing either mode or 'action' button
pressing the action button doesn't do anything
try to connect watch again as instructed but watch displays 'ERR' in the top right matrix display after flashing 'CNCT' for 8 times, no reaction from the app
press 'forget' in the app and connect watch again
app works until watch is disconnected upon which watch won't connect again unless watch is forgotten in app

Expected behavior:
1.- 4. as above
5. pressing action button launches set action
6. watch can be reconnected without having to forget every time
If theres a way to send logs or provide u with other information please let me know.
Devices:
GW-B5600
Pixel 7
Android 14 UQ1A.231205.015
App ver. 12.1

OK, let us establish a baseline for the problem. Let me ask you a few things first:
What is the version of the app? You can find the version by pressing the (i) in the top-right of the initial screen.
Is this a new behavior? Was it working before, or is this something you have experienced before?
Please make sure the official app is not running on your phone or on phones in the proximity of the watch.
Please make sure this app is not running on a phone in the proximity of the watch.
Does the app work on another phone you might have?
Do you have multiple watches?
I will look into the issue once I understand the situation better. Thanks for reporting this.

A simple thing to try is to go the Android setting, and clear "Storage and Cahe" and see if this fixes the promle. In v12.1, we cahnged the way we store local data, this might be effecting it.

If all else fails, somebody reported that they had to pair the watch manually once from the Android settings, and then it started working. We have tested the app with Android 14, so I assumed that this is something specific to their crDroid OS. It seems that some versions of Android 14 have extra security features that don't allow automatic pairing, or there is a bug in the OS. We are still investigating.
If you try to pair manually, go to Settings, select Bluetooth -> Pair new device, then long-press the lower-left button of the watch, and it will appear in the list of devices. Just pair it then
here is the link
Please let me know how it goes.

Just keeping some notes here for future reference:
Location of DataStore data file:
/data/data/org.avmedia.gshockGoogleSync/files/datastore/CASIO_GOOGLE_SYNC_STORAGE.preferences_pb
Simmilar issue found here:
https://issuetracker.google.com/issues/242755161

[SOLUTION:]

If all else fails, somebody reported that they had to pair the watch manually once from the Android settings ...

did that app works as expected now
(cleared cache b4 for good measure)

Is this a new behavior? [...]
Please make sure the official app is not running on your phone or on phones in the proximity of the watch.
Please make sure this app is not running on a phone in the proximity of the watch.
Does the app work on another phone you might have?
Do you have multiple watches?

new user
no official app installed, no other phones in vicinity
"
n/a
no

A simple thing to try is to go the Android setting, and clear "Storage and Cahe" ...

same behavior as pressing 'forget' in app

... something specific to their crDroid OS ...

stock pixel rom, however custom linux-stable based kernel
(5.10.197-Kirisakura_Raviantah_2.1.0), magisk 26.4, lsposed 1.9.2; if that matters

Great, thanks for the feedback! I'll add this solution to a troubleshooting section.
I'll continue to investigate why this is the case.i can only assume this is a new security feature to prevent apps from maliciously connecting via Bluetooth without the user's knowledge. It does not effect all Android 14 phones, so I'm not sure what is the difference.
I would be really curious how the official app behaves with your phone, but if you have not installed it before, I understand you might be reluctant to compromise your privacy.
Thanks again for reporting this.

I would be really curious how the official app behaves with your phone, but if you have not installed it before, I understand you might be reluctant to compromise your privacy.

Just tried both the 'classic' g shock connected and newer casio watches app and both work as expected. Once paired in app the watch and app reconnect without hiccup. Deleted the watch pairing from my phones bluetooth settings beforehand.
So I'm guessing it's bug specific to your app.

Ok, I'll look into it. Thanks.
On Sun, Feb 18, 2024, 12:14 PM Lexvox @.***> wrote:

I would be really curious how the official app behaves with your phone,
but if you have not installed it before, I understand you might be
reluctant to compromise your privacy.
Just tried both the 'classic' g shock connected and newer casio watches
app and both work as expected. Once paired in app the watch and app
reconnect without hiccup. Deleted the watch pairing from my phones
bluetooth settings beforehand.
So I'm guessing it's bug specific to your app.
—
Reply to this email directly, view it on GitHub
https://github.com/izivkov/CasioGShockSmartSync/issues/75#issuecomment-1951389297,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA7M37XRT7EZFSHPLYSVRJTYUIZGFAVCNFSM6AAAAABDNVBDOOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNJRGM4DSMRZG4
.
You are receiving this because you commented.Message ID:
@.***>

Sounds like you have some good technical skills. Could you help me narrow down the problem?
I suspect it has something to do with the app storage. After connection, the Bluetooth (BT) ID of the watch is stored in the DataStore of the app. Next time, the app will reuse the same ID to connect to the watch until you clear the storage or press "FORGET".
Could you try the following:

Unpair the watch and clear storage from Android settings.
Set up ADB on your PC. Put your phone in "developer" mode and connect it to the PC via USB.
Run the following to see the content of the app's data:

adb shell
run-as org.avmedia.gshockGoogleSync
cat /data/data/org.avmedia.gshockGoogleSync/files/datastore/CASIO_GOOGLE_SYNC_STORAGE.preferences_pb

You should see "File not found".
4. Connect the watch to the phone for the first time. Run the above commands again. This time you should see something like:
LastDeviceName*CASIO GA-B2100
LastDeviceAddress*F6:A1:42:57:7A:07

LastDeviceAddress is what holds the ID of the watch. Let me know if you see it.
Thanks

cleared app, deleted pairing from phones bt setting
looked up the file (nonexistent)
after connecting (in app) it holds my watches id just like in ur xample,
disconnected watch
wont reconnect as before,
without clearing the app or forgetting the watch in app I connected the watch through my phones bt settings and when I switched back to the app the interface was already up displaying the info as expected

also cleared and reconnected twice just to see if the phone changed the id for some reason (it didn't)

Hello @Lexvox
If you are comfortable with it, do you mind building the branch new-ble and testing it with your Android 14? This should address the issue of having to press the "FORGET" button with every connection, without manually pairing the watch.
I replaced my own implementation of the BLE interface with this library. This is supposed to be the "gold standard" when referring to BLE libs, so I hope this fixes the issue.
If you prefer an APK, I can send you to test.
Thanks in advance.

Hi @izivkov
wouldn't mind building it but I'm currently on vacation and don't have my computer with me.
But if you can send me an apk I'll gladly test it.

Oh, sorry to bother you on vacation. Here is the APK, but please don't spend too much time on this, I can get somebody with Android 14 to test it.

I don't mind, not like I'm wasting any beautiful weather here and I enjoy the tinkering :)
Unfortunately after going through initial setup the app crashes about a second after I attempt to connect a second time.
It first reacts to the watch (loading animation plays) but it crashes before the interface comes up.
Yet again the problem is solved by pairing the watch in the device settings first.
I'll send you the crash log via email.

Thanks for the log. I saw this error earlier, and I updated the APK. If you have time, download again give it another try. It does not happen for me. If it deos not work for you, I will post a messages on GitHub regarding this. One of the contributots with Android 12 will try to fix it.
Thanks again
Ivo

Fixed


Do we really need profile sections?

As far as I can tell, none of the existing FontBakery profiles in this repo use more than a single section. It is also not clear to me what benefit we would get from having sections at all.
@graphicore, does the current implementation of profile sections have any interesting/useful feature for this case of multiple sections? I've been reading those portions of the source code but I could not yet figure it out. If not, do we have plans to implement something that uses the info about checks being grouped in sections? Otherwise, I think it only makes the codebase more complex than necessary and I would advocate for deprecating sections.
To be honest, I feel that sections, as a mere subset of a profile, seem to be almost redundant with the concept of a profile. Also, if one needs to run only a subset of a profile, one can use the -c command line flag with keywords that are present in the IDs of the multiple checks needed.

I'd have to look into it more deeply, but in general you are probably right: we failed to use them to create reporting tools for users that help them organizing the information of a report by e.g. section.
In defense of sections, we actually use them when we import profiles into other profiles, to group the checks from a profile into a section, so when different profiles end up in a so called vendor profile, we can look at the section of a check and know from which profile it's coming. The -S,--show-sections flag actually creates a per section summary, like this excerpt of a  command line report:
======== Section results: <Section: fontbakery.profiles.loca> ========
1 check in section

    ERROR: 0
    FAIL: 0
    WARN: 0
    INFO: 0
    SKIP: 0
    PASS: 1

======== Section results: <Section: fontbakery.profiles.hhea> ========
2 checks in section

    ERROR: 0
    FAIL: 0
    WARN: 0
    INFO: 0
    SKIP: 0
    PASS: 2

======== Section results: <Section: fontbakery.profiles.dsig> ========
1 check in section

    ERROR: 0
    FAIL: 1
    WARN: 0
    INFO: 0
    SKIP: 0
    PASS: 0

In so far, there's a relation between single-purpose profiles and sections AND you are wrong saying that not a single profile uses them. What you observe is that not a single profile creates explicitly multiple sections. We also had a discussion once to get rid of all profiles altogether, not sure if this is related. The original profile, e.g. for grouping or for filtering, could also be a property of the check.

In defense of sections, we actually use them when we import profiles into other profiles, to group the checks from a profile into a section, so when different profiles end up in a so called vendor profile, we can look at the section of a check and know from which profile it's coming. The -S,--show-sections flag actually creates a per section summary, like this excerpt of a command line report:
...

I see. But I don't see much value in this reporting of check-results by opentype table sections. I would be OK with deprecating that feature in order to make the codebase less complex.

We also had a discussion once to get rid of all profiles altogether, not sure if this is related.
Not related at all.

If I recall correctly it was not a proposal to get rid of profiles, but instead a discussion about being able to invoke checks by their check-id without having to also specify the profile. But let's not talk about that here, because that proposal is completely unrelated to what we're discussing here.

My conclusion is that I want to completely remove sections from FontBakery. Do you have any advice for things to consider while doing so?

I see. But I don't see much value in this reporting of check-results by opentype table sections.

We should rather ask actual users if such a report is/would be useful to them. But, I can imagine that it's not a well known feature.
It can help you gather information in what general area your problems are located.
The fact that our profiles are by opentype table has nothing to do with the feature, it's a downstream profile authoring decision.

I would be OK with deprecating that feature in order to make the codebase less complex.

Yeah, but this thing is not that complex. Whatever.

My conclusion is that I want to completely remove sections from FontBakery. Do you have any advice for things to consider while doing so?

If you really do it, make it a major version change.
And don't break stuff. :laughing: It will break stuff for sure. If I would write FB now, I wouldn't add sections because we're not really using them. I still think it can be useful and I believe other similar tools (e.g. unit testing frameworks) have similar grouping features, so somewhere someone decided it would be a nice to have feature.

I see. But I don't see much value in this reporting of check-results by opentype table sections.

We should rather ask actual users if such a report is/would be useful to them. But, I can imagine that it's not a well known feature.

Agreed. Here are the things that I see as evidence that this feature is probably not used by anybody:

we do not use it extensively ourselves (which tends to work as an example and people frequently replicate and adapt things they already see working somewhere else)
it is a feature I do not remember ever talking about or hearing other people talk about at all.
we did not get bugfix PRs or issues regarding this feature, which is something that typically happens whenever someone uses a feature, even if doing so privately

It can help you gather information in what general area your problems are located.

yes, maybe. But that could also be just wishful thinking.

The fact that our profiles are by opentype table has nothing to do with the feature, it's a downstream profile authoring decision.
Sure!

I would be OK with deprecating that feature in order to make the codebase less complex.

Yeah, but this thing is not that complex. Whatever.

Legacy code is code that needs to be maintained. It gets in the way when trying to implement new stuff. It got in my way yesterday while I was working on another issue (#3139), for instance.

My conclusion is that I want to completely remove sections from FontBakery. Do you have any advice for things to consider while doing so?

If you really do it, make it a major version change.

YES! That's my plan.

And don't break stuff. laughing It will break stuff for sure.

If somebody is using that, we'll know. And they'll have to adapt. And, again, I think it is extremely unlikely that anyone is using this feature at all.

If I would write FB now, I wouldn't add sections because we're not really using them. I still think it can be useful and I believe other similar tools (e.g. unit testing frameworks) have similar grouping features, so somewhere someone decided it would be a nice to have feature.

I can see that this feature might be useful if we were actively using it. But we're not. And it makes the code a bit harder to maintain & improve. Maybe I am just dealing with a destructive urge in order to clean up that portion of the code. I see no problem if we decide to reintroduce the feature in the future.
“The urge for destruction is also a creative urge!”

we did not get bugfix PRs or issues regarding this feature, which is something that typically happens whenever someone uses a feature, even if doing so privately

Yes, but in general, the checkrunner related code is pretty stable since many years and everyone uses sections all the time, yet probably not explicitly.

Legacy code is code that needs to be maintained. It gets in the way when trying to implement new stuff. It got in my way yesterday while I was working on another issue (#3139), for instance.

I commented there, I don't think that example is related. I don't see how this is a maintenance burden. Also, I'd be available to help maintain stuff in that region.

And they'll have to adapt.

I may at some point have to fork Font Bakery, the checkrunner, not the font specific profiles. I see how some people here want to ultra focus Font Bakery on just the current narrow use case and I disagree with the idea and reasoning around it. I rather believe that a tool that is a bit more generic/flexible than the most narrow current use case is valuable; also because it keeps from introducing bad habits e.g. it helps preserving a separation of concerns.

If I would write FB now, I wouldn't add sections because we're not really using them. I still think it can be useful and I believe other similar tools (e.g. unit testing frameworks) have similar grouping features, so somewhere someone decided it would be a nice to have feature.

I can see that this feature might be useful if we were actively using it. But we're not. And it makes the code a bit harder to maintain & improve.

I disagree a bit. It's super unproblematic code and it's stable since years.

Maybe I am just dealing with a destructive urge in order to clean up that portion of the code.

Sounds as if it was bad and needed cleaning up, but it is not much code and pretty straight forward simple stuff.

“The urge for destruction is also a creative urge!”

That's not reasoning, it's just a platitude.

Hi. I hope you decide not to get rid of Sections. I think a big issue right now is that it's not clear how to use them on a custom profile. I would like to create my own profile and reorganise imported checks into sections that make sense to me, rather than have section names that are less meaningful. I don't care if a check comes from the Notofonts profile, I care about it being grouped with other checks that operate in similar areas.
Would it be possible for someone to provide a small example of how Sections could be used to achieve what I describe above?
Cheers, and thanks in advance,
José

Hello @jmsole. I agree with you, sections are useful for providing custom groupings within a project's specific context.
Here is a basic example that sets up custom sections. Note though, I have been unable to order the check results within the report. I've tried various combinations of passing order or custom_order arguments, but none seem to work. And the documentation on these parameters is basic—I can't really make sense of it.
from fontbakery.fonts_profile import profile_factory
from fontbakery.profiles.universal import (
    profile as profile_universal,
    DESIGNSPACE_CHECKS,
)
from fontbakery.profiles.ufo_sources import (
    profile as profile_ufo_sources,
)

profile = profile_factory(
    sections=[
        Section(
            "UFO linting & fields",
            checks=profile_ufo_sources.checks,
        ),
        Section(
            "UFO designspace",
            # Limit to only `DESIGNSPACE_CHECKS`
            checks=[
                check
                for check in profile_universal.checks
                if check.id in DESIGNSPACE_CHECKS
            ],
        ),
    ],
)

Reorganizing the existing checks into meaningful sections would be nice, but nobody has put effort into it, as far as I am aware. That would be a very nice contribution if anyone reading this feels like participating in the project!

Great, I'd be happy to give that a go @felipesanches.
Any immediate ideas from any of the maintainers as to how to approach this would be welcome.

I suppose maintaining the order in which checks are added to a section would be a nice start.

@simoncozens I have a question for you, if you don't mind. The order of the checks as they are added to Sections is lost because of this line here, which is part of a commit of yours.
To summarise, the line in profile.py does:
scopes = self._analyze_checks(full_order, checks)
# check, signature, scope = item
scopes.sort(key=lambda item: item[1], reverse=reverse)

This sorts the checks on a signature tuple, but in doing so, loses their original order. The signature is determined (in _analyze_checks) based on the number of arguments passed to the check (if I understand it correctly).
What's the reasoning behind the signature, if you recall? Thank you.

Don't look at me - that code has actually been there for ever!
https://github.com/googlefonts/fontbakery/commit/1e8217dea3195d1760facef80361f66c5e9704fe

@graphicore, you're the next one down the commit chain. Any input on what this mechanism (two posts up) is for?
Thanks so much! I don't want to override it if it's important.

The first thing I notice is that it was possible to pass a key function to that sort in https://github.com/googlefonts/fontbakery/commit/1e8217dea3195d1760facef80361f66c5e9704fe but it is no more in since  https://github.com/googlefonts/fontbakery/commit/17434547df4f28358d5be33eb6a737364348222f both committed on the same day, so the refactoring was probably going on for some days before I made a bulk of commits.
From https://docs.python.org/3/library/stdtypes.html#list.sort

key specifies a function of one argument that is used to extract a comparison key from each list element (for example, key=str.lower). The key corresponding to each item in the list is calculated once and then used for the entire sorting process. The default value of None means that list items are sorted directly without calculating a separate key value.

and

The sort() method is guaranteed to be stable. A sort is stable if it guarantees not to change the relative order of elements that compare equal — this is helpful for sorting in multiple passes (for example, sort by department, then by salary grade).

In the older case, passing e.g. key=lambda item: 1, should keep any order in tact. I'm not sure why it was removed by me. The reason is likely, that it was never used.

What's the reasoning behind sorting on the signature—and behind _analyze_checks in general—if you recall? Thank you.

The main reasoning on sorting is that there's eventually a defined order of checks execution, which is mostly important when producing an ordered output, as for the terminal logger, which is linear in nature. As it turns out there are different ways in that such an order could be grouped, mainly in the most used simple case:

(A) first fonts then checks: this would execute/group by the first font and run all checks with it, then by the second font and run all checks with it etc.
(B) first checks then fonts: this would execute/group by the first check then run it with all fonts, then by the second check and run it with all fonts, etc.

There's an  -o ORDER, --order ORDER argument:
                        Comma separated list of order arguments.
                        The execution order is determined by the order of the check
                        definitions and by the order of the iterable arguments.
                        A section defines its own order. `--order` can be used to
                        override the order of *all* sections.
                        Despite the ITERATED_ARGS there are two special
                        values available:
                        "*iterargs" -- all remainig ITERATED_ARGS
                        "*check"    -- order by check
                        ITERATED_ARGS: designspace, font, glyphs_file, ufo
                        A sections default is equivalent to: "*iterargs, *check".
                        A common use case is `-o "*check"` when checking the whole
                        collection against a selection of checks picked with `--checkid`.

As you can see the default is *iterargs, *check" which is like the (A) case above i.e. first use all of the iterargs, which in a simple case is just font. "iterargs" is the args that are iterated to checking one font after another. As a check with the signature (font) will run once for each font.
When you specify -o *check the execution order will be by check first as in the (B).
However, -o check didn't work for me either and by looking into it I found a bug, which is caused by  switching from python2 to python3 PR: https://github.com/googlefonts/fontbakery/pull/4132 In the argument parsing, the order argument is filtered using filter which in py2 would result in a list but in py results in an iterator. That iterator is exhausted by the first section that is processed for order and subsequently order is just the the default for the remaining sections.
Sorting on the signature is in so far relevant, as by changing the --order argument, the signature is changed as well. When *check is first, the first element in the signature is always 1, hence keeping the order of checks stable, but sorting by subsequent arguments. If subsequently, there's a font in the arguments, when it's used by the check, it's value is 1 otherwise it's 0 (font is not used), that would change the sort order.
_analyze_checks also keeps track of iterargs which are introduced indirectly via @conditions used by the check, so if an @condition uses font, the check is still executed once for each font, which is interpreted by the condition.

The above works for me in the terminal reporter, but I don't know well Sections are treated in other reporters. Also in terminal reporter with -j the output order will be scrambled. That and the added information for section start and section end which was making the report harder to read led to removing that information from the terminal reporter. Sections were treated "stepmotherly"  in the past, so some of the reporting for it lacks behind and I believe some of the tooling may have been removed as well.
Just  for the shaping section (which produces only SKIP results with my setup):
I removed some output information and grouped optically to highlight the subject.
Note how each check is executed  for each font before going on to the next check.
fonts/ofl/abeezee$ fontbakery check-googlefonts -n -o *check --succinct  -l PASS *

 >> Check:   com.google.fonts/check/shaping/regression
    Files:   ABeeZee-Italic.ttf
 >> Check:   com.google.fonts/check/shaping/regression
    Files:   ABeeZee-Regular.ttf

 >> Check:   com.google.fonts/check/shaping/forbidden
    Files:   ABeeZee-Italic.ttf
 >> Check:   com.google.fonts/check/shaping/forbidden
    Files:   ABeeZee-Regular.ttf

 >> Check:   com.google.fonts/check/shaping/collides
    Files:   ABeeZee-Italic.ttf
 >> Check:   com.google.fonts/check/shaping/collides
    Files:   ABeeZee-Regular.ttf

Note how for each font all checks are executed going on to the next font.
fonts/ofl/abeezee$ fontbakery check-googlefonts -n  --succinct  -l PASS *

 >> Check:   com.google.fonts/check/shaping/regression
    Files:   ABeeZee-Italic.ttf
 >> Check:   com.google.fonts/check/shaping/forbidden
    Files:   ABeeZee-Italic.ttf
>> Check:   com.google.fonts/check/shaping/collides
    Files:   ABeeZee-Italic.ttf

 >> Check:   com.google.fonts/check/shaping/regression
    Files:   ABeeZee-Regular.ttf
 >> Check:   com.google.fonts/check/shaping/forbidden
    Files:   ABeeZee-Regular.ttf
 >> Check:   com.google.fonts/check/shaping/collides
    Files:   ABeeZee-Regular.ttf

Use -S to get some information about the sections (each profile creates a section currently).

======== Section results: <Section: Google Fonts> ========
270 checks in section

    ERROR: 0
    FAIL: 10
    WARN: 16
    INFO: 11
    SKIP: 54
    PASS: 179

======== Section results: <Section: Universal> ========
64 checks in section

    ERROR: 0
    FAIL: 0
    WARN: 10
    INFO: 4
    SKIP: 10
    PASS: 40

======== Section results: <Section: fontbakery.profiles.cff> ========
6 checks in section

    ERROR: 0
    FAIL: 0
    WARN: 0
    INFO: 0
    SKIP: 6
    PASS: 0

======== Section results: <Section: fontbakery.profiles.cmap> ========
1 check in section

    ERROR: 0
    FAIL: 0
    WARN: 0
    INFO: 0
    SKIP: 0
    PASS: 1

======== Section results: <Section: fontbakery.profiles.head> ========
7 checks in section

    ERROR: 0
    FAIL: 0
    WARN: 0
    INFO: 0
    SKIP: 2
    PASS: 5

======== Section results: <Section: fontbakery.profiles.os2> ========
13 checks in section

    ERROR: 0
    FAIL: 0
    WARN: 0
    INFO: 0
    SKIP: 2
    PASS: 11

...

Thank you @graphicore for all the detailed background information. I will process it all and see if I can come up with some sensible—and, ideally, backwards-compatible—improvements to customise check grouping and sorting (for both runs and reports).


Support xcm transfer on Kusama, Polkadot, Astar, Shiden chain for QR/Ledger Account

Support xcm transfer Kusama, Polkadot, Astar, Shiden for QR Account:
Details:

[x] Polkadot -> Moonbeam/Astar/ Acala
[x] Kusama -> Moonriver/Shiden/Karura
[x] Astar -> Acala/Polkadot
[x] Shiden -> Karura/ Kusama

Support xcm transfer Kusama, Polkadot for Ledger Account:

[ ] Polkadot -> Moonbeam/Astar/ Acala
[ ] Kusama -> Moonriver/Shiden/Karura

Follow issue: #411

At this time, Polkadot and Kusama App not support XCM method
https://github.com/Zondax/ledger-polkadot
https://github.com/Zondax/ledger-kusama

Version test: https://file.cdmteck.com/s/4oimk9zDJ8R5Aai/download?path=%2F&files=./560-merge-build-0.5.5-1660709939675.zip
Validation passed for:

Polkadot -> Moonbeam/Astar/ Acala
Kusama -> Moonriver/Shiden/Karura
Shiden -> Karura/ Kusama

Testing later: Astar -> Acala/Polkadot (https://github.com/Koniverse/SubWallet-Extension/issues/571)

@S2kael Please add support Bifrost chain (follow this issue: https://github.com/Koniverse/SubWallet-Extension/issues/333)

Version test: https://file.cdmteck.com/s/4oimk9zDJ8R5Aai/download?path=%2F&files=./560-merge-build-0.5.5-1660897098135.zip
Please check issue:
Incorrect transaction history when transfer:

[ ] KAR token (from Bifrost to Karura)

[ ] BNC (from Karura to Bifrost)

[ ] KSM (from Bifrost -> Kusama)

Validation Passed!

Version test: https://file.cdmteck.com/s/4oimk9zDJ8R5Aai/download?path=%2F&files=./560-merge-build-0.5.6-1661346290239.zip

Validation record:
552_Validation.zip


Views for user list and construction list

Really nice views, i like the desing, though I would change the style so it fits better our company design


Mail config for developing and testing: "Always CC/BCC" is missing

Regarding Laravel v5.1:
For testing, I always set the mail config "to" array, so that all emails that are sent, will be send to my email:
'to' => [
   'address' =><EMAIL_ADDRESS>   'name' => 'Adam'
],

But what about CC and BCC? Sometimes we have to validate with real customers data and they have CC mail addresses set. I have expected, that when I am using this mail configuration, that all mails will only be sent to this address. But that is not the case - mails to CC are still send to the given address. Same applies to BCC addresses.
It would be great if all mails are only send to the given address in mail config, or that it is possible to set another configuration for CC and BCC.
Thank you!

Hello, good night.
When you say "testing" I suppose you mean manually test your application, maybe in the browser, not real "tests", isn't it?
I'd suggest you using the package https://packagist.org/packages/themsaid/laravel-mail-preview by @themsaid . It will help you to debug the mails your application sends, writing them down to your hard drive into a folder.
If you mean by "testing" real tests I'd suggest using "mailcatcher" (https://laracasts.com/lessons/testing-email-in-laravel), or mocking the Mail object.
Hope this helps.

Hi @driade,
yes, by "testing" I meant testing it in the browser on my local machine, not a test like PHPUnit or something.
Thank you, I will take a look at the suggested links!
But I would prefer to set a "cc" and "bcc" value in the mail config array, just like I can do so with "to". This is a great feature, but useless, if my system also sends mails to cc/bcc.


Typo in the release

Hey,
The project looks really interesting,
I just notice that there was a typo in the release where the spelling of discord seemed wrong in the Front end section

Hey @Skyhero-admin thanks for bringing this up, I would have never noticed.
I ended up updating it myself, As I'm not sure if a contributor can update the release.

Cool,
I am still learning so I hope I can contribute to your future projects when I learn a little more. 😅


How to make PLA communicate with LDAP via TLS?

In the README I find the following:

But this includes stuff like setting the private key which is from what I understand not necessary for TLS. I want phpLDAPadmin to communicate with the LDAP server using TLS. Where do I put the (self signed) ca.crt and or ldap.crt?

https://github.com/osixia/docker-phpLDAPadmin/issues/33
https://github.com/osixia/docker-phpLDAPadmin/issues/72


Created basic terraform script with prod/staging environments

Something is wrong in getting the TF -> GH actions -> AWS link to work. This will require further testing.


Can't use the button Play or Continue

Hi, for some reason clicking on these button does nothing, so i can't use your Mod Manager

Still not working in 1.17
console menu : https://i.imgur.com/tHgplrj.png

Running as admin doesn't change anything
Yes i have the game.bat and the path is good start /d "C:\Program Files (x86)\Steam\steamapps\common\Total War WARHAMMER III" Warhammer3.exe my_mods.txt;
Yes I have steam_appid.txt with 1142710 in it

"The system cannot execute the specified program"
https://i.imgur.com/NiH8hge.png
So i guess the problem is not from your soft, but my windows setting :(

I only have one user on the PC, me
I changed the Security rules on my driver C to set me (the only user) as owner, but it didn't change anything sadly


Roll engine d5deda95176e..f4aadb11cf13 (1 commits)

https://github.com/flutter/engine/compare/d5deda95176e...f4aadb11cf13
git log d5deda95176e..f4aadb11cf13 --no-merges --oneline
f4aadb11c Change FlutterDartProject to keep precedence when looking for the ass… (flutter/engine#6305)
The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

@rmistry @liyuqian : New roll has been created by https://autoroll.skia.org/r/flutter-engine-flutter-autoroll


Update hello-version to 2.12.1 from 2.12

Pushed in a change to add xz as a dependency and also changed the default build line to stable

Looks like the checks passed, will merge it in


🐞 [BUG] -

Issue Verification

[X] I have verified that this is a new bug report.
[X] I'm interested in working on this issue
[X] I'm part of GSSOC organization

Describe the bug
because some reason service page content not visible
https://github.com/jfmartinz/ResourceHub/assets/127659443/219c0a04-17b5-4768-8743-1c3ee4cff5d8
Expected behavior
it should be visible
Steps to reproduce
No response
Additional Context
No response

Hi, currently we're planning the to redesign the website so for now we are not entertaining more issues about the website since we're going to redesign it sooner. Maybe you can work on other issues, thanks


Questions on how to install

Hello There,
I came across your script and would like to know how I would add this to our Icinga2 deployment please.
Thanks!

I have added installation instructions here


Use toolz.unique for possible speedup in ensure_dict

When cytoolz is present, ensure_dict gets a small performance boost in one case.
Otherwise, there is no change in performance.

[ ] Tests added / passed
[x] Passes black dask / flake8 dask

@jrbourbeau I suspected that was the case.  However, in the utils module, I noted a function that import toolz, dependency_depth (though it could probably use lru_cache from functools instead of toolz.memoize).
def ensure_dict(d):
    # original implementation
    if type(d) is dict:
        return d
    elif hasattr(d, "dicts"):
        result = {}
        seen = set()
        for dd in d.dicts.values():
            dd_id = id(dd)
            if dd_id not in seen:
                result.update(dd)
                seen.add(dd_id)
        return result
    return dict(d)

def ensure_dict2(d):
    # using toolz.unique
    if type(d) is dict:
        return d
    elif hasattr(d, "dicts"):
        result = {}
        for dd in unique(d.dicts.values(), key=id):
            result.update(dd)
        return result
    return dict(d)

def ensure_dict3(d):
    # using toolz.merge and toolz.unique
    if type(d) is dict:
        return d
    elif hasattr(d, "dicts"):
        return merge(unique(d.dicts.values(), key=id))
    return dict(d)

With a graph that has 42 values in dicts.values().
ensure_dict
168 µs ± 5.94 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
ensure_dict2 (with toolz.unique)
167 µs ± 3.51 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
ensure_dict3 (with toolz.merge and toolz.unique)
165 µs ± 1.74 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

ensure_dict2 (with cytoolz.unique)
160 µs ± 2.98 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
ensure_dict3 (with cytoolz.merge and cytoolz.unique)
151 µs ± 569 ns per loop (mean ± std. dev. of 7 runs, 1000 loops each)

Perhaps small performance gain isn't worth the trouble of gaining a dependency on toolz.  In that case, I suggest refactoring the function so that the user at least has the option of substituting cytoolz functions. For example
from dask import utils
from cytoolz import unique, merge
utils.unique = cytoolz.unique
utils.merge = cytoolz.merge

If ensure_dict3 form is used, then user can use accelerated unique and merge functions.

Thanks for providing benchmarks for different implementations of ensure_dict! I suspect most users won't manually set the utils.unique or utils.merge attributes. To make the speedup more broadly available to users, I'd prefer to do something like:
try:
    from cytoolz import merge, unique
except ImportError:
    def merge():
        ...

    def unique():
        ...

That said, it's not clear to me that the added code complexity is worth the relatively small performance gain. Out of curiosity, does your use case significantly benefit from using the cytoolz implementations?

I noted a function that import toolz, dependency_depth (though it could probably use lru_cache from functools instead of toolz.memoize)

Good catch. I agree that could be updated to use functools.lru_cache instead

@jrbourbeau submitted #5978 to remove the toolz.memoize usage.
Regarding ensure_dict, I thought we were trying to avoid the usage of toolz/cytoolz. I'm not super attached to these changes and agree that if the payoff doesn't cross some threshold, then probably not worth merging.  In my mind, the payoff is:

Easier to understand code.  merge(unique(d.dicts.values(), key=id)) is pretty clear as to what is happening.
By expressing it in this way, faster merge and unique functions could yield a speedup.  ensure_dict is called in a loop a couple of places in dask and is always the first step of any optimization. My intuition (which might be mistaken) is that this function probably gets called a lot. A small performance increase per call could yield a larger cumulative performance benefit.  My only use case only shows a small performance benefit.

I felt that these changes would be an overall improvement, but if benefits aren't clear enough, I will not develop this PR further. Perhaps better set changes would be to optionally import cytoolz where ever toolz is already being imported.  This seems to be done in some places, but not in others.

Just a reminder that toolz installs tlz as well.  tlz looks just like toolz, but imports from cytoolz if available.  This negates the need for try-except around cytoolz.

@eriknw thanks for pointing that out. Does dask depend on a new enough version of toolz to make use of that?  tlz seems to be in toolz 0.8, but the min version that dask requires is 0.7.3. Perhaps the min version could be bumped to 0.8 (released almost 4 yrs ago)? That would also make the version checking in dask/bag/core unnecessary.

@groutr can you provide updated benchmarks with the new implementation.
Bumping to toolz>=0.8 and import tlz sounds fine to me, but that should likely be done separately.

@TomAugspurger I agree that using tlz should be done in another PR.
I will work on some more detailed benchmarks.

Just a reminder that toolz installs tlz as well. tlz looks just like toolz, but imports from cytoolz if available. This negates the need for try-except around cytoolz.

I did not even know this! 🤯 Thanks Eric! 😄

Was this showing up in performance profiles somewhere?  I hesitate to start rewriting toolz code inside of Dask if it's not improving performance of full workloads.
It's really easy to start microbenchmarking things and improving individual functions without actually improving user experience.  I think that profiling and tuning are really important, but I think that we need to start with more wholesale workloads.  If folks don't mind, I'd prefer to close this PR.

Closing this PR for now. @groutr if you have a workload where ensure_dict is becoming a performance bottleneck, please feel free to reopen


GooseMod does not currently load any modules when run in a browser instance of Discord

When GooseMod is run in the browser version of Discord it attempts to fetch the module list, but due to CSP it can't so the injection process is halted.

Now relies on a CSP bypassing and / or a JS injecting extension.


Add more less-like keybindings

VGrep mimics a better grep -C∞ | less, so I think it should have some additional bindings that less has.

Ctrl-u, Ctrl-d: go up/down half a page
Ctrl-b, Ctrl-f: go up/down a full page
n/N to jump to the next/previous hit in the current file

I'm a bit sceptical about n/N, since with implementing a search within the results list/pager, these would be the keys to map to next-match/previous-match. So I'm hesitating to make them default, but with #35 you can define them in your config file:
keybindings:
    pager-keybindings:
        n: next-result
        N: prev-result

Fair enough! The keybinding patch solves this issue.

Would be nice if scrolling commands (alternatives for PageUp/PageDown keys) can make it to the default config.

Implementing the »half-page« scroll for the files overview is quite tricky, but rather simple for the pager. Considering it for the next release.


Question about running a trained ONNX model

If I have an exported serialized ONNX model, will hardware acceleration such as AVX-512 only take place if the original ngraph distribution was compiled on a machine with AVX-512 CPU extensions?
Or in other words, if I test on a non-AVX-512 system and then bundle the entire package up and run it on a different system with AVX-512 extensions will inference be AVX-512 hardware accelerated?
Apologies in advance if this is the wrong forum for this question.

For the most part, you will get AVX-512 hardware acceleration through MKLDNN kernels. There are a few kernels (e.g, Eigen-based operator implementations) that are compiled during ngraph build process which will not use the target system's ISA.

Is there any way to specify the target architecture during the build process for this?

Not currently but I have a PR that'll let you do this via CMake. When this is merged, you'll be able to change it like so:
cmake -DNGRAPH_TARGET_ARCH=skylake-avx512 ...

Awesome, thank you.

I also added this cmake option to the documentation to go in with this PR.


Uploading video file crashes desk.. even on demo.

Hi,
A bit flustered by this one. No matter what I do, I cannot get Sanity Desk to play nicely with this plugin.
I'll add a schema according to the spec, copying and pasting whats below:
    {
      title: "Video blog post",
      name: "videoBlogPost",
      type: "document",
      fields: [
        { title: "Title", name: "title", type: "string" },
        {
          title: "Video file",
          name: "video",
          type: "mux.video"
        }
      ]
    }

And no matter the file size or duration, each time it crashes Sanity Desk with this error:
Error: Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.
    at checkForNestedUpdates (/static/js/vendor.bundle.js:28133:15)
    at scheduleUpdateOnFiber (/static/js/vendor.bundle.js:26204:3)
    at Object.enqueueSetState (/static/js/vendor.bundle.js:17670:5)
    at MuxVideo.956.Component.setState (/static/js/vendor.bundle.js:3554:16)
    at MuxVideo.componentDidUpdate (/static/js/app.bundle.js:97380:14)
    at MuxVideo.componentDidUpdate (/static/js/app.bundle.js:245636:123)
    at commitLifeCycles (/static/js/vendor.bundle.js:24877:22)
    at commitLayoutEffects (/static/js/vendor.bundle.js:27843:7)
    at HTMLUnknownElement.callCallback (/static/js/vendor.bundle.js:5197:14)

My Schema within the default schema file is configured as such:
// First, we must import the schema creator
import createSchema from 'part:@sanity/base/schema-creator'

// Then import schema types from any plugins that might expose them
import schemaTypes from 'all:part:@sanity/base/schema-type'

// Then we give our schema to the builder and provide the result to Sanity
export default createSchema({
  // We name our schema
  name: 'movie',
  // Then proceed to concatenate our document type
  // to the ones provided by any plugins that are installed
  types: schemaTypes.concat([
    {
        title: "Example Document Type",
        name: "exampleDocumentType",
        type: "document",
        fields: [
            {
                title: "Greeting",
                name: "greeting",
                type: "string"
            },
            {
                title: "Video file",
                name: "video",
                type: "mux.video"
            }
        ]
    }
  ])
})

The video, however, does seem to successfully upload to Mux. So I'm a bit unclear why this crash is happening.
For the record, I've tried this with both the Movies demo thats available as well as starting my own project. This product was basically exactly what I was looking for so this is quite frustrating.

Hi Paal,
How frustrating indeed. Let's try to resolve this one. To help us reproduce the issue, could you share what versions of Sanity you are on? You can find out by running sanity versions in the CLI (or checking your package.json file).
Also, are you in our Slack community by any chance? If so, please feel free to reach out to @Peter in DM so we can troubleshoot in real-time.

Hi there!
Sanit versions outputs
@sanity/cli  1.150.7 (up to date)

I'm not in the slack community - but I'll definitely join.

Hey folks,
I have the same issue. Sanity CLI 2.0.1. Was this resolved?

Hey @rosnovsky ,
I unfortunately went another direction with the CMS as I couldn't figure out what was causing this.
Things that fixed it for me, (although I'm not sure this is a permanent fix but seemed to fix some things).

Disabling all cookie and content tracking my browser. (This fixed me being unable to login with Firefox).
Using a different OS. I still have not gotten MacOS to work with Sanity and Mux.

Things I tried that didn't fix it for me, but might still be worth a shot:

Reinstalling NodeJS.
Manually updating to latest version of NodeJS.
Reinstalling Sanity CLI
Installing Node, NPM through a package manager (homebrew)
Installing Node, NPM through regular downloadable installer
Installing Node, NPM through cURL

Here is my final comment from the slack conversation w/ Sanity.

This plugin does indeed work on a different computer with Pop! OS through Firefox.

On MacOS, I've tried changing my Node version to match what was on my Pop! OS machine, that did not work. I've tried Chromium, Firefox Nightly, Safari, and Chrome.

I had not gotten the chance to properly test Firefox, as I could not get the login to work. I had to disable all of my tracking protections in Firefox to get the login to work (probably due to the login cookie). Once I did that, I can properly view an uploaded video.

Chromium is where I was having the issues when I made this post. All of the output was from Chromium, if that makes any difference. Still having issues with the sanity studio crashing in Chromium.

Safari is basically unresponsive until I disabled all of the cross site tracking. It currently is still unable to load the Sanity Dashboard, however (stuck at connecting to sanity.io....)

Chrome seems to be functioning perfectly, however, there is still error output in the console. Firefox is also functioning well, but still has similar error output.

Unfortunately it seems like there's some kind of bug with Sanity CLI for Mac and this plugin that only affects certain browsers. As far as I'm aware there hasn't been a fix implemented.

Yeah... I tried a bunch of things, including trying Linux, different browsers, and I'm not sure the issue is there.
There must be some sort of a loop that constantly sets input field state as soon as the video is uploaded. I'd love to take a shot at fixing it, but I'm unsure where to look and what to look for :/

yeah, sorry man. I'm still not totally sure why switching OS would even resolve it, considering its a very similar environment, same node version, etc.
And yeah - I'm in agreement with you it seems to be related to the state on upload. In any case this plugin definitely isn't able to be shipped to clients at this point, so here's hoping they patch it soon.

@rosnovsky @paalwilliams I tried and I was unable to repro this. I would <3 to get a repro case (Mac) so that I can work on a patch. I'm running sanity locally

I don't know what I did ~wrong~ right, but reinstalling the plugin solved it for me. No clue why or how 🤷


Add Climax x Mecha by SmK

reject
I cant even tell if it syncs, it just sounds so bad... The mashups should at least have some quality


Fixed plugin suicide after merging #80

After merging #80, before_plugin_rm.js hook fires after uninstalling ANY plugin, which removes all of configs additions. And after_plugin_add.js after ANY plugin installs, which makes doubles of it.

@sarriaroman Any chance this could get merged? This fixes another bigger issue where if you have your plugins saved with variables to config.xml and run cordova platform add android on a new machine the fabric plugin doesn't get setup correctly. Otherwise this plugin has to be explicitly re-installed for it to work.

Published under v1.1.9


plans to implement mutations ?

I suppose it's not trivial at all to implement mutations as well - but i had to ask the question !

I haven't looked into mutations yet, so I don't know yet. I'll post here when I do.

I am also interested, are there any news on this topic?

It's somewhat related to https://github.com/Vincit/objection.js/issues/211 ?

Hi, I'm also interested in this. How can I either add mutations after the fact, or during the SchemaBuilder?  I have forked the project and already made some other small changes. I'm also already generating the JSON schema directly from MySQL, and feeding it into SchemaBuilder, that's working great.
Can you perhaps give me some pointers, so I can take a stab at this myself?

@koskimas Hi Sam,  I really need to implement mutations in my model. I've had a look at the code, added duplicate functions for _resolveForModel(), _filterForArgs() as _mutationsForModel(), _filterForMutationArgs() etc, added 'upsertXXX' operations and created a 'Mutations' tag in the schema, but I'm missing something. I'm not the Guru you are.  Everything appears to be correct in the schema, as far as I can tell.
My code seems to be calling the Objection.js update pathways, but I'm getting errors about missing properties, and I can't seem to track down where the problems are, and I'm obviously missing something fundamental.
I have a model that looks like this:
Type IwRegion {
  id: Int!
  country_id: Int!
  name: String!
}

The mutation looks like this:
mutation regionUpsert ($Id: Int!, $Name: String!)
	{
    upsertIwRegion (id: $Id, name: $Name)
    	{
        id
        name
      }
  }

with variables:
{
  "Id": 1,
  "Name": "New Region Name"
}

and getting errors like:
Error: {
  "name": [
    {
      "message": "should have required property 'name'",
      "keyword": "required",
      "params": {
        "missingProperty": "name"
      }
    }
  ],
  "country_id": [
    {
      "message": "should have required property 'country_id'",
      "keyword": "required",
      "params": {
        "missingProperty": "country_id"
      }
    }
  ]
}

Please can you assist, or at least point me in the right direction? I'd really appreciate it!

@Trellian I'm also interested in Mutations support. However, I can't agree that it should be implemented the same way as the Query part, like autogenerated CRUD. I consider GraphQL as a CQRS pattern implementation in some way. In particular, you have Query part (Read Model in CQRS terms) which is about reporting and Mutations part  (White Model in CQRS term), which is about changing your domain model. So in this terms each Mutation is a Command which name should be very precise about the intent (i.e. changeTaskStatus instead of changeTask with status field modified.) and the Command handler can have complex side effects and business logic. So, I don't think that overall it's a good idea to implement mutations in CRUD way and autogenerate them. However, I would really appreciate if it would be possible to supply custom Mutations part for the schema, for instance in build() function. @koskimas What do you think?

FWIW to anyone here, I've made a PR that adds (very) basic Mutation support in PR #30

@nasushkov Sorry, I didn't see your comment until now.
Yes, I agree with you in principle. However, I don't think that's the whole story. Some Mutations do affect the entire Model, such as a 'Create', and while CQRS is perfect for single field actions and state changes, there is also a requirement for multi-field mutations.
If for example, an user wishes to change their address in the DB because they've moved (a poor example, admittedly), or a more complex one for a business action.
Please have a look at the PR #30 I've just created. You can do Updates and Patches, and the definition of the mutation is left entirely up to the client end schema, so there is no violation of CQRS from the client side.
I also don't think it's feasible to write a Mutation for every single field in every table... The server side must allow for multiple-field or whole-record mutations by definition. I think that CRUD is more applicable to the backend, and CQRS to the frontend.
At any rate, I'm not going to argue the point. I just needed basic Mutation support. I'm hoping @koskimas and others will find the PR useful, and either reimplement it properly, or add to it.

@Trellian I wouldn't say that CQRS is convenient only for single field changes. Actually, you can implement CRUD with CQRS. However, I wouldn't go with CQRS if you have only CRUD operations in your domain. The power of CQRS and Command pattern, in particular, is that it allows you to be much more expressive and flexible than with CRUD (the same analogy with Mutations and REST).
Anyway, regarding the topic: I've checked your PR, while it seems sound for some cases it's still not universal and doesn't cover all cases for me. For instance, if I want to implement mutation resetPassword I need to establish new api endpoint for that case. That's a bummer.
I've created a small PR #31 which allows enhancing the schema with a custom Mutations implementation. I also think that it would be better if your implementation for mutations can be used as a plugin for that case, i.e. in a separate module like objection-graphql-mutations  and could be optionally merged with this query schema. I think it would be much more flexible.

@nasushkov  Thanks for the feedback. As I mentioned, my PR is for a really basic version of Mutation support, and I welcome additional input. At this point. objection-graphql currently has no support for Mutations at all, so I consider my PR a starting point only. A module-based implementation would be great.
As to the philosophy, as with anything IRL, both CRUD and CQRS come with their benefits and challenges. Also, I didn't only say that CQRS is only convenient for single field changes, I included state changes which loosely implies CQRS. I personally contend that CRUD is a lower implementation layer for CQRS (yes, I know that one can implement CRUD in CQRS, but that really is putting the cart before the horse).
CQRS implies Event Sourcing and the requirement for some sort of messaging system, and one pattern even suggests reconstitution of the current state of a system from the history of state changes (I have 15 years experience with that in a production env). All good and well. However, objection-js is an ORM. Adding objection-graphql doesn't change that. objection-graphql is a layer that generates a graphql API. Mutation support was missing, I suspect because it's a bit of a minefield.
As an aside, CQRS in general needs additional (complex) layers in order to implement a working solution for a real-world application, and I need to get work done. We're talking significant complexity, especially with Event Sourcing, Messaging and Eventual Consistency. This is not yet the purview of  objection-graphql. It may well be, in time.
As it stood, I had a system with over 200 tables, and no way of declaring Mutations in objection-graphql. Now I can write my client-side mutations, knowing that they will work. Yes, it's not perfect, but it's a start. CQRS support will come in time, along with the goodness of scalability, uptime , ACL etc.
I really welcome your PR #31, I hadn't thought of doing it that way, and yes it is very flexible. I plan to use it in conjunction with my PR #30. At some point, I will try to implement some sort of 'extend/overide' mutation ability via this mechanism, so that I can get the basic CRUD facilities, but hide/replace them behind a CQRS implementation.
Further thoughts are very welcome!

@timhuff Are you still actively working on this project? My team is interested in using objection-graphql and I personally can contribute some effort to it, so I wonder if you would consider granting co-maintainership to some additional people :)

@kibertoad I don't really have time to maintain this anymore. After using it to some extent, I've found I'm not a huge fan of the overall design of the project. At one point I was interested in rewriting it but I'm simply not utilizing it to a sufficient degree anymore. That said, I don't have control over maintainers.

@timhuff Whom should I ping for maintainership access?


Strategize doesn't actually put the commands in Hand

Should be fixed as of 0.9-Beta.2

Should be fixed as of 0.9-Beta.2


[BUG] Upgrade problems: "duplicate column name: Y"

Describe the bug
I upgraded to 0.12.2 (not sure from what version, has been a while since I updated). Now my logs keep saying "duplicate column name: Y".
To Reproduce
Upgrade to 0.12.2.
Expected behavior
No errors
Screenshots
See logs below
Desktop:

LNbits version: 0.12.2.
Database sqlite

Additional context
Add any other context about the problem here.
Mar 07 08:03:06 srv112 poetry[33597]: [SQL: ALTER TABLE proofs_used ADD COLUMN Y TEXT]
Mar 07 08:03:06 srv112 poetry[33597]: (Background on this error at: http://sqlalche.me/e/13/e3q8)
Mar 07 08:03:06 srv112 poetry[33597]: 2024-03-07 08:03:06.53 | ERROR | lnbits.tasks:catch_everything_and_restart:52 | will restart the task in 5 seconds.
Mar 07 08:03:06 srv112 poetry[33597]: 2024-03-07 08:03:06.54 | DEBUG | lnbits.extensions.cashu.lib.cashu.core.migrations:run_migration:72 | Migrating mint db: m014_proofs_add_Y_column
Mar 07 08:03:06 srv112 poetry[33597]: 2024-03-07 08:03:06.54 | ERROR | lnbits.tasks:catch_everything_and_restart:50 | caught exception in background task:
Mar 07 08:03:06 srv112 poetry[33597]: 2024-03-07 08:03:06.54 | ERROR | lnbits.tasks:catch_everything_and_restart:51 | Traceback (most recent call last):
Mar 07 08:03:06 srv112 poetry[33597]:   File "/home/bitcoin/.cache/pypoetry/virtualenvs/lnbits-cKTwH27K-py3.11/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
Mar 07 08:03:06 srv112 poetry[33597]:     self.dialect.do_execute(
Mar 07 08:03:06 srv112 poetry[33597]:   File "/home/bitcoin/.cache/pypoetry/virtualenvs/lnbits-cKTwH27K-py3.11/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
Mar 07 08:03:06 srv112 poetry[33597]:     cursor.execute(statement, parameters)
Mar 07 08:03:06 srv112 poetry[33597]: sqlite3.OperationalError: duplicate column name: Y
Mar 07 08:03:06 srv112 poetry[33597]: The above exception was the direct cause of the following exception:
Mar 07 08:03:06 srv112 poetry[33597]: Traceback (most recent call last):
Mar 07 08:03:06 srv112 poetry[33597]:   File "/opt/lnbits/lnbits/tasks.py", line 46, in catch_everything_and_restart
Mar 07 08:03:06 srv112 poetry[33597]:     await func()
Mar 07 08:03:06 srv112 poetry[33597]:   File "/opt/lnbits/lnbits/extensions/cashu/tasks.py", line 12, in startup_cashu_mint
Mar 07 08:03:06 srv112 poetry[33597]:     await migrate_databases(db, migrations)
Mar 07 08:03:06 srv112 poetry[33597]:   File "/opt/lnbits/lnbits/extensions/cashu/lib/cashu/core/migrations.py", line 102, in migrate_databases
Mar 07 08:03:06 srv112 poetry[33597]:     await run_migration(db, migrations_module)
Mar 07 08:03:06 srv112 poetry[33597]:   File "/opt/lnbits/lnbits/extensions/cashu/lib/cashu/core/migrations.py", line 73, in run_migration
Mar 07 08:03:06 srv112 poetry[33597]:     await migrate(db)
Mar 07 08:03:06 srv112 poetry[33597]:   File "/opt/lnbits/lnbits/extensions/cashu/lib/cashu/mint/migrations.py", line 414, in m014_proofs_add_Y_column
Mar 07 08:03:06 srv112 poetry[33597]:     await conn.execute(
Mar 07 08:03:06 srv112 poetry[33597]:   File "/opt/lnbits/lnbits/db.py", line 221, in execute
Mar 07 08:03:06 srv112 poetry[33597]:     return await self.conn.execute(
Mar 07 08:03:06 srv112 poetry[33597]:            ^^^^^^^^^^^^^^^^^^^^^^^^
Mar 07 08:03:06 srv112 poetry[33597]:   File "/home/bitcoin/.cache/pypoetry/virtualenvs/lnbits-cKTwH27K-py3.11/lib/python3.11/site-packages/sqlalchemy_aio/base.py", line 291, in execute
Mar 07 08:03:06 srv112 poetry[33597]:     rp = await self._run_in_thread(
Mar 07 08:03:06 srv112 poetry[33597]:          ^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 07 08:03:06 srv112 poetry[33597]:   File "/home/bitcoin/.cache/pypoetry/virtualenvs/lnbits-cKTwH27K-py3.11/lib/python3.11/site-packages/sqlalchemy_aio/base.py", line 234, in _run_in_thread
Mar 07 08:03:06 srv112 poetry[33597]:     return await _self._worker.run(_func, args, kwargs)
Mar 07 08:03:06 srv112 poetry[33597]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 07 08:03:06 srv112 poetry[33597]:   File "/home/bitcoin/.cache/pypoetry/virtualenvs/lnbits-cKTwH27K-py3.11/lib/python3.11/site-packages/sqlalchemy_aio/asyncio.py", line 70, in run
Mar 07 08:03:06 srv112 poetry[33597]:     return request.response.unwrap()
Mar 07 08:03:06 srv112 poetry[33597]:            ^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 07 08:03:06 srv112 poetry[33597]:   File "/home/bitcoin/.cache/pypoetry/virtualenvs/lnbits-cKTwH27K-py3.11/lib/python3.11/site-packages/outcome/_impl.py", line 213, in unwrap
Mar 07 08:03:06 srv112 poetry[33597]:     raise captured_error
Mar 07 08:03:06 srv112 poetry[33597]:   File "/home/bitcoin/.cache/pypoetry/virtualenvs/lnbits-cKTwH27K-py3.11/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1003, in execute
Mar 07 08:03:06 srv112 poetry[33597]:     return self._execute_text(object_, multiparams, params)
Mar 07 08:03:06 srv112 poetry[33597]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 07 08:03:06 srv112 poetry[33597]:   File "/home/bitcoin/.cache/pypoetry/virtualenvs/lnbits-cKTwH27K-py3.11/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1172, in _execute_text
Mar 07 08:03:06 srv112 poetry[33597]:     ret = self._execute_context(
Mar 07 08:03:06 srv112 poetry[33597]:           ^^^^^^^^^^^^^^^^^^^^^^
Mar 07 08:03:06 srv112 poetry[33597]:   File "/home/bitcoin/.cache/pypoetry/virtualenvs/lnbits-cKTwH27K-py3.11/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
Mar 07 08:03:06 srv112 poetry[33597]:     self._handle_dbapi_exception(
Mar 07 08:03:06 srv112 poetry[33597]:   File "/home/bitcoin/.cache/pypoetry/virtualenvs/lnbits-cKTwH27K-py3.11/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception
Mar 07 08:03:06 srv112 poetry[33597]:     util.raise_(
Mar 07 08:03:06 srv112 poetry[33597]:   File "/home/bitcoin/.cache/pypoetry/virtualenvs/lnbits-cKTwH27K-py3.11/lib/python3.11/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
Mar 07 08:03:06 srv112 poetry[33597]:     raise exception
Mar 07 08:03:06 srv112 poetry[33597]:   File "/home/bitcoin/.cache/pypoetry/virtualenvs/lnbits-cKTwH27K-py3.11/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
Mar 07 08:03:06 srv112 poetry[33597]:     self.dialect.do_execute(
Mar 07 08:03:06 srv112 poetry[33597]:   File "/home/bitcoin/.cache/pypoetry/virtualenvs/lnbits-cKTwH27K-py3.11/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
Mar 07 08:03:06 srv112 poetry[33597]:     cursor.execute(statement, parameters)
Mar 07 08:03:06 srv112 poetry[33597]: sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) duplicate column name: Y
Mar 07 08:03:06 srv112 poetry[33597]: [SQL: ALTER TABLE proofs_used ADD COLUMN Y TEXT]
Mar 07 08:03:06 srv112 poetry[33597]: (Background on this error at: http://sqlalche.me/e/13/e3q8)

cc @callebtc

Hmm might this be a cashu problem?
lnbits.extensions.cashu.lib.cashu.core.migrations:run_migration:72 | Migrating mint db: m014_proofs_add_Y_column
I do have that plugin installed. v0.4.5 .

https://github.com/lnbits/cashu/issues/67


Is their a lunix build by any chance?

I'm concern ed

and no there isn't yet

and no there isn't yet

the terrible image XDD


NTR: hippocampal microglial cell

see
https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSM1657927
def: "Microglial cell that is part of the hippocampus." []
(to follow
[Term]
id: CL:0001033
name: hippocampal granule cell
namespace: cell
def: "Granule cell that is part of the hippocampus." []
is_a: CL:0001032 ! cortical granule cell
is_a: CL:0002608 ! hippocampal neuron
intersection_of: CL:0000120 ! granule cell
intersection_of: part_of UBERON:0001954 ! Ammon's horn
)

see
https://gitlab.isb-sib.ch/Bgee/expression-annotations/issues/20#note_5982
and use of 'Annotation Extension'


Introduce gops to webserver pkg

Also vendors gops and osext (gops' only dependency).
Fixes #205

Why so many commits for a single feature?

There's no harm in having multiple commits now that github supports "squash and merge", though I can also squash it all locally and push again. Thoughts?

It depends on who chooses what to do with it as not everyone knows GH supports it – for some time now. If you don't care, who will?

Right, I'll do it myself then, thanks for the hint.

Thanks y'all for such a quick review! o/


Hindi TN support Cardinal, Decimal, Fraction, Date

What does this PR do ?
Add a one line overview of what this PR aims to accomplish.
Before your PR is "Ready for review"
Pre checks:

[ ] Have you signed your commits? Use git commit -s to sign.
[ ] Do all unittests finish successfully before sending PR?

pytest or (if your machine does not have GPU) pytest --cpu from the root folder (given you marked your test cases accordingly @pytest.mark.run_only_on('CPU')).
Sparrowhawk tests bash tools/text_processing_deployment/export_grammars.sh --MODE=test ...

[ ] If you are adding a new feature: Have you added test cases for both pytest and Sparrowhawk here.
[ ] Have you added __init__.py for every folder and subfolder, including data folder which has .TSV files?
[ ] Have you followed codeQL results and removed unused variables and imports (report is at the bottom of the PR in github review box) ?
[ ] Have you added the correct license header Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. to all newly added Python files?
[ ] If you copied nemo_text_processing/text_normalization/en/graph_utils.py your header's second line should be Copyright 2015 and onwards Google, Inc.. See an example here.
[ ] Remove import guards (try import: ... except: ...) if not already done.
[ ] If you added a new language or a new feature please update the NeMo documentation (lives in different repo).
[ ] Have you added your language support to tools/text_processing_deployment/pynini_export.py.

PR Type:

[ ] New Feature
[ ] Bugfix
[ ] Documentation
[ ] Test

If you haven't finished some of the above items you can still open "Draft" PR.

please merge main to this PR so all other languages are up to date for testing

please merge main to this PR so all other languages are up to date for testing

Yes the main branch is merged


ProtocPlugin should not activate for all projects in a multi-project build

override def trigger: PluginTrigger = allRequirements

should be replaced with
override def trigger: PluginTrigger = noTrigger

(or just deleted, as noTrigger is the default).
projectSettings has side-effects (e.g., creating directories) and so it should not be called unless the plugin has been explicitly enabled.
(This is especially annoying when using AkkaGrpcPlugin, which does not auto-activate; but its dependency on ProtocPlugin triggers a project-wide activation.)

Hi @jeffrey-aguilera , thanks for the feedback, since this would be a breaking change, I would be hesitant to do this. Can you clarify how the current behavior negatively impacts your project, as the default behavior of the plugin is no-op unless PB.targets is set.

The observable difference is the creation of all the output directories; logging errors for projects that do not use protobuf; and incorrect plugins listing in sbt.
For instance, I have a stream of errors like:
/Users/jaguilera/KariusDx/karius/project/com.kariusdx.invoicing-grpc/main/proto: warning: directory does not exist.
/Users/jaguilera/KariusDx/karius/project/com.kariusdx/main/protobuf: warning: directory does not exist.
/Users/jaguilera/KariusDx/karius/project/com.kariusdx.invoicing/main/protobuf: warning: directory does not exist.
/Users/jaguilera/KariusDx/karius/project/com.kariusdx.rendering/main/protobuf: warning: directory does not exist.
/Users/jaguilera/KariusDx/karius/project/com.kariusdx.salesforce/main/protobuf: warning: directory does not exist.
/Users/jaguilera/KariusDx/karius/project/com.kariusdx.actors/main/protobuf: warning: directory does not exist.
/Users/jaguilera/KariusDx/karius/project/com.kariusdx.http/main/protobuf: warning: directory does not exist.
/Users/jaguilera/KariusDx/karius/project/com.google-protobuf/main/proto: warning: directory does not exist.
/Users/jaguilera/KariusDx/karius/project/com.kariusdx.s3/main/protobuf: warning: directory does not exist.
/Users/jaguilera/KariusDx/karius/project/com.kariusdx.mail/main/protobuf: warning: directory does not exist.

(many more ... I have a large monorepo with about 10 protobuf projects and 100+ non-protobuf)

I believe the warnings are printed when a project that defines in PB.targets dependsOn a project that doesn't have a src/main/protobuf. The new version, 1.0.0-RC4 filters out non-existing directories before passing them to protoc. Also, it wouldn't create directories unnecessarily. Can you try out 1.0.0-RC4 and report if there are any side-effects remaining?

I come here with the same problem.
I can confirm 1.0.0-RC4 doesn't have this issue 👍
Thanks Samet

I believe the issue is resolved at this point. Don't hesitate to leave further comments if there are any undesirable side effects for projects without PB.targets

I believe the issue is resolved at this point. Don't hesitate to leave further comments if there are any undesirable side effects for projects without PB.targets


update bundle and deprecate factory_girl

factory_girl deprecated in favor of factory_bot, see
https://github.com/thoughtbot/factory_bot/blob/v4.9.0/UPGRADE_FROM_FACTORY_GIRL.md
bump rails from 5.1.0 to 5.1.5
remove deprecated ActiveSupport.halt_callback_chains_on_return_false
= false, it's already default behavior
bundle update to fix security vulnerabilities
docker: ruby 2.3 to 2.5, apk add use --no-cache, remove bonus
install of rails that bundle will handle, dumb-init 1.0.1 to
1.2.1, throw errors if Gemfile has been modified since
Gemfile.lock, use COPY instead of ADD
update puma gem to deal with pg openssl/libressl switch

@mikecook Thank you so much for the contribution.


How the #&@%# did I break this?

Yeah it seems the issue is in SQLitePCLRaw.lib.e_sqlite3.
For version 2.0.4 it has the required folders:

But for the latest 2.0.5 preview it doesn't:

Originally posted by @DamianEdwards in https://github.com/dotnet/efcore/issues/24198#issuecomment-900558428

Did you push a new package on NuGet for this fix ? Still not seeing netstandard 2.0

No, this doesn't appear yet in any package on nuget.  I just made the fix in the code.  The next -pre will have the fix.


Update networkingcontainers.md

Changed    --network=    to   --net

Thanks for contributing. In docker/docker#23324 the --network flag replaced --net. While --net is still available for backwards compatibility, we recommend using --network.


Present revoked credential and it shows as verified successfully

Hi,
When using 0.1.0, we can present revoked credential to the proof request, and it shows as verification succeeded too. While it should show as verification failed. (like in trinsic app)
Is this feature supported in the current version?
Thanks.

Hi @standlove, revocation support has only been added since version v0.2.0-alpha.20. Could you try to use the alpha version of AFJ and see if this issue still persists?
I would have guessed it would blow up if receiving a revocable cred before that release but it seems it just silently ignores it.

Hi,  @TimoGlastra
Yes, I tried v0.2.0-alpha.39 too, and in this version, the revoked credential won't be matched to the proof request. Is it the expected behavior?
While in the trinsic app, the revoked credential is matched.  Thanks.

Yes, by default this parameter is set to true: https://github.com/hyperledger/aries-framework-javascript/blob/main/packages/core/src/modules/proofs/ProofsModule.ts#L485
If you don't use auto accept you can pass this parameter to the getRequestedCredentialsForProofRequest method

Hi @TimoGlastra ,
any guess when this 0.2.0 AFJ stable version is getting released ?

I hope soon. There's still some PRs to be merged, but once merged we'll make the release ASAP.
See here for the overview of outstanding tasks for the 0.2.0 release: https://github.com/hyperledger/aries-framework-javascript/discussions/622