Toggleopaque for several window

Description
Hey, I searched for a while but didn't find anything to make this command on several (or all in my case) window at the same times. The only thing I found was to set a window rule with hyprctl keyword windowrulev2 'opaque,class:(.)' but only the new windows respect this rule and the active one. The other doesn't seems to detect the change.
Another technique I found was to source a file with this only rules, but the result is the same.
I'm trying to make a shortcut that disable animations, blur and set opacity to 1 but I can't without setting the opacity.
Thank you for reading me

why not set the decoration:*_opacity values? If you set the opacities directly via windowrules, why not use opacity 1.0 override 1.0 override?

It don't know why but it doesn't work either. Here's my script #!/usr/bin/env sh HYPRGAMEMODE=$(hyprctl getoption animations:enabled | sed -n '2p' | awk '{print $2}') if [ $HYPRGAMEMODE = 1 ] ; then     hyprctl --batch "\         keyword animations:enabled 0;\         keyword decoration:drop_shadow 0;\         keyword decoration:blur:enabled 0;\         keyword general:gaps_in 0;\         keyword general:gaps_out 0;\         keyword general:border_size 1;\         keyword decoration:active_opacity 1.0;\         keyword decoration:inactive_opacity 1.0;\         keyword decoration:rounding 0"     exit fi hyprctl reload

hyprctl reload will clear any dynamic vars and replace them with config'd ones.

Yeah it execute this line only when execute this script again, every other line works (animations, blur, ...) but not the opacity. Am I doing something wrong or is it a bug ?

From what I can understand, and some testing I did, your script should work as expected. Am I wrong, or what you actually want is to disable transparency for windows that have them, like your bar and terminals?

Yes that's what I want but it doesn't work for me :(
I have a nvidia setup that works perfectly except for that. I have a keybind for command "toggle opaque" that works well for the active window

Yeah for that unfortunately you'll have to handle it on an app by app basis, as far as I know hyprland can't block an application from drawing a transparent surface, so that'd have to be a feature request.
However, I don't think the performance impact is going to be noticeable, hyprland does not repaint the parts of the screen behind a transparent surface unless something's moving behind them. You can see what parts of the screen are being repainted by using hyprctl keyword debug:damage_blink 1 (epilepsy warning), you'll see only certain parts of the screen are being repainted, unless you have debug:damage_tracking set to 0 for some reason (2 by default).

Yeah for that unfortunately you'll have to handle it on an app by app basis, as far as I know hyprland can't block an application from drawing a transparent surface, so that'd have to be a feature request.
However, I don't think the performance impact is going to be noticeable, hyprland does not repaint the parts of the screen behind a transparent surface unless something's moving behind them. You can see what parts of the screen are being repainted by using hyprctl keyword debug:damage_blink 1 (epilepsy warning), you'll see only certain parts of the screen are being repainted, unless you have debug:damage_tracking set to 0 for some reason (2 by default).

But if so, I don't understand why the command hyprctl dispatch toggleopaque works perfectly.
The command hyprctl keyword decoration:active_opacity 1.0 doesn't work for none applications, waybar, kitty or discord

Not sure tbh, to me toggleopaque only changes the full opacity of a window and not just it's background if I set my opacity to < 1.0, background opacity only changes if I edit my terminal's config file.
But if it works for you, what about approaching this with with the hyprctl setprop function? Can't test it myself, but one of those props would probably work:
hyprctl clients -j | jq -r ".[].address" | xargs -I {} hyprctl setprop address:{} forceopaque 1 lock
hyprctl clients -j | jq -r ".[].address" | xargs -I {} hyprctl setprop address:{} forceopaqueoverriden 1 lock
hyprctl clients -j | jq -r ".[].address" | xargs -I {} hyprctl setprop address:{} alphaoverride 1 lock
hyprctl clients -j | jq -r ".[].address" | xargs -I {} hyprctl setprop address:{} alpha 1 lock
hyprctl clients -j | jq -r ".[].address" | xargs -I {} hyprctl setprop address:{} alphainactiveoverride 1 lock
hyprctl clients -j | jq -r ".[].address" | xargs -I {} hyprctl setprop address:{} alphainactive 1 lock

First one works but reload doesn't change a thing so I added the same line with 0 after the reload and it works great (except I removed the lock for confort)
Thank you !


ModuleNotFoundError when running GenerateACDatasets.py

Hello,
I started following the instructions and got stuck at the step where I had to run the following:
python ACNet/ACComponents/ACDataset/GenerateACDatasets.py
There is actually a small typo in the README (ACNeet instead of ACNet), but even after fixing that, I get the following error:
Traceback (most recent call last):
File "ACComponents/ACDataset/GenerateACDatasets.py", line 1, in
import ACComponents.ACDataset.DataPreprocess as DP
ModuleNotFoundError: No module named 'ACComponents'
Is there something else I should try?
Thanks

Updating the imports did the trick


Improve performance of filtering, improve telemetry anonymity

This should strip out the computer name and IP address.

Dual purpose PR. Also has my code rewriting the filtering system and an update to the mac filter.


:skull: :skull: Added Runescape Support :lollipop:

Tittle says it all
P.S: Pressing any keyboard key besides N allows you to run the tool.

Hey @DataDrug
You can contribute to https://github.com/An0nUD4Y/SocialFish .
I am waiting For your contribution their.
I hope You will ?


Ws-Federation remote signout not working ASP.NET Core 2.1

Context
ASP.NET Core 2.1
The app is configured to use cookie authentication through WS-Federation. It is remote authentication. In the Startup.ConfigureServices I have this configuration
services
.AddAuthentication(o =>
{
    o.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    o.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    o.DefaultChallengeScheme = WsFederationDefaults.AuthenticationScheme;
})
.AddWsFederation(o =>
{
    o.Wtrealm = "urn:sp.ProspectPortal";
    o.MetadataAddress = "https://localhost:44311/nsp_IdP_metadata_wsfed_prospect.xml";
    o.Events.OnRedirectToIdentityProvider = ctx =>
    {
        ctx.ProtocolMessage.Wct = DateTimeOffset.UtcNow.ToString();
        return Task.CompletedTask;
    };
})
.AddCookie();

The default page a user is routed to is the Index Razor Page. This Razor Page contains an OnPostAsync method, which is invoked by a simple form containing a button for logout.
public async Task OnPostAsync()
{
    await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
    await HttpContext.SignOutAsync(WsFederationDefaults.AuthenticationScheme);
}

Problem
Signout is not working. Through debugging, I verified the OnPostAsync method is executing. I see no http traffic to the remote authenticator for logout.
Expectation
I expected at least one of the HttpSignOutAsync method invocations to invoke the remote logout.

if you put a breakpoint in OnRedirectToIdentityProvider, does it get invoked when you call SignOutAsync?  https://github.com/aspnet/Security/blob/4dd9c6deefba64aa7721430e7d1dc72d6e002416/src/Microsoft.AspNetCore.Authentication.WsFederation/WsFederationHandler.cs#L364-L373
Is OnPostAsync overwriting the response with some kind of default 200 response?

OnRedirectToIdentityProvider is being invoked.
Using a Fiddler trace, I do not see the OnPostAsync overwriting the response with a 200 response.

Can you share the fiddler trace?

My employer isn't ok with me sharing the fiddler trace.
When I invoke the OnPostAsync method, there are no HTTP requests going to the remote authenticator despite OnRedirectToIdentityProvider being invoked.
At the end of the OnPostAsync method, I added a call to the OnGet method. The response from the post request is now a 302 redirect to the remote Authenticator for signout. Any ideas why this triggers the call?

Can you at least share the response headers as seen by the client? Is it a 200 response with a Location header set?

The response was a 500. I discovered it was an issue with my Razor Page.
Here is the cshtml

Claims

                @Html.DisplayNameFor(model => model.Claims[0].Type)
                @Html.DisplayNameFor(model => model.Claims[0].Value)

            @foreach (var item in Model.Claims)
            {

                    @Html.DisplayFor(modelItem => item.Type)
                    @Html.DisplayFor(modelItem => item.Value)

            }

The problem was the OnPostAsync method was not initializing the PageModel.Claims property...it was only being set on the OnGet method. Thus, the response would create a 500 response because Model.Claims was null.
After resolving this issue, I see the 302 redirect to the remote authenticator for signout.
Thanks


PWD port forwarding issue

Hello,
I'm doing the following training: http://training.play-with-docker.com/swarm-stack-intro/
When I start a stack I find at first the voting app on the port 5000, then the result app on the port 5001.
But shortly after the stack started, I only have the result app on the two ports.
When I'm going this locally on my machine or on an actual swarm cluster it is working as expected.
Thanks for the awesome sandbox ;)

@jp Are you behind some corporate proxy or something?. I've seen this kind of things happening in the past. I've tried to replicate your issue but I had no luck. Is there some additional info you might provide so I can try to reproduce it?

@jp I guess we can do something in our end to tell proxies not to cache PWD pages. We'll investigate on our end as well.

@marcosnils I can hardly get more data on what's happening, but I can easily reproduce this if you want to schedule some time to reproduce so you can check logs or anything else.

@jp what do you mean by "can reproduce it"?. Did you setup a firewall to try it?

Behing the corporate proxy, this is happening all the time but not at home. I don't know at all what is happening on the proxy side. The best I can do it to give you details of my stacks so you can try to debug them on your side.

@jp do you run the corporate proxy?. I guess to "reproduce-it" we'd have to setup some proxy and make sure that we're seeing the same behavior as you. It's difficult to reproduce if we can't know how the corporate proxy is configured.

@marcosnils I don't run the proxy and I'm not sure I will be able to get its configuration. I was suggesting to reproduce it on my end so you could check what's happening server side. I'm not sure I can do better than this..

@jp thanks for trying to help. We have some ideas that might solve the issue. We'll try to push a fix soon and it'd be great if you can help us validating from your end.

@marcosnils no problem, I will help you. Thanks for the work, I might use this for an internal training rather that managing my own docker swarms ;)


Add both minified and non-minified version to dist, and update Bower.…

Getting started on #46, just adding non-min and min versions to dist and updating the naming convention.   Should the non-minified version be included in the dist script, or in another property?

Cool!
Ideally, it would be cleaner to split the scripts a little bit yea.
Something like:
{
"build": "npm run build:lib && npm run build:min & npm run build:max",
"build:lib": "rm -rf lib && `npm bin`/babel src --out-dir lib",
"build:min": "./node_modules/.bin/webpack --optimize-minimize lib/index.js dist/ng-redux.min.js",
"build:max": "./node_modules/.bin/webpack lib/index.js dist/ng-redux.js"
}

What do you think?

Yeah, I like that approach - branch is updated.  You okay then with: "dist": "npm run build"

You can just remove dist at this point, it's no needed anymore.
Everything else looks good :+1:

Sweet, all set :)

Thx! :)


Allow Ark server to run in arbitrary namespaces

Currently the Ark server component assumes that it's configuration is stored in api.DefaultNamespace (heptio-ark) with no way to override. As cluster admins we put these kind of tools into a 'utils' namespace and would like to do the same for Ark.
The server component should probably assume it's configuration is stored in the namespace it's deployed in. The client would need to support a namespace flag or configuration or both.

To do this, we should

Use the in-cluster namespace for the ark server
Add --namespace/-n to the ark CLI
Optionally have ~/.arkconfig or ~/.config/ark as a means to set the default namespace so you don't have to type --namespace all the time

@ncdc Can I work on a PR for (1) and (2)?

Definitely, thanks!
On Thu, Oct 12, 2017 at 4:17 AM Willem Pienaar<EMAIL_ADDRESS>wrote:

@ncdc https://github.com/ncdc Can I work on a PR for (1) and (2)?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/heptio/ark/issues/106#issuecomment-336055690, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAABYpvT_7qRjJHdUCuyjwlL-b73pWv0ks5srcsugaJpZM4PmMuj
.

If there’s anything that you think needs discussion before coding, feel
free to raise that here first.
On Thu, Oct 12, 2017 at 7:11 AM Andy Goldstein<EMAIL_ADDRESS>wrote:

Definitely, thanks!
On Thu, Oct 12, 2017 at 4:17 AM Willem Pienaar<EMAIL_ADDRESS>wrote:

@ncdc https://github.com/ncdc Can I work on a PR for (1) and (2)?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/heptio/ark/issues/106#issuecomment-336055690, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAABYpvT_7qRjJHdUCuyjwlL-b73pWv0ks5srcsugaJpZM4PmMuj
.

@SleepyBrett @woop just checking in - are either of you working on this? Thanks!

@ncdc I'm not actively working on this. Bit short on time. I'll swing back when I have more free time.

I can try to get this done.
My approach, for the server, was to inject the namespace into the server as an environment and read the environment variable, if it exists, else use the default namespace. @ncdc Can you elaborate on

Use the in-cluster namespace for the ark server
Is this an option for one of the kubernetes APIs?

My approach, for the server, was to inject the namespace into the server as an environment and read the environment variable, if it exists, else use the default namespace. @ncdc Can you elaborate on

Use the in-cluster namespace for the ark server
Is this an option for one of the kubernetes APIs?

My approach, for the server, was to inject the namespace into the server as an environment and read the environment variable, if it exists, else use the default namespace. @ncdc Can you elaborate on

Use the in-cluster namespace for the ark server
Is this an option for one of the kubernetes APIs?

My approach, for the server, was to inject the namespace into the server as an environment and read the environment variable, if it exists, else use the default namespace. @ncdc Can you elaborate on "Use the in-cluster namespace for the ark server"
Is this an option for one of the kubernetes APIs? Not too familiar with using the k8s APIs.

My approach, for the server, was to inject the namespace into the server as an environment and read the environment variable, if it exists, else use the default namespace. @ncdc Can you elaborate on "Use the in-cluster namespace for the ark server"
Is this an option for one of the kubernetes APIs? Not too familiar with using the k8s APIs.

My approach, for the server, was to inject the namespace into the server as an environment and read the environment variable, if it exists, else use the default namespace. @ncdc Can you elaborate on "Use the in-cluster namespace for the ark server"
Is this an option for one of the kubernetes APIs? Not too familiar with using the k8s APIs.

@ashish-amarnath yes, it's part of client-go. Let me see if I can dig up the exact code you'll need.

@ashish-amarnath in pkg/client/client.go, replace the call to clientcmd.BuildConfigFromKubeconfigGetter with this:
clientConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
  loader,
  &clientcmd.ConfigOverrides{},
)

That gives you a clientcmd.ClientConfig, upon which you can invoke Namespace(), and that will return the pod's namespace if you're running it in a Kubernetes cluster. You'll probably need to tweak it so that there's a ClientConfig() function that returns the clientcmd.ClientConfig, and then the current Config() function can just call that, and then return the *rest.Config as it currently does. Or something like that...


Update coursier to 2.0.0-RC6-8

Updates io.get-coursier:coursier from 2.0.0-RC6-5 to 2.0.0-RC6-8.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "io.get-coursier", artifactId = "coursier" } ]

labels: library-update, semver-pre-release

Subsumed by https://github.com/almond-sh/almond/pull/514.


[Cyberrats] [New Feature] Update cyberrats to have dice modifiers for attribute rolls

Submission Checklist
Required

[x] The pull request title clearly contains the name of the sheet I am editing.
[x] The pull request title clearly states the type of change I am submitting (New Sheet/New Feature/Bugfix/etc.).
[x] The pull request makes changes to files in only one sub-folder.
[x] The pull request does not contain changes to any json files in the translations folder (translation.json is permitted)

Changes / Description
Now you can enter optional dice changes before a roll.

Character Sheet Info Roll20 Internal Use only.


Update README with new command names

Making all commands one 'word' (multiple words hyphenated)

Closed by #13.


index out of range on DockContent.Hide()

we are using DockPanel <IP_ADDRESS> with .net 3.5 SP1 on Windows 7 machines
DockContent d is shown in DockPanel p as follows
d.Show(p, DockState.Document);

DockContent needs to be hidden occasionally. We are hiding as follows:
p.SuspsendLayout(true);
d.Hide();
p.ResumeLayout(true, true);

We are observing an intermittent exception after this in the wild. Unable to recreate so far.
Thank you.
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
at WeifenLuo.WinFormsUI.Docking.DockContentCollection.GetVisibleContent(Int32 index)
at WeifenLuo.WinFormsUI.Docking.DockPaneStripBase.TabCollection.get_Item(Int32 index)
at WeifenLuo.WinFormsUI.Docking.VS2005DockPaneStrip.EnsureDocumentTabVisible(IDockContent content, Boolean repaint)
at WeifenLuo.WinFormsUI.Docking.VS2005DockPaneStrip.OnPaint(PaintEventArgs e)
at System.Windows.Forms.Control.PaintTransparentBackground(PaintEventArgs e, Rectangle rectangle, Region transparentRegion)
at System.Windows.Forms.Control.PaintTransparentBackground(PaintEventArgs e, Rectangle rectangle)
at System.Windows.Forms.Control.PaintBackground(PaintEventArgs e, Rectangle rectangle, Color backColor, Point scrollOffset)
at System.Windows.Forms.Control.PaintBackground(PaintEventArgs e, Rectangle rectangle)
at System.Windows.Forms.Control.OnPaintBackground(PaintEventArgs pevent)
at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs)
at System.Windows.Forms.Control.WmPaint(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

This is a duplicate of a longstanding issue: #209
Please feel free to add any additional insight to that item.


New version: Zoom.Zoom version <IP_ADDRESS>04

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[x] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: codeflow:open?pullrequest=https://github.com/microsoft/winget-pkgs/pull/113212&drop=dogfoodAlpha

@wingetbot
#111634


Fix "array" recursive validation on sub-element

Hello,
After upgrade from 3.x.x to 4.x.x I found an regression about array validation.
This Pull Request contains the test who shows the issue, the fix, build and doc update.
Have a nice day.

Hello. Thank for fix and release!


array[null] is treated as varchar[] when inserting into column int[]

Describe the bug
dev=> create table t (a int[]);
CREATE_TABLE
dev=> insert into t values (array[null]);
ERROR:  QueryError: Bind error: cannot cast type List { datatype: Varchar } to List { datatype: Int32 } in Assign context.
dev=> insert into t values (null);
INSERT 0 1
dev=> insert into t values (array[1,null]);
INSERT 0 1
dev=> insert into t values (array[null,1]);
INSERT 0 1

To Reproduce
As above.
Expected behavior
array[null] should be inserted successfully.

Had some discussions offline, and PostgreSQL is also reporting similar errors in this case:
test=# insert into arr values (array[null]);
ERROR:  column "v1" is of type integer[] but expression is of type text[]
LINE 1: insert into arr values (array[null]);
                                ^
HINT:  You will need to rewrite or cast the expression.

test=# insert into arr values (array[null]::int[]);
INSERT 0 1

test=# insert into arr values (array[null::int]);
INSERT 0 1

That is, array[null] is treated as text[] even as part of insert, and it requires an explicit cast (rather than assign cast).
We may try to implement array cast (::int[]) rather than allowing this to happen automatically.


Feature: Catch lured pokemon

Short Description:
Catch lured pokemon at Pokestop
Changes:

Get info from Pokestop and patch them to catch plugin
Handle lured pokemon in catch plugin

@OpenPoGo/maintainers

Need a frew more testing

Current coverage is 49.36% (diff: 7.24%)

Merging #346 into master will decrease coverage by 1.90%

@@             master       #346   diff @@
==========================================
  Files            34         34
  Lines          1500       1568    +68
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits            769        774     +5
- Misses          731        794    +63
  Partials          0          0

Powered by Codecov. Last update acbc124...3981597

Seems to be working, will let run for a while longer

Can someone else confirm if working? Works fine for me, would like another :+1:

👍

:+1:


Fixes method reorder when deserializing class

Fixes #756
Pretty simple, but took many hours of debugging. Thanks @insidy for the help.
@flaiker Could you please retest in your environment?
Notes:

Up port to clas_new is not done

Sure, I'll try it out. Thanks for the detective work!
What's the test case here though? #756 is kind of independent of abapGit. I assume this patch fixes the following:

New remote version of a class is pulled
Class gets deserialized and activated
Because of some black magic buffer shenanigans the method order gets changed to alphabetic and even though the class was just pulled it shows up as a diff.

And it does not fix eclipse or SE24 reorganizing the method order in seemingly random cases on activation. Correct?

Correct.
The test case is the following:
Change the method order, either directly in github or in ADT, to not alphabetically. Then, check if the method order remains the same.
Also, check if the class name does not change. Open both in ADT and SE24

@larshp Now it is upported to clas_new

Sorry for the late reply. I was unable to reproduce the error in the test case you mentioned.
Do you think one could add this fix somewhere in the SAP code so this doesn't happen outside of abapGit as well?

You mean in SE80/SE24 to avoid reordering methods?
The problem is that the handling of class source code via SE24 is considerably different to ADT, even when not in form mode.
Also, if the issue is fixed then it would only be available in the next netweaver release. If downport is possible then it can be requested, but that takes a while.
So I'd suggest to stick to ADT when possible (and create a plugin/ADT-compatible version of abapgit).

@insidy I mean in ADT, it's really annoying at times: https://streamable.com/ee369

@flaiker oh.. that is annoying. Do you know in which netweaver version that happened or any idea on how to reproduce?
I've tried the same steps but it didn't reordered in NW 7.51

I definitely have it on 7.40 SP6 and 7.50 SP1. I'll have to try on 7.51. It doesn't happen all the time, just sometimes. In the video I recorded for ~2 minutes, adding / removing parts of the class and activating in between until it happened.


ZEPPELIN-508 Interpreter binding cancel button doesn't work

What is this PR for?
Currently, when there is no change compared with before the interpreter binding setting status, the  cancel button in binding page doesn't work. So I fixed this bug.
What type of PR is it?
Bug Fix
Todos

[x] - Fix the cancel button in interpreter binding page.

Is there a relevant Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-508
How should this be tested?
Open the Zeppelin any notebook page -> Click the interpreter binding button

Don't change any binding setting and Just click the cancel button.
Or just click twice the interpreter binding button.

Screenshots (if appropriate)
After this PR applied,

Questions:

Does the licenses files need update? No.
Is there breaking changes for older versions? No.
Does this needs documentation? No.

Thanks for the review @minahlee @corneadoug.
I applied the reviews. : )

Thanks for the fix.
LGTM. I'm merging it into master.


[WIP] PCM-1240

terminate existing media before starting new media. handle permission requests better

Codecov Report

Merging #125 into master will decrease coverage by 0.86%.
The diff coverage is 55.00%.

@@             Coverage Diff             @@
##            master     #125      +/-   ##
===========================================
- Coverage   100.00%   99.13%   -0.87%
===========================================
  Files           10       10
  Lines         1024     1037      +13
  Branches       207      210       +3
===========================================
+ Hits          1024     1028       +4
- Misses           0        9       +9

Impacted Files
Coverage Δ

src/sessions/base-session-handler.ts
93.07% <50.00%> (-6.93%)
:arrow_down:

src/media-utils.ts
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e33cbc1...b5963fe. Read the comment docs.


httpTimeout option in initializeApp

Is your feature request related to a problem? Please describe.
In the Python implementation of firebase_admin, there is an option on initialize_app that allows the httpTimeout to be set manually. There is no such implementation in NodeJS.
Describe the solution you'd like
The desired solution is to have the same functionality of httpTimeout in the Python firebase_admin, implemented for the NodeJS firebase-admin.
Additional context
Using firebase-admin version 9.4.2

as far as I can tell, if you provide an invalid databaseURL to initializeApp() the call will simply fail silently and all subsequent API calls will hang indefinitely with no error reported.
this is very bad behavior, firebase should fail loudly and quickly in this case rather than silently failing. this exact issue led to a longer delay in mitigating an outage in my product today.
note, it seems like this was raised several years ago in #116, but the resolution was simply to add a URL validator that rejects malformed URLs. this is useful, but does not address the actual issue.
try:
admin.initializeApp({
    databaseURL: 'https://example.com',
})

this code will not produce any errors, but all firebase API calls (e.g. RTDB) will silently fail and hang indefinitely.

Turns out FIREBASE_DATABASE_EMULATOR_HOST being set even though specifying a specific databaseURL for initializeApp ended up throwing a soft error.


Add loop custom steps

Issue #, if available: #25
Description of changes: I've added custom steps at the start and end of the iteration. This is deliberately fewer than suggested in issue #25 as I'm not sure what the use case for any other would be.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Codecov Report

Merging #53 into develop will decrease coverage by <.01%.
The diff coverage is 100%.

@@             Coverage Diff             @@
##           develop      #53      +/-   ##
===========================================
- Coverage     81.2%   81.19%   -0.01%
===========================================
  Files           62       62
  Lines         1532     1537       +5
  Branches       154      154
===========================================
+ Hits          1244     1248       +4
- Misses         253      254       +1
  Partials        35       35

Impacted Files
Coverage Δ

emukit/core/loop/outer_loop.py
89.13% <100%> (-1.12%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 4d0923c...d9ddf5c. Read the comment docs.

Nice thread, thanks. This one looks neat, I'll try it out: https://stackoverflow.com/a/2022629

Updated with an EventHandler class and also removed the event at iteration start, as I have no use case right now. It should be easy to add if we find a use case later


Network policy provisioning

WARNING: Do not merge.  Re-open PR against kubernetes/master when it's ready instead.

(Picked up too many commits)


Cannot update event with UID collision

Using vdirsyncer's FilesystemStorage I run into a problem when trying to upload/new a new item.
If an VEVENT with the same UID as the VEVENT I want to create already exists, I get an AlreadyExistingError but I have no chance (using FilesystemStorage's public API) to find out the href of the item with the same uid (nor its etag).
I would suggest to either add an overwrite() or an get_href(uid) method.

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/20500582-cannot-update-event-with-uid-collision?utm_campaign=plugin&utm_content=tracker%2F574345&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F574345&utm_medium=issues&utm_source=github).

Is this occuring with normal sync, or by calling the interface through khal? Sync should show an extremely helpful error message, and AlreadyExistingError should never be raised.

by calling the interface through khal. I've used this workaround for the moment.

Hmm, why do you want to overwrite components in the first place? This seems like a very dangerous thing to do when other processes are writing to the vdir at the same time.

My use case here is the new import function. Import an event, import an updated version later. Some user interaction might be advisable, but I still might  want to overwrite that event.

self.update(href, item, self.get(...)[1]) seems like a slightly better hack to me.
What you could also do is to load the existing event and check if its sequence number is larger or equal to the new event. If yes, you'll probably want to ask the user.

The problem is, I do not know the events href, only its uid (which might no be the same).
Checking for the sequence number is probably a good idea.

Argh, I forgot. I've pushed a commit which should give you the existing href in form of an attribute on the exception.

awesome, this will do.


Fix issue with too many arguments if stage is sent as argument.

Q
A

Bug fix?
Yes

New feature?
No

BC breaks?
No

Deprecations?
No

Fixed tickets
#833

no need for this pull request.


useSWR is not a function

Bug report
Description / Observed Behavior
Hi, lately I am facing issues with useSWR, it seems that something has been changed in the last versions and it is not a function anymore.

I got to it by using
import useSWRInfinite from 'swr/infinite';
The problem starts with the last update from 0.5.6 -> 1.3.0

Can you share entire codebase of the minimal reproduction? It feels like sth wrong with bundling that didn't resolve the default import properly

Unfortunately, I can share the entire codebase but I can share our usage...
 const fallbackData = useMemo(
    () =>
      loadDataFromSessionStorage(url, getNextKey as (data: unknown) => string),
    [url, getNextKey]
  );

  const { data, error, mutate, setSize } = useSWRInfinite<T>(
    (pageIndex, previousPageData) =>
      pageIndex === 0 ? url : getNextKey(previousPageData as T),
    fetcher,
    {
      fallbackData,
      onSuccess: (newData, key) => saveInStorage<T>(newData, key, getNextKey),
      revalidateOnMount: true,
      revalidateOnFocus: false,
      shouldRetryOnError: false,
      revalidateFirstPage: false,
    }

we are using common.js

The issue is not related to the swr usage, more related to the bundle strategy. The module is loaded by require in commonjs but the default export is not been picked correctly.
Might be related to if you forcedly specify commonjs transform somewhere in your project.


gather_nd: prepare stage tries to access model .rodata

model used: single_pose model from tf_hub:
Following lines from gather_nd OP in prepare stage try to update values from the actual model, which of course is problematic:
https://github.com/tensorflow/tflite-micro/blob/main/tensorflow/lite/micro/kernels/gather_nd.cc#L92-L100
Related issue on tflite-micro-esp-examples: https://github.com/espressif/tflite-micro-esp-examples/issues/30#issuecomment-1410372797
I have simply commented out the lines locally. Please suggest correct path here.

@vikramdattu
Thank you for bringing this issue to the attention of the TFLM team.  We appreciate your feedback regarding problems with the TFLM codebase.
This issue has been identified as a bug in the GATHER_ND kernel operator.  The PR #1727 has been submitted for this issue.  Once the PR is merged, this issue should automatically close.


RTL update to v0.11.0 for LND and CLN

$ config.scripts/bonus.rtl.sh

# config script to switch the RideTheLightning WebGUI on, off or update

# bonus.rtl.sh [on|off|menu] <lnd|cln> <testnet|signet>
# sets up lnd on mainnet by default
# able to run intances for lnd and cln parallel
# lnd mainnet and testnet can run parallel
# cln can only have one network active at a time

# bonus.rtl.sh [update<commit>|config]
# installs the version v0.11.0 by default

mv: cannot move '/home/admin/RTL-Config.json' to '/home/rtl/RTL/RTL-Config.json': Permission denied
Line 171: sudo -u rtl mv /home/admin/RTL-Config.json /home/rtl/${netprefix}RTL/
I think it should be just: sudo mv /home/admin/RTL-Config.json /home/rtl/${netprefix}RTL/

yes, thanks. Fixed in here: https://github.com/rootzoll/raspiblitz/pull/2352/commits/80a0e7a77eaa24c5b3467b05b49031f2e5a26a31
waiting to be merged and reach the dev branch as part of the refactoring for v1.7.1

new version looks good. closing issue for release.


Please load playlist from external JSON file

For make this:

add few lines to ./js/config.ts:

import myPlaylist from "./../mp3/playlist.json";
console.log('myPlaylist', myPlaylist);
config.initialTracks = myPlaylist;

Create file ./mp3/playlit.json

Hey @sciner, could you explain a bit more what you are trying to do?
From what I can tell, your existing step one should work already. Are you looking for a way to export the current Webamp playlist?

I propose to remove the playlist from the code to an external file.

Are you suggesting that we do this on the demo site, or are you looking for a way to do this with your own project?

Yes, I propose to do it on the demo site. Is it bad?

What would we gain by storing the playlist in a json file?

You're correct that it would probably be a little bit cleaner to at least move the playlist to its own file (.js might be just as good as json).
Currently it's very tricky to setup a server to serve media files with the correct CORs headers so that Webamp can correctly read them. Because of this, I have not publicly exposed features that allow users to provide URLs to external media files. I suspect it would create a large support burden for us, and that very few people would actually have the combination of control of their server and technical know-how to set it up correctly.
Would you like to open a pull request to move the playlist out into its own file? I don't think I currently have bandwidth to take on a cleanup task like this, but if your interested in doing it, I'd gladly merge the pull request.

hi, i'm looking for something similar for a little project of mine, basically have a very slimmed downed version of webamp in a bash for loop that inserts the name of the json file as the playlist inside each html page
is this possible or something that might be in the future plans for this project?
sorry for commenting on this few years old issue but i figured it's better than opening a duplicate


[CL]: merge locked and unlocked migration messages

Background
Currently, we have locked migration in superfluid and unlocked migration in gamm.
Suggested Design
We should combine these messages to avoid fragmentation
Acceptance Criteria

combined
tested

Low priority, let's not pursue this until we get internal reviews fully complete

This was fixed at some point


Recalculate center after updateMotion()

This PR changes: The public API

adds Phaser.Physics.Arcade.Body#updateCenter()
changes Phaser.Physics.Arcade.Body#preUpdate()

Fixes #122

Thanks so much for fixing this! Nice to have reliable circle collisions back.


Light doesn't go away when its entity is despawned

I'm trying to use bevy_light_2d to implement glowing entities, but despawning the entities doesn't remove the light.
Here's an altered version of the basic example that demonstrates the issue:
use bevy::prelude::*;
use bevy_light_2d::prelude::*;

#[derive(Component)]
struct Mobile;

fn main() {
    App::new()
        .add_plugins((DefaultPlugins, Light2dPlugin))
        .add_systems(Startup, setup)
        .add_systems(Update, go)
        .run();
}

fn go(
    mut commands: Commands,
    mut query: Query<(Entity, &mut Transform), With<Mobile>>
) {
    for (e, mut transform) in query.iter_mut() {
        transform.translation.x += 1.0;
        if transform.translation.x > 400.0 {
            commands.entity(e).despawn_recursive()
        }
    }
}

fn setup(mut commands: Commands) {
    commands.spawn(Camera2dBundle::default());

    commands.spawn((
        PointLight2dBundle {
            point_light: PointLight2d {
                intensity: 3.0,
                radius: 100.0,
                ..default()
            },
            ..default()
        },
        Mobile,
    ));
}

I thought this code would cause the light to disappear when the entity reaches x = 400.0, but instead it just stops moving.
Similarly in my game, I build up lights where entities die, and I can't see a way to remove them.

Thanks for the report + example!
I will take a look when I'm able.

@drawk-cab This should be fixed now. Many thanks for the example. Patch published to crates.io.

The example is fixed but I'm still getting lights persisting in my game. Will have to figure out another example :)
If it's any help, the persisting lights do tend to go away as I spawn more lights, as if there was a system of slots where a newly spawned light has a chance to be assigned an old one's slot and replace it.
Even if I don't despawn all lights, occasionally one gets stuck on. But I haven't worked out which ones or why yet.

@drawk-cab Thanks for letting me know. How many lights are we talking approximately?

About 20 in the game.
Here's an example that I think replicates the issue:
use bevy::prelude::*;
use bevy_light_2d::prelude::*;

#[derive(Component)]
struct Mobile;

#[derive(Resource)]
struct SpawnPoint(Vec3);

fn main() {
    App::new()
        .add_plugins((DefaultPlugins, Light2dPlugin))
        .insert_resource(SpawnPoint( Vec3::new(-200.0, -200.0, 0.0)))
        .add_systems(Startup, setup)
        .add_systems(PreUpdate, despawn)
        .add_systems(Update, spawn)
        .run();
}

fn despawn(
    mut commands: Commands,
    spawn_point: Res<SpawnPoint>,
    query: Query<Entity, With<Mobile>>,
) {
    if spawn_point.0.x > -50.0 {
        for e in query.iter() {
            commands.entity(e).despawn_recursive();
        }
    }
}

fn setup(mut commands: Commands) {
    commands.spawn(Camera2dBundle::default());
}

fn spawn(mut commands: Commands,
    mut spawn_point: ResMut<SpawnPoint>) {
    commands.spawn((
        PointLight2dBundle {
            transform: Transform::from_translation(spawn_point.0),
            point_light: PointLight2d {
                intensity: 3.0,
                radius: 100.0,
                ..default()
            },
            ..default()
        },
        Mobile,
    ));
    if spawn_point.0.x > 200.0 {
        spawn_point.0.x = -200.0;
        spawn_point.0.y += 5.0;
    } else {
        spawn_point.0.x += 5.0;
    }
}

This code moves through columns and rows spawning a light every frame, then despawning everything, except for the first 50 units of travel each row when the despawning is skipped. So what I'd expect is a row of lights building up gradually, then getting despawned, and a single light seeming to continue (actually a different entity every frame)
But instead the 30 lights remain on until the app moves to the next row.
I don't think using the PreUpdate schedule is the problem, it still works if I put the despawning into Update. Just in my game I like to be sure I'm not trying to do work on entities that get despawned anyway.

Going to re-open so as to not let this get lost.

Took a closer look, and can confirm something whacky is going on.
I'm still not sure what is causing the issue. Everything on the extraction + prepare side lines up the the expected number of lights. I'm suspicious something is going on with how we're managing memory on the GPU (which could end up pointing back to GPUArrayBuffer, a Bevy helper we're using).

I think I've cracked it.

This has fixed the issue in my game too, thanks :+1:


{Bug}

Hi.
can help Fixed
'C:\Users\Administrator\Downloads\Compressed\Telegram-noborderz-main\Telegram-noborderz-main\sessions>1.py
Traceback (most recent call last):
File "C:\Users\Administrator\Downloads\Compressed\Telegram-noborderz-main\Telegram-noborderz-main\sessions\1.py", line 29, in
asyncio.run(main())
File "C:\Python310\lib\asyncio\runners.py", line 44, in run
return loop.run_until_complete(main)
File "C:\Python310\lib\asyncio\base_events.py", line 646, in run_until_complete
return future.result()
File "C:\Users\Administrator\Downloads\Compressed\Telegram-noborderz-main\Telegram-noborderz-main\sessions\1.py", line 10, in main
tdesk = TDesktop(tdataFolder)
File "C:\Python310\lib\site-packages\opentele\td\tdesktop.py", line 141, in init
self.LoadTData()
File "C:\Python310\lib\site-packages\opentele\td\tdesktop.py", line 216, in LoadTData
raise e
File "C:\Python310\lib\site-packages\opentele\td\tdesktop.py", line 203, in LoadTData
self.__loadFromTData()
File "C:\Python310\lib\site-packages\opentele\td\tdesktop.py", line 453, in __loadFromTData
Expects(len(self.accounts) > 0, "No account has been loaded")
File "C:\Python310\lib\site-packages\opentele\exception.py", line 326, in Expects
raise exception
File "C:\Python310\lib\site-packages\opentele\td\tdesktop.py", line 453, in __loadFromTData
Expects(len(self.accounts) > 0, "No account has been loaded")
opentele.exception.OpenTeleException: Unexpected Exception: No account has been loaded [ Called by BaseObject.TDesktop.__loadFromTData() ]'

I am having the same issue.

Patched in this PR


Functions used as keys in map are slow

This issue was originally filed by<EMAIL_ADDRESS>
If you create a map with the key being type Function, the map can have very slow performance.  I believe this is due to Functions with the same signature will have the same hashcode.

@alexmarkov
https://github.com/dart-lang/sdk/commit/203955bc48f


Could not connect to development server on new projet on 0.37 (iOS)

I just created a new project on react-native version 0.37 on iOS. I've setting up this part of info.plist
https://i.stack.imgur.com/2oXuI.png
server is running :
https://i.stack.imgur.com/P7ocm.png
But loads loop on this url:
url: /index.ios.bundle?platform=ios&dev=true&minify=false
And I finally get this error
https://i.stack.imgur.com/pVqe5.png
my package.json
{
  "name": "Mich",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "react": "15.3.2",
    "react-native": "0.37.0"
  },
  "jest": {
    "preset": "jest-react-native"
  },
  "devDependencies": {
    "babel-jest": "17.0.2",
    "babel-preset-react-native": "1.9.0",
    "jest": "17.0.3",
    "jest-react-native": "17.0.3",
    "react-test-renderer": "15.3.2",
    "whatwg-fetch": "2.0.1"
  }
}

I have never had this error before by starting a new project. Someone can explain me what is wrong?

React Native version: 0.37
Platform: iOS
Operating System: MacOS

It works, i just need to press CMD+D and go in any menu


Settings error: Error: Unknown Job :Thumbnail Generation

I have just updated to 2.0.3-edge, built October 27th, and the /admin page is providing a "Server Notification":
(1) Jobs error. Resetting to default for now to let the app start up. Please adjust the config properly.
"Error: Unknown Job :Thumbnail Generation"

Attempts to change "Exclude folder list" are rejected with "Error: Settings error: Error: Unknown Job :Thumbnail Generation" when I click save.
Server logs (optional)
12/19/2024, 1:20:42 AM[INFO_][JOB] Running job : Indexing
12/19/2024, 1:21:02 AM[INFO_][JOB] Job finished: Indexing
12/19/2024, 1:21:02 AM[INFO_][JOB] Running job : Album Cover Filling
12/19/2024, 1:24:51 AM[INFO_][JOB] Job finished: Album Cover Filling
12/19/2024, 1:24:51 AM[INFO_][JOB] Running job : Photo Converting
12/19/2024, 1:25:09 AM[ERROR] ErrorDTO {
  code: 60,
  message: 'Settings error: Error: Unknown Job :Thumbnail Generation',
  details: Error: Unknown Job :Thumbnail Generation
      at ConfigDiagnostics.testJobsConfig (/app/src/backend/model/diagnostics/ConfigDiagnostics.js:60:23)
      at ConfigDiagnostics.testConfig (/app/src/backend/model/diagnostics/ConfigDiagnostics.js:272:33)
      at async updateSettings (/app/src/backend/middlewares/admin/SettingsMWs.js:41:13),
  request: { method: '', url: '' }
}

and some more -- perhaps unrelated.
(process:1): GLib-GObject-WARNING **: 01:30:31.197: value "0" of type 'gint' is invalid or out of range for property 'width' of type 'gint'

(process:1): GLib-GObject-WARNING **: 01:30:31.197: value "0" of type 'gint' is invalid or out of range for property 'height' of type 'gint'
[Error: extract_area: parameter width not set
extract_area: parameter height not set
]
12/19/2024, 1:30:31 AM[ERROR] ErrorDTO {
  code: 32,
  message: 'Error during generating face thumbnail: Themis',
  details: 'Error: extract_area: parameter width not set\n' +
    'extract_area: parameter height not set\n',
  request: { method: '', url: '' }
}

(process:1): GLib-GObject-WARNING **: 01:30:31.222: value "0" of type 'gint' is invalid or out of range for property 'width' of type 'gint'

(process:1): GLib-GObject-WARNING **: 01:30:31.222: value "0" of type 'gint' is invalid or out of range for property 'height' of type 'gint'
[Error: extract_area: parameter width not set
extract_area: parameter height not set
]
12/19/2024, 1:30:31 AM[ERROR] ErrorDTO {
  code: 32,
  message: 'Error during generating face thumbnail: Vivian Greece',
  details: 'Error: extract_area: parameter width not set\n' +
    'extract_area: parameter height not set\n',
  request: { method: '', url: '' }
}
12/19/2024, 1:30:47 AM[ERROR] ErrorDTO {
  code: 60,
  message: 'Settings error: Error: Unknown Job :Thumbnail Generation',
  details: Error: Unknown Job :Thumbnail Generation
      at ConfigDiagnostics.testJobsConfig (/app/src/backend/model/diagnostics/ConfigDiagnostics.js:60:23)
      at ConfigDiagnostics.testConfig (/app/src/backend/model/diagnostics/ConfigDiagnostics.js:272:33)
      at async updateSettings (/app/src/backend/middlewares/admin/SettingsMWs.js:41:13),
  request: { method: '', url: '' }
}

Environment (please complete the following information):

OS: server runs on pi4, browser on windows 10
Browser: chrome

Used app version:

docker-edge (alpine)

...so I blew the database away and started again. Problem solved. I notice that I no longer have a "Thumbnail Generation" job listed, so I guess that explains the error message nicely :-)


Add py.typed marker

This makes mypy look at this project's .py files, so that you don't need to add a # type: ignore when importing sv_ttk, and mypy actually checks things when you use sv_ttk.
Tested manually:

Thank you!


View state composition?

Hey, @dustingetz
Continuing the discussion from HN: https://news.ycombinator.com/item?id=10942343

I dont think this is the type of composition I am talking about. This composes pure views, like react, but it doesn't compose their state, same as react.

View state is, in fact, retained in both declarative and imperative style composition, unless I'm not understanding.
Would you mind clarifying and/or providing a pattern you're looking for?
thanks!

If you'd like, I can re-implement your react-cursor demo app [1] using domvm :)
[1] http://react-json-editor.bitballoon.com/examples/react-state-editor/webapp/

The beauty of the state-at-root pattern with cursors, is that each little component, each subtree of the view, can stand alone as its own little stateful app, and they naturally nest/compose recursively into larger apps. This fiddle is meant to demonstrate this: https://jsfiddle.net/dustingetz/n9kfc17x/ - none of the downtree views own state, they are stateless, their state is externalized to the root store but their state still nests properly.

see https://github.com/dustingetz/react-cursor/

that jsfiddle doesnt render anything for me :( I don't come from React, so without a working fiddle, it's a bit hard to grok.

Yes i would very much like to see the json editor built on other platforms. (The source code to that thing is two years old, it wont be that much help to you, i havent gotten around to upgrading it and all its dependencies yet as that's a rewrite)

@dustingetz I don't know why the fiddle didn't work before, but it worked on the 10th try.
Here's the entire thing implemented in domvm. You'll notice the first few 14 lines implement the actual cursor :)
https://jsfiddle.net/fxzr0fht/
// creates a portable getter/setter that emits
// redraw requests, can be used recursively
function createCursor(parent, childKey, vm) {
	var oldVal = parent[childKey];
	return (newVal) => {
		if (typeof newVal === "undefined")
			return oldVal;
		else {
			oldVal = parent[childKey] = newVal;
			vm.emit.redraw();
		}
	};
}

function App(vm, state) {
	var countersCursor = createCursor(state, "counters", vm);
	return () =>
		["div",
			["h1", "App cursor:"],
			["p",
				["code", JSON.stringify(state, undefined, 2)],
				[CounterList, countersCursor],
			]
		]
}

function CounterList(vm, countersCursor) {
	var clickers = countersCursor().map((val, idx) => [Clicker, createCursor(countersCursor(), idx, vm)]);
	return () =>
		["div",
			["h2", "CounterList cursor:"],
			["p", ["code", JSON.stringify(countersCursor(), undefined, 2)]],
			clickers,
		]
}

function Clicker(vm, itemCursor) {
	return () =>
		["div",
			["input", {type: "text", value: itemCursor(), readonly: true}],
			["button", {onclick: () => itemCursor(itemCursor()+1)}, "+1"],
			" ",
			["span",
				"Clicker cursor:",
				["code", itemCursor()],
			]
		]
}

// state/model/whatever
var state = {
	counters: [0,0,0,0,0,0,0,0,0,0]
};

domvm(App, state).mount(document.getElementById("root"));

Right, but does your library naturally do this without the cursor? If you're just going to implement cursors anyway, what advantage does this have over react + react-cursor?

My point is that it's the cursor abstraction that is providing the additional composition power here, not the underlying vdom implementation.

The abstraction point is a bit disingenuous.
First, the cursor implemented above is not specifically for this app, it is generic and will work with any domvm app - not bad for 10 LOC.
Second, react-cursor is itself an abstraction over sub-state and React itself is a observer/mutation abstraction. Since js doesnt have native mutation observers, you're stuck anyways with writing abstractions that trigger vdom redraw - either React's setState(), or es5 getters/setters or a cursor/wrapper.
The benefit over React? Well, there's code size, and the fact that domvm is massively faster than React. The template syntax is pure js, concise and pleasent which is both familiar to everyone and requires 0 tools, dependencies or compilation. The total code size loaded onto the client is the code above plus an ~8k domvm lib, that is it.
There is actually a lot more to like, but I want to restrict the context to this code. I'm not trying to convert you, you're already heavily invested in React and its ecosystem seems unstoppable. However, I don't agree with React's philosophy, just like you I want my components to live outside of the DOM tree and expose their own APIs with no overhead. It's what makes domvm components truly reusable and not framework dependent....though the specific example above was intentionally structured to mimic the provided fiddle, so it's very UI-centric, like React.

btw, pretty all of React's perf problems will be solved by switching to the react-compatible https://github.com/trueadm/inferno, check it out.
Again, my philosophy is just very different that React's (which is designer-centric and monolithic - hence JSX) For me, simply a speed increase is far from what I'm looking for in a component architecture. My js journey has been jQuery => Mithril => domchanger => writing domvm, though I've tried plenty of others along the way.

For my original question, I care only about how composable the application model is (markup, store/state, actions/events) and what parts of the component model compose recursively and what parts don’t, i don't care about optimizations. This is different than the types of things you seem to be interested in. We aren’t really communicating too well in this thread, we’re using different ideas of what a component is and different ideas on what composition means. If the topic is interesting we can keep talking though, it is interesting research to me, what do you think?
(for the record, react-cursor is fully general and works outside of react, it will work with domvm)

so i'm thinking about how to do the json editor. it's fairly simple to just make something that edits only the values using some recursion and cursorizing. however, this type of editor is fairly limited in usefulness. what would be more interesting is to make an editor that can edit the structure as well - reorder, add/remove and re-nest nodes as well as edit values.
any thoughts?

the more i think about it, the more it make sense to create a parallel vJson structure that's exclusively array based since objects are not cheaply reordered (nor is order guaranteed) and keys not easily altered. a solution that edits a json structure in-place would be quite complex for no real benefit over an easily modifed uniform structure with a .toJson() method...

Here's an initial stab at it: https://jsfiddle.net/5ymq4yc6/1/
DONE

Live key and value editing
Value validation
Event delegation, only a single keyup handler is bound at the root level.

TOFIX

keys use same type validation rules as values, but keys cant be null/true/false or mismatched to parent container type
value validation doesnt handle escapes or 1e4 notation

TODO

expose method to convert internal struct back to json/object
node adding/removing
node reordering (drag/dop)
node re-nesting (drag/drop)
maybe use even more granular vm.patch() instead of vm.redraw() for changes with no side-effects

I see now that domvm idiomatic style mutates state objects directly - how do you implement lifecycle methods and the equivalent of shouldComponentUpdate?

I see now that domvm idiomatic style mutates state objects directly

yes, immutability has some benefits especially on huge teams. but if a team chooses to adhere to immutability, then it can be enforced by idiomatic codigin style rather than something that must always be worked around else it breaks the framework. if you don't want to mutate the state, then don't. the key to workable mutability is just being able to "hook" state mutations to ensure sync. i decided to leave that decision up to the implementor rather than baking it in when the language supports it anyhow.

how do you implement lifecycle methods

Lifecycle hooks are currently limited to vm-level willRedraw/didRedraw, willDestroy/didDestroy [1]. I'm still hashing out some uniformity for providing granular per-element hooks and not all of them make sense since dom nodes can get reused and there's ambiguity with update/destroy/recreate, etc.

how do you implement lifecycle methods

They're accessed the same way internally and externally via:
vm.on({
	didRedraw: function() {...}
});

// or
vm.on("didRedraw", function() {...});

the equivalent of shouldComponentUpdate

While React discourages forceUpdate , domvm's redraw() does just this. But it can be bubbled up through the composed view tree as a redraw() request, rather than a notification of self redraw.
// redraw self and children
vm.redraw()

// bubble redraw request to root
vm.emit.redraw()

// ...which is a shortcut to this level-targeted event emission
vm.emit("_redraw:1000")

// so you can just trigger a parent redraw via
vm.emit("_redraw:1")

// TODO: targeted at a specific ancestor by key
vm.emit("_redraw:someKey")

// other custom events can be targeted or not
// if not, then they get invoked on every ancestor that has a matching listener
// (it's better to do a targeted _redraw because every vm implicitly has a listener for this)
vm.emit("myEvent", arg1, arg2...)

This way you can be as granular as you need for optimization. If you want something similar to .setState(), you can easily create an redraw-requesting/invoking setter, which is what the cursor does in the counters example.
domvm's redraw-emitting mutation observers (watch.js) are implemented similar to this and mimick Mithril's m.prop(), m.withAttr(), etc.., but much more powerful as they can be used externally as global subscribers and can serve to auto-redraw disjoint apps together. But that's another discussion :)

I am confused, how can you claim to be high performance without implementing render subtree pruning?

it's not intuitive at first how such a thing is possible. but what most dont realize is that the bottleneck is in fact the DOM itself rather than a vtree rebuild/diff. The author of Inferno and I had a good discussion about this in another thread. I can link you if you'd like. The key is to do the optimal dom mutations. The overhead of a full diff is quite minimal and becomes only even measurable at truly enormous node counts when the diff is 0.
I don't claim anything that is not backed by real benchmarks against other libs. See the readme for links to examples. I can go into more details if you're really interested, but I'll just link you to the thread first.
Anyways, vm.redraw() will only diff/refresh that view and children.

Please link it. I have worked on quite large react apps using the state-at-root pattern where typing into a form (barely any dom touching, but huge vdiff) destroyed performance in IE8, like 1second renders

domvm targets ie9+, though i have just avoided using ie10+ features and have not yet verified that it works perfectly on ie9.
here' the relevant comment:
https://github.com/trueadm/inferno/commit/134a90005cc8a3900bd601666dd1aa474c0abb6f#commitcomment-15365143
global redraw is not a requirement, as i've stated. you can have granular, external redraw control over each view if you need to optimize. though of course there is nothing stopping me from adding a vm.isDirty flag that can be respected and enabled via config. it would be a trivial addition if someone on fact runs into perf issues. i dont want to add these concepts in prematurely.

you're not wrong, of course. with a slow js engine, it can easily become a relevent overhead. if anyone runs into issues such as the one you're describing i will be happy add an isDirty() hook.
thinking about it i can just allow the willRedraw() hook to return false to prevent redraw, but i want to flesh out the exact semantics before commiting to anything.

also see
https://github.com/trueadm/inferno/issues/29#issuecomment-172276182


Nested tabs don't have space at top of tab panel

These tab panels will need to have a space at the top (20px).

PR https://github.com/silverstripe/silverstripe-framework/pull/6208


urlSync pushes new history state on load if searchFunction is used

Do you want to request a feature or report a bug?
Bug
Code is here, urlSync seems not to work with jsfiddle:
https://jsfiddle.net/9n8Lnqas/
Bug: What is the current behavior?
When instant search is created and the query is modified by searchFunction, urlSync pushes a new state to history on load. This behavior was implemented in v2.2.2 with a fix for #2530
Bug: What is the expected behavior?
Previous to version 2.2.2, urlSync only pushes new states after user interaction with instantsearch. If new states are being created in browser history on load, this poses a problem for sites with catalog views that utilize instantsearch. In our case, thousands of pages are immediately appended with instantsearch parameters after page/instantsearch loading. We use searchFunction for various facets that are subject to change based other previous user interactions on the site.
Bug: What browsers are impacted? Which versions?
All browsers that support the history API when urlSync option is used.
Bug: What is the proposed solution?
There may be a better way to resolve issue #2530 , or maybe additional urlSync options could make this configurable.
What is the version you are using? Always use the latest one before opening a bug issue.
v2.2.2 Currently using 2.2.1 to get around this.

Thanks @austin-roberts for opening the issue.
Before 2.2.2, you had to do 2 interactions in order to update the URL. Is the problem the fact that you have now a new state in the history even if you didn't change anything yet?

@bobylito Yes, I guess I didn't realize it was 2 because maybe we always had the first interaction taking place when instantsearch loads.
"Is the problem the fact that you have now a new state in the history even if you didn't change anything yet?" - Yes, given that we are using searchFunction, our category and other catalog views can't be appending parameters each time any of those pages are viewed only.

"Is the problem the fact that you have now a new state in the history even if you didn't change anything yet?" - Yes, given that we are using searchFunction, our category and other catalog views can't be appending parameters each time any of those pages are viewed only.

@austin-roberts, I'm not sure I get the issue. With the search function you add some parameters. Do you want them displayed in the URL? Or hidden?

I'm not sure I get the issue. With the search function you add some parameters. Do you want them displayed in the URL? Or hidden?

@bobylito So in the case of the jsfiddle I included in the bug report, just by loading that code the location will be appended with this: /?q=&idx=movies&p=0&fR%5Bgenre%5D%5B0%5D=Drama
It wouldn't be possible for us to deploy v2.2.2/2.2.3 today, given that we are making use of searchFunction. We have tens of thousands of paths that would suddenly have search parameters applied to them when loading the page, before an actual user interaction occurs with the content.
I would expect that the location search parameters wouldn't be manipulated until a user makes a physical interaction with instantsearch, but I could be wrong on this expectation as of v2.2.2.

I haven't been able to look into this issue today. It's very high on my todo ;)

So I finally worked on that. And the good news is that it can be fixed in newer versions too. But first I'd like to let you know we're very sorry that you had the issue in the first place and I'd like to thank you for your patience.
So what happens is that the URL mechanics detects a change and therefore update the URL. That's the expected behavior. What is less expected is that this change happens in the searchfunction itself. That's why we have an update when the pages is first loaded. However there is a fix for that. Because we don't want changes at this moment, the initial state should be the same. And there is an option on the instantsearch function: searchParameters. Here is how I fixed your example:
        var search = instantsearch({
          appId: 'latency',
          apiKey: '6be0576ff61c053d5f9a3225e2a90f76',
          indexName: 'movies',
          searchParameters: {
            facets: [
              'genre'
            ],
+            facetsRefinements: {
+             genre: ['Drama']
+            }
+          },
          searchFunction: function(helper) {
            helper.addFacetRefinement('genre', 'Drama');

            helper.search();
          },
          urlSync: true
        });

You can see the result here and the original here.
I think we should close this issue, WDYT @austin-roberts ?

Hey @bobylito thx for this info. I think this will end up working for us.
Thank you for looking into this! I agree we should close this now.

Happy to help. Don't hesitate to open new issues :)


Field_format allows + for ASCII_STRING

Line 105 of the attached .xml has
<field_format>%+8s</field_format>
even though data_type is ASCII_STRING, and page 29 of the Standards says, "In PDS4 labels, the "+" is forbidden for string fields."
OK, I apologize that this is so ticky-tack, but the real data file had -, and the data was not left-justified, and validate flagged that to my surprise. So this is your penalty for catching something so minute in the first place.

test_data.zip


[EN DateTimeV2] Incorrect resolution  for "by [some way] today" (Python)

Describe the bug
For the input "I want to see breakdown by cost group today", the .NET version recognizer can correctly resolve "today" as datetimev2.date while the Python version recognizer recognize "cost group today" as datetimev2.daterang with "null" resolution
To Reproduce
Steps to reproduce the behavior:
import recognizers_suite as Recognizers
from recognizers_suite import Culture, ModelResult
culture = Culture.English
input = "I want to see breakdown by cost group today"
results = Recognizers.recognize_datetime(input, culture)
for result in results:
    print("text: {}".format(result.text))
    print("type_name: {}".format(result.type_name))
    print("resolution: {}".format(result.resolution))

Expected behavior
Python version should work the same as .NET version
Sample input/output
"I want to see breakdown by cost group today"
Platform (please complete the following information):

Platform: Python
Environment: Python 3.6

We reviewed the issue using the latest Python master version and we found out that this was no longer an issue due to the changes made since it was opened.
To reproduce it, we used the 3.6 Python version, adding the following code:

Below you can find the test output:


Added HeliumStreamLogger + minor improvements

Description

Motivation and Context

How Has This Been Tested?

Checklist:

[ ] I have submitted a CLA form
[ ] If applicable, I have updated the documentation accordingly.
[ ] If applicable, I have added tests to cover my changes.

@shmuelk please review and merge

Current coverage is 100% (diff: 100%)

Merging #40 into master will not change coverage

@@           master   #40   diff @@
===================================
  Files           1     1
  Lines         133   134     +1
  Methods         0     0
  Messages        0     0
  Branches        0     0
===================================
+ Hits          133   134     +1
  Misses          0     0
  Partials        0     0

Powered by Codecov. Last update 913e844...09a0fc7

@shmuelk added HeliumStreamLogger, and removed open - please review

Closing this PR to rerun continuous integration checks.


Bug Report: Sorting with nested names in TdDataTableService.sortData

Hi,
Im using covalent 1.0.0-beta.5 and tried out the td-data-table with sorting capabilities.
The problem I have is when we present data from a nested hierarchy (see example below) the sorting does not work.
Example:
 columns: ITdDataTableColumn[] = [     {name: 'commitRef.commitTime', label: 'Updated', tooltip: 'Updated', sortable: true, format: (value) => this.datePipe.transform(value, 'yyyy-MM-dd HH:mm:ss')},     {name: 'commitRef.committer.name', label: 'Changed by', tooltip: 'Changed by', sortable: true}   ];
Then when calling sortData in TdDataTableService it doesn't retrieve the value from nested properties.
https://github.com/Teradata/covalent/blob/4544c1a5bcabb1fa3e60b6fe6c2f6e1a5215ab5c/src/platform/core/data-table/services/data-table.service.ts#L45
In my case above this would resolve into a["commitRef.commitTime"], where it actually should have been something like a["commitRef"]["commitTime"]

Took a look at this and came up with a possible solution. See the gif and the mock data structure.

[   {     "score": {       "value": 23,       "level": "One level",       "nested": {         "value": 1,         "level": "Two levels",         "nested": {           "value": 3,           "level": "Three levels"         }       }     },     "predicted": {       "value": 45,       "level": "One Level",       "nested": {         "value": 4,         "level": "Two levels",         "nested": {           "value": 6,           "level": "Three levels",           "nested": {             "value": 75,             "level": "Four levels"           }         }       }     }   },   {     "score": {       "value": 8,       "level": "One level",       "nested": {         "value": 2,         "level": "Two levels",         "nested": {           "value": 88,           "level": "Three levels"         }       }     },     "predicted": {       "value": 10,       "level": "One Level",       "nested": {         "value": 8,         "level": "Two Levels",         "nested": {           "value": 10,           "level": "Three levels",           "nested": {             "value": 2,             "level": "Four levels"           }         }       }     }   },   {     "score": {       "value": 6,       "level": "One level",       "nested": {         "value": 89,         "level": "Two levels",         "nested": {           "value": 44,           "level": "Three levels"         }       }     },     "predicted": {       "value": 12,       "level": "One Level",       "nested": {         "value": 3,         "level": "Two Levels",         "nested": {           "value": 26,           "level": "Three levels",           "nested": {             "value": 1,             "level": "Four levels"           }         }       }     }   },   {     "score": {       "value": 10,       "level": "One level",       "nested": {         "value": 4,         "level": "Two levels",         "nested": {           "value": 20,           "level": "Three levels"         }       }     },     "predicted": {       "value": 22,       "level": "One Level",       "nested": {         "value": 13,         "level": "Two Levels",         "nested": {           "value": 96,           "level": "Three levels",           "nested": {             "value": 14,             "level": "Four levels"           }         }       }     }   } ]
Let me know if this seems correct at least visually and I will refactor a bit, add it to the data table demo page and add the PR.

Seems to be the correct behavior, so PR away! 😄

@emoralesb05 I did see unit tests for sorting, did I miss something?

I think we added a few sorting unit test in the data-table.spec file, but it might be better to just add a service.spec file specifically calling this method

cool will do.

I got the service method working and I created a unit test for it but I found a couple of side affects.

sortBy breaks when there's more than one table with different columns inputs. I was able to get around this by removing the sortBy input from the nested demo but doesn't help with an initial sort, although we can use the service to do the initial sort but will need to trigger the header mat-active class somehow.

This is probably related but when clicking on a sortable header column, tables that have an active sort applied the ascending/descending icons change globally.

One idea might be keeping a reference of all table instances in order to target the specific table that needs to change using @ViewChildren, @ContentChilren but this is just a theory and might require some code refactoring that's probably out of scope for this issue.
Let me know your thoughts on if this is something we should try and resolve in one PR or create a separate issue.

Ok resolved the sortBy issue. Just the icon sort changing globally on the view need some work. I'll probably create a PR for this and work on the icon separate being that it was happening before.


Implement Solution For uTP

I didn't realize so many peers only accepted connections over uTP nowadays. During testing it was hard to find any peers that still accepted connections over TCP, so we will want to prioritize work on bip_utp, this issue is to track the progress of that work.

There are several utp libs on crates.io. Maybe one could be used to avoid duplicate effort?

@the8472 That is I think the most realistic for the short term. I didn't see any utp crates that were futures based, so in the short term I would still like to have a small wrapper over those crates, where we run blocking reads/writes to the utp stream in a dedicated thread and expose a futures based interface over that.
In the long term, it would be nice to have a utp solution that worked on top of tokio's UdpSocket so that a dedicated thread is not necessary.

There's this: https://github.com/carllerche/utp

Interesting, that looks like it could fit the bill.
Will look in to it more when I get around to hooking it up with the Handshaker.
Thanks!

Just an update from looking in to https://github.com/carllerche/utp. I was able to get the library working with tokio, however, the library has some issues that I was able to identify, and others that I was not able to identify.
Off the bat:

Doesn't send a timestamp that follows the spec, but instead, sends a timestamp relative to when the connection was initiated
Sets initial ack number equal to the seq number of an ack packet, causing clients to ignore us, since we acked a packet that doesnt actually increment the seq nr

It looks like the code works when running against itself, but I am not sure that it has been tested against real clients. Additionally, it has a lot of un-answered PRs, so I am not sure if the owner is planning to actively maintain it.


workflow input data

Currently we distinguish between data available at the start and sockets in very indirect way, by testing if it belongs to the unrolled tasks outputs. Such data should not get unrolled and get an unrolled_date attribute. We need a class for it, like WorkflowInputData or AbsData and the corresponding list in the Workflow object.
Potentially, we could also make this distinction even clearer, directly in the yaml file with sub sections of the data section, like
data:
    workflow input:
      - abs_data_1
      - abs_data_2
    sockets:
      - icon_output_stream_1
      - icon_output_stream_2

To be discussed
In the long run, having workflow input and output data could even help integrating it as an element in an AiiDA workflow.

Because you also suggested that we could have outputs, I thought about inputs, intermediates, outputs, or to shorter in, inter, out that also distinguishes it a bit more from the inputs and  outputs in the graph/cycle-tasks.
data:
    in:
      - abs_data_1
    inter:
      - icon_output_stream_2
    out:
      - density_file

It is also not a great naming, not intuitive, but I don't have a better idea. One could also make this keys of the data
data:
    - abs_data_1
        available_on_init: True
    - icon_output_stream_2
    - density_file
        expose_as_output: True

but it does not enforce a nice sorting. Maybe we just highlight the inputs and outputs and
data:
    inputs:
      - abs_data_1
    - icon_output_stream_2
    outputs:
      - density_file

Also not great.

I think the last suggestion is not a valid yaml file.
I thought about available vs generated. it has the advantage of being rather clear but diverges from the notion of input and output at the workflow level (workflow output is necessarily generated)

Just chiming in here, as I think it's a suitable place for the discussion, rather than opening another issue:
For actually running an ICON simulation through aiida-icon with our tool here, if given data (files or folders) are located on a remote machine, we should create AiiDA orm.RemoteData nodes. This is also given in the IconCalculation spec, e.g., see here:
        spec.input(
            "dynamics_grid_file",
            valid_type=orm.RemoteData,
        )
        spec.input("ecrad_data", valid_type=orm.RemoteData)

I assume this will be the case for most of the files that are available at the beginning of the workflow (apart from the namelists). However, to generate the orm.RemoteData instances, one has to specify the remote computer on which these files are located. So I'm wondering if we should add another type to the data section, e.g., remote  (note that AiiDA's orm.RemoteData doesn't differentiate between files and folders), as well as a computer input would be required (again, important to note the difference between CW tools usually running on the remote, while AiiDA usually runs locally).
One could specify the remote computer, e.g., Todi, in the root task, which then gets chosen as the default. Open to any other proposals, though.

This is also true for the task themselves, they also need to be told, they have to run on the remote machine and this is the same machine for all of them, so this should probably be a root property of the workflow, like:
start_date: 2026-01-01T00:00
end_date: 2027-01-01T00:00
host: santis.cscs.ch
- cycles:
[...]

In CW use cases, you don't expect a single workflow to utilize different machines, I suppose (in our field, one might have that)? If that's not the case, then I agree, it could even be set as a global property in the beginning of the YAML file.

In CW use cases, you don't expect a single workflow to utilize different machines, I suppose? If that's not the case, then I agree, it could even be set as a global property in the beginning of the YAML file.

No data is too large so a single workflow runs on a single machine. Worst case, we could need a task that downloads data from somewhere.


Remove config profile flags from pcr and update responses from show virtual cluster

Fixes DOC-9782, DOC-9984, DOC-9971
This PR includes some of the v24.1 updates to physical cluster replication:

removes the config-profile startup flags and replaces with --virtualized and --virtualized-empty for cockroach init
updates any instances of application to main for the virtual cluster that is created at startup
adds and removes fields that have changed for show vc statement
opportunistic corrections for small errors

Note: preview label still intact until all docs work is complete in PRs to follow.
See the Files Changed box below for rendered previews.

This was my change-by-change review pass. I am going to do another pass and read the complete PCR docs to see the 24.1 changes with more context.

@florence-crl OK, let me know when you have completely finished your review so I can make all changes at once.

@florence-crl I have included the your feedback where relevant, as per the replies.


loader: Fix "Skipping symbol substitution" warning

test-me-please

Coverage decreased (-0.01%) to 46.622% when pulling 6b72eb5aeae6c9a28a2658db0f0e80136c84085d on pr/pchaigno/fix-warning-ipfrag-map-symbol into 30e88376b82c5d8ea0fe6ea203e5fa17381e3de4 on master.

test-me-please

restart-ginkgo

restart-ginkgo

restart-ginkgo


[Feature] "Skill bar" for Skills (like Languages have)

Is your feature request related to a problem? Please describe.
I'd like to have skill ratings and not just the skills name
Describe the solution you'd like
Add an option to add a "skill level" like the ones on "Languages" section
Describe alternatives you've considered
nothing else to consider, i assume
Additional context
some people like to have a broader overview over your skills/experiences, and they want to know your expertise level (ie beginner to expert)
this should help make things clear right from the start

A very essential enhancement.
I have seen many other resumes with such feature

Closing this issue as Reactive Resume has been bumped up to v2.

Hi, I want the opposite: I want skills section with optional rating system, because I do not want to be "forced" into rating my own skills


Freshen up dev readme

Small improvements to the dev readme

CI won't work because this branch lives outside of the MinaProtocol/mina repo. I do not have write access.

Closing as superseded by #15273

Thank you @Isaac-DeFrain, this has now finally landed in #15273.


Roll engine c5b55e9a6783..afed5c54765b (1 commits)

https://github.com/flutter/engine/compare/c5b55e9a6783...afed5c54765b
git log c5b55e9a6783ca811dd7b401332e9db8d4d54076..afed5c54765b3097f4ba58a76b3d450b7631a910 --no-merges --oneline
afed5c547 Mark semantics functions const (flutter/engine#9243)
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 (bmparr@google.com), and stop
the roller if necessary.

Trybots failed. These were the failed builds: https://cirrus-ci.com/task/5606237006200832

CI actually passed after a rerun.  Merging.


How viable is it to use repr(C) structs as WASM primitives?

Background
Right now, the WasmAbi trait works using WASM primitives. Primitives are Rust types that map directly to WASM ABI types, namely i32, u32, i64, u64, f32, f64, and (). () is interesting here, because its ABI is nothing, as in: it doesn't appear. The WasmAbi trait uses the quirk to allow for a variable number of primitives (up to 4) by filling the rest with ().
This design has the major limitation that ALL Rust types must be representable with at most 4 WASM primitives for them to be WASM compatible. This makes it very difficult to support tuples as value types, since they can easily go past the 4 primitives limit. Raising the limit to some number N also isn't a full solution, since we can always create nested tuples that require more primitives.
Question
My question is whether we can use repr(C) structs as primitives in the WASM ABI? Or to be more precise: is it safe to implement WasmPrimitive for a repr(C) structs where all fields also implement WasmPrimitive?
Right now, compiling the following the Rust code:
#[repr(C)]
pub struct Bar {
    pub a: i32,
    pub b: i64,
}

#[cfg_attr(all(target_arch = "wasm32", target_os = "unknown"), no_mangle)]
pub unsafe extern "C" fn my_test_fn(a: Bar, b: Bar) {}

yields with WASM ABI:
(module $reference_test.wasm
  (type (;0;) (func (param i32 i64 i32 i64)))
  (func $my_test_fn (;0;) (type 5) (param i32 i64 i32 i64))
  (memory (;0;) 17)
  (export "memory" (memory 0))
  (export "my_test_fn" (func $my_test_fn))
  (@custom "target_features" (after code) "\02+\0fmutable-globals+\08sign-ext")
)

Note that I specifically chose i32 and i64 fields to see how the ABI handles padding. It seems to handle it well, but I don't know whether this is guaranteed.
Motivation
If this was possible, then it would be trivial to support tuples as value types in the ABI with helper types like this:
/// A "tuple" with a stable ABI.
#[repr(C)]
struct WasmTuple2<T1, T2>{
    item1: T1,
    item2: T2,
}
unsafe impl<T1: WasmPrimitive, T2: WasmPrimitive> WasmPrimitive for WasmTuple2<T1, T2> {}

This would also allow us to simplify the WasmAbi trait, since a single primitive would be enough while allowing for arbitrarily complex ABIs. E.g. Option<T> could define its own helper type or reuse WasmTuple2<u32, T> as its ABI. Similar for Result<T, E> and WasmTuple3<u32, T, E>.

The fact that the "C" ABI currently flattens structs out into their primitives is a bug, since it doesn't match the standard WASM C ABI. See #3454, rust-lang/rust#71871. We need to avoid relying on what it does so that rustc can fix its C ABI without breaking wasm-bindgen.
I had an old draft of a way of supporting arbitrarily-many primitives sitting around on my laptop though; I've just finished it off, here it is:
struct FalseTy;
struct TrueTy;
trait BoolTy {
    type PrimSel<A: WasmPrimitive, B: WasmPrimitive>: WasmPrimitive;
    type ListSel<A: PrimitiveList, B: PrimitiveList>: PrimitiveList;

    fn split_tuple<A: PrimitiveList, B: PrimitiveList>(
        tuple: (A, B),
    ) -> (Prim<(A, B)>, Rest<(A, B)>)
    where
        A::Prim: WasmPrimitive<IsUnit = Self>;

    fn join_tuple<A: PrimitiveList, B: PrimitiveList>(
        prim: <(A, B) as PrimitiveList>::Prim,
        rest: <(A, B) as PrimitiveList>::Rest,
    ) -> (A, B)
    where
        A::Prim: WasmPrimitive<IsUnit = Self>;

    fn split<T: PrimitiveList>(x: &T) -> (Prim1<T>, Prim2<T>, Prim3<T>, Prim4<T>)
    where
        Prim<Rest<Rest<Rest<Rest<T>>>>>: WasmPrimitive<IsUnit = Self>;

    fn join<T: PrimitiveList>(a: Prim1<T>, b: Prim2<T>, c: Prim3<T>, d: Prim4<T>) -> T
    where
        Prim<Rest<Rest<Rest<Rest<T>>>>>: WasmPrimitive<IsUnit = Self>;
}

impl BoolTy for FalseTy {
    type PrimSel<A: WasmPrimitive, B: WasmPrimitive> = B;
    type ListSel<A: PrimitiveList, B: PrimitiveList> = B;

    fn split_tuple<A: PrimitiveList, B: PrimitiveList>((a, b): (A, B)) -> (A::Prim, (A::Rest, B))
    where
        A::Prim: WasmPrimitive<IsUnit = FalseTy>,
    {
        let (a_prim, a_rest) = a.split();
        (a_prim, (a_rest, b))
    }

    fn join_tuple<A: PrimitiveList, B: PrimitiveList>(prim: A::Prim, rest: (A::Rest, B)) -> (A, B)
    where
        A::Prim: WasmPrimitive<IsUnit = FalseTy>,
    {
        (A::join(prim, rest.0), rest.1)
    }

    fn split<T: PrimitiveList>(x: &T) -> (&T, (), (), ())
    where
        Prim<Rest<Rest<Rest<Rest<T>>>>>: WasmPrimitive<IsUnit = Self>,
    {
        (&x, (), (), ())
    }

    fn join<T: PrimitiveList>(a: &T, _: (), _: (), _: ()) -> T
    where
        Prim<Rest<Rest<Rest<Rest<T>>>>>: WasmPrimitive<IsUnit = Self>,
    {
        *a
    }
}
impl BoolTy for TrueTy {
    type PrimSel<A: WasmPrimitive, B: WasmPrimitive> = A;
    type ListSel<A: PrimitiveList, B: PrimitiveList> = A;

    fn split_tuple<A: PrimitiveList, B: PrimitiveList>((_, b): (A, B)) -> (B::Prim, B::Rest)
    where
        A::Prim: WasmPrimitive<IsUnit = Self>,
    {
        b.split()
    }

    fn join_tuple<A: PrimitiveList, B: PrimitiveList>(prim: B::Prim, rest: B::Rest) -> (A, B)
    where
        A::Prim: WasmPrimitive<IsUnit = TrueTy>,
    {
        (A::empty(), B::join(prim, rest))
    }

    fn split<T: PrimitiveList>(x: &T) -> (Prim1<T>, Prim2<T>, Prim3<T>, Prim4<T>)
    where
        Prim<Rest<Rest<Rest<Rest<T>>>>>: WasmPrimitive<IsUnit = Self>,
    {
        let (a, rest) = (*x).split();
        let (b, rest) = rest.split();
        let (c, rest) = rest.split();
        let (d, _) = rest.split();
        (a, b, c, d)
    }

    fn join<T: PrimitiveList>(a: Prim1<T>, b: Prim2<T>, c: Prim3<T>, d: Prim4<T>) -> T
    where
        Prim<Rest<Rest<Rest<Rest<T>>>>>: WasmPrimitive<IsUnit = Self>,
    {
        let rest = PrimitiveList::join(d, PrimitiveList::empty());
        let rest = PrimitiveList::join(c, rest);
        let rest = PrimitiveList::join(b, rest);
        PrimitiveList::join(a, rest)
    }
}

type PrimSel<Sel, A, B> = <Sel as BoolTy>::PrimSel<A, B>;
type ListSel<Sel, A, B> = <Sel as BoolTy>::ListSel<A, B>;

trait WasmPrimitive: Copy {
    type IsUnit: BoolTy;
    /// If `Self = ()`, returns `()`, otherwise panics.
    fn unit() -> Self {
        unreachable!()
    }
}
impl WasmPrimitive for () {
    type IsUnit = TrueTy;
    fn unit() {}
}
impl WasmPrimitive for u32 {
    type IsUnit = FalseTy;
}
impl<T> WasmPrimitive for &T {
    type IsUnit = FalseTy;
}
// etc...

trait PrimitiveList: Copy {
    type Prim: WasmPrimitive;
    type Rest: PrimitiveList;
    /// If this `PrimitiveList` is empty, returns the only valid instance of it
    /// (since it should be all `()`s); otherwise panics.
    fn empty() -> Self;
    fn split(self) -> (Self::Prim, Self::Rest);
    fn join(prim: Self::Prim, rest: Self::Rest) -> Self;
}

type IsUnit<T> = <T as WasmPrimitive>::IsUnit;

type Prim<T> = <T as PrimitiveList>::Prim;
type Rest<T> = <T as PrimitiveList>::Rest;

type NaivePrim1<T> = Prim<T>;
type NaivePrim2<T> = Prim<Rest<T>>;
type NaivePrim3<T> = Prim<Rest<Rest<T>>>;
type NaivePrim4<T> = Prim<Rest<Rest<Rest<T>>>>;
type NaivePrim5<T> = Prim<Rest<Rest<Rest<Rest<T>>>>>;

type IsEmpty<T> = IsUnit<NaivePrim1<T>>;

impl<T: WasmPrimitive> PrimitiveList for T {
    type Prim = T;
    type Rest = ();

    fn empty() -> Self {
        T::unit()
    }

    fn split(self) -> (Self, ()) {
        (self, ())
    }

    fn join(prim: Self, _: ()) -> Self {
        prim
    }
}

// This is a general way to concatenate two `PrimitiveList`s, but shouldn't be
// what we actually use for argument types, since we need the `PrimitiveList` to
// be `#[repr(C)]` in the long case so we can have JS fill it in and pass a
// pointer.
impl<T: PrimitiveList, U: PrimitiveList> PrimitiveList for (T, U) {
    type Prim = PrimSel<IsEmpty<T>, Prim<U>, Prim<T>>;
    type Rest = ListSel<IsEmpty<T>, Rest<U>, (Rest<T>, U)>;

    fn empty() -> Self {
        (T::empty(), U::empty())
    }

    fn split(self) -> (Self::Prim, Self::Rest) {
        <IsEmpty<T>>::split_tuple(self)
    }

    fn join(prim: Self::Prim, rest: Self::Rest) -> Self {
        <IsEmpty<T>>::join_tuple(prim, rest)
    }
}

#[derive(Clone, Copy)]
#[repr(C)]
struct WasmTuple2<T, U>(T, U);

impl<T: PrimitiveList, U: PrimitiveList> PrimitiveList for WasmTuple2<T, U> {
    type Prim = Prim<(T, U)>;
    type Rest = Rest<(T, U)>;

    fn empty() -> Self {
        Self(T::empty(), U::empty())
    }

    fn split(self) -> (Self::Prim, Self::Rest) {
        (self.0, self.1).split()
    }

    fn join(prim: Self::Prim, rest: Self::Rest) -> Self {
        let (a, b) = <(T, U)>::join(prim, rest);
        Self(a, b)
    }
}

#[derive(Clone, Copy)]
#[repr(C)]
struct WasmTuple3<A, B, C>(A, B, C);

impl<A: PrimitiveList, B: PrimitiveList, C: PrimitiveList> PrimitiveList for WasmTuple3<A, B, C> {
    type Prim = Prim<(A, (B, C))>;
    type Rest = Rest<(A, (B, C))>;

    fn empty() -> Self {
        Self(A::empty(), B::empty(), C::empty())
    }

    fn split(self) -> (Self::Prim, Self::Rest) {
        (self.0, (self.1, self.2)).split()
    }

    fn join(prim: Self::Prim, rest: Self::Rest) -> Self {
        let (a, (b, c)) = <(A, (B, C))>::join(prim, rest);
        Self(a, b, c)
    }
}

type IsShort<T> = <NaivePrim5<T> as WasmPrimitive>::IsUnit;

type Prim1<'a, T> = PrimSel<IsShort<T>, NaivePrim1<T>, &'a T>;
type Prim2<T> = PrimSel<IsShort<T>, NaivePrim2<T>, ()>;
type Prim3<T> = PrimSel<IsShort<T>, NaivePrim3<T>, ()>;
type Prim4<T> = PrimSel<IsShort<T>, NaivePrim4<T>, ()>;

fn split<T: PrimitiveList>(x: &T) -> (Prim1<T>, Prim2<T>, Prim3<T>, Prim4<T>) {
    <IsShort<T>>::split(x)
}
fn join<T: PrimitiveList>(a: Prim1<T>, b: Prim2<T>, c: Prim3<T>, d: Prim4<T>) -> T {
    <IsShort<T>>::join(a, b, c, d)
}

fn main() {
    let a = 1234;

    let x = ((1, 2), (&a, (4, 5)));
    let y = ((1, 2), (&a, 4));
    let z = 1;

    assert_eq!(split(&x), (&x, (), (), ()));
    assert_eq!(split(&y), (1, 2, &a, 4));
    assert_eq!(split(&z), (1, (), (), ()));

    assert_eq!(join::<((u32, u32), (&i32, (u32, u32)))>(&x, (), (), ()), x);
    assert_eq!(join::<((u32, u32), (&i32, u32))>(1, 2, &a, 4), y);
    assert_eq!(join::<u32>(1, (), (), ()), z);
}

It's inspired by the way the component model works: if there are less than 16 primitives (I've used 4 here to keep things short but 16 probably makes more sense), they're passed as arguments, but if there are more they're all passed by pointer instead.
But the primary reason for passing the whole thing by pointer rather than just the ones past the 16th element is to make it easier to implement: we can just pass a pointer to the original type, rather than having to somehow generate a #[repr(C)] struct with arbitrarily many fields (which I don't think is possible).
The idea is that the macro would create a #[repr(C)] struct containing all the arguments of a function, implement PrimitiveList for it, and then use PrimX<T> as the arguments of the extern "C" function.
This solution requires GATs though, which would require bumping the MSRV to 1.65, which is a bit of a problem with #4038. It's also not exactly a simplification.


[VS Code] Joining collaboration session: Collaboration session not found.

Error:
Joining collaboration session: Collaboration session not found.
Steps to Reproduce:
1.
2.

Version Data

extensionName
VSLS

extensionVersion
1.0.614

protocolVersion
2.2

applicationName
VSCode

applicationVersion
1.36.1

platformName
MacOS

platformVersion
18.2.0

@alexdaniels11 thanks for reporting the issue. It's possible that the person who has hosted/shared the session might have ended the session and there is no active session. Have you checked with host if the session still exists?

No response. Closing as inactive.


python311Packages.pyannotate: refactor

disable failing tests

Fix build (https://hydra.nixos.org/build/272026585)

Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] 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

[ ] 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
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.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

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 348064 run on x86_64-linux 1

8 packages built:

python311Packages.pyannotate
python311Packages.pyannotate.dist
python311Packages.pytest-annotate
python311Packages.pytest-annotate.dist
python312Packages.pyannotate
python312Packages.pyannotate.dist
python312Packages.pytest-annotate
python312Packages.pytest-annotate.dist


Twitch WebHooks deprecation

Twitch WebHooks are being deprecated. (See https://discuss.dev.twitch.tv/t/deprecation-of-websub-based-webhooks/32152)
We use Twitch WebHooks for a few things - there are transition paths to EventSub for these things. We should transition to EventSub

Fixed in #477


Update github-pages.yml

Update permissions to publish to gh-pages
Top-level lockdown uses empty/no permissions; whereas job-level uses write permissions with token
Refer to app/dev CI job with successfull publishing job 19/03/2024

@mvincerx Can you submit a PR to both the development and the release/2024.1 branches?
The release/2024.1 branch will be merged to the mater branch in the next release.

Closing this PR as I manually updated the development and release/2024.1 branches.


Change copy to database task to copy tables individually

As a developer I want the ETL to be able to use multiple cores when available so having more granular tasks can help with that. The current copy task copies all the csvs with the formatted data into the database at once, and some tables are bigger than others. We should see an improvement in performance if we have a copy task by table so multiple tables can be copied in parallel.

@CsabaHalmagyi done

Done