Decouple the dashboard from the Aspire.Hosting during development

We want to treat the dashboard like it's just another orchestrated process in your application.
We want to do 2 things to move this forward:

Make the dashboard run as an orchestrated resource. It's no longer special code running in process in the app host, it's out of process.
Define an HTTP API that the dashboard talks to get information. Aspire.Hosting will expose this API in development.

To make 1. work, we would make a dotnet tools package for the dashboard. The app model would define a new "tools package resource" that would install the dotnet tool and then run it as an orchestrated process. This would mean the dashboard and its dependencies would be fully isolated and it would run like tool (this has other benefits as well). It would be configured with the HTTP end point to get information from (the running app host itself). It also means we would update the templates to have an AddAspireDashboard call on the IDistributedApplicationBuilder. No call, no dashboard.
For the secod, we need to define an HTTP API to enable the dashboard to get data about the model. We also need to take versioning into consideration. Right now, we're using the k8s API talking to DCP directly, and augmenting it with additional data from the DistributedApplicationModel. The API is a contract for the dashboard, not DCP or Aspire.Hosting and it should be modeled as such.

I'm using otel/loki/tempo/grafana to summarize and view telemetry information.
After the dashboard is detached, can I remove my existing scheme and send the telemetry data directly to the dashboard through some extension method?
In addition, if it exists as a dotnet tool and is defined as a tools package resource, then when publishing, you need to consider how to control the publishing behavior of this type of resource.

I'm using otel/loki/tempo/grafana to summarize and view telemetry information.

I think you want to keep doing that unless there's a reason not to.

After the dashboard is detached, can I remove my existing scheme and send the telemetry data directly to the dashboard through some extension method?

I'd suggest sending it to both places.

In addition, if it exists as a dotnet tool and is defined as a tools package resource, then when publishing, you need to consider how to control the publishing behavior of this type of resource.

Yes, I have another issue in progress about deploying the dashboard

Are there playwright tests in place for the ui dashboard?

No there isn't. Test coverage for the dashboard is manual at this ponit.

In the decoupled world the dashboard will run out of process from AppHost. The dashboard will act as a client/receiver will which receive data about resources in the aspire and display them in UI on dashboard (including OTel data). Since dashboard also update data about resources in realtime, it will need data regarding resource being pushed to it once the connection is established rather than polling mechanism. Initial plan is to explore grpc as an option through which dashboard will talk to "server" and receive data regarding resources.
The "server" is supposed to provide data to dashboard regarding all the resources. In local development environment it will be endpoint exposed by Hosting project. This will also allow dashboard to be integrated with anything which can provide information e.g. in deployment environment.
The communication contract between dashboard and server will be responsible for providing all basic details about resources (including custom resources), their current execution status, logs associated with resources. While server may not provide data regarding OTel configuration but it will provide endpoints to get that data from individual app (similar to current setup).

In the decoupled world the dashboard will run out of process from AppHost. The dashboard will act as a client/receiver will which receive data about resources in the aspire and display them in UI on dashboard (including OTel data). Since dashboard also update data about resources in realtime, it will need data regarding resource being pushed to it once the connection is established rather than polling mechanism. Initial plan is to explore grpc as an option through which dashboard will talk to "server" and receive data regarding resources. The "server" is supposed to provide data to dashboard regarding all the resources. In local development environment it will be endpoint exposed by Hosting project. This will also allow dashboard to be integrated with anything which can provide information e.g. in deployment environment. The communication contract between dashboard and server will be responsible for providing all basic details about resources (including custom resources), their current execution status, logs associated with resources. While server may not provide data regarding OTel configuration but it will provide endpoints to get that data from individual app (similar to current setup).

It sounds good! I hope I can use it freely because monitoring is a common requirement for programs. Currently, using solutions like OTLP/loki/tempo/grafana or ELK can be relatively cumbersome to use and deploy.
When OpenTelemetry is used as the infrastructure, it should make everything easier. Many times, I don't need Grafana's ability to connect to various data sources. I just need the ability to monitor my applications and services.
With this approach, even if I'm not using the Aspire workload, I can still integrate into the Dashboard in my existing programs (through a library, a line of code, and configuring the connection string). I will have no burden and will be more willing to use it.

For production environments, additional requirements are basic role authorization verification and user management capabilities.

This is one thing we don’t have plans to solve yet. Nor long term storage of telemetry information.

Given dashboard is just display rather than storing any information, account management would be unnecessary to add just to control access. For local development which is scope of this issue, it doesn't matter since same user account which is running apphost can see the details. For deployment scenario, we should just probably utilize access control over other resources. Like if you have access to see your services deployed then your dashboard will have data about it. Perhaps extra item API contract would take regarding authorization, though it would still be up to server what mechanism to use and how to provide access.

I think for now, authorization of access to the dashboard is out of scope of the dashboard itself, and instead should be delegated to the environment the dashboard is running in, e.g.:

when running locally when launched via the AppHost, the dashboard is listening on localhost addresses only and thus is only visible to users on the local machine
when deployed, appropriate authorization mechanisms for the environment should be utilized, e.g.:

in Azure Container Apps, Easy Auth can be configured to protect access to the dashboard app using MS Entra ID, GitHub, Google, etc. authentication. This should be automatically configured by AZD somehow as part of the deployment experience. This will likely require the dashboard to be its own resource type in the manifest so that appropriate actions can be automatically performed.
in k8s, an ingress proxy that handles authn/z can be provisioned in front of the dashboard container

What's the significance of sequence_num in this API?

There's a data race in that service definition.
service IDashboardViewModelService {
	rpc GetResources(GetResourcesRequest) returns (ResourcesList);
	rpc WatchResources(WatchResourcesRequest) returns (stream ResourceChangeResult);
}

Calling GetResources and WatchResources cannot happen at exactly the same time, so an update might be missed.
We can fix with a slightly different API:
// Models a snapshot of resource state
message WatchResourcesSnapshot {
	repeated ResourceViewModel items = 1;
}

message WatchResourcesChange  {
	ChangeKind kind = 1;
	ResourceViewModel value = 2;
}

message WatchResourcesUpdate {
	// The first update contains the full initial snapshot.
	// All future updates are changes relative to that snapshot.
	oneof value {
		WatchResourcesSnapshot initial_snapshot = 1;
		WatchResourcesChange change = 2;
	}
}

service IDashboardViewModelService {
	rpc WatchResources(WatchResourcesRequest) returns (stream WatchResourcesUpdate);
}

In this way, the server implementation can ensure the client always has correct state.

sequence_num is that coordination piece to avoid race condition. When you run a watch you provide sequence num based on the snapshot you received in first call. If you put num as 0 then you get all the changes from start. This way allow watch to reconnect if connection drops.

Endpoint vs ResourceService
Can these be merged into one collection? I added the services collection because the tracing wants to know about all exposed ports. But it feels like there is a lot of overlap with endpoints.
Merging them:

The address on Endpoint message is added to ResourceService.
address would be renamed to http_address and be optional.
Add an endpoint type of some kind? Is that valuable? TCP/HTTP/?
The term Endpoint is slightly less overloaded than service. Rename ResourceService/Services to endpoint.

EnvironmentVariableViewModel -> EnvironmentVariable
Remove the term view model from the API. It's a UI thing.
Data from the API may be used in the UI, but don't bake that into the service and message names.

IDashboardViewModelService -> DashboardService
I'm sure this name will be bike shed a lot.

package Aspire.Dashboard;

This name should be lowercase (grpc naming standard)
Should dashboard be in the package name? IMO no.
One approach to versioning is to publish a new version of the service under a different package name. See https://learn.microsoft.com/en-us/aspnet/core/grpc/versioning?view=aspnetcore-8.0#version-number-services. I think we should add v1 to the package name. We don't have to use it (i.e. add a v2), but it is there if we need it.

With feedback:
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

syntax = "proto3";

package aspire.v1;

// TODO get optional -> nullable mapping working during C# codegen

import "google/protobuf/timestamp.proto";

////////////////////////////////////////////

message ApplicationInformationRequest {
}

message ApplicationInformationResponse {
	string application_name = 1;
	string application_version = 2;
}

////////////////////////////////////////////

message ItemCommandRequest {
	string item_name = 1;
	string type_name = 2;
	optional string confirmation_message = 5;
}

enum ItemCommandResponseKind {
	none = 0;
	succeeded = 1;
	failed = 2;
	cancelled = 3;
}

message ItemCommandResponse {
	ItemCommandResponseKind kind = 1;
	optional string error_message = 2;
}

////////////////////////////////////////////

message ItemType {
	// Unique name for the item type. Not for display.
	string unique_name = 1;

	// Localised name for the item type, for display use only.
	optional string display_name = 2;

	// Any commands that may be executed against items of this type, avoiding
	// the need to copy the value to every Item instance.
	//
	// Note that these commands must apply to matching items at any time.
	//
	// If the set of commands changes over time, use the "commands" property
	// of the Item itself.
	repeated ItemCommandRequest commands = 3;
}

////////////////////////////////////////////

message EnvironmentVariable {
	string name = 1;
	optional string value = 2;
	bool is_value_masked = 3;
	bool is_from_spec = 4;
}

message Endpoint {
	string name = 1;
	optional string allocated_address = 2;
	optional int32 allocated_port = 3;
	optional string http_address = 4;
}

message StringArray {
	repeated string values = 1;
}

message AdditionalData {
	oneof data {
		string value = 1;
		StringArray values = 2;
	}
}

message ItemId {
	string uid = 1;
	// TODO do we need item_type to make unique names? if not, inline ItemId type as string.
	string item_type = 2;
}

message Item {
	ItemId item_id = 1;
	string display_name = 3;
	optional string state = 4;
	optional google.protobuf.Timestamp creation_time_stamp = 5;
	repeated EnvironmentVariable environment = 6;
	optional int32 expected_endpoints_count = 7;
	repeated Endpoint endpoints = 8;
	repeated ItemCommandRequest commands = 9;

	// Map of additional data, as name/value pairs.
	// TODO what is the key? do we need separate display value(s)?
	// For:
	// - Containers: image, container_id, ports
	// - Executables: process_id, executable_path, working_directory, arguments
	// - Projects: process_id, project_path
	map<string, AdditionalData> additional_data = 10;
}

////////////////////////////////////////////

// Models a snapshot of item state
message WatchItemsSnapshot {
	repeated Item items = 1;
	repeated ItemType types = 2;
}

////////////////////////////////////////////

message ItemDeletion {
	ItemId item_id = 1;
}

message WatchItemsChange  {
	oneof change {
		ItemDeletion delete = 1;
		Item upsert = 2;
	}
}

message WatchItemsChanges {
	repeated WatchItemsChange value = 1;
	optional bool is_initial = 2;
}

////////////////////////////////////////////

// Sent periodically from the server to prevent proxies closing the connection due to inactivity,
// and to allow the client to detect when the connection drops, notify the user and attempt to reconnect.
message Heartbeat {
	// Time until the next heartbeat.
	int32 interval_milliseconds = 1;
}

////////////////////////////////////////////

// Initiates a subscription for data about items
message WatchItemsRequest {
	optional bool is_reconnect = 1;
}

// Message received from the server when watching items.
message WatchItemsUpdate {
	oneof value {
		// Snapshot of current item state. Received once upon connection, before any "changes".
		WatchItemsSnapshot initial_snapshot = 1;
		// One or more deltas to apply.
		WatchItemsChanges changes = 2;
		// A sign of life from the server. Can arrive at any time.
		Heartbeat heartbeat = 3;
	}
}

////////////////////////////////////////////

service DashboardService {
	rpc GetApplicationInformation(ApplicationInformationRequest) returns (ApplicationInformationResponse);
	rpc WatchItems(WatchItemsRequest) returns (stream WatchItemsUpdate);
	rpc ExecuteItemCommand(ItemCommandRequest) returns (ItemCommandResponse);
}

We need more structured messages for known things.

Moving the design of this API into PR now: https://github.com/dotnet/aspire/pull/1274

#1476 introduces the use of gRPC in-proc between app host and dashboard.

@prom3theu5 We'll need a resource server for aspire8 for k8s as well if we want the dashboard to work there. We're going to be producing a container image for the dashboard, but it needs to connect to another resource server that can show the k8s resources that are relevant to aspire in the dashboard using the grpc contract above. I'll open an issue on aspir8 for this.

@prom3theu5 We'll need a resource server for aspire8 for k8s as well if we want the dashboard to work there. We're going to be producing a container image for the dashboard, but it needs to connect to another resource server that can show the k8s resources that are relevant to aspire in the dashboard using the grpc contract above. I'll open an issue on aspir8 for this.

Makes sense - cheers David


feat(cli): add 'drain' CLI command to set /status/ready to 503

Summary

This command updates the /status/ready endpoint to return a 503 Service Unavailable status code. This allows external tools, such as Kubernetes, to detect when Kong is not ready to receive traffic. Based on this response, Kubernetes can gracefully remove Kong from its load balancing pool according to its configured policies, facilitating a smooth shutdown process.
Checklist

[x] The Pull Request has tests
[x] A changelog file has been created under changelog/unreleased/kong or skip-changelog label added on PR if changelog is unnecessary. README.md
[ ] There is a user-facing docs PR against https://github.com/Kong/docs.konghq.com - PUT DOCS PR HERE

Issue reference

Fix: FTI-6276

hi @mheap , PTAL this PR, it add a new command drain in Kong.

Is there an internal spike doc with the alternatives we looked into for solving this issue?

We do not have an internal spike doc recording this or an alternative solution;
This was derived from discussions with members of the k8s team.


Activating/Deactivating BrowserRouters

My last issue #7889 was immediately closed as a support issue, so now I'm opening a dedicated feature request for this functionality. Don't worry, this is not a request for support.
I would like the ability to enable/disable BrowserRouters so that they remember their current path, but don't update the browser URL or listen for changes on the browser URL. When enabling a BrowserRouter, the browser's URL will immediately update and it will begin listening for changes again.
This could possibly be done with a disabled prop, but I don't know if that's the best name for it. The router would still work, it just would only be navigable by links/programmatically and wouldn't be linked to the browser's address bar.
My use case for this is having multiple sections where each one has its own router and remembers the last path you visited if you momentarily visit another section.
This could also be implemented a lot of other ways; since you closed my issue without looking at it, I was not able to have any discussion about how this could be best done (my issue was not just a support request). Perhaps a different solution would be to let some Routes remember their path when they no longer match.

You can do this with a plain <Router> component and a custom history. Just switch between a memory history and a browser history as needed. Or chain them together with a listen on the memory history that selectively updates the browser history. This isn't something we would build into the core of the library.

You can do this with a plain <Router> component and a custom history. Just switch between a memory history and a browser history as needed. Or chain them together with a listen on the memory history that selectively updates the browser history. This isn't something we would build into the core of the library.

Alrighty, thanks for the info. I'll see what I can do.

Thank you, it worked! It was a lot of manual work, but here's what I did:

Manually made a BrowserHistory in index.ts and passed it to App
Made MemoryHistories for each section's Router and added a listener to each one that updates the BrowserHistory if it's the current section
Added a listener on the BrowserHistory that changes section / updates the respective section's MemoryHistory on page load & if it's changed by something other than the MemoryHistory listener (to prevent infinite loops)

Now, each section's complete route is preserved when switching between them and everything, exactly what I needed. I'm still just as bad as ever at explaining things, but your comment was just what I needed @timdorr :)


GCP Functions issue: Unknown package manager: [object Object]?

Hey I found your awesome plugins through the nx plugin directory.
I've played around a bit and have bben able to generate a cloud function.
When I try to build it I get below error.
Seems to be in the NX code itself. Weird is that if I add a log in the NX code the object is indeed the npm packageManager object.
Any ideas? Should I ask this in the NX repo instead?

PS C:\lander\devprojects\test-nx> nx build testit --region us-central1 --verbose

nx run testit:build --region us-central1

asset main.js 773 bytes [compared for emit] (name: main) 1 related asset
webpack 5.88.2 compiled successfully (bcb26f377fbb6c20)

NX   Unknown package manager: [object Object]

Error: Unknown package manager: [object Object]
at getLockFileName (C:\lander\devprojects\test-nx\node_modules\nx\src\plugins\js\lock-file\lock-file.js:115:11)
at createLockFile (C:\lander\devprojects\test-nx\node_modules\nx\src\plugins\js\lock-file\lock-file.js:128:44)
at generatePackageJson (C:\lander\devprojects\test-nx\node_modules@nx-extend\gcp-functions\src\utils\generate-package-json.js:68:149)
at C:\lander\devprojects\test-nx\node_modules@nx-extend\gcp-functions\src\executors\build\build.impl.js:12:61
at Generator.next ()
at fulfilled (C:\lander\devprojects\test-nx\node_modules@nx-extend\gcp-functions\node_modules\tslib\tslib.js:112:62)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

NX   Running target build for project testit failed

Failed tasks:

testit:build

Could you share nx report output?

@TriPSs so I've tried this again after reinstalling the plugin package (because I removed it in the meantime).
And now....... it works! :)
closing this


fix: apply padding before rendering of core text

Apply padding before rendering core text.
Addresses issue #4

@leostera took a shot at this one. Let me know what I need to fix :)

Ooh excellent! ✨
It would be awesome if you can use these styles in one of the examples (or make a new example) so its easy to visualize that the changes work by looking at the demo gif.
Let me know if I can help 🙏🏼

@leostera 👀

Hi @wonbyte and sorry for the delays! I think we will want to look into demoing this in combination with @jmcavanillas's work on escape-code aware string wrapping lib shape-the-term.
I'll merge it as is for now and we can improve later on.
Thanks for the contribution ✨ 🙌🏼


the touchscreen option doesn't work at all.

when i turn on the touch option in the mod's settings, the on-screen buttons show and all but the touch still just randomly makes the screen go crazy no matter where i tap and in the keyboard only the wasd keys work.
Steps to reproduce the behavior:

Go to settings
Click on options
click on controlls
click on the controller logo (the mod's logo)
change to touchscreen mode
go back to game
bag happens

OS: windows 11
Minecraft 1.19.4
Fabric latest
Mods fabric fabulously optimized modpack and better pvp mod.
Version latest

Same here except Manjaro Linux.

Same

Same


Could you tell me the version of opencv

I try to run your code, but got some problem. The version of 4.5 is not compatible. Could you tell me the version of opencv? Thanks.

This project depends on stable modules of OpenCV, so any version should work correctly.
Unfortunately, however, the opencv-python and opencv-contrib-python packages on pip are sometimes released in a broken state.
Try to roll back your packages (for example 4.5.0 or 4.4.x).

@ColbertBrave Can I close this issue?

Yes. Thank you very much. I try the 4.4.0 and it works well.


Add HOLOTYPE_OF relationship

Add new relationship from Specimen to OTU descriptions called HOLOTYPE_OF. A Specimen can by HOLOTYPE_OF many OTUs (verify this, it seems weird). An OTU can have only one holotype.

This is in e8ea57cb7f6d8ff86c0efbacd41408789f0be4f4 and a10bca192dba285b565ffbd3c50565776b305449


Update documentation index

Just a test to update the documentation from GitHub directly.

You can also try building in a fork! :)

Thanks to you, I now know how to do it! :-)


Using thin clients

Can I connect the camrea to a thin client thats connected to an application on some server? the thin client is connected to a server that runs the application.

Sensor SDK is available for NVIDIA Jetson range of devices. You could implement a thin client on a Jetson Nano.


update ditto operator to 0.2.0

Signed-off-by: Jens Reimann<EMAIL_ADDRESS>Thanks submitting your Operator. Please check below list before you create your Pull Request.

Flat operator directory structure is obsolete from 23-rd of October 2019, only nested directory structure will be accepted.

New Submissions

[ ] Does your operator have nested directory structure?
[ ] Have you selected the Project Community Operator Submissions in your PR on the right-hand menu bar?
[ ] Are you familiar with our contribution guidelines?
[ ] Have you packaged and deployed your Operator for Operator Framework?

[ ] Have you tested your Operator in all supported installation modes?
[ ] Is your submission signed?

Updates to existing Operators

[X] Is your new CSV pointing to the previous version with the replaces property?
[X] Is your new CSV referenced in the appropriate channel defined in the package.yaml ?
[X] Have you tested an update to your Operator when deployed via OLM?
[X] Is your submission signed?

Your submission should not

[X] Modify more than one operator
[X] Modify an Operator you don't own
[X] Rename an operator - please remove and add with a different name instead
[X] Submit operators to both upstream-community-operators and community-operators at once
[X] Modify any files outside the above mentioned folders
[X] Contain more than one commit. Please squash your commits.

Operator Description must contain (in order)

[X] Description about the managed Application and where to find more information
[X] Features and capabilities of your Operator and how to use it
[X] Any manual steps about potential pre-requisites for using your Operator

Operator Metadata should contain

[X] Human readable name and 1-liner description about your Operator
[X] Valid category name1
[X] One of the pre-defined capability levels2
[X] Links to the maintainer, source code and documentation
[X] Example templates for all Custom Resource Definitions intended to be used
[X] A quadratic logo

Remember that you can preview your CSV here.
--
1 If you feel your Operator does not fit any of the pre-defined categories, file an issue against this repo and explain your need
2 For more information see here

/ok-to-test

/lgtm


Id card image upload

Is your feature request related to a problem? Please describe.
Many users books an appointment without actual intention.
Describe the solution you'd like
Making the booking process tougher.
Additional context
The users now need to upload their Id card image so that only verified and intentional user books an appointment.
Later one can even introduce ML kit to verify the users are genuine.

Fixed by @ankank30


Macro generates code that doesn't compile if func is on separate line

Description
If you format your test function like this:
@Test
func
testModelType() { }

Then the generated code fails to compile, because the newline is included in the generated code:
    _ = try await ($s14SwiftTIFFTests03GeoB0V13testModelType4TestfMp_19functestModelType__fMu_.
                                                                                ^ Expected member name following '.'
    	testModelType(), Testing.__requiringTry, Testing.__requiringAwait).0

Expected behavior
Normal whitespace should have no effect on how a macro operates.
Actual behavior
Whitespace affects the generated code badly
Steps to reproduce
See above
swift-testing version/commit hash
No response
Swift & OS version (output of swift --version ; uname -a)
% swift --version ; uname -a
swift-driver version: 1.111.2 Apple Swift version 6.0 (swiftlang-<IP_ADDRESS>.15 clang-16<IP_ADDRESS>)
Target: arm64-apple-macosx14.0
Darwin eclipsem1.local 23.5.0 Darwin Kernel Version 23.5.0: Wed May  1 20:12:58 PDT 2024; root:xnu-10063.121.3~5/RELEASE_ARM64_T6000 arm64

Duplicate of #520


Feature/generic ui view introspection

First off, thanks for the very nice lib. It's been very useful for me.

I've added a new selector which should make it easier to introspect for views that don't have a selector yet. It leverages introspection and can be used like this:

// Considering `introspectTextField` didn't exist yet:

AnyView()
    .introspect(customize: { (textField: UITextField) in
        print("Found textfield \(textField)")
    })

Since quite some code was basically don't the exact same as the newly introduced generic method, I have replaced that with a call to the new method.
2.1 Feel free to reject this commit, I can easily revert it for you.

I've tested the above and as far as I've seen, it works.

Hey, sorry about the delay, notifications didn't go through so I never saw this. I'll take a look at the PR next week, but at quick glance it looks really good! Thanks for contributing and for your patience

This looks great! Simplifies the code quite a bit. Merging now. Thanks a lot for contributing!

You’re welcome. Thanks for adding it 🙂


[6.0.1] Bump the deployment target for the compiler to macOS 13.0

Cherry-pick https://github.com/swiftlang/swift/pull/76469 to 6.0.1.  See that PR for explanation/scope/risk/etc.

Note: this has base branch release/6.0.0, but my understanding is that it will be targeting 6.0.1.

@swift-ci please test


Enable validation and test to base metrics on full image seg, not just one crop

not very practical


Support per target task parameters in plans

Use Case
Commonly, a large number of tasks need to be run against targets, but in such a way that a single invocation of run_task() is not feasible. For example, a task that requires some minor modification of parameter inputs on a target-by-target basis. Instead of one invocation of run_task(), a loop must be used to call run_task() once per node with customized inputs.
Because plans in Bolt lack any kind of parallelism features, the performance of one invocation of run_task() with many targets vs. many invocations of run_task() with one target is markedly different. A job that would take 30 seconds to run per node could draw out the time to execute a plan to 30 seconds * the number of nodes, which could easily become infeasibly long.
An example Bolt plan fragment is given below, showing what it can look like when run_task() needs to be called in a loop.
['A', 'B'].each |$group| {
  getvar("compiler_${group.downcase()}_targets").each |$target| {
    run_task('peadm::agent_install', $target,
      server        => $master_target.peadm::target_name(),
      install_flags => [
        "main:certname=${target.peadm::target_name()}",
        "extension_requests:${pp_cluster}=${group}",
      ],
    )
  }
}

Describe the Solution You Would Like
Bolt plans should provide some kind of parallelism feature for constructing and dispatching many tasks, but letting those tasks run in parallel and not blocking until all the dispatched tasks have completed.
Suggested implementation (per Slack conversation with @adreyer): a block-based syntax to run_task() which calls a block per-target to set task parameters. E.g.
run_task(foo, $targets) |$t| {
   { param1 => 'foo', param2 => $t.name}
}

This provides parallelism for the use case of calling the same task for a set of  of targets, which each need customized input parameters. While this doesn't provide unbounded parallelism power, it probably solves the 90% use case, and has the strong benefit of being very simple but still decently powerful, and not dirty or ugly.
Describe Alternatives You've Considered
Implementation approaches could include:

passing parameters as a map to run_task() or run_task_per_target()
run_task(foo, $targets, _target_params => {
   "t1" => { key => val1},
   "t2" => {key => val2},
} )

This seems more verbose and could be confusing is the keys map to groups.
Questions

Should this be run_task or a new function run_task_with_per_target_parameters? Is it easy for users to understand what the block does? Is there some other case we'd want to add a block to run_task?
How long is PE likely to lack support for this behavior in plans it executes?
Should it be a block that return the parameters or a parameter that is a map of targets to parameters? Block tests better with @reidmv (add more examples for further tests)
Should we accept defaults too? Not if it's a new function.
do we collect all params first? Yes.
Should we add support for other run_* Not plan maybe the others.
Do we need to add a yaml step for this? Not now.

+1


One of the ES pages is in English

https://github.com/SamsungInternet/wizard/blob/main/pages/es/04 Ad Blocking Extensions.md

@lauramorinigo do you have the ES version on your local machine?


[REALTIME DB ] Flutter google sign in and firebase realtime lead to ios app crash

Steps to Reproduce

All file and configuration are completely setup (https://pub.dev/packages/google_sign_in#-readme-tab-)
The code with issue as follows:

  Future googleLogin() async {
    final googleSignIn = GoogleSignIn(scopes: ['email']);

    googleSignIn.onCurrentUserChanged.listen((account) async {
      final email = account.email;
      final name = account.displayName;
      final photoUrl = account.photoUrl;

      print("Google login success! email = $email, name = $name, photoUrl = $photoUrl");

     // ------------------- ISSUE start ----------------------
      var psid;
      databaseReference.child('app_logins/'+email).once().then((DataSnapshot snapshot) async {
        var data = snapshot.value;
        print(data);
        if (data==null){
          psid = await genPsid();
          print(psid);
          databaseReference.child('app_logins/'+email).set({
            'user_email': email,
            'user_name': name,
            'user_photoUrl': photoUrl,
            'platform': "google",
            'psid': psid,
          });
        }else{
          psid = data['psid'];
          print(psid);
        }
      });
   // ------------------- ISSUE end ----------------------
      Navigator.of(context).pushNamedAndRemoveUntil('/home', (x) => !x.isCurrent);
    });

    try {
      await googleSignIn.signIn();
    } catch (error) {
      print(error);
    }
  }

3.1 flutter run the app on iOS
4.1 After sign in google account, the ios app crash (Without ISSUE Code, then it is fine)
3.2  flutter run the app on Android
4.2 After sign in google account, Error message display (with or without ISSUE Code)
Logs
IOS: Log on xcode:

Logs
2020-02-12 17:16:45.434037+0800 Runner[49908:4722703] <Warning>: Please set a value for FacebookAutoLogAppEventsEnabled. Set the flag to TRUE if you want to collect app install, app launch and in-app purchase events automatically. To request user consent before collecting data, set the flag value to FALSE, then change to TRUE once user consent is received. Learn more: https://developers.facebook.com/docs/app-events/getting-started-app-events-ios#disable-auto-events.
2020-02-12 17:16:45.434254+0800 Runner[49908:4722703] <Warning>: You haven't set a value for FacebookAdvertiserIDCollectionEnabled. Set the flag to TRUE if you want to collect Advertiser ID for better advertising and analytics results. To request user consent before collecting data, set the flag value to FALSE, then change to TRUE once user consent is received. Learn more: https://developers.facebook.com/docs/app-events/getting-started-app-events-ios#disable-auto-events.
2020-02-12 17:16:46.340420+0800 Runner[49908:4722703] Configuring the default Firebase app...
2020-02-12 17:16:46.341970+0800 Runner[49908:4723021] 6.17.0 - [Firebase/Core][I-COR000004] App with name __FIRAPP_DEFAULT does not exist.
2020-02-12 17:16:46.373646+0800 Runner[49908:4722703] Configured the default Firebase app __FIRAPP_DEFAULT.
2020-02-12 17:16:46.403697+0800 Runner[49908:4722703] FBSDKLog: Unable to obtain a key window, marking <UIWindow: 0x7fd8fdc120b0; frame = (0 0; 414 896); hidden = YES; gestureRecognizers = <NSArray: 0x600000bfc1b0>; layer = <UIWindowLayer: 0x6000005b76e0>> as keyWindow
2020-02-12 17:16:46.434632+0800 Runner[49908:4723093] flutter: Observatory listening on http://<IP_ADDRESS>:61708/jvgyo-P4h6A=/
2020-02-12 17:16:46.465993+0800 Runner[49908:4723106] 6.17.0 - [Firebase/Analytics][I-ACS025028] AdMob and Firebase are in use in this app, but are not linked. For analytics data consistency and integrity, it is highly recommended that you link your AdMob app to the corresponding Firebase app and re-download the GoogleServices-Info.plist file. See https://support.google.com/admob/answer/6383165 for more information.
2020-02-12 17:16:46.466392+0800 Runner[49908:4723106] 6.17.0 - [Firebase/Analytics][I-ACS023007] Analytics v.60202000 started
2020-02-12 17:16:46.466816+0800 Runner[49908:4723106] 6.17.0 - [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see http://goo.gl/RfcP7r)
2020-02-12 17:16:46.468183+0800 Runner[49908:4723106] 6.17.0 - [Firebase/Analytics][I-ACS031025] Analytics screen reporting is enabled. Call +[FIRAnalytics setScreenName:setScreenClass:] to set the screen name or override the default screen class name. To disable screen reporting, set the flag FirebaseScreenReportingEnabled to NO (boolean) in the Info.plist
2020-02-12 17:16:46.885904+0800 Runner[49908:4723035] 6.17.0 - [Firebase/Analytics][I-ACS025026] Deferring to Firebase for event data collection
2020-02-12 17:16:46.887734+0800 Runner[49908:4723021] [Client] Synchronous remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2020-02-12 17:16:46.887778+0800 Runner[49908:4723036] [Client] Updating selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2020-02-12 17:16:46.887995+0800 Runner[49908:4723036] [Client] Updating selectors after delegate addition failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2020-02-12 17:16:46.888711+0800 Runner[49908:4723021] [Client] Synchronous remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2020-02-12 17:16:46.888800+0800 Runner[49908:4723036] [Client] Updating selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2020-02-12 17:16:46.892303+0800 Runner[49908:4723021] [Client] Synchronous remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2020-02-12 17:16:46.892433+0800 Runner[49908:4723107] [Client] Updating selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2020-02-12 17:16:47.175761+0800 Runner[49908:4723036] 6.17.0 - [Firebase/Analytics][I-ACS023012] Analytics collection enabled
2020-02-12 17:16:48.251273+0800 Runner[49908:4722703] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x60000050ea40> F8BB1C28-BAE8-11D6-9C31-00039315CD46
2020-02-12 17:17:01.717180+0800 Runner[49908:4723122] [AXRuntimeCommon] Unknown client: Runner
2020-02-12 17:17:13.187917+0800 Runner[49908:4723075] flutter<EMAIL_ADDRESS>2020-02-12 17:17:13.223608+0800 Runner[49908:4722703] *** Terminating app due to uncaught exception 'InvalidPathValidation', reason: '(child:) Must be a non-empty string and not contain '.' '#' '$' '[' or ']''
*** First throw call stack:
(
	0   CoreFoundation                      0x00007fff23c7127e __exceptionPreprocess + 350
	1   libobjc.A.dylib                     0x00007fff513fbb20 objc_exception_throw + 48
	2   Runner                              0x000000010f832868 +[FValidation validateFrom:validPathString:] + 248
	3   Runner                              0x000000010f832a64 +[FValidation validateFrom:validRootPathString:] + 468
	4   Runner                              0x000000010f7c107d -[FIRDatabaseReference child:] + 189
	5   Runner                              0x000000010f9186bb getReference + 203
	6   Runner                              0x000000010f918793 getDatabaseQuery + 83
	7   Runner                              0x000000010f91b4cb -[FLTFirebaseDatabasePlugin handleMethodCall:result:] + 7099
	8   Flutter                             0x00000001105b5db5 __45-[FlutterMethodChannel setMethodCallHandler:]_block_invoke + 104
	9   Flutter                             0x0000000110549ba0 _ZNK7flutter21PlatformMessageRouter21HandlePlatformMessageEN3fml6RefPtrINS_15PlatformMessageEEE + 166
	10  Flutter                             0x000000011054d64e _ZN7flutter15PlatformViewIOS21HandlePlatformMessageEN3fml6RefPtrINS_15PlatformMessageEEE + 38
	11  Flutter                             0x00000001105af969 _ZNSt3__110__function6__funcIZN7flutter5Shell29OnEngineHandlePlatformMessageEN3fml6RefPtrINS2_15PlatformMessageEEEE4$_32NS_9allocatorIS8_EEFvvEEclEv + 57
	12  Flutter                             0x000000011055cb73 _ZN3fml15MessageLoopImpl10FlushTasksENS_9FlushTypeE + 117
	13  Flutter                             0x00000001105618b8 _ZN3fml17MessageLoopDarwin11OnTimerFireEP16__CFRunLoopTimerPS0_ + 26
	14  CoreFoundation                      0x00007fff23bd4b94 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
	15  CoreFoundation                      0x00007fff23bd4882 __CFRunLoopDoTimer + 1026
	16  CoreFoundation                      0x00007fff23bd3eda __CFRunLoopDoTimers + 266
	17  CoreFoundation                      0x00007fff23bcec4e __CFRunLoopRun + 2238
	18  CoreFoundation                      0x00007fff23bce066 CFRunLoopRunSpecific + 438
	19  GraphicsServices                    0x00007fff384c0bb0 GSEventRunModal + 65
	20  UIKitCore                           0x00007fff48092d4d UIApplicationMain + 1621
	21  Runner                              0x000000010f6326d0 main + 112
	22  libdyld.dylib                       0x00007fff5227ec25 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)

Android: Logs:

Logs
E/flutter (13960): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)
E/flutter (13960): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
E/flutter (13960): #1      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:321:33)
E/flutter (13960): <asynchronous suspension>
E/flutter (13960): #2      MethodChannel.invokeMapMethod (package:flutter/src/services/platform_channel.dart:349:48)
E/flutter (13960): #3      MethodChannelGoogleSignIn.signIn (package:google_sign_in_platform_interface/src/method_channel_google_sign_in.dart:45:10)
E/flutter (13960): #4      GoogleSignIn._callMethod (package:google_sign_in/google_sign_in.dart:227:42)
E/flutter (13960): <asynchronous suspension>
E/flutter (13960): #5      GoogleSignIn._addMethodCall (package:google_sign_in/google_sign_in.dart:282:18)
E/flutter (13960): #6      GoogleSignIn.signIn (package:google_sign_in/google_sign_in.dart:352:9)
E/flutter (13960): #7      _LoginPageState.googleLogin (package:areix/screens/auth/login.dart:338:72)
E/flutter (13960): #8      _LoginPageState.build.<anonymous closure> (package:areix/screens/auth/login.dart:150:27)
E/flutter (13960): #9      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:706:14)
E/flutter (13960): #10     _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:789:36)
E/flutter (13960): #11     GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter (13960): #12     TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:486:11)
E/flutter (13960): #13     BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:264:5)
E/flutter (13960): #14     BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:199:7)
E/flutter (13960): #15     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:467:9)
E/flutter (13960): #16     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:76:12)
E/flutter (13960): #17     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:117:9)
E/flutter (13960): #18     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:379:8)
E/flutter (13960): #19     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:115:18)
E/flutter (13960): #20     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:7)
E/flutter (13960): #21     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:218:19)
E/flutter (13960): #22     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter (13960): #23     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter (13960): #24     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter (13960): #25     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter (13960): #26     _rootRunUnary (dart:async/zone.dart:1138:13)
E/flutter (13960): #27     _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter (13960): #28     _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
E/flutter (13960): #29     _invoke1 (dart:ui/hooks.dart:273:10)
E/flutter (13960): #30     _dispatchPointerDataPacket (dart:ui/hooks.dart:182:5)
E/flutter (13960):

flutter doctor -v

Logs
✓] Flutter (Channel stable, v1.12.13+hotfix.7, on Mac OS X 10.15.2 19C57, locale en-HK)
    • Flutter version 1.12.13+hotfix.7 at /Applications/flutter
    • Framework revision 9f5ff2306b (2 weeks ago), 2020-01-26 22:38:26 -0800
    • Engine revision a67792536c
    • Dart version 2.7.0

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/charon/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.3, Build version 11C29
    • CocoaPods version 1.8.4

[✓] Android Studio (version 3.4)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 35.3.1
    • Dart plugin version 183.6270
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)

[✓] VS Code (version 1.41.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.8.0

[✓] Connected device (1 available)
    • Android SDK built for x86 • emulator-5554 • android-x86 • Android 9 (API 28) (emulator)

    • No issues found!

Hi @Charonnnnn
can you please provide your full flutter run --verbose
and your pubspec.yaml
Thank you

Hi @Charonnnnn
Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore
reluctantly going to close this bug for now. Please don't hesitate to comment on the bug if you have any
more information for us; we will reopen it right away!
Thanks for your contribution.


chore(ci): only run within tunnel if necessary

TEST

This would be another approach to the $MODE check, but both way work fine.


update query values after setting them

Current behavior of generated code is to set query string values but never write them back to the URL. This should fix that (but do note that if I've changed the wrong file here, yell at me. I haven't tested it very well, just by sed on my current code.)

Ah, shoot... this may not work quite right. I'm not sure. Sorry if it doesn't. :\

Thanks! I pushed a fix with PR #136


Add library checking to compile-time along with checking return values of imported commands

@SheepTester I need you to work on using the _value function to get typing of return values as I am not too sure how you did it, also you can assume that any library in the library list during run time has _value as I check for that during compile time

@SheepTester I need you to work on using the _value function to get typing of return values as I am not too sure how you did it, also you can assume that any library in the library list during run time has _value as I check for that during compile time

I don't think _value's needed during runtime since type checking isn't really necessary during runtime.

ok cool just wanted you to know, i just need you to fix the errors and warnings about not knowing how to type-check imported functions

I'd suggest we'd merge the concept of imported functions vs function callbacks.

Building on this, I believe that this can be done by making . part of the name when getting a variable. Then, when importing a function in the type checker, we can do something similar to adding native functions, where we add the name and type signature to the Scope. This way, Scope.get_variable is able to find the value, and calling the imported command would be the same thing as calling a normal function, so it can use the same code.


fix image destination bug for quay robot accounts

Changes introduced with this PR
Fix image destination bug for quay robot accounts.

By contributing to this repository, I agree to the contribution guidelines.

Can you add some comments that explain what situations those if else statements are checking for?


"Vernești" is listed in the drop-down menu

Description:
"Vernești" is listed in the drop-down menu alongside its corresponding county and commune, according to the law
Precondition:
The website is up an running.

Step 1
Type "Vernești" in the search bar.

Expected results
The location is listed in the drop-down menu as "Comuna Vernești, BUZĂU".


Install on Build from source version

Hello,
Thank you for this amazing work.
I am sorry if this is a noob question, but could you tell me how do i install this plugin in a build from source version of grafana?
Thank You.

Hi @GuilhermeDaniluski, README.md says

Clone this project into the grafana plugins directory

So if you've built Grafana in /usr/src/grafana, try to clone the project into /usr/src/grafana/plugins


history.listen not triggered on hash changes

Hi. I upgraded react-router library to version 3.0.0 which uses History v3.0.0, but this caused history.listen not triggering on hash changes.
Inspired by this answer on stackoverflow, I'm listening to URL changes and do stuff to history. This works perfectly with react-router version 2.8.1 which uses History v2.1.2.
Could you please tell me what changes do I have to make to have the same result.

Same here; using createHashHistory() and changing the URL in the address bar (the hash part) doesn't cause listeners to be triggered, even though the hashchange event fires on window.

Same here

Can you post some example code where this isn't working? Ironically, we're seeing the opposite effect (double listener calls) on React Router.

@timdorr I've resolved my issue — https://github.com/ReactTraining/react-router/issues/4370#issuecomment-275873789 — and it was not history problem.

@vpezeshkian Can you provide some code? It looks like you have some other people with the same problem, based on the reactions to your comment. If anyone has any examples of using the library that reproduce this problem, that would be super-helpful.

I'm seeing this too, though with v2.x.
We're using redux-router and scroll-behavior, and I was trying to fix scroll-behavior to do the right thing when clicking #links and going back.
I'm seeing transitionTo in createHistory.js gets called with nextLocation.key === location.key even though nextLocation.hash != location.hash, so locationsAreEqual returns true and the update is squelched.
It only seems to happen after following internal links and then using the back button, possibly requiring additional following of internal links though I'm not sure I can reproduce it 100% reliably yet...
Sorry I don't have a small code sample yet, but I can run
u = $r.props.history.listen(e => console.log('history event:', o))

in the console and it will miss updates that
window.addEventListener('popstate', console.log, false)

does get. This is with Chrome  57 beta BTW.
I'll see if I can get a small repro example.

Actually, here's a fairly small example.

Open below file and open the JS console to see log messages.
Click t1
Click t2
Click back button.
Click t3.

Note that the last step was the only one not logged.

t1

t2

t3

t4

 T1

 T2

 T3

 T4

Sorry for late response,
My own example is this:
import { Router, Route, useRouterHistory, IndexRoute } from 'react-router'
import { createHistory } from 'history'
const history = useRouterHistory(createHistory)();
  history.listen(location => {
    const path = (/#(\/.*)$/.exec(location.hash) || [])[1];
    if(path) history.replace(path);
  });

<Router history={history}>...rest of the routs here...</Router>

My experience is not like @DimitryDushkin where clicking causes this, I just can't load the page, it just goes to /. meaning if hit localhost:3000/account/123 it serves localhost:3000, since it doesn't put the # and replace, because it did not register the listener.
This is happening with v3.x of react-router and above.

@vpezeshkian The default createHistory is a browser history. It doesn't listen to hash changes. If you need that, you have to add a listener for the hashchange event to handle it. Also, under 3.0, the initial listen callback doesn't immediately fire, so I wouldn't expect that listener to ever actually run.
@aij That isn't the version of history we're dealing with here.
Looks like this is an error outside the library, so I'm closing this out.

@timdorr You're right. My above example seems to work fine with 4.5.1 as well as 3.2.1. I'll see if I can upgrade redux-router to use a newer version of history instead. Do you care for a bug report against v2 or is it pretty much abandoned at this point?

Nothing's happening with it. We're recommend router 3.0 at this time, with 4.0 coming very soon. All 2.x stuff isn't maintained anymore.


Strategy

Reason for Change
Previously, the spec_helper set us up to run each test 7-8 times via:
  def use_fake_connection
    MessageQueue::Strategy::TRUTHY_VALUES.each do |yes|
      allow(ENV).to receive(:[]).with('FAKE_QUEUE').and_return(yes)
      yield
    end
  end

List of Changes

Reduce that back down to once
Re-namespace & refactor Strategy (via "campsite rule")

Risks
There are likely to be merge conflicts later with #32 & #29
@fastly/billing

Some minor questions, otherwise LGTM.


Pre-cache version field changes from ocp-release to sha-256 container image digests

I found problems when using pre-cache feature when the version of the ocp-release to be used was not set as container image digest. The pre-cache tasks were done successfully but when it comes to replacing the image  ( (clusterversion.spec.desiredUpdate.image) of the Clusterversion object with a non digest container image the cluster-operator does not trust the image.
Probably it can be solved by setting the force field of the Clusterversion manifest to true, but.... I do not think it is the correct way.
When setting the container image digest in the CGU CR, both the pre-cache and upgrade tasks were executed successfully.
This PR basically modifies README where it is explained how to easily obtain the digest using oc binary and modifies the examples spread over the repo. Also, it changes a comment in the code.
cc/ @vitus133
Signed-off-by: Alberto Losada<EMAIL_ADDRESS>

cc/ @vitus133

/approve

/ok-to-test

/lgtm


Picture disposal - work in progress

This is so we can discuss this PR. There are not tests here yet, and it definitely has cruft from experiments in some places.

It's easier for me to clean up a new PR for this - closing in favor of https://github.com/flutter/flutter/pull/84740


Error in bam2h5.py

Hello Bryce and Graham,
I am using the CHT to map eQTLs. Step 1 and 4 was completed without any problem. But the last bit of step 5 gives the following error. I could not pinpoint the origin of this error so was wondering if you could give me a pointer. Would be happy to provide example data if needed. Thanks!
Begining error message
setting statistics for each chromosome
Traceback (most recent call last):
File "/srv/persistent/bliu2/tools/WASP/CHT/bam2h5.py", line 696, in
main()
File "/srv/persistent/bliu2/tools/WASP/CHT/bam2h5.py", line 684, in main
chromstat.set_stats(h5f, chrom_list)
File "/srv/persistent/bliu2/tools/WASP/CHT/chromstat.py", line 100, in set_stats
chrom_stat.set_from_vals(node[:])
File "/srv/persistent/bliu2/tools/anaconda/lib/python2.7/site-packages/tables/array.py", line 648, in getitem
arr = self._read_slice(startl, stopl, stepl, shape)
File "/srv/persistent/bliu2/tools/anaconda/lib/python2.7/site-packages/tables/array.py", line 754, in _read_slice
self._g_read_slice(startl, stopl, stepl, nparr)
File "hdf5extension.pyx", line 1491, in tables.hdf5extension.Array._g_read_slice (tables/hdf5extension.c:14091)
tables.exceptions.HDF5ExtError: HDF5 error back trace
File "H5Dio.c", line 173, in H5Dread
can't read data
File "H5Dio.c", line 550, in H5D__read
can't read data
File "H5Dchunk.c", line 1872, in H5D__chunk_read
unable to read raw data chunk
File "H5Dchunk.c", line 2902, in H5D__chunk_lock
data pipeline read failed
File "H5Z.c", line 1382, in H5Z_pipeline
filter returned failure during read
File "H5Zdeflate.c", line 125, in H5Z_filter_deflate
inflate() failed
End of HDF5 error back trace
Problems reading the array data.
End of error message
Bosh

Hi Bosh,
The error is coming from the HDF5 library, but I am not sure what is causing it. My best guess is that there was insufficient memory or a problem reading from the disk. Can you try increasing the amount of RAM available (e.g. to something like 8GB or 16GB) and running it again? If that still fails can you send us some example data and your command line?
Graham

Okay. that is good to know! I changed my code slightly and running again. I will let you know!

Graham,
Your suggestion resolved the problem. Thank you!


Cardinal components is in need of an update

The latest build causes some crashes with other mods

Thank you for letting me know! I'll update when I get off work!

Fixed in EerieHauntings-FABRIC-<IP_ADDRESS>-1.18.1

Probably want to update again, the cause of those crashes was with something one of the devs of CC was doing with experimental loom settings

Ah darn. I'll update it when I'm off work again. Thank you for letting me know and for bearing with us here!


Update READ.md, fix typos

s/ouput/output/
s/succesfully/successfully/

These typos were already fixed.


[type:fix] Add SPI @Join annotation to the isSingleton() property

Make sure that:

[V] You have read the contribution guidelines.
[V] You submit test cases (unit or integration tests) that back your changes.
[V] Your local test passed ./mvnw clean install -Dmaven.javadoc.skip=true.

Codecov Report

Merging #3955 (4792d71) into master (14ec556) will decrease coverage by 0.38%.
The diff coverage is 100.00%.

@@             Coverage Diff              @@
##             master    #3955      +/-   ##
============================================
- Coverage     70.16%   69.77%   -0.39%
+ Complexity     6678     6639      -39
============================================
  Files           923      923
  Lines         25071    25067       -4
  Branches       2264     2262       -2
============================================
- Hits          17590    17491      -99
- Misses         6112     6218     +106
+ Partials       1369     1358      -11

Impacted Files
Coverage Δ

...in/java/org/apache/shenyu/spi/ExtensionLoader.java
86.58% <100.00%> (-0.92%)
:arrow_down:

...n/alibaba/dubbo/cache/AlibabaDubboConfigCache.java
47.12% <0.00%> (-31.04%)
:arrow_down:

.../client/server/consul/ShenyuConsulConfigWatch.java
60.41% <0.00%> (-25.00%)
:arrow_down:

...controller/ShenyuClientHttpRegistryController.java
77.77% <0.00%> (-22.23%)
:arrow_down:

...henyu/plugin/grpc/resolver/ShenyuNameResolver.java
51.06% <0.00%> (-12.77%)
:arrow_down:

...ruptor/RegisterClientServerDisruptorPublisher.java
52.94% <0.00%> (-11.77%)
:arrow_down:

...a/org/apache/shenyu/common/utils/VersionUtils.java
67.85% <0.00%> (-10.72%)
:arrow_down:

.../apache/shenyu/admin/model/dto/BatchCommonDTO.java
50.00% <0.00%> (-7.15%)
:arrow_down:

...apache/shenyu/admin/model/dto/AuthPathWarpDTO.java
57.14% <0.00%> (-7.15%)
:arrow_down:

...org/apache/shenyu/admin/model/dto/AuthPathDTO.java
58.82% <0.00%> (-5.89%)
:arrow_down:

... and 31 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Revert "HADOOP-17995. Stale record should be remove when DataNodePeerMetrics#dumpSendPacketDownstreamAvgInfoAsJson"

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Logfile
Comment

+0 :ok:
reexec
0m  0s

Docker mode activated.

-1 :x:
patch
0m 18s

https://github.com/apache/hadoop/pull/3697 does not apply to trunk. Rebase required? Wrong Branch? See https://cwiki.apache.org/confluence/display/HADOOP/How+To+Contribute for help.

Subsystem
Report/Notes

GITHUB PR
https://github.com/apache/hadoop/pull/3697

Console output
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3697/1/console

versions
git=2.17.1

Powered by
Apache Yetus 0.14.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.


SPACESHIP_ROOT env causes error in tmux when upgrading spaceship to a new version

Is there an existing issue for this?

[X] Yes, I have searched the existing issues
[X] Yes, I have checked troubleshooting page

The problem
When using tmux, SPACESHIP_ROOT of each zsh shell opened in tmux inherites from the tmux process. For example, current value of SPACESHIP_ROOT is /usr/local/Cellar/spaceship/3.16.5/libexec. When upgrading spaceship to the latest version, the actual root directory will be /usr/local/Cellar/spaceship/3.16.7/libexec. So when opening a new window in tmux, initialization will cause error:
prompt_spaceship_setup:source:106: no such file or directory: /usr/local/Cellar/spaceship/3.16.5/libexec/lib/utils.zsh
prompt_spaceship_setup:source:109: no such file or directory: /usr/local/Cellar/spaceship/3.16.5/libexec/lib/hooks.zsh
prompt_spaceship_setup:source:112: no such file or directory: /usr/local/Cellar/spaceship/3.16.5/libexec/lib/section.zsh
prompt_spaceship_setup:119: command not found: spaceship::union
prompt_spaceship_setup:135: command not found: spaceship::deprecated
prompt_spaceship_setup:136: command not found: spaceship::deprecated
prompt_spaceship_setup:137: command not found: spaceship::deprecated
prompt_spaceship_setup:138: command not found: spaceship::deprecated
prompt_spaceship_setup:139: command not found: spaceship::deprecated

The only way to solve this problem is to kill the tmux server and reopen it.
Suggestion: maybe we can use /usr/local/opt/spaceship/libexec as the root directory. It's a symbolic link to /usr/local/Cellar/spaceship/<version-number>/libexec, but it's independent on the version number. Or always compute the actual root path, don't use existing SPACESHIP_ROOT. https://github.com/spaceship-prompt/spaceship-prompt/blob/95ae2ed744a53d66df06ed243e199be929101e1b/spaceship.zsh#L18-L34
Relevant Zsh configuration
autoload -Uz promptinit; promptinit
prompt spaceship
compinit

What is version of Spaceship are you using?
3.6.17
What is version of Zsh are you using?
5.8.1
What operation system are you running?
macOS
Do you use any Zsh framework or plugin manager?
oh-my-zsh
Which terminal emulator do you use?
iTerm
Additional information
No response

Try upgrading to 4.x. It resolves a lot of installation issues.

I ran into the same issue after the upgrade from 4.6.1 to 4.7.0 (also on macOS, oh-my-zsh, tmux, iTerm, zsh v5.8.1)

:tada: This issue has been resolved in version 4.8.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


wlr_output's design doesn't work well with repaint scheduling

wlr_output has a baked-in assumption that the compositor will render right away when the frame event is triggered.
If the compositor doesn't do this, then wlr_output assumes the compositor stopped its rendering loop. Some wlroots utilities (wlr_output_damage, wlr_screencopy_v1) need to resume the rendering loop, and will call wlr_output_schedule_frame to do so. This function will re-submit the previous frame (perform a page-flip on DRM) to request a new frame event. We don't resume the rendering loop immediately to make sure we're correctly aligned with vsync.
All of this will prevent the compositor from submitting a new frame some time after the frame event.
To implement repaint scheduling in Sway, wlr_output.block_idle_frame has been introduced. It's basically a way for the compositor to say "i'll submit a frame soon, so please ignore any wlr_output_schedule_frame call".
I'm not a fan of the current situation because the wlr_output interface has become too complicated and opinionated. Removing wlr_output.block_idle_frame is not trivial, see https://github.com/swaywm/sway/pull/4588#discussion_r347147171.
I'll try to think of a better solution, with repaint scheduling + variable refresh rate in mind.

I wonder if it's worth going with the wl_surface model for this. We've already gone towards that with most things in wlr_output, but it could be frame events too.
Instead of the backend dictating the user's rendering loop, the user would have a more active role in driving it.
Although one foreseeable issue is restarting the rendering loop on VT-switching, but that has always been awkward.

One issue is that it's not possible for DRM to implement a wl_surface model, because once you've submitted a frame you need to wait vsync before submitting another one. That's why frame_pending exists: to prevent users from pushing multiple frames per vblank so that all backends work the same way.
We could work-around this by making the DRM backend wait on wlr_output_commit and submit the frame right before vblank, however I'm not sure how this would work with variable refresh rate and how to make sure we don't miss a frame.
needs_frame allows the output to request a frame event if there's no damage (so the compositor would skip rendering normally). This is useful in a handful of situations, from VT switching to screen capture. I don't have an idea to remove it (yet).
idle_frame is tied to wlr_output_schedule_frame, so it would go away with this function.

We could work-around this by making the DRM backend wait on wlr_output_commit and submit the frame right before vblank, however I'm not sure how this would work with variable refresh rate and how to make sure we don't miss a frame

Yeah, that's a path full of a bunch of heuristics, but would allow us to emulate the mailbox model. When I heard the XDC talk mentioning this, I've been thinking that maybe it's not the worst idea.
But Keith Packard has also mentioned that he wants to try and push for some kernel API changes regarding this too, which would make doing that unnecessary. We'll have to see if anything ends up happening.

Note: https://github.com/swaywm/sway/pull/4772 now sets frame_pending instead of using block_idle_frame.

Update: with https://github.com/swaywm/wlroots/pull/2046 wlr_output_impl.schedule_frame is gone. This means wlroots won't perform page-flips behind the compositor's back anymore.

Could wlroots provide an object (say a wlr_frame_scheduler) that listens for a new frame_request signal emitted by wlr_output_damage and wlr_screencopy_v1, and that emits a frame signal with a wlr_outputs when it thinks is a good time to render a frame for that output?
The algorithm would be configurable:

It could be extended in the future to add a mode like max_render_time in Sway for the compositor and clients where it intentionally waits a fixed time before rendering.
It could also have an automatic mode that measures the rendering time of the compositor and clients and automatically and adjusts the max_render_time (I don't know if this actually works). Of course, the documentation would clearly say that this mode is not perfect.
It could be configured by clients with an extension to the Wayland protocol (see last before paragraph).

I am aware such an algorithm would be opinionated, and therefore that it wouldn't work for every compositor, but the big advantage is that it would provide a default algorithm that all compositors can easily use with very few lines of code and that would help decrease the input latency on all of the Linux desktop that uses wlroots, instead of just Sway for now, especially if a mode is added later that keeps track of the maximum render times automatically and doesn't need any configuration from the end user (I don't know if this actually works).
Additionally, if this was put in wlroots, it could mean that a Wayland protocol extension that works on all wlroots compositors could be created where clients tell the compositor how much time they need to render their content, like the max_render_time option for views in Sway. Indeed, the clients probably know better than the user and the compositor how much time they need to render something, especially when it varies over time. For example, a terminal application might have an algorithm where depending on how many cells need to be redrawn, it will allocate different amounts of time to the compositor to still have time to render, but render at the very last time.
If the compositor wants its own implementation of frame scheduling, it could listen itself for the frame_request signals and do the frame rendering itself.

Sorry, I'm a bit out of the loop so I can't comment on the main part of the comment, but:

clients tell the compositor how much time they need to render their content, like the max_render_time option for views in Sway

I don't think this is a good idea since it has a lag of at least 1 frame; I think a better idea would be to signal the clients the commit deadline together with frame callbacks without delaying the frame callbacks, so then the client itself can decide whether it wants to take all the available time or wait on its own to start rendering closer to the commit deadline.

I think an optional helper would be a good idea, but I'd prefer to have it working in a compositor before deciding whether it should be part of wlroots or not.
The helper should listen to presentation events instead of frame events. The backend doesn't send frame events when a page-flip happens, the backend sends a frame event to signal it's a good time to render (and it's wired up to wl_surface.frame in the Wayland backend for instance).

I'm still new to this, but I'm kinda skeptical of the idea to let the client decide when they start rendering. Here are the reasons:

Determining how much work is needed for the next frame is hard, as the content rendered by the application mostly depends on user input or other unpredictable events. To decide on a render start time in such cases, the application would need to constantly looking at the events (as opposed to batch-processing them at the beginning of rendering loop), which doesn't sound like a good choice mainly due to power consumption/efficiency.
All clients should start rendering at the same time for a perfectly synchronized frame. A perfect synchronization means:

when not resizing, the cursor position should match what the application had received when it started rendering
when resizing, the cursor position should match the edge of the window being resized, and the application should also render at the size requested by the compositor (also see smooth-resize test)
That said I guess this one would be hard to observe though, so it can be traded off for other benefits.

By the way, an application that is known to do work during the idle period between frames is Chrome (https://v8.dev/blog/free-garbage-collection), but it calculates the amount of free time after a frame (which can be calculated by subtracting frame time from the monitor refresh period), in contrast to the time before a frame (which is hard to determine as described in point 1 above). So for that case it will work without the knowledge of render deadline.

Determining how much work is needed for the next frame is hard, as the content rendered by the application mostly depends on user input or other unpredictable events. To decide on a render start time in such cases, the application would need to constantly looking at the events (as opposed to batch-processing them at the beginning of rendering loop), which doesn't sound like a good choice mainly due to power consumption/efficiency.

It's hard, but an application surely knows more about what it's about to render than a compositor.
I don't expect many applications bother though, so it's probably the best idea to have that option (as in, not block that option from developing later on) and try to adjust it automatically in the compositor for the rest of applications.

All clients should start rendering at the same time for a perfectly synchronized frame. A perfect synchronization means:

when not resizing, the cursor position should match what the application had received when it started rendering
when resizing, the cursor position should match the edge of the window being resized, and the application should also render at the size requested by the compositor (also see smooth-resize test)
That said I guess this one would be hard to observe though, so it can be traded off for other benefits.

I don't see how either of these points depends on all clients starting rendering at the same time? I mean, if you set max_render_time for a particular client today then it will start rendering at a different time from other clients, does that cause any issues?

I don't see how either of these points depends on all clients starting rendering at the same time? I mean, if you set max_render_time for a particular client today then it will start rendering at a different time from other clients, does that cause any issues?

The idea is to have a consistent snapshot view of things like cursor positions among all clients as well as the compositor. So I want to avoid cases like app A thinks your cursor position is that of -10ms from now, app B thinks it's that of -5ms from now, and the compositor has something like -1ms from now. That said, it rarely matters since it's only the focused window that receives events.
The examples I mentioned in previous comment is primarily about syncing compositor with the client (so it's not actually client-client sync). We do want to avoid cases where the cursor is running ahead or behind the edge position of the app that is currently resized.


Support for submitting PySpark Jobs

hi team,
are you guys currently working on this? we have Optimus use case that uses pyspark
thanks

sorry missed this conversation @adityaalifn @kushsharma, we have plans to support this, Will publish the roadmap for optimus in the next week, with the expected timelines for this feature.


Locate feature may not return to player

Seems to persist on rejoins
https://plays.tv/video/5800e54469bb1b2de6/advanced-shadow-realm

Hey @AkariAkaori , did you found a fix for this issue? If yes how did you do it? If not, @anoutsider have you any ideas?
I currently have the exact same problem!
Thanks,
xilef6000

Same problem here.

I found a "workaround", for as long as the bug isn't fixed:
(but you will loose your inventory, armor, weapons, etc you had on/in your character!)
Open up the console, and paste the following command:
/c game.local_player.character=game.local_player.surface.create_entity{name="player", position={0,0}, force=game.local_player.force}
This will create a "new player" with your name at the spawn point of the map (0,0)

My "solution" was to get my friend running the server to disable the mod. Then I had a controllable character again but the sprite was flying through the air (no animation) and without all my inventory. My original character was stuck where I first used the mod (amusingly his personal roboport still worked). I just ran off into the wilderness to be killed by biters then I combat shotgunned my doppleganger. It worked but it was very frustrating losing everything I had on me.

We had the same issue in our multiplayer, and we were able to fix it by having one player ("xargs") point their cursor at the body of the dislocated player ("Demosthenex") with the following command:
/c game.players["Demosthenex"].character = game.players["xargs"].character.selected

@anoutsider Has this been fixed in the current versions yet?

It has not. I just came across this with the latest released version on the mod portal.


Corrected one of the step numbers in the "Make" section

I assume a step was added between when the “Make” section was last
updated and now, so I corrected the step numbers that must be completed.

Thanks for the PR @vanakema !


how to create multiple k8s services with endpoints pointing to different network interfaces

I was able to create multiple interfaces (2 flannel overlay networks) with multus for a k8s pod, but the kube service is having endpoints pointing to the default gateway. I would like to have seperate k8s service for the 2 network interface. ie control service ->endpoints with flannel 1 ips:port, data service ->endpoints with flannel 2 ips:ports. Any idea how to achieve this?

Will update on this.


Need consistent result in New File with qmd and quarto

Current Issues

Execute New File... Ctrl+Alt+Windows+N

Compare the template results by typing "qmd" and "quarto": You will see more results with "quarto"

Expected Behaviors
I know why they give the different results. However, it would be even nicer if the two serch (with extension and file type) could give the same results.
Additionally, it would be so great if Quarto: Create New Project could be also included in this new file list.

Yeah, the qmd is there to distinguish between creating qmds and creating notebooks (ipynbs). I wouldn't want to include notebooks in the 'qmd` results as that wouldn't be quite right.
Will definitely add the Create Project command here in the next release!

Done here: https://github.com/quarto-dev/quarto-vscode/commit/f4bafbc897fef7203a84e4e77a467e3f377c8351

Awesome! It is getting so much better (so quickly)! ;)


Megatron DS (hacky)

Enable support for Megatron DS models (https://github.com/bigscience-workshop/Megatron-DeepSpeed/issues/137). Tested against https://huggingface.co/bigscience/gpt2-350m-en/tree/megatron-deepspeed. This is somewhat hacked together, so it would be good to get some input from the DeepSpeed folks to make sure we're not doing anything silly.
It looks like there is still some small numerical difference, which I'm looking into. (maybe an fp32/fp16 issue)

The main challenges to this PR are:

Injecting arguments into a global argument object, which Megatron/DS code reads from. (We do this via unittest mocks)
Some arguments have been added in between the code used for training and the code right now. (We address this by providing a way to override arguments via a provided JSON file. This will be useful for modifying other arguments that different between training/eval as well, such as batch size.)

Use in conjunction with https://github.com/microsoft/DeepSpeed/pull/1592 and https://github.com/bigscience-workshop/Megatron-DeepSpeed/pull/208
Need to add a latest text file in the checkpoint folder just containing the string global_step37876.
Use the following JSON file (args_overrides.json) where for deepspeed_config we can use the one in the MegatronDS repo tests/ds_config.json:

{
  "deepspeed_config": "/path/to/ds_config.json",
  "log_level": "warning",
  "use_bnb_optimizer": false,
  "embed_layernorm": false,
  "position_embedding_type": "absolute",
  "glu_activation": null,
  "lr_decay_tokens": null,
  "consumed_train_tokens": null,
  "loss_on_targets_only": false,
  "curriculum_learning": false,
  "consumed_train_samples": 0,
  "consumed_valid_samples": 0,
  "fp16": false
}

Tested with the following command:
python main.py \
    --model megatron_ds \
    --model_args checkpoint_path=/path/to/gpt2-350m-en,args_overrides=/path/to/args_overrides.json \
    --tasks hellaswag

|  Task   |Version| Metric |Value |   |Stderr|
|---------|------:|--------|-----:|---|-----:|
|hellaswag|      0|acc     |0.3148|±  |0.0046|
|         |       |acc_norm|0.3688|±  |0.0048|

For comparison, I ran the same task with HF code and the HF checkpoint.
python main.py \
    --model gpt2 \
    --model_args pretrained=/path/to/gpt2-350m-en-hf \
    --device cuda:0 \
    --tasks hellaswag

|  Task   |Version| Metric |Value |   |Stderr|
|---------|------:|--------|-----:|---|-----:|
|hellaswag|      0|acc     |0.3146|±  |0.0046|
|         |       |acc_norm|0.3686|±  |0.0048|

Did some additional evaluation based on https://huggingface.co/bigscience/tr3m-1B3-pile-checkpoints/tree/global_step296023
Obtained the following results:
|---------|------:|--------|-----:|---|-----:|
|hellaswag|      0|acc     |0.3881|±  |0.0049|
|         |       |acc_norm|0.4927|±  |0.0050|
|mrpc     |      0|acc     |0.6838|±  |0.0230|
|         |       |f1      |0.8122|±  |0.0162|
|piqa     |      0|acc     |0.7046|±  |0.0106|
|         |       |acc_norm|0.7138|±  |0.0105|

Compare to running the same tasks on the same checkpoint, using the transformers version:
|  Task   |Version| Metric |Value |   |Stderr|
|---------|------:|--------|-----:|---|-----:|
|hellaswag|      0|acc     |0.3880|±  |0.0049|
|         |       |acc_norm|0.4927|±  |0.0050|
|mrpc     |      0|acc     |0.6838|±  |0.0230|
|         |       |f1      |0.8122|±  |0.0162|
|piqa     |      0|acc     |0.7040|±  |0.0107|
|         |       |acc_norm|0.7138|±  |0.0105|

What settings do you provide to run this on multiple GPUs?

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

@zphang are we having any progress to merge this and fix it ?

Closing this because the integration was done on the Meg-DS side: https://github.com/bigscience-workshop/Megatron-DeepSpeed/pull/212/files


No module named nPerlinNoise but importing NPerlinNoise works

I created a new conda environment with Python version 3.11.7 and performed the package installation via the command pip install nPerlinNoise as mentioned in the documentation.
Expected behaviour:
import nPerlinNoise as nPN is successful.
Observation:
The command throws a module not found error. However, running import NPerlinNoise works.

Same with me! That's annoying, but still usable so until it gets fixed at least I can still use it. I was starting to get concerned that I couldn't use it.

@Tsunami014 @stymbhrdwj, thanks for pointing it out. will change it when I get time.
or if possible, you guys are more than welcome to create a PR to fix this

Installing via pip install git+https://github.com/amithm3/nPerlinNoise/ has the correct package name. I extracted the .whl file and saw the folder name for the package is incorrect i.e. with the capital N. Any idea how I can fix that?

Installing via pip install git+https://github.com/amithm3/nPerlinNoise/ has the correct package name. I extracted the .whl file and saw the folder name for the package is incorrect i.e. with the capital N. Any idea how I can fix that?

seems like this commit 66c2c41 was the reason, I don't remember which exact commit was pinned to the v0.14 release.
a new release should fix it


docs: update example of using pip-audit with pipenv

pipenv introduced a new pipenv requirements command that simplifies the process for generating a requirements.txt file, which can be piped directly into pip-audit

Excellent! I'm glad we can get rid of another external tool reference; thanks a ton for the change!


flattened steps

now this is a bit funky.
According to the documentation (https://mesosphere.github.io/marathon/docs/rest-api.html#get-/v2/deployments) steps contains list elements. This results in an error in your MarathonObject.from_json() method since it assumes dictionaries.
I don't really like my solution since I don't understand the reasoning for marathon to return lists and have not yet seen an example where it contained more than one element. However it is working for my current setup.
Feel free to edit in whatever way you like.

@AFriemann can you rebase and add a failing test for the problem this is trying to solve?

This is solved with #53


zip: unable to unarchive file with LZMA compression method

What version of the package or command are you using?
d44471c49aa7
What are you trying to do?
I'm trying to unarchive a zip file with LZMA compression method.
What steps did you take?
z.Unarchive("package.zip", "test")

package.zip is a zip archive with LZMA compression.
What did you expect to happen, and what actually happened instead?
A successful decompressing is expected, but a panic is thrown:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x6a5359]

goroutine 1 [running]:
archive/zip.(*checksumReader).Close(0xc00007a050, 0x7c9d40, 0xc0000b82c0)
        /usr/local/go/src/archive/zip/reader.go:234 +0x29
github.com/mholt/archiver/v3.(*Zip).extractNext(0xc00010ff48, 0x752ba4, 0x4, 0x7c35a0, 0xc000012030)
        /home/username/Workspace/Go/pkg/mod/github.com/mholt/archiver/v3@v3.3.1-0.20200626164424-d44471c49aa7/zip.go:237 +0x15a
github.com/mholt/archiver/v3.(*Zip).Unarchive(0xc00010ff48, 0x75460d, 0xb, 0x752ba4, 0x4, 0x0, 0x0)
        /home/username/Workspace/Go/pkg/mod/github.com/mholt/archiver/v3@v3.3.1-0.20200626164424-d44471c49aa7/zip.go:215 +0x39c
main.main()
        /home/username/Workspace/Go/src/test/main.go:25 +0x7d

How do you think this should be fixed?
The bug is occurred in the LZMA decompressor.
newRangeDecoder: first byte not zero

	z.zr.RegisterDecompressor(uint16(LZMA), func(r io.Reader) io.ReadCloser {
		lr, err := lzma.NewReader(r)
		if err != nil {
			log.Println(err)
			return nil
		}
		return ioutil.NopCloser(lr)
	})

/cc @fcharlie do you have a chance to look at this?

@FeNoMeNa May I ask what compression software (7-zip?) you used to create a zip(LZMA) file.

@mholt ZIP+LZMA is disabled https://github.com/mholt/archiver/pull/226

This issue can be closed?


istioctl manifest migrate outputs info/error messages into stdout, mixed with output manifest

istioctl manifest migrate outputs info/error messages into stdout, mixed with output manifest, which makes it not able to pipe the output to kubectl.
taohe@taohe:~/istio.io/operator$ istioctl manifest migrate
translating in cluster specs

autoInjection:
  components:
    injector:
      enabled: true
      k8s:
        affinity:
          podAntiAffinity:
            preferredDuringSchedulingIgnoredDuringExecution: []
            requiredDuringSchedulingIgnoredDuringExecution: []
        nodeSelector: {}
        podAnnotations: {}
        replicaCount: 1
        resources: {}
        strategy:
...

Duplicate of https://github.com/istio/istio/issues/17743


Tailwind 3.0 RTL Search Patterns

Now that Tailwind 3.0 supports RTL I wanted to migrate my codebase to use it.
Instead of manually changing every class this plugin provides I came up with the following regex patterns and replacements:
# Paddings
([ '"])([a-z]+:)*ps-(px|[.0-9]+)\b                       $1ltr:$2pl-$3 rtl:$2pr-$3
([ '"])([a-z]+:)*pe-(px|[.0-9]+)\b                       $1ltr:$2pr-$3 rtl:$2pl-$3

# Margins
([ '"])([a-z]+:)*([-])?ms-(auto|px|[.0-9]+)\b            $1ltr:$2$3ml-$4 rtl:$2$3mr-$4
([ '"])([a-z]+:)*([-])?me-(auto|px|[.0-9]+)\b            $1ltr:$2$3mr-$4 rtl:$2$3ml-$4

# Text
([ '"])([a-z]+:)*text-start\b                            $1ltr:$2text-left rtl:$2text-right
([ '"])([a-z]+:)*text-end\b                              $1ltr:$2text-right rtl:$2text-left

# Floats
([ '"])([a-z]+:)*float-start\b                           $1ltr:$2float-left rtl:$2float-right
([ '"])([a-z]+:)*float-end\b                             $1ltr:$2float-right rtl:$2float-left

# Positional
([ '"])([a-z]+:)*([-])?start-(auto|full|px|[./0-9]+)\b   $1ltr:$2$3left-$4 rtl:$2$3right-$4
([ '"])([a-z]+:)*([-])?end-(auto|full|px|[./0-9]+)\b     $1ltr:$2$3right-$4 rtl:$2$3left-$4

# Clears
([ '"])([a-z]+:)*clear-start\b                           $1ltr:$2clear-left rtl:$2clear-right
([ '"])([a-z]+:)*clear-end\b                             $1ltr:$2clear-right rtl:$2clear-left

# Rounded
([ '"])([a-z]+:)*rounded-s(-[-./0-9a-z]+)?\b             $1ltr:$2rounded-l$3 rtl:$2rounded-r$3
([ '"])([a-z]+:)*rounded-e(-[-./0-9a-z]+)?\b             $1ltr:$2rounded-r$3 rtl:$2rounded-l$3
([ '"])([a-z]+:)*rounded-ts(-[-./0-9a-z]+)?\b            $1ltr:$2rounded-tl$3 rtl:$2rounded-tr$3
([ '"])([a-z]+:)*rounded-te(-[-./0-9a-z]+)?\b            $1ltr:$2rounded-tr$3 rtl:$2rounded-tl$3
([ '"])([a-z]+:)*rounded-bs(-[-./0-9a-z]+)?\b            $1ltr:$2rounded-bl$3 rtl:$2rounded-br$3
([ '"])([a-z]+:)*rounded-be(-[-./0-9a-z]+)?\b            $1ltr:$2rounded-br$3 rtl:$2rounded-bl$3

# Borders
([ '"])([a-z]+:)*border-s(-[-./0-9a-z]+)?\b              $1ltr:$2border-l$3 rtl:$2border-r$3
([ '"])([a-z]+:)*border-e(-[-./0-9a-z]+)?\b              $1ltr:$2border-r$3 rtl:$2border-l$3

I didn't cover space-s-[X] and divide-s-[X] classes as there doesn't seem to be any left / right classes for those. 🤷♂
I also used the following regex to look for usages of the classes provided by this plugin (probably not super exhaustive):
([ '"])([a-z]+:)*([-]?(start|end|m[se])[-]|\b((clear|float|text)[-](start|end)|(divide|space)[-]s|border-[se]|p[se][-]|rounded-[tb]?[se])\b)

Perhaps this will be useful for others looking to do the same too.

Hi @alixaxel, looks good.
thank you, i will look into that and see how can we support v3.0.

Since this plugin supports v3 as is and we want to keep support for v2, I don't see how I can use this.
and even though this isn't an extremely complex regex it seems really a headache to maintain.
thank you.


How do you make this faster?

We are generating some larger images ~800x800 and bogging down. In general, what would speed up the images?

The slowest part is downloading the tiles. So if you could use a local tiles server, this would speed up the process.

Where do you get the tiles from?
Do you use 512px tiles?
Is caching the tiles an option?

Hi @jbeuckm
Would be great to hear about your usecase and your experience with performance.

Hello, we are facing the same problem.
For 300x300 images is very fast, but for increasing size images 700x700 is worse, and for example 1080x1080 is much worse.
For example, for a 1080x1080 render (of 256x256 tiles) it downloads 25 tiles (we download all images in concurrency, 0.256seconds to get them all). The rendering part of these 25 tiles it lasts 5 full seconds!
Any ideas? I'm debugging this module to find the issue.
We are using Node 10.23.1

Hello, we are facing the same problem.
For 300x300 images is very fast, but for increasing size images 700x700 is worse, and for example 1080x1080 is much worse.
For example, for a 1080x1080 render (of 256x256 tiles) it downloads 25 tiles (we download all images in concurrency, 0.256seconds to get them all). The rendering part of these 25 tiles it lasts 5 full seconds!
Any ideas? I'm debugging this module to find the issue.
We are using Node 10.23.1

Could you please provide an example.

Could you please provide an example.

Hello @StephanGeorg , thank you for answering so fast.
I've been debugging, I've not finished but it does not seem a problem with the donwloading of times if it's all concurrent. It seems the problem is located at the moment the Sharp lib "composes" the image.
Here I attach a sample code that shows the problem. I've changed the tileUrl from one of ESRI that requires license to an open one to let you test it. I'm facing the same problem of time with both tileUrl sources.
//Init map
const options = {
    width: 1080,
    height: 1080,
    subdomains: ['a', 'b', 'c'],
    tileUrl: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
    tileRequestLimit: 0,
    tileSize: 256
};
const map = new staticmapsLoader(options);

//Define polyline
const encodedPoly = "q~hkFp_|~UtEwOpAaJZkHO{E\\eBa@oAJaBnF{J_CuEx@mAh@wCu@gDRc@b@ADgBcBsDQyAd@eBkAcAUgBiGaKiAaDiG{Iu@AWsAiCi@uBcBcEVoCqDaAV_@rAe@Aa@YA_AoF_DkF_Hk@_@wB@}@]kDkEk@wA^eDpGcD?k@eA}AsC_@s@i@eBiDcBg@w@mAiBc@gAkCoDeAgAwAo@cGcCwGEyDhAmDCiFw@oC_DqCk@mA]wFmBkBDrGn@dD|B`FXbDw@fEsA`@gBMiIqDwDyBiEeHi@f@Q|CLpAt@hAq@e@Q^|@pGPMtBr@jB~Bv@|BJ~CnA~F`AhCdBoDt@c@NT`EpJpCzDIpFlBj@vBpBjAhDSR\\pB`BxB`C?`FxAb@|A|ArBjDbE~C`CjAlDA|Aa@b@eHg@aCn@lC~ChArDr@~FMtUWpC_CnFTfCUz@sE~@mAi@aE`AmAWoCVPlAfCvCVxCk@zAiDfCMz@~BJzIvBhB~AHhAjAvCzC`B|AjChH~G`Bv@dAnCp@f@n@W~CZe@jBjCbBpBxDfDhBnCdDdBbHhAg@rAmEt@U|@iBvAy@lCU"
const decodedPolyline = polylineUtils.decode(encodedPoly).map(point => {
    return [point[1], point[0]];
});
const polyline = {
    coords: decodedPolyline,
    color: '#FFA300',
    width: 4
};
map.addLine(polyline);

var renderhrstart = process.hrtime();

//Render the result
await map.render()

var renderhrend = process.hrtime(renderhrstart);
console.info("STATICMAP -> RENDER: Execution time (hr): %ds %dms", renderhrend[0], renderhrend[1] / 1000000);

return await map.image.buffer('image/jpeg');

Please ping me if you have any question. We can chat too.

Hello @StephanGeorg , thank you for answering so fast.
I've been debugging, I've not finished but it does not seem a problem with the donwloading of times if it's all concurrent. It seems the problem is located at the moment the Sharp lib "composes" the image.
Here I attach a sample code that shows the problem. I've changed the tileUrl from one of ESRI that requires license to an open one to let you test it. I'm facing the same problem of time with both tileUrl sources.
//Init map
const options = {
    width: 1080,
    height: 1080,
    subdomains: ['a', 'b', 'c'],
    tileUrl: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
    tileRequestLimit: 0,
    tileSize: 256
};
const map = new staticmapsLoader(options);

//Define polyline
const encodedPoly = "q~hkFp_|~UtEwOpAaJZkHO{E\\eBa@oAJaBnF{J_CuEx@mAh@wCu@gDRc@b@ADgBcBsDQyAd@eBkAcAUgBiGaKiAaDiG{Iu@AWsAiCi@uBcBcEVoCqDaAV_@rAe@Aa@YA_AoF_DkF_Hk@_@wB@}@]kDkEk@wA^eDpGcD?k@eA}AsC_@s@i@eBiDcBg@w@mAiBc@gAkCoDeAgAwAo@cGcCwGEyDhAmDCiFw@oC_DqCk@mA]wFmBkBDrGn@dD|B`FXbDw@fEsA`@gBMiIqDwDyBiEeHi@f@Q|CLpAt@hAq@e@Q^|@pGPMtBr@jB~Bv@|BJ~CnA~F`AhCdBoDt@c@NT`EpJpCzDIpFlBj@vBpBjAhDSR\\pB`BxB`C?`FxAb@|A|ArBjDbE~C`CjAlDA|Aa@b@eHg@aCn@lC~ChArDr@~FMtUWpC_CnFTfCUz@sE~@mAi@aE`AmAWoCVPlAfCvCVxCk@zAiDfCMz@~BJzIvBhB~AHhAjAvCzC`B|AjChH~G`Bv@dAnCp@f@n@W~CZe@jBjCbBpBxDfDhBnCdDdBbHhAg@rAmEt@U|@iBvAy@lCU"
const decodedPolyline = polylineUtils.decode(encodedPoly).map(point => {
    return [point[1], point[0]];
});
const polyline = {
    coords: decodedPolyline,
    color: '#FFA300',
    width: 4
};
map.addLine(polyline);

var renderhrstart = process.hrtime();

//Render the result
await map.render()

var renderhrend = process.hrtime(renderhrstart);
console.info("STATICMAP -> RENDER: Execution time (hr): %ds %dms", renderhrend[0], renderhrend[1] / 1000000);

return await map.image.buffer('image/jpeg');

Please ping me if you have any question. We can chat too.

Hello, I've opened a PR solving this issue. We will deploy this locally meanwhile we wait for this being merged. All tests passed. Ping me for questions.

Hello, I've opened a PR solving this issue. We will deploy this locally meanwhile we wait for this being merged. All tests passed. Ping me for questions.

@jbeuckm could you please test this also and confirm if this fixes your issues? Thanks.

@jbeuckm could you please test this also and confirm if this fixes your issues? Thanks.

@jbeuckm could you please test this also and confirm if this fixes your issues? Thanks.

Sorry for the delay - looks good.


Varied fixes and additions

Add access_token to the user metadata
Add LinkedIn OpenID provider (supported by socialite)
Add Providers controller and model
Add events to extend the plugin
Extra scopes added to the provider config are now passed to the provider.
Handle callback exception by flashing the error and redirecting back to signin page

@LukeTowers what did you have in mind exactly with the prevent_native_auth config?

@LukeTowers in Handle::callback() you wrote this @TODO comment:
        // Check if the user is allowed to keep a persistent session
        if (is_null($remember = Config::get('cms.backendForceRemember', false))) {
            $remember = false;
            // @TODO: Get this from the request
            // $remember = (bool) post('remember');
        }

But it won't work since callback is a GET request coming from the provider (post values from the signin form are not available here, unless they get saved in some other way?)

@mjauvin

@LukeTowers what did you have in mind exactly with the prevent_native_auth config?

See #2. Disables the native winter login support and only allows logins through SSO.

But it won't work since callback is a GET request coming from the provider (post values from the signin form are not available here, unless they get saved in some other way?)

@mjauvin In order to support that we'd probably need to store a value in the session before redirecting them away and retrieve it when they come back.

So we'd need an ajax handler for the remember checkbox that sets this in the session ?

For the event I named winter.sso.register, I guess we would add {before/after}Register methods to the AuthManager and call this from the winter.sso plugin ? And the external events (*.user.beforeRegister / *.user.register) would be triggered from those methods ?
Should I submit a PR to add these methods to the backend AuthManager and to another for the Winter.User to add to its AuthManager ?

@LukeTowers see latest commit for the new event methods. Is that what you envisioned or similar?
Maybe the {after/before}Register event methods should be called within the AuthManager's register() method itself ?

replaced by other incremental PRs.