emitWarning error when upgrading to fastify packages

After upgrading various fastify packages the application won't start anymore due to an error being thrown:
TypeError: The "warning" argument must be one of type Error or string. Received type objectTypeError [ERR_INVALID_ARG_TYPE]: The "warning" argument must be one of type Error or string. Received type object

      at emitWarning (node_modules/fastify/lib/warnings.js:63:11)
      at new Parser (node_modules/fastify/lib/contentTypeParser.js:233:5)
      at ContentTypeParser.add (node_modules/fastify/lib/contentTypeParser.js:51:18)
      at Object.addContentTypeParser (node_modules/fastify/lib/contentTypeParser.js:262:30)
      at module.exports (node_modules/fastify-gql/lib/routes.js:212:7)
      at Plugin.exec (node_modules/avvio/plugin.js:129:17)
      at Boot.loadPlugin (node_modules/avvio/plugin.js:264:10)
      at release (node_modules/fastq/queue.js:127:16)
      at Object.resume (node_modules/fastq/queue.js:61:7)

This can be traced back to this package trying to add a content type parser with a signature that fastify considers deprecated but eventually the error is happening in Node's process.emitWarning because fastify is providing to it something that's not what it expects.
I tried updating all the fastify-related packages to their latest versions without any luck.

This has not shipped a version compatible to fastify v3 yet :(.

This has not shipped a version compatible to fastify v3 yet :(.

Understood, yet it seems that there's an issue with how deprecation warnings are raised in fastify itself. Looking at the error above, it seems that Node breaks when fastify raises a warning.

Can you open an issue in fastify itself with a small repro?

I tried to reproduce it in a standalone repro but couldn't, and I figured that the warning is emitted correctly when running the app, but it crashes the process when the warning is emitted during automated tests using Jest, and the cause seems to be this.

Closing, it's a jest problem :(.

The work-around I used is mocking process.emitWarning().
describe('test mock process emit warning', () => {   let spy = null;   beforeAll(() => {     spy = jest.spyOn(process, 'emitWarning');     spy.mockReturnValue('warning');   }   afterAll(() => {     spy.mockRestore();   }   test('some library accesses a deprecated property like request.req', () => {     // run the test   } }


Bump plexapi to 3.2.0

Description:
This should resolve a few uncommon edge cases in TV season handling, PMP compatibility, and reduce unnecessary logging.
Related issues: Additional fixes for #26535 #28705
Checklist:

[x] The code change is tested and works locally.
[x] Local tests pass with tox. Your PR cannot be merged unless tests pass
[x] There is no commented out code in this PR.
[x] I have followed the development checklist

If the code communicates with devices, web services, or third-party tools:

[x] The manifest file has all fields filled out correctly. Update and include derived files by running python3 -m script.hassfest.
[x] New or updated dependencies have been added to requirements_all.txt by running python3 -m script.gen_requirements_all.

Should the linked issues be closed upon merge?

I'd like to have confirmation from the reporters. I'll monitor the issues and close when we get confirmation.

Hold off on merging this, a new release may be imminent.


Almost always a first result of one of the test-packages will return NaN

hey,
if I run the performance tester I do get a lot of NaN on the first run. It looks like this

Apparently, _scoreMessage get's somehow called before we call it ourself? it has no data then... so if I add this little safety check in perf-tester.js the problem just disappears.
    _scoreMessage(e) {
      if (this.afterScore) {
        // START of edit
        if (!e.data) {
          return;
        }
        // END of edit
        let info = e.data;
        if (typeof info !== 'object') {
          info = {time: info};
        }
        info.time = parseInt(info.time);
        this.afterScore(info);
      }
    }

would you like a PR?
PS: the same problem appears in the node version (if this is a valid solution I can take a look there as well)

Yes feel free to submit a PR :)
On Sat, 3 Feb 2018, 10:35 Thomas Allmer<EMAIL_ADDRESS>wrote:

hey,
if I run the performance tester I do get a lot of NaN on the first run. It
looks like this
[image: nanresult]
https://user-images.githubusercontent.com/24378/35765858-2ffba204-08cd-11e8-9647-7899a6d5d2a6.PNG
Apparently, _scoreMessage get's somehow called before we call it ourself?
it has no data then... so if I add this little safety check in
perf-tester.js the problem just disappears.
_scoreMessage(e) {
  if (this.afterScore) {
    // START of edit
    if (!e.data) {
      return;
    }
    // END of edit
    let info = e.data;
    if (typeof info !== 'object') {
      info = {time: info};
    }
    info.time = parseInt(info.time);
    this.afterScore(info);
  }
}

would you like a PR?
PS: the same problem appears in the node version (if this is a valid
solution I can take a look there as well)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/PolymerLabs/perf-tester/issues/7, or mute the thread
https://github.com/notifications/unsubscribe-auth/AFrDb_hpO6YdpPw2paHgNQgghJS_wjjQks5tRChcgaJpZM4R4HAd
.

The fix doesn't work for me.


Not displaying all models when using subfolders

Hello, I've observed an issue in which the toolkit is not displaying all models in the models list when there are folders in the "models" folder. This will cause an issue where many images will display "Not found" under "Model Name" when inspecting its png info.
I have model root set correctly to where all my models are located, and I've tried the "Rescan Folders" button.
[path to webui]\models\Stable-diffusion
My model root folder is formatted sort of like this

1 (subfolder)

modelD (ckpt file)

2 (subfolder)

modelE (ckpt file)

3 (subfolder)

modelF (ckpt file)

modelA (ckpt file)
modelB (ckpt file)
modelC (ckpt file)

In this condition, the toolkit is displaying only "modelF", in subfolder "3". The root folder and other folders are not recongized.

Hi, I have a similar setup, with several subfolders. It seems to work for me. Is there any other information you can give?

Red herring, I think, got me confused. I should have just provided my actual file/folder environment instead of creating a simplified example.
The way I set up my folders, my last folder has all my ckpt files. Everything else was converted to safetensors file format. I tested by shuffling some files around to confirm, and indeed the application just doesn't recognize safetensors format.
Models tab is only showing ckpt files, no safetensors
Sorry about the poor troubleshooting, I'll update the title, too.

I can add support for safetensors. I'll assume that the same (inexact) method of calculating the hash is used?

Yeah from what I can see it still uses the shorthash. Thanks for the quick update!


feat(transformer/class-properties): transform super expressions and identifiers that refers to class binding in private method

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#8106  👈 (View in Graphite)
#8105
#8104
#8103
#8102
#8100
#8099
#8098
main

How to use the Graphite Merge Queue
Add either label to this PR to merge it via the merge queue:

0-merge - adds this PR to the back of the merge queue
hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.


[Bug] BetterDiscord uninstalls with every Discord update

Before Reporting

[X] I found no existing issues matching my bug
[X] My issue is not caused by a plugin or theme

Describe the Bug
Close Discord > Open Discord > Let Discords automatic update wizard run > Go to client settings at bottom left (cogwheel) > Scroll down in the menu to the left > Notice that all BetterDiscord entries are no longer present (and that all other BetterDiscord related functionality is no longer  functional).
Currently (afaik), as a user you will now need to re-run BetterDiscords install wizard to regain BetterDiscord functionality, installed plugins and themes appear to be unaffected, but you need to manually reactivate them (which on its own is a lot of labor to go through).
Expected Behavior
BetterDiscord should provide a tool that allows automated repair of BetterDiscord after a Discord update (that should run without the need of additional user interaction). Ideally what plugins are active should be remembered as well.
Discord is updated weekly, I dont think its reasonable to assume most users to be willing to re-run an install wizard and re-active plugins manually this often.
Steps To Reproduce

Operating System
Windows
Discord Version
Stable
BetterDiscord Version
1.9.5 and below
Anything else?
No response

That is completely normal. Injection gets removed when Discord updates because it replaces the files and folders that BD injects into. Stable has to reinstall maybe once a month, not weekly.

See above and it's also a duplicate of #1231. You should not have to re-enable plugins or themes that data is preserved through reinstall, plugins get disabled if you use repair instead of install. Generally host updates on Discord stable only happen a few times a year.

host updates on Discord stable only happen a few times a year.

On my device (win11 v10.0.22000.2538) with a version of discord installed directly from discord.com I get updates that uninstall betterdiscord more than weekly.
Used to be the same on my previous PC which ran win10

Then your Discord app decides that it should refresh its data. There is not much you can do other than actually reinstalling BetterDiscord after it has done so. There is nothing you can do to automate this task. as they cannot detect when Discord does do a refresh. And even if they could, Betterdiscord works by modifying the core to load BetterDiscords own ASAR, Which is a change that can only be applied after restarting the app as the core is one of the first things that are loaded. And BD loads only AFTER the discord app has fully loaded.
If it really bothers you to have to reinstall BetterDiscord Every single time this happens, I can only reccomend you take a look at Knewests BetterDiscord Install Scripts. They should provide you with a single click reinstall of BetterDiscord.

Thanks for the link @Riddim-GLiTCH . I will try it next time my injection fails.


Active support stubs

Pull Request Test Coverage Report for Build<PHONE_NUMBER>7
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 93.382%

Totals

Change from base Build<PHONE_NUMBER>4:
0.0%

Covered Lines:
106

Relevant Lines:
111

💛  - Coveralls


The “last update time of this doc”  is not accurate

Thanks for your great tool.
We found that “last update time of this doc”  is often changed, even if the doc is not updated
For more details, see  https://github.com/mosn/layotto/issues/615

The plugin will get the file update time on the system.
When CI documents from github or gitlab, the file time on the system will change and become the time of CI (this is why the plugin shows the time inaccurate).
The idea is to use git to repair the file time during the CI process. The command is as follows:
git ls-files | while read file; do touch -d $(git log -1 --format="@%ct" "$file") "$file"; done

Same goes for CD or manual deployment.

Thanks for explanation ! Now I know why.

The idea is to use git to repair the file time during the CI process. The command is as follows:
git ls-files | while read file; do touch -d $(git log -1 --format="@%ct" "$file") "$file"; done

But I don't know where to add this command in github workflow 😢
As far as I know, the github workflow starts a new container for every job . So even if I modify the timestamp in a job , the container will be destroyed after the job finished, and nothing will be changed.

I also found a github-action https://github.com/chetan/git-restore-mtime-action . It's used before building the doc site, but docsify doesn't have a "build" step

It is recommended to use git to fix file update times during deployment of docsify documentation (continuous or manual).
For example to manually deploy the document:
# clone repo
git clone https://github.com/mosn/layotto.git

# cd dir
cd layotto

# repair file update time
git ls-files | while read file; do touch -d $(git log -1 --format="@%ct" "$file") "$file"; done

# Start the docsify service
docsify serve docs/


[Question] How to use with a VIPER architecture?

I love the simplicity of this DI package, but I'm finding the documentation a little confusing. My adoption of the package would depend on how it deals with a 'Clean Architecture' used in a professional workspace. Right now I'm struggling to understand how to use this package with a VIPER architecture. We use a similar structure to here:
https://github.com/theswiftdev/tutorials/blob/master/VIPER/VIPERAndSwiftUI/VIPERAndSwiftUI/Sources/VIPER.swift
I began with this (below) but it doesn't compile (not even sure this is the correct approach):
import Foundation
import SwiftUI
import Factory

// MARK: - Router
typealias ListViewRouterInterface = any RouterInterface & ListViewRouterPresenterInterface

protocol ListViewRouterPresenterInterface: RouterPresenterInterface {
    func showDetails(for animal: Animal) -> any View
}

// MARK: - Presenter

typealias ListViewPresenterInterface = any PresenterInterface & ListViewPresenterRouterInterface & ListViewPresenterInteractorInterface & ListViewPresenterViewInterface

protocol ListViewPresenterRouterInterface: PresenterRouterInterface {

}

protocol ListViewPresenterInteractorInterface: PresenterInteractorInterface {
    func didLoad(animals: [Animal])
}

protocol ListViewPresenterViewInterface: PresenterViewInterface {
    var viewModel: ListViewModel? { get set }
    func onAppear()
    func onBtnPress(animal: String)
}

// MARK: - Interactor
typealias ListViewInteractorInterface = any InteractorInterface & ListViewInteractorPresenterInterface

protocol ListViewInteractorPresenterInterface: InteractorPresenterInterface {
    func fetchItems()
}

extension Container {
    static let apiService = Factory<APIServiceProtocol>(scope: .shared) { APIService() }
}

class ListViewContainer: SharedContainer {
    static let viewModel = Factory<ListViewModel>(scope: .shared) { ListViewModel() }
    static let presenter = Factory<ListViewPresenterInterface>(scope: .shared) { ListViewPresenter() }
    static let interactor = Factory<ListViewInteractorInterface>(scope: .shared) { ListViewInteractor() }
    static let router = Factory<ListViewRouterInterface>(scope: .shared) { ListViewRouter() }
}

final class ListViewModule {
    @Injected(ListViewContainer.viewModel) private var viewModel
    @Injected(ListViewContainer.presenter) private var presenter
    @Injected(ListViewContainer.interactor) private var interactor
    @Injected(ListViewContainer.router) private var router

    func build() -> some View {
        presenter.viewModel = self.viewModel
        let view = ListView(presenter: presenter)
        presenter.interactor = self.interactor
        presenter.router = self.router
        interactor.presenter = self.presenter
        router.presenter = self.presenter
        return view
    }

Do you have any advice on how to do this in a VIPER architecture? I think this would be a great example to add to your samples folder. The fact that VIPER has various Input and Output contracts make it difficult.

Not sure where to start here. You're right that the code doesn't compile. Give me me a working version that compiles w/o DI and I might be able to help.
Part of the problem is that you're trying to make everything a protocol, and I think you're getting into trouble with Swift's famous associated type requirements on the presenter that needs to return "some" view.
Not everything needs or wants to be a protocol. See: Using View Model Protocols in SwiftUI? You’re Doing it Wrong. for a discussion of how to swap out backend services.
That said, I'm going to go on the record as saying that VIPER is a fairly decent methodology... for UIKit.
The entire system is designed to wire together components in an old-school, imperative, direct reference delegate mechanism. And does that in order to provide control and update and segregation mechanisms that in more modern architectures would be done with RxSwift or Combine, or in the case of SwiftUI, with state observation and lightweight view composition.
Further, VIPER is a somewhat verbose and complex architectural system designed to slim down and manage heavyweight UIViewControllers and the choices it makes are, IMHO, is extremely ill-suited to SwiftUI. I've written about it somewhat extensively in SwiftUI: Choosing an Application Architecture.

I've just seen those 1.2.5 changes - nice one. That makes it Interesting, as I've been wondering whether to put the Injections in the individual classes, versus in the module builder. In fact, I'll just try it in a new branch.

I tried on a new branch here:
https://github.com/elprl/Factory/tree/viper-spike-weak-inject
It doesn't compile because WeakLazyInjected requires a class type rather than my protocols.
final class ListViewInteractor: ListViewInteractorInterface {
    @WeakLazyInjected(ListViewContainer.presenterInteractor) var presenter // Error: Generic struct 'WeakLazyInjected' requires that 'any ListViewPresenterInteractorInterface' be a class type
    @Injected(Container.apiService) private var apiService
}

So looks like it can't be done in the way I'd hoped.

Any luck?
Also, I put together a few thoughts on SwiftUI and VIPER here....
https://michaellong.medium.com/viper-for-swiftui-please-no-ee61ce99694c

I think you can also conform your protocols to AnyObject.

They already conform to AnyObject. It needs to be a class as the error states.

I may need to file a radar on that as Swift should be able to figure out the conformance.
This, for example, works:
weak var presenter: ListViewPresenterInteractorInterface? = ListViewContainer.presenterInteractor()

Without the AnyObject conformance on the protocol the assignment fails complaining about assigning a non-class-based protocol to weak variable.

There are some updates in 1.2.7.

Because the wrapped value returned by WeakLazyInjected is optional? It is weak, after all.
You can start explicitly unwrapping things, but as I wrote in the section on optionals, doing so violates the core premise on which Factory was built in the first place: Your code is guaranteed to be safe.
protocol ListViewRouterInterface {
    /*weak*/ var presenter: ListViewPresenterRouterInterface! { get set }
}

final class ListViewRouter: ListViewRouterInterface {
    @WeakLazyInjected(ListViewContainer.presenterRouter) var presenter: ListViewPresenterRouterInterface!
}

Seems to be working well. I added some sample unit tests and all seemed to work well.


Updated Wyam to 1.6.0

This PR updates the recipe to Wyam 1.6.0.  Along with a more stable MSBuild integration, the update adds much better presentation of generic types and resolves several issues related to generic types.
This will still need some review - I wasn't quite sure how to run the recipe against the docs for Cake.Recipe so testing was a bit tough (and by tough I mean non-existent).
Happy Hacktoberfest :smile:

@daveaglick your changes have been merged, thanks for your contribution 👍


⚠ Bofrost.at has degraded performance

In e4af693, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1155 ms

Resolved: Bofrost.at performance has improved in 2946bab.


Autocompletion is not working propperly

The auto-completion menu disappears without selecting an option.
The last cursor does not autocomplete properly.

Are there an plans to fix this?

@naggie Not likely. As you can see, this plugin is not actively developed. If you can come up with a patch, you're welcome to do it. Also, this seems to be a duplicate of #144.


libmavconn compile failed

This failure first found at Aug 27 23:56, 2017 with Morty Yocto build. The last success build was at Aug 22 18:33, 2017.
This looks wired to me because I didn't see any new commit during this time period, and no changes relative with the libmavconn was make.
| In file included from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../message.hpp:32:0,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/common.hpp:16,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/include/mavconn/mavlink_dialect.h:23,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/include/mavconn/interface.h:37,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/src/mavlink_helpers.cpp:21:
| /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../mavlink_helpers.h: In function 'uint8_t mavlink::mavlink_frame_char_buffer(mavlink::mavlink_message_t*, mavlink::mavlink_status_t*, uint8_t, mavlink::mavlink_message_t*, mavlink::mavlink_status_t*)':
| /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../mavlink_helpers.h:781:54: error: 'MAVLINK_START_SIGN_STREAM' was not declared in this scope
|     MAVLINK_START_SIGN_STREAM(status->signing->link_id);
|                                                       ^
| /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../mavlink_helpers.h:783:52: error: 'MAVLINK_END_SIGN_STREAM' was not declared in this scope
|     MAVLINK_END_SIGN_STREAM(status->signing->link_id);
|                                                     ^
| In file included from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../message.hpp:32:0,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/common.hpp:16,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/include/mavconn/mavlink_dialect.h:23,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/include/mavconn/interface.h:37,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/src/interface.cpp:22:
| /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../mavlink_helpers.h: In function 'uint8_t mavlink::mavlink_frame_char_buffer(mavlink::mavlink_message_t*, mavlink::mavlink_status_t*, uint8_t, mavlink::mavlink_message_t*, mavlink::mavlink_status_t*)':
| /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../mavlink_helpers.h:781:54: error: 'MAVLINK_START_SIGN_STREAM' was not declared in this scope
|     MAVLINK_START_SIGN_STREAM(status->signing->link_id);
|                                                       ^
| /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../mavlink_helpers.h:783:52: error: 'MAVLINK_END_SIGN_STREAM' was not declared in this scope
|     MAVLINK_END_SIGN_STREAM(status->signing->link_id);
|                                                     ^
| In file included from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../message.hpp:32:0,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/common.hpp:16,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/include/mavconn/mavlink_dialect.h:23,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/include/mavconn/interface.h:37,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/include/mavconn/tcp.h:24,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/src/tcp.cpp:22:
| /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../mavlink_helpers.h: In function 'uint8_t mavlink::mavlink_frame_char_buffer(mavlink::mavlink_message_t*, mavlink::mavlink_status_t*, uint8_t, mavlink::mavlink_message_t*, mavlink::mavlink_status_t*)':
| /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../mavlink_helpers.h:781:54: error: 'MAVLINK_START_SIGN_STREAM' was not declared in this scope
|     MAVLINK_START_SIGN_STREAM(status->signing->link_id);
|                                                       ^
| /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../mavlink_helpers.h:783:52: error: 'MAVLINK_END_SIGN_STREAM' was not declared in this scope
|     MAVLINK_END_SIGN_STREAM(status->signing->link_id);
|                                                     ^
| In file included from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../message.hpp:32:0,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/common.hpp:16,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/include/mavconn/mavlink_dialect.h:23,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/include/mavconn/interface.h:37,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/include/mavconn/udp.h:22,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/src/udp.cpp:22:
| /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../mavlink_helpers.h: In function 'uint8_t mavlink::mavlink_frame_char_buffer(mavlink::mavlink_message_t*, mavlink::mavlink_status_t*, uint8_t, mavlink::mavlink_message_t*, mavlink::mavlink_status_t*)':
| /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../mavlink_helpers.h:781:54: error: 'MAVLINK_START_SIGN_STREAM' was not declared in this scope
|     MAVLINK_START_SIGN_STREAM(status->signing->link_id);
|                                                       ^
| ERROR: oe_runmake failed
| /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../mavlink_helpers.h:783:52: error: 'MAVLINK_END_SIGN_STREAM' was not declared in this scope
|     MAVLINK_END_SIGN_STREAM(status->signing->link_id);
|                                                     ^
| In file included from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../message.hpp:32:0,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/common.hpp:16,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/include/mavconn/mavlink_dialect.h:23,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/include/mavconn/interface.h:37,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/include/mavconn/serial.h:22,
|                  from /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/mavros-0.18.7/libmavconn/src/serial.cpp:22:
| /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../mavlink_helpers.h: In function 'uint8_t mavlink::mavlink_frame_char_buffer(mavlink::mavlink_message_t*, mavlink::mavlink_status_t*, uint8_t, mavlink::mavlink_message_t*, mavlink::mavlink_status_t*)':
| /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../mavlink_helpers.h:781:54: error: 'MAVLINK_START_SIGN_STREAM' was not declared in this scope
|     MAVLINK_START_SIGN_STREAM(status->signing->link_id);
|                                                       ^
| /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/sysroots/duovero/opt/ros/indigo/include/mavlink/v2.0/common/../mavlink_helpers.h:783:52: error: 'MAVLINK_END_SIGN_STREAM' was not declared in this scope
|     MAVLINK_END_SIGN_STREAM(status->signing->link_id);
|                                                     ^
| make[2]: *** [CMakeFiles/mavconn.dir/build.make:66: CMakeFiles/mavconn.dir/src/mavlink_helpers.cpp.o] Error 1
| make[2]: *** Waiting for unfinished jobs....
| make[2]: *** [CMakeFiles/mavconn.dir/build.make:114: CMakeFiles/mavconn.dir/src/serial.cpp.o] Error 1
| make[2]: *** [CMakeFiles/mavconn.dir/build.make:90: CMakeFiles/mavconn.dir/src/interface.cpp.o] Error 1
| make[2]: *** [CMakeFiles/mavconn.dir/build.make:138: CMakeFiles/mavconn.dir/src/udp.cpp.o] Error 1
| make[2]: *** [CMakeFiles/mavconn.dir/build.make:162: CMakeFiles/mavconn.dir/src/tcp.cpp.o] Error 1
| make[2]: Leaving directory '/home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/build'
| make[1]: *** [CMakeFiles/Makefile2:71: CMakeFiles/mavconn.dir/all] Error 2
| make[1]: Leaving directory '/home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/build'
| make: *** [Makefile:131: all] Error 2
| WARNING: /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/temp/run.do_compile.54082:1 exit 1 from 'exit 1'
| ERROR: Function failed: do_compile (log file is located at /home/gumstix/Buildbot/yocto-duovero-morty/build/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libmavconn/0.18.7-r0/temp/log.do_compile.54082)
NOTE: recipe libmavconn-0.18.7-r0: task do_compile: Failed
ERROR: Task (/home/gumstix/Buildbot/yocto-duovero-morty/build/poky/meta-ros/recipes-ros/mavros/libmavconn_0.18.7.bb:do_compile) failed with exit code '1'

Thank you very much for reporting.
I believe the issue is that the mavlink recipe [1] uses AUTOREV, which means it always updates to most recent commit in the git repository. I think we should just tie it to a specific commit (of a specific released version), and make sure to update that in controlled fashion.
When mavlink and mavros was proposed as pull request and merged, I did not known how many users would actually use and rely on those recipes, so I noticed the AUTOREV line, but I did not start nitpicking about that detail.
[1] https://github.com/bmwcarit/meta-ros/blob/master/recipes-ros/mavlink/mavlink_git.bb

No problem, it makes sense. AUTOREV is a good option for reducing the work of updating recipes though if they tested through the release. If the problem is fixed, please close this issue then I will know it. Thank you!

@yangjiel MAVROS and MAVlink packages have different release timing, so that's why sometimes we can find issues when the MAVLink package is not sync with upstream of MAVLink.

In the commit
https://github.com/bmwcarit/meta-ros/commit/068d91088e2b9de110249e852e6e51bc28cf94ee, we tied mavlink to a specific version, so this issue is now resolved if you update to the current master or cherry-pick this commit.


Feature/large group assignment

The objective of this fix is to split up large lists of groups to add and/or remove - the UMAPI imposes a limit of 10 per list in a single command.
I say "per list" because a command can contain multiple lists of groups.
do: [
  { <- single command
   add: {
     product: [p1, p2, p3, .... ] <- 10 group limit
     usergroup: [g1, g2, g3 .... ] <- 10 group limit
   },
   remove: {
     product: [n1, n2, n3 .... ] <- 10 group limit
   }
 }
]

If any of the group lists in the above example have more than 10 groups, the umapi client will split that list into groups of 10.  The first group will be updated on the existing command (with respect to the add/remove container and group type).  Additional group lists will be added to new commands, which will be appended to the command list.
For example - if there are 15 user groups to be added in the above example, then the command list would look like this after the split:
do: [
  {
   add: {
     product: [p1, p2, p3, .... ]
     usergroup: [g1, g2 ... g10 ] <- First 10 groups are assigned here
   },
   remove: {
     product: [n1, n2, n3 .... ]
   }
  },
   add: {
     usergroup: [g11 .. g15 ] <- next group (up to 10) goes in a new command
   },
 }
]

If the initial example had more than 10 adds AND 10 removes, then the split would create one command per "add/remove" verb per 10-group list.
The process that checks group length and splits group lists happens in Connection.execute_multiple().  I considered putting it in the add/remove functions of UserAction, but decided against it - I wasn't sure how best to provide the max group limit.  The connection class already manages the actions-per-call and commands-per-action limits, so it seemed like a more natural fit.  I'm open to feedback on my approach.

Also - I changed the "verb" nomenclature to "step keys" to better reflect UMAPI terminology.

It passes all tests except the live ones, which are skipped because I haven't put a config in place.

Do I need to do any special kind of setup on my stage org to run the live tests?

I've sent you the live config separately.  Thanks so much for doing this work!  I'll merge the fixes.


[FLINK-22120] Remove duplicate code in generated code for map get

What is the purpose of the change
This pull request fixed a bug that there is duplicate code in generated code for map get, an it may lead to some exceptions such as  'Redefinition of local variable'.
Brief change log
remove the duplicate code in generated code for map get.
Verifying this change
This change added tests and can be verified as follows:

org.apache.flink.table.planner.runtime.stream.sql.CalcITCase#testMapGet

Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn/Mesos, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (no)
If yes, how is the feature documented? (not applicable / docs / JavaDocs / not documented)

The failed test case is not related to this PR. Will merge this.


Feat/#31 add theme selector

Added theme selector option in user menu with dark and light options

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


Collapsing Reference section on opening

What are you changing in this pull request and why?

Collapsing the reference section so you can see the left side panel in its entirety.

Checklist

[ ] Review the Content style guide and About versioning so my content adheres to these guidelines.
[ ] Add a checklist item for anything that needs to happen before this PR is merged, such as "needs technical review" or "change base branch."

Adding new pages (delete if not applicable):

[ ] Add page to website/sidebars.js
[ ] Provide a unique filename for the new page

Removing or renaming existing pages (delete if not applicable):

[ ] Remove page from website/sidebars.js
[ ] Add an entry _redirects
[ ] Ran link testing to update the links that point to the deleted page

@mirnawong1 yea I think that problem is beyond this fix. At first, I thought it was a quick fix, then I remembered Matt was going to add a landing page.


python311Packages.pysigma: 0.10.5 -> 0.10.6

Diff: https://github.com/SigmaHQ/pySigma/compare/refs/tags/v0.10.5...v0.10.6
Changelog: https://github.com/SigmaHQ/pySigma/releases/tag/v0.10.6
Description of changes

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/)
23.11 Release Notes (or backporting 23.05 Release notes)

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

[ ] Fits CONTRIBUTING.md.

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

38 packages built:

python310Packages.pysigma
python310Packages.pysigma-backend-elasticsearch
python310Packages.pysigma-backend-elasticsearch.dist
python310Packages.pysigma-backend-insightidr
python310Packages.pysigma-backend-insightidr.dist
python310Packages.pysigma-backend-opensearch
python310Packages.pysigma-backend-opensearch.dist
python310Packages.pysigma-backend-qradar
python310Packages.pysigma-backend-qradar.dist
python310Packages.pysigma-backend-splunk
python310Packages.pysigma-backend-splunk.dist
python310Packages.pysigma-pipeline-crowdstrike
python310Packages.pysigma-pipeline-crowdstrike.dist
python310Packages.pysigma-pipeline-sysmon
python310Packages.pysigma-pipeline-sysmon.dist
python310Packages.pysigma-pipeline-windows
python310Packages.pysigma-pipeline-windows.dist
python310Packages.pysigma.dist
python311Packages.pysigma
python311Packages.pysigma-backend-elasticsearch
python311Packages.pysigma-backend-elasticsearch.dist
python311Packages.pysigma-backend-insightidr
python311Packages.pysigma-backend-insightidr.dist
python311Packages.pysigma-backend-opensearch
python311Packages.pysigma-backend-opensearch.dist
python311Packages.pysigma-backend-qradar
python311Packages.pysigma-backend-qradar.dist
python311Packages.pysigma-backend-splunk
python311Packages.pysigma-backend-splunk.dist
python311Packages.pysigma-pipeline-crowdstrike
python311Packages.pysigma-pipeline-crowdstrike.dist
python311Packages.pysigma-pipeline-sysmon
python311Packages.pysigma-pipeline-sysmon.dist
python311Packages.pysigma-pipeline-windows
python311Packages.pysigma-pipeline-windows.dist
python311Packages.pysigma.dist
sigma-cli
sigma-cli.dist


Add site (Dennis Hagemeier)

Recently relaunched my personal blog. Still absolutly amazed by 11ty!

Wow—great work! Thank you!


Method count issue.

This is a nice library to use, thank you for your hard work! However the recent change has the side effect of adding lots of method count because of using Kotlin library I guess.
Can this be resolved in near the future? e.g. have a different branch which doesn't include kotlin.

Please feel free to reopen the issue if you have any questions.

Thanks your report, the new release 1.2.6 excluded the transitive dependencies of kotlin-android-extensions.
Please feel free to reopen the issue if you have any questions.


Demo Idea: Classroom Helper

Objective
Create a pair of Add-ons, one for the teacher, another for students, for helping educational activities in a classroom such as guided browsing, chatting, polling/quiz.
Teacher Add-on
The teacher would be able to do the following actions:

Open an URL in one, a subset, or all students machine.
Send and reply to questions from students (privately).
Participate in group chat.
Highlight part of a page for the students.
Check which students are present.
Send polls/questions to all students.

Student Add-on
The students would be able to:

Chat with each other.
Send questions to the teacher.
Answer polls/quiz.

Suggested usage of Libdweb APIs:

Use UDP for:

discovering peers on the network.'
multicasting messages to a group chat.
open the same page on all machines.
send info to highlight some element on the page.
check who is on class

Use TCP for:

Interact directly with the teacher.

Reply to poll/quiz

Suggested strategy
Programming this should be easy, the hardest part is actually building a good UX that is pleasant and gets out of the way. A background script could handle peering and presence check, opening pages. A Sidebar can be used for the chat. A new tab with a content script can handle the interaction with the teacher. A browser action with a popup menu with the possible actions for each role can be the main entry point for the add-on. WebExtension storage can be used to save student data.

I think demos and experiments are better explored in a separate repository. I'm not sure if https://github.com/libdweb/class-room is the right place for that but it's better than here.


Fixing missing error message when SchemaDatabase missing

Contributions: We are not currently taking public contributions - see our contributions policy. However, we are accepting issues and we do want your feedback.

Description
Added an error message for when the SchemaDatabase is missing
Release note

Fixed an issue that stopped the correct error message from being shown when the SchemaDatabase is missing.

Tests
Tested by deleting the SchemaDatabase and attempting to launch a PIE session. The correct error was displayed
Documentation
Does not require documentation

See https://github.com/improbableio/UnrealEngine/pull/215 for 4.22 engine changes


[$500] Compose - The list of users in mentions does not disappear when using the Shift+Enter

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 1.4.34-0
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail: https://expensify.testrail.io/index.php?/tests/view/4257656
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause- Internal Team
Slack conversation:
Action Performed:

Open https://staging.new.expensify.com/
Log in under your HT account
Navigate to any conversation
Paste the text "@boss" into the Compose Box
Press Shift+Enter 5-6 times

Expected Result:
When using the Shift+Enter keyboard shortcut, the list of users should disappear or remain above the Compose Box and not overlap it
Actual Result:
The list of users in mentions does not disappear when using the Shift+Enter keyboard shortcut.
Workaround:
Unknow
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native - the user menu flickers
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence
https://github.com/Expensify/App/assets/93399543/27408a51-5ac0-468b-87b5-337b0498ae10
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~015d7b4a51ced33c18
Upwork Job ID:<PHONE_NUMBER>104039424
Last Price Increase: 2024-01-31

We think that this bug might be related to #vip-vsb
CC @quinthar

Proposal
Please re-state the problem that we are trying to solve in this issue.
Compose - The list of users in mentions does not disappear when using the Shift+Enter
What is the root cause of that problem?
We are not handling SHIFT+ENTER in triggerHotkeyActions found in the SuggestionMention component.
https://github.com/Expensify/App/blob/995902a7fda139b95c60849a85a292f593623ddf/src/pages/home/report/ReportActionCompose/SuggestionMention.js#L110-L126
What changes do you think we should make in order to solve the problem?

Just like how we handled the ESC shortcut, let's handle the SHIFT+ENTER by inserting the following code snippet in triggerHotkeyActions.
if (e.shiftKey && e.key === CONST.KEYBOARD_SHORTCUTS.ENTER.shortcutKey && suggestionsExist){
  resetSuggestions();
}

Will work on review today

did you review yet please @abdulrahuman5196

bump @abdulrahuman5196

Hi, Sorry for the delay reviewing now

The issue can be reproduced with any mentions like @a and just pressing shift + enter.
I had an initial review on the proposals. I would need some more time on this. Will check and update on the progress tomorrow.

hey @abdulrahuman5196 have you been able to look into this in more detail? And review the proposal you think is viable?

I haven't been confirm on it. Will try to close it out in a day

Reviewing now

On @Krishna2323 's proposal to We should update the if check here to return false if we have a empty string at the end, this wouldn't viable since currently we do consider space between words as part of suggestion search string.
On @Tony-MK 's proposal here https://github.com/Expensify/App/issues/35518#issuecomment-1920190097, the solution doesn't seem work consistently. The suggestions close up when we press the keys, but popup again when we go to the new line.

@dukenv0307 's proposal here https://github.com/Expensify/App/issues/35518#issuecomment-1920503529 looks good and works well.
🎀 👀 🎀
C+ Reviewed

bump @abdulrahuman5196

FYI: Just to make sure its visible.
C+ approved comment is here https://github.com/Expensify/App/issues/35518#issuecomment-1945976022

Waiting on PR

The PR that introduced the bug has been identified. Link to the PR:
The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment:
A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:

Doesn't seem to be regression. It was the same case for sometime.

Determine if we should create a regression test for this bug.

Yes.

If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.

Log in under your HT account
Navigate to any conversation
Paste the text "@BOSS" into the Compose Box
Press Shift+Enter 5-6 times
Verify that: the list of users disappears

@zanyrenney Completed checklist and this issue is on payment due for 7th March. Seems melvin didn't update here.

@zanyrenney Bump on the above. Seems this issue is pending for 2 weeks.

I've been OOO since payment was due. I will take a look now.

@abdulrahuman5196 you ended the contract ?

How come?
If payment was still due, you've now made it impossible for me to pay through the correct workflow 😅

payment summary:
@dukenv0307 paid $500 through upwork. 🎉
@abdulrahuman5196 you have ended the contract so not sure how you wanted / expected me to pay?

@zanyrenney Sorry, could have ended it by mistake.
I applied again - https://www.upwork.com/ab/proposals/1775141076017627137?success

Using a bonus as payment as easier than restarting a new contract
paid @abdulrahuman5196 $500 through Upwork.


Review functional tests

Description
Make sure functional tests are properly written and cover all methods of the application.
Motivation
The quality of the tests suite is essential for application stability, maintainability and reliability.
Acceptance Criteria

Tests are present and within its scope

Functional tests are written, the issue can be closed.


Refactor Bpfd-Agent to ensure we only ever make one kube-api change on every reconcile

Currently the bpfd-operator process ensures that only one kube-api update is performed on each reconcile  making the process very incremental (as it should be). The bpfd-agent isn't quite as complete, we need to make sure the bpfd-agent follows this best practice and is very incremental.
For example
	// BpfProgram exists but either BpfProgramConfig is being deleted or node is no
	// longer selected....unload program
	if !BpfProgramConfig.DeletionTimestamp.IsZero() || !isNodeSelected {
		r.Logger.V(1).Info("bpfProgram exists on Node but is scheduled for deletion or node is no longer selected", "isDeleted", !BpfProgramConfig.DeletionTimestamp.IsZero(),
			"isSelected", isNodeSelected)
		if controllerutil.ContainsFinalizer(bpfProgram, BpfdAgentFinalizer) {
			if retry, err := r.unloadBpfdProgram(ctx, bpfProgram); err != nil {
				return retry, err
			}

			// Remove bpfd-agentFinalizer. Once all finalizers have been
			// removed, the object will be deleted.
			controllerutil.RemoveFinalizer(bpfProgram, BpfdAgentFinalizer)
			err := r.Update(ctx, bpfProgram)    ----------------> We should return here and update status on next reconciliation.
			if err != nil {
				return false, err
			}

			// If K8s hasn't cleaned up here it means we're no longer selected
			// write NodeNodeSelected status ignoring error (object may not exist)
			r.updateStatus(ctx, bpfProgram, BpfProgCondNotSelected)

Pretty much done in #342 and proofed in https://github.com/bpfd-dev/bpfd/pull/432


nixos/guix: add declarative substituters option

Description of changes
Resolves #293742 and #294672 as it would correctly set the ACL every boot now.
I don't know if this is considered a significant change but it shouldn't change the way it's used (still only requires services.guix.enable = true for it to work).

Things done

Built on platform(s)

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

[x] 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.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

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

[x] Fits CONTRIBUTING.md.

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

@ofborg test guix

This breaks nixosTests.guix.basic, both with and without the latest commit.

Nice, I was wondering why the ACL was growing like that. Please tag for backport to 23.11 :)

This is probably not feasible, as requiring users to set substituters via NixOS options is pretty much a breaking change.

@ofborg test guix

I think the change needs to be added to the release notes as well, but it looks like the author of the PR is no longer active. Do you want to create a PR to replace this one?

Superseded by #353518.


duplicate lit-html - possibly needs peerDependency or reexport everything?

Steps to Reproduce
yarn add<EMAIL_ADDRESS>yarn add<EMAIL_ADDRESS>
Expected Results
one version of lit-html
Actual Results
$ yarn list --pattern lit-html
yarn list v1.13.0
├─<EMAIL_ADDRESS>│  └─<EMAIL_ADDRESS>└─<EMAIL_ADDRESS>Done in 1.10s.

Suggestion
I see 2 possible solutions...

lit-element adds lit-html only as peer dependency
Everything that lit-html has get's exported so we can have only one dependency on lit-element

Note: right now we add lit-html as a dependency as we use features from it which are not reexported from lit-element (like directives).
Versions

lit-element: v2.1.0

Isn't the answer here to use yarn add<EMAIL_ADDRESS>so that you aren't pinning your project to v1.0.0? That's what you see here: https://github.com/Polymer/lit-element/blob/master/package.json#L63

Yeah... I think this can be an issue in many setups.  Another example is loading from unpkg if there is a version mismatch.  lit-element exports html and svg.. so those versions are always going to match.  We cannot say the same for directive`.

we want to pin the version of lit-element and probably also lit-html if we import something from there. We want to pin as for some of the things we need to do we have a pretty tight coupling with lit-element/lit-html and we had problems in the past with automatic updates breaking our code...
not ideal... we know...
still pinning a version should not break everything right?
imho if everything is exported from lit-element then we don't need to add lit-html to our dependencies and therefore we could safely pin only lit-element

I believe pinning everything will work.  Just need to point out that this is needed for all systems (npm, unpkg, pkgdrop*).

pkgdrop - my project for installing ESM

Ideally, everyone would have a config where they get one version of lit-html.  But how hard it would be to also fix this internally to lit-element.  I suspect it has to do with templateResult instanceof TemplateResult where we have two versions of TemplateResult.

As noted, the problem here is pinning to a specific version of lit-html. If you do this, you increase the chance of duplication.
Now, a reasonable package manager would have just chosen<EMAIL_ADDRESS>without duplication, but npm and yarn don't have backtracking solvers. So if you really do need to pin, I'd recommend pinning everything that depends on that dependency too. But then again, this is what a package-lock is for.
I did think that if you put the pinned dependency first in your dependency list that npm would install that first, and that will more likely meet the constraint of following transitive dependencies on the package. You seem to be doing that with the order of install commands, so I'm not sure why there's duplication with lit-element/lit-html dependency.
@daKmoR is there a reason why you need to pin to a specific version? It pretty much breaks semver if you do that as a matter of course, because every release becomes a breaking change to you.

@justinfagnani The issue, I believe, is that lit-element has a loose dep on<EMAIL_ADDRESS> If the consuming app (or cdn, or tooling) doesn't match that version range (for example if the app depends on the fixed version<EMAIL_ADDRESS>then the versions can get out of sync.  In this case it's that<EMAIL_ADDRESS>matches lit-element but not the consuming apps.
I'm guessing either:
A) Users importing lit-element need to always match the lit-html dep range inside lit-element's package.json.  This would also apply to any libraries that use lit-element.
B) Lit-element pins it's lit-html version and user and libs must match.
C) somehow get a looser coupling between lit-element and lit-html such that lit-element can consume a range of lit-html versions (as the lit-element's package.json implies).

I guess one more option (as @daKmoR methoned) is moving lit-html to a peerDependency.  Thinking more about it... isn't that what peer dependencys are for?

lit-html is a true dependency of lit-element

I don't know a formal definition of a peer... my feeling is that a peer should be used when you publish a lib  that uses a dependency that is also used by the the consuming project.  But that's just my take.
As for now the only thing we, consumers of lit-element, can do is ensure we always use the same lit-html version range as the latest version lit-element.

That definition would include tons of common dependencies like lodash, rxjs. Peer dependencies create a burden for transitive dependents, and if one package truly depends on another it should just do so.
You don't have to use exactly the same version range as lit-element, but you should use the widest range that you can: the lowest lower bound and highest upper bound. The means for lit-html you should be at<EMAIL_ADDRESS>

Agreed, maybe too broad.  But, in-fact, rxjs is a peer of angular.

Maybe related issues: #589 #712 #724


[1/?] - lnwallet: ensure that SignOutputRaw can sign w/ non-default sighash f…

…or schnorr sigs
Before this commit, we'd end up failing in schnorr.ParseSignature if a non-default sighash was used. To fix that, we'll slice the signature to only pass in the sig w/o the sighash flag.
]

Pushed up a new version pointing to the merged btcd commit.


License

As a company can we, without any cost, download and use the "MDL" and third party software that may be included in the "MDL" (for example: third party codes etc.) in as many projects as we want?

MDL is licensed under Apache 2.0. So long as you adhere to the license, you're good. We are not lawyers and cannot give guidance as to each users specific cases. If you can't seem to make out what is required by the license, then you'll need to consult your lawyers on how to adhere to it.
Sorry we can't be of more help.


Further tweak definitions

Three main points:

Adds some tests for code introduced in #22.
Refactor the pandas types to have a common base (avoid repeating similar code).
Allow Undefined as explicit default value by introducing a new sentinel value Empty. This new sentinel is used as the new default value for default_value (😅), such that backwards compatibility is retained. It signifies the behavior of initializing an empty data structure.

After this PR, I will be successfully able to rebase ipydatawidgets on traittypes, so a release would be welcome!


MockServer events

It looks like MockServer is intended to emulate the WebSocketServer from ws. One difference though is that ws passes in strings rather than objects on socket events. For example:
socket_server.on('connection', function(socket) {
socket.on('message', function (message) {
// using ws message is a string containing the event data
// using MockServer message is an event object
});
}
If the intent is to make MockServer play nice with ws, matching ws's behavior would be a welcome change.

@Ghirigoro Great catch and yes I would like MockServer to match WS's behavior. I will send an update fixing this.


Add support for IEnumerable for both instance and member property definitions

Want to make sure that IEnumerable<T> is supported for parameters of immutable classes.

Hey @SuperJMN check it out.  You should be able to use this now.
Install-Package ExtendedXmlSerializer -Version <IP_ADDRESS> -Source https://ci.appveyor.com/nuget/extendedxmlserializer-preview

Some sample code for you:
https://github.com/ExtendedXmlSerializer/home/blob/9a0c85e236c91f9a64f9e526d030eb38d1b47a8f/test/ExtendedXmlSerializer.Tests.ReportedIssues/Issue340Tests.cs#L36-L46


[WIP] just testing CI jobs

/hold

/test pull-cloud-provider-openstack-test

/retest

/test pull-cloud-provider-openstack-test

it's working now!


Cpackget is installing a wrong pack version

Describe the bug
Cpackget should raise an error when specifying a minimum version that does not exist
To Reproduce
Steps to reproduce the behavior:
$ cpackget pack add "ARM::CMSIS>=10.0.0"
I: Using pack root: "../packroot"
I: Adding pack "ARM::CMSIS>=10.0.0"
I: Extracting files to ../packroot/ARM/CMSIS/5.8.0 100% |████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| (8133/8133, 7742 it/s)

Expected behavior
I think in this case, the expected behavior should be an error message saying that the desired version is not available in any PDSC file

I do agree. There is no published version of the pack available that satisfies the version requirement.
The statement "not available in any PDSC" is confusing to me. What do you refer to with "any PDSC file"?
If the specified pack is a public pack then there is only one pdsc you can look at for finding the requested version, right?
./Web/..pdsc
If it is not in there, the only alternative is to look in ./Local and see whether there is a  and a  tag you could use to locate the pack version satisfying the command line.
Files in local_repository.pidx are individual local versions that should not be considered as part of finding a new version. However you should consider the referenced version whether it satisfies the version requirement from the command line already (so you don't need to install any new pack).
What am I missing?

What do you refer to with "any PDSC file"?

By "any", I mean both PDSC files of a public (.Web) and a local (.Local) packs. Because both of these scenarios might be checked (if not available in .Web, look under .Local) when installing a pack. Perhaps a more meaningful message fits better here "Pack version not found in path-to-pdsc-file.pdsc".
Sorry I don't understand how packs listed in local_repository.pidx can be useful here. I say this because no pack will actually get installed that way. No?

Let's assume someone has ARM.CMSIS.5.9.0 in a folder somewhere and registered it's pdsc file to the local_repository.
If you run cpackget pack add<EMAIL_ADDRESS>then the request is already satisfied, isn't it?

Let's assume someone has ARM.CMSIS.5.9.0 in a folder somewhere and registered it's pdsc file to the local_repository. If you run cpackget pack add<EMAIL_ADDRESS>then the request is already satisfied, isn't it?

This sounds correct to me. The correct behavior should be to install the lowest possible ARM.CMSIS pack correct? And if only 5.9.0 is available, no error but an info message should be printed saying it's already installed right? If no version above 5.7.0 was found, then it should return an error.
Just trying to understand the problem here

That makes more sense to me, thanks @chaws.

I agree with 1 and 2.
Regarding 1) I just want to ensure that we are all aligned how the list of installed pack versions is created.
a) find all installed pack versions
b) read all pdsc files listed in local_repository.pidx to identify their pack version. If a pack version already exists in a) overwrite it's location
This combined list of pack versions should be used for
a) list installed packs
b) check whether a version range condition is already satisfied by installed packs or not

@jkrech Regarding issue 1: does the order matter in a) and b)? As it currently stands, the list generated in a) contains all packs/versions, I was thinking of creating that empty list first (installedVersions), checking the local_repository for all the installed versions and appending them to the list, and then the rest of the process follows as usual (checking what is locally installed or not, the local ones would also be considered since it's the same list).
One sanity check I was going to write, that also illustrates my interpretation of issue 1:

Install .psdc TheVendor.DevPack.1.2.4.pdsc
Try to install public pack TheVendor.DevPack.1.2.4 (same exact pack but present in the public index)
An error/message should be presented as the pack was already installed in step 1

@lud0v1c  we can either install a pack or add a reference of the pdsc to the local_repository.pidx!
Therefore I can install the same pack version that is already referenced by as pdsc in the local_repository.pidx
Effectively the tools will not look at the installed pack version because the one listed in local_repository.pidx will take precedence.
However, if the user lowers the version in the referenced pdsc the installed pack version will get considered.
I don't know how you search for pack versions in that list, however if you want to ensure that the pack version from the local_repository.pidx always take precedence and you search through the list from top to botton, then the local_repository.pidx pack versions need to come first.


Update Readme with meeting info

What type of PR is this?
/kind cleanup
What this PR does / why we need it:
Add meeting info to the README file.
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

NONE

/assign @warjiang

/lgtm
/approve


Symptomnetwork glioma paper 2022

@jantinerottgering what is the status of this project? can we merge it into master?

Hi Eduarda,
No not yet, I'm still working on it. Will send you a message, when it can
be merged with master.
Best!
Op vr 28 okt. 2022 om 05:18 schreef Eduarda Centeno <
@.***>:

@jantinerottgering https://github.com/jantinerottgering what is the
status of this project? can we merge it into master?
—
Reply to this email directly, view it on GitHub
https://github.com/multinetlab-amsterdam/projects/pull/9#issuecomment-1294929246,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AT2VFKKIZMRK73DHN5DCITTWFPACLANCNFSM6AAAAAARRARIVE
.
You are receiving this because you were mentioned.Message ID:
@.***>


Output formatters to allow list output of length 1

Summary
As discussed on IRC, this patch provides a mechanism to force a list in Mojolicious::Validator::Validation.pm output.
For me there are a few things that I'd welcome feedback:

The if ($output_formatter) seems a little weird here. Ideally I'd prefer there to be a default $output_formatter, but that proves tricky while maintaining complete backwards compatibility
https://github.com/kraih/mojo/compare/master...chy-causer:master#diff-ea8a39c17a3297cc4c5cc85000fae422R94
Not sure if ->required(with_gaps =>  'list')->is_valid is valid (if that makes sense.)
https://github.com/kraih/mojo/compare/master...chy-causer:master#diff-af7f52660125846348aa0b9dd5a72bf1R233

Motivation
I want to have identically named input fields multiple times on a page and rely on the fact that the $validation->output will be an array, even if the number of non-blank elements given is one. If th
This patch provides the inverse functionality, where a scalar is returned even when more than one input is supplied. To me I'd expect this to be default behaviour, more in keeping with the normal usage of $c->param('foo') but I understand the reasoning for this and appreciate backwards compatibility is important so didn't change any existing tests.
References
I started making sense around here: https://irclog.perlgeek.de/mojo/2017-04-28#i_14501813

The code submitted in the PR is when I prioritized the following conflicting criteria

a way to scratch my own itch scratching first (obviously)
full backwards compatibility
code elegance.

I'll be the first to admit that the third criterion looks to be absent in the PR (although I did try, honest!) If you reorder this list (aka abandoning back-compat), then I believe some interesting things can happen.
Imagine the following. Assume each row in the table below is in isolation with the same boilerplate:
my $input = { single => '%', double => ['two', '2'], with_blanks => ['', 'not blank']};
my $val  = Mojolicious::Validator->new;
$val->input($input);

Code
Result

$val->required('double')->like(qr/\d/)->is_valid
True

$val->required('double')->output->{double}
'2'

$val->required('double')->in('two')->is_valid
False

$val->required('double')->in('two')->{double}
undef

$val->list('double')->like(qr/\d/)->is_valid
False

$val->list('double')->like(qr/./)->is_valid
True

$val->list('double')->all_unique->is_valid
True

$val->list('double')->like(qr/./)->output->{double}
['two', '2']

$val->list('nonexistent')->is_valid
True

$val->list('nonexistent')->output->{nonexistent}
[]

$val->list('nonexistent')->has_number_elements(2)->is_valid
False

$val->list('nonexistent')->has_number_elements(2)->output->{nonexistent}
undef

$val->list('with_blanks')->output->{with_blanks}
['not blank']

$val->required('single')->has_number_elements(1)->is_valid
True

$val->required('double')->has_number_elements(1)->is_valid
True

$val->list('with_blanks')->has_number_elements(1)->is_valid
True

$val->list('single')->output->{single}
['%']

For me this would have the benefits of

eliminating the need for defensive coding around $val->output, since the structure is predictable
allowing for more elaborate tests, such as the number of elements returned
(probably) giving a cleaner syntax than the current code. I personally find $self->output->{$name} = ref $input eq 'ARRAY' ? \@input : $input[0] a little jarring.

Of course the downside would be that this isn't fully backwards compatible. I would contend that a large number of sites would not notice the difference, but it certainly won't be 100%.
Given the modular nature of Mojolicious it is of course within my power to write my own module with this behaviour. I would unfortunately then lose out on all the TagHelpers goodness 😢

I think I'm going to officially abstain on this vote. I think there should be a way to require/validate/select from multiple parameters, but as I'm not a user of the built-in validator I don't feel confident in voting on api design.

I do think this feature should exist, but the implementation just isn't clean enough.

I think we have consensus that we do want to see the feature added to Mojolicious, but that the implementation here is not right. So i'll close this pull request for now.


Can not get target.page() for webviews inside Electron browser

I have an Electron application, that uses two webviews inside main page, and I'm trying to test it with external tool, that connects to Electron via Websocket. There is no problem with connection (I am able to connect to electron browser), but I'm stuck in getting pages of MainPage and Webviews in same time.
Steps to reproduce
Environment:

Puppeteer version: 5.2.1
Platform / OS version: Windows 10
Node.js version: 12.16.3
Electron version: 9.3.1

What steps will reproduce the problem?

Create page with two webviews.

        <div class="webview-container">
            <webview plugins webpreferences="nativeWindowOpen=true" allowpopups>
            </webview>
            <webview plugins webpreferences="nativeWindowOpen=true" allowpopups>
            </webview>
        </div>

Webview source is written in script loaded at the end of file
this._webviews = <HTMLElement[]>Array.from(this._document.getElementsByTagName("webview"));

    this._webviews.map((e, i) => {
      e.setAttribute("src", path[i]);
      e.id = name[i];
    });

Include it in Electron App and append

    app.commandLine.appendSwitch(
        'remote-debugging-port',
        '8313'
    );

Or run it in Chrome with remote debugging port opened.
3. Connect with Electron or chrome with another node app
        const response = await fetch(`http://localhost:8313/json/version`);
        const debugEndpoints = await response.json();

        const webSocketDebuggerUrl = debugEndpoints.webSocketDebuggerUrl;

        const browser = await puppeteer.connect({
            browserWSEndpoint: webSocketDebuggerUrl,
            defaultViewport: {
                hasTouch: true,
                width: 1920,
                height: 1080
            }
        });

What is the expected result?
At this moment I thought I could get all pages  by using browser.pages(), but it does return only MainPage - No webviews.
Other way - to use browser.targets() and get target.page() for each target to get proper page.
What happens instead?
As said - browser.pages() returns no Webview.
browser.target() returns 4 targets - Browser, Page, and 2 Webviews (Correctly!) but:

using MainPageTarget.page() returns MainPage ( OK ) and reloads whole page with webviews, therefore webviewTargets lose connection and can no longer get webviewTarget.page() (Throws error, that target is already destroyed)
using webviewTarget.page() and then MainPageTarget.page() throws error, because again MainPage is reloaded and kills webviews.
waiting for webviewTarget with browser.waitForTarget() does not help either. After waiting a while webview targets seem to disapear

        const targets = await browser.targets(); // returns 4 targets
        const mainPage = await targets.find(e => e.type() === "page").page(); // get MainPage from its target

        const frames1 = mainPage.frames(); // returns 3 frames (page and 2 webviews with "about:blank" in url)

        const webviewTarget = await browser.waitForTarget(e => <any>e.type() === "webview"); // waits for next webview target. This one has different targetId than those in first line

        const frames2 = mainPage.frames(); // returns only one frame leading to page. No webview frames.

using MainPage.frames() returns 3 frames - Page and Webviews (OK) but those webviews point to "about:blank" - do not have any name, nor URL.

My questions here:

Does loading target.page() when connected to external chromium must reload whole page or is this configurable? I believe this causes WebviewTargets to crush while getting its page.
Is there any proper order in which I should get Pages/frames when using page with webviews in it?
Is this how it should work, or is it a bug with webviews?

@JustMyst did you find the solution? looks like I have a similar problem.

It not working with puppeteer-core.
But! I just tried with Selenium Chrome WebDriver to connect to the same application. And if you specify in chromeoptions windowTypes as webview, it starts to discover it as a separate page.
After that I used puppeteer to communicate with app via devtools protocol but Target.getTargets didn't return webview.


Fixes #70.

Also:

changed the first test so that it will work with the --color flag added
fixed a hidden bug in the second test - done was called multiple times because the grunt process wasn't killed immediately

Closed and reopened for test rerun.


Fixing vscode build, resolves #1668

Problem
#1688
VSCode builds broken, using the wrong dev container
Summary of Changes
Update to the right build version

@jelderton?


add new fold.js

an aux function for recursive function. See code comments, and the test file for details.

Please, when making PRs here, include some relevant explanation in simple text.
Yes, we will look at the code.  But that mostly tells us how it works.  We also need to know why it's wanted.

I'm curious if this API would satisfy your needs:
const None = Symbol()

const fold = (fn, init, [x = None, ...xs]) =>
  x == None
    ? init
    : fn (init, x, (y) => fold (fn, y, xs), (y) => y)

console .clear ()

console .log (
  'Works like a standard fold:',
  fold ((a, b, next, done) => next (a + b), 0, [2, 3,4, 5, 6])
) //=> 20 (2 + 3 + 4 + 5 + 6)

const loop = (acc, x, next, done) =>
  acc + x > 10
    ? done (acc)
    : next (acc + x)

console .log (
  'Can end early:',
  fold (loop, 0, [2, 3, 4, 5, 6])
) //=> 9 (2 + 3 + 4)

I think it's quite a bit simpler to use.  And I really wish Ramda's unfold was written in a similar way.  I would of course curry the function before including it in Ramda.
It is strictly less powerful than yours as yours offers the user the ability to control the seed values, where this one simply iterates them.  But it is closer to reduce, adding just the ability to end early.

terminate conditional place in accumulator over place in seed. because accumulator will be returned to caller, and seed will be given up.
your implementation seem to use recursive function instead of loop. it maybe stack overflow in action.  to avoid stack overflow is functional lib's one of target.
Seeds include more than arrays, and any other data type is likely to be included. for example,  number, string, Tree among others.
the parameter order is accumulator first, or seed first. there is both. don't matter.

Yes, my function is using a recursive implementation.  We should be able to easily change that to an iterative one.  It might require some sort of trampoline.
The question is about the API, though.  Does this meet your needs?
But again, I really would like some sort of real-world example of your expected usage.

this api limit seed as Array. not very genenic.

So, can you show a real-world example with a different seed type?

100/3=?
let y = fold((x,y) => {
    let diff = y - 3
    return diff > 0 ? [x+1, diff] : [x]
} , 0, 100)

Thanks for the example.  It's coming clearer to me now.  I like the idea of this function, but I don't think I like the return-a-pair-or-null.  I'd prefer a variant of what I suggested above. Here is a version of the same idea, but leaving the accumulator changes to the user.  It is still using a recursive implementation which would have be changed to make it even reasonably performant and resilient to large data, but I'm still wondering if this API seems reasonable:
// fold :: ((b, a, ((a, b) -> a), (a -> a)) -> a) -> a -> b -> a
// or this?
// fold :: (b -> a -> (a -> b -> a) -> (a -> a) -> a) -> a -> b -> a
const fold = (fn, init, seed) =>
   fn (seed, init, (x, s) => fold (fn, x, s), (x) => x)

console .clear ()

// Works somewhat like a standard fold
fold (
  ([a, ...as], x, next, done) => a == undefined ? done (x) : next (a + x, as),
  0,
  [2, 3, 4, 5, 6]
) //=> 20 (2 + 3 + 4 + 5 + 6)

// Offers an early escape
const loop = ([a, ...as], x, next, done) =>
  a == undefined ? x : a + x > 10 ? done (x) : next (a + x, as)

fold (loop, 0, [2, 3, 4, 5, 6])  //=> 9 (2 + 3 + 4)

// Folds objects besides arrays
fold ((a, x, next, done) => a - 3 > 0 ? next (x + 1, a - 3) : done (x), 0, 100) //=> 33

I'm not certain of the signature for this yet, but it strikes me as simpler in the end than ((a,b) -> [a,b] | null) -> a -> b -> a where we have a promiscuous callback function, and a sentinel value of null, both things we try hard to avoid in Ramda.

BTW, here's an iterative implementation of the same API:
// fold :: ((b, a, ((a, b) -> a), (a -> a)) -> a) -> a -> b -> a
const fold = (fn, init, seed) => {
  let done = false, acc = seed, curr = init, result
  while (!done) {
    fn (
      acc,
      curr,
      (val, seed) => {curr = val; acc = seed},
      (x) => {done = true, result = x}
    )
  }
  return result
}

While it's not nearly as elegant as the recursive version, it's not as bad as I feared.

Using function parameters as placeholders is the first time I've seen them. It's really interesting. It should be feasible and more semantic than tuples.
It is simply recommended that the function first and the data last. immutable first, variable last.

Using function parameters as placeholders is the first time I've seen them. It's really interesting. It should be feasible and more semantic than tuples.

I first saw this technique in a StackOverflow answer (by a user who has many great informative answers, and is well worth following.)  I've used it occasionally since and it can simplify a lot of nasty control flow issues.

It is simply recommended that the function first and the data last. immutable first, variable last.

I believe that's what I've done in the signature of the function; the signature of the callback is perhaps more questionable, but it's not clear to me what would be an improvement upon it.

It is recommended that you modify the signature of fn:
const fold = (fn, init, seed) => {
  let done = false, acc = seed, curr = init, result
  while (!done) {
    fn (
      (val, seed) => {curr = val; acc = seed},
      (x) => {done = true, result = x}
      acc,
      curr,
    )
  }
  return result
}

I don't have a strong feeling for or against that change.  I usually try to configure a function with the parameters less likely to change coming before those more likely to change.  But that's mostly to support currying/partial application.  Here there is no reasonable possibility of currying.
I guess my original order feels slightly more idiomatic in JS than your reformulation -- it looks a bit more like Array.prototype.reduce.  But it's a minor issue, and I don't have strong feelings either way.

next, done is readonly, never changed, just for user to place their code. so should first.

@xp44mm: Are you interested in pursuing this?

What should I do?

Review the discussion above.  If you still would like to include this function, either update the implementation to take into account the comments made or close this one and create a new one on that model.  There are no guarantees it would be included, but it will get a fair hearing.  Or if you're not interested, you could just close the issue.


Add Modals

Description
Modals are a type of user interface element that provides a dialog box or pop-up window that appears on top of the main content. They are used to capture the user's attention and require an interaction before the user can return to the main interface. Modals are essential for displaying important information, prompting user actions, and improving the overall user experience. Common use cases include alert messages, forms, confirmation dialogs, and media displays.
Design Guideline
https://m3.material.io/components/dialogs/overview
Suggested Solution
Display and Overlay:

Create a semi-transparent overlay background that covers the main content.
Display the modal on top of this overlay, ensuring it is centered and prominent.

Interactivity and Accessibility:

Ensure the modal traps focus within its elements when opened.
Support keyboard navigation, allowing users to navigate using e.g. Tab key.
Provide multiple ways to close the modal, including:

Clicking a close button.
Clicking outside the modal (on the overlay). <-- not sure about it
Pressing the Escape key.

Alternatives
No response
Additional Context
No response
Related Issues/Pull Requests
No response

Available in the pre-release :tada:


Top repo a bit cluttered

The root directory of this repo is a bit cluttered. Both react and truffle are there. I’d have react separated in a client folder. I'd suggest modeling the project structure after something like the truffle react box which can be found here.

Ok, I'll check the repo.

Awesome thanks for addressing these issues! I'm taking a look at this today and will get back to you with comments.


Deis documentation should warn users that a free GCE trial account cannot run deis workflow due to account quota

A free Google cloud account is limited to 1 public IP. If a user uses GCE with kube-up to create their kubernetes cluster and then run helmc to install deis on their cluster the kubernetes-master will use a public IP and the deis router will try to create a LoadBalancer with a public IP.
The load balancer will fail. In kubectl describe svc deis-router --namespace deis you will see the following error.
Error creating load balancer (will retry): Failed to create load balancer for service deis/deis-router: failed to ensure static IP : error creating gce static IP address: googleapi: Error 403: Quota 'STATIC_ADDRESSES' exceeded. Limit: 1.0, quotaExceeded

Users should probably be warned about that limitation before they run into the problem trying to get deis deployed.

@rothgar If you want a work around for this problem in the testing or dev environments you can change the  type of the router service(https://github.com/deis/charts/blob/master/workflow-v2.0.0/manifests/deis-router-service.yaml#L11) from Load balancer to NodePort and use the ip of the node on which router pod has started.

Thanks, I'm aware of the work around but I think it maybe should be documented as a warning for users. If someone were trying deis without being very familiar with kubernetes it would probably take them a while to figure out why things aren't working.

I'm not seeing the problem. I'm running deis on GKE with the free trail with no issues. The quota limit seems to be 23 ip addresses for me.

I'm not seeing that problem too, as at my workshops most of guys are using trial accounts and nobody complained about not being able to install the Workflow to GKE

That's very strange. Maybe it's just something on my account. I did talk to the product manager for GKE at dockercon and mentioned I ran into this problem. Could be they changed the limits.
@Joshua-Anderson Where did you find the quota limit?
If no one else is having this problem we can close the issue.

There is a quota page in the compute section that contains the IP quota.

@rothgar Did you ever take a look at your quotas?
Given that most people haven't had this problem, maybe you started their trial and then they the bumped the quotas.

Sorry for not following up. I did look for the quotas but didn't find this one. I did talk to a couple people at Google about the limitation but not sure if it was changed. My free trial has since ended so I'm fine closing this as un-reproducible.


Add dockerfile tests in CI

Issue
#65 added docker image option but we don't have a CI job to verify it automatically yet.
How to fix it
Add a job in our CircleCI config to test if the docker build and run work.

Issue
#65 added docker image option but we don't have a CI job to verify it automatically yet.
How to fix it
Add a job in our CircleCI config to test if the docker build and run work.

Issue
#65 added docker image option but we don't have a CI job to verify it automatically yet.
How to fix it
Add a job in our CircleCI config to test if the docker build and run work.


Changing colours causes whole flow to stop working

Hi @joocer and thanks for the node.
I admit I am relatively new to red node and have almost zero knowledge of javascript, I'm even sturggling with passing payloads on etc..
But I think I have this setup correctly, and it works fine with on/off commands. But when changing colour by one of the three inject nodes, the LED strip stops responding until I re-deploy.
Any info/insights/tips would be greatly appreciated!
The kit I purchased (running stock firmware):
https://www.amazon.co.uk/gp/product/B07MM4G7PZ/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1
My flow:
[{"id":"37acee0a.bbe3a2","type":"inject","z":"8bb23b43.f1a468","name":"ON","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":210,"y":120,"wires":[["5227b36e.42645c"]]},{"id":"f52adcd7.f34c5","type":"inject","z":"8bb23b43.f1a468","name":"OFF","topic":"","payload":"false","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":210,"y":180,"wires":[["5227b36e.42645c"]]},{"id":"3ab14e07.e86872","type":"debug","z":"8bb23b43.f1a468","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":990,"y":160,"wires":[]},{"id":"5227b36e.42645c","type":"change","z":"8bb23b43.f1a468","name":"Power","rules":[{"t":"move","p":"payload","pt":"msg","to":"payload.power","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":161,"wires":[["870e3ede.1062"]]},{"id":"870e3ede.1062","type":"MagicHome","z":"8bb23b43.f1a468","name":"","server":"69d1b800.953898","x":770,"y":160,"wires":[["3ab14e07.e86872"]]},{"id":"99ff57a2.c2e868","type":"inject","z":"8bb23b43.f1a468","name":"{ \"red\":255, \"green\":255, \"blue\":255 }","topic":"","payload":"{ \"red\":255, \"green\":255, \"blue\":255 }","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":240,"y":300,"wires":[["8af9dad9.d84d58"]]},{"id":"8af9dad9.d84d58","type":"change","z":"8bb23b43.f1a468","name":"Colour","rules":[{"t":"move","p":"payload","pt":"msg","to":"payload.color","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":260,"wires":[["870e3ede.1062","be8c2425.526538"]]},{"id":"22d41c78.7b24c4","type":"inject","z":"8bb23b43.f1a468","name":"{ \"red\":255, \"green\":255, \"blue\":0 }","topic":"","payload":"{ \"red\":255, \"green\":255, \"blue\":0 }","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":240,"y":380,"wires":[["8af9dad9.d84d58"]]},{"id":"631ba16e.16c86","type":"inject","z":"8bb23b43.f1a468","name":"{ \"red\":255, \"green\":0, \"blue\":255 }","topic":"","payload":"{ \"red\":255, \"green\":0, \"blue\":255 }","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":240,"y":340,"wires":[["8af9dad9.d84d58"]]},{"id":"be8c2425.526538","type":"debug","z":"8bb23b43.f1a468","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":990,"y":260,"wires":[]},{"id":"69d1b800.953898","type":"MagicHome-config","z":"","name":"RGB","host":"<IP_ADDRESS>","interval":10}]

G'day 877. It looks like that controller doesn't have any WHITE channel; I have two different types of controllers, one with a single WHITE channel and one with two (COOL WHITE and WARM WHITE).
The inner working of the node has been pretty much put into this snippet (it's from a function node) https://github.com/joocer/node-red-nodes/blob/master/magic-home-ufo-controller.js
I don't have a unit to test on, but given the difference between a 5 and a 4 channel controller, there's a chance that updating this

if (STYLE == 'RGBWW') {
checkbit = function(command) { command[8] = (command[0] + command[1] + command[2] + command[3] + command[4] + command[5] + command[6] + command[7]) % 256; return command; };
COLORCOMMAND = [49, 255, 255, 255, 255, 255, 240, 15, 255];
}
else {
checkbit = function (command) { command[7] = (command[0] + command[1] + command[2] + command[3] + command[4] + command[5] + command[6]) % 256; return command; };
COLORCOMMAND = [49, 255, 255, 255, 0, 0, 240, 15, 255];
}

to be like this

if (STYLE == 'RGBWW') {
checkbit = function(command) { command[8] = (command[0] + command[1] + command[2] + command[3] + command[4] + command[5] + command[6] + command[7]) % 256; return command; };
COLORCOMMAND = [49, 255, 255, 255, 255, 255, 240, 15, 255];
}
else if (STYLE == 'RGBW') {
checkbit = function (command) { command[7] = (command[0] + command[1] + command[2] + command[3] + command[4] + command[5] + command[6]) % 256; return command; };
COLORCOMMAND = [49, 255, 255, 255, 0, 0, 240, 15, 255];
}
else {
checkbit = function (command) { command[6] = (command[0] + command[1] + command[2] + command[3] + command[4] + command[5]) % 256; return command; };
COLORCOMMAND = [49, 255, 255, 255, 0, 240, 15, 255];
}

it would support a 3 channel controller.


HScan example

Can someone provide a working example of using HScan (or any Scan method). I'm confused on how cursor is suppose to be used. Thanks in advance!
// How is cursor suppose to be used and why is it a byte slice?
// I'm used to using Redis where it would be an int which I'd set to 0 and get a new cursor returned each call until the value returns to 0.
cursor := []byte("0")

for {
	fvpairs, err := db.HScan([]byte(bucket), cursor, 10, false, "")
	if err != nil {
		return err
	}

        // because cursor doesn't change and I don't change it fvpairs is the same for each iteration and I never reach this case
	if len(fvpairs) == 0 {
		break
	}

        // cursor is never updated regardless of how I set it's initial value.
}

I figured it out. The cursor is meant to be the key where scanning starts.
var cursor []byte
for {
	fvpairs, err := c.db.HScan([]byte(bucket), cursor, 10, false, "")
	if err != nil {
		return err
	}

	if len(fvpairs) == 0 {
		return nil
	}

	cursor = fvpairs[len(fvpairs)-1].Field
}


Process fails without error message when executing merge

Environment
Delta-rs version:
0.16.1
Binding:
Python
Environment:

Cloud provider: Azure
OS: Docker image on kubernetes, running Debian GNU/Linux 11 (bullseye)

Bug
What happened:
During execution of following code, pod crashes without any error message:
  dt = DeltaTable(full_path)
  merge_definition = dt.merge(
      source=df,
      predicate=construct_merge_statement_predicates(primary_keys),
      source_alias="source",
      target_alias="target",
  )

  if write_method.merge_mode["update_when_matched"]:
      merge_definition = merge_definition.when_matched_update_all()
  if write_method.merge_mode["insert_when_not_matched"]:
      merge_definition = merge_definition.when_not_matched_insert_all()
  LOGGER.info("Starting merge")
  merge_execution = merge_definition.execute()
  LOGGER.info("Done merging")

Effectively, the code reaches the merge statement, but then crashes after only 10 seconds without passing any error messages (in python console).
However, this is a table that exists in 2 schemas in our source database, and gets converted to the same pandas schema. This code runs successfully on a daily basis for one table, but fails to be executed for the other, whilst having relatively the same amount of rows (source being ~1.5m rows, target ~20k rows. Both update when matched and insert when not matched are set to true for both scenarios.
It appears to me that the process crashes in the rust backend, but I have no clue how to further debug this.
What you expected to happen:
Successful merge execute statements
How to reproduce it:
/
More details:

There are no concurrent writes
First 6 merges (in this case) have succeeded
Pandas dataframes are being used

@cesar-vermeulen are you not simply running OOM?
set this env variable, RUST_LOG=debug, and check the logs for something fishy


remove pvc policies from backup chart (https://issues.redhat.com/browse/ACM-10745)

Description
Remove PV backup policies from the backup chart since this does not need to be GA in 2.11
Keep the policies under the policy community project (related to https://github.com/open-cluster-management-io/policy-collection/pull/475 )
Related Issue
https://issues.redhat.com/browse/ACM-10745
Changes Made

Removed the 3 policies from the chart
Updated policy sets and removed the references to these policies

Screenshots (if applicable)
Add screenshots or GIFs that demonstrate the changes visually, if relevant.
Checklist

[x] I have tested the changes locally and they are functioning as expected.
[x] I have updated the documentation (if necessary) to reflect the changes.
[ ] I have added/updated relevant unit tests (if applicable).
[x] I have ensured that my code follows the project's coding standards.
[ ] I have checked for any potential security issues and addressed them.
[ ] I have added necessary comments to the code, especially in complex or unclear sections.
[x] I have rebased my branch on top of the latest main/master branch.

Additional Notes
Add any additional notes, context, or information that might be helpful for reviewers.
Reviewers
Tag the appropriate reviewers who should review this pull request. To add reviewers, please add the following line: /cc @reviewer1 @reviewer2
Definition of Done

[ ] Code is reviewed.
[ ] Code is tested.
[ ] Documentation is updated.
[ ] All checks and tests pass.
[ ] Approved by at least one reviewer.
[ ] Merged into the main/master branch.

/cc @tesshuflower

/cc @dislbenn

/lgtm


MWPW-154059 - Milo templates library

Allows template-metadata block to be pasted as metadata block in template
Fixes initial listing order
Adds search ability to templates

Resolves: MWPW-154059
Test URLs:

Before: https://main--milo--adobecom.hlx.page/tools/library?martech=off
After: https://template-library-updates--milo--adobecom.hlx.page/tools/library?martech=off

BACOM Test URLs:

Before: https://main--milo--adobecom.hlx.page/tools/library?ref=main&repo=bacom&owner=adobecom&host=business.adobe.com&project=BACOM&martech=off
After: https://template-library-updates--milo--adobecom.hlx.page/tools/library?ref=main&repo=bacom&owner=adobecom&host=business.adobe.com&project=BACOM&martech=off

Will look into unit tests.


Azure AD secret expired

Rancher Server Setup

Rancher version: 2.8.0
My azure AD secret token is expired and I am unable to login from console UI. From the console debug mode I see I am getting 500 Internal Server error.

Is there any way via kubectl where I can update the secret token?
I tried with local user to login to console but it's failing with 401 unauthorized . Even I tried resetting the default admin password but still no luck.
Any help/hint for this is highly appreciable.

kubectl edit authconfig azuread
You can see the below entry
applicationSecret: cattle-global-data:azureadconfig-applicationsecret
now kubectl describe secret azureadconfig-applicationsecret -n cattle-global-data
The secret stored is an opaque one, so before proceeding in updating the applicationsecret (which is in encrypted form) fetch new secret key from azure app and then encrypt with below command.
something like this
echo -n 'C8Q~_cTx9xzcg4iNnmb1JlRaRKo8ynB~duh' | base64
Once done edit the secret kubectl edit secret azureadconfig-applicationsecret -n cattle-global-data
and update applicationsecret with encrypted value.


add duration tooltips for potions

Closes #12000
Intended feature is to add a tooltip when hovering over certain potions that shows the maximum duration that can be applied

added in 1d62a00596fc9a6dac7a601e5a010ebe1619718b


VSCode Embedded Requests

It would be nice if the VS Code extension could issue requests right from the IDE without the desktop app, similar to Thunder Client. 💯

Definitely. You can checkout our roadmap
We already have support for syntax as well as running requests, but its not actively maintained.
You can checkout the demo
After we v1, we will spend more efforts on enhancing and maintaining the VSCode extension.

Ahh didn't know there was some basic requests already there I thought it was just syntax highlight.
Getting this error.

Ahh related to #5

ah ... I thought this was already built in like Flashpost or Thunderclient! This explains why I cant see what I expect!