[BUG] Pydicom 3.0.0 is making logs weird

Is there an existing issue for this?

[X] I have searched the existing issues

Expected Behavior
Normal logs
Current Behavior
Two logging-related problems:

Giant stack-trace complaining about missing modules though nothing crashes (see https://github.com/pydicom/pydicom/issues/2128)
Log messages are duplicated (first line is normal log, second line is extra)INFO     ========== BEGIN INIT WORKFLOW ==========                                                  base.py:198
2024-09-12 15:37:35,203 [    INFO] ========== BEGIN INIT WORKFLOW ==========

Error message
No response
Environment

OS:
Python version:

Version

version:

How to reproduce
No response
Anything else?
No response

Log messages are duplicated (first line is normal log, second line is extra)
    INFO     ========== BEGIN INIT WORKFLOW ==========                                                  base.py:198     2024-09-12 15:37:35,203 [    INFO] ========== BEGIN INIT WORKFLOW ==========

^ this one does not seem to be due to the pydicom version change, but rather because some other package is added a handler to the root logger which is getting propagated to the Nipoppy logger... Can be fixed with logger.propagate = False in nipoppy.logger.get_logger


Issue with Texture rect stretch mode Tile

Godot version
v4.1.1.stable.mono.official
System information
Godot v4.1.1.stable.mono - Windows 10.0.19045 - Vulkan (Compatibility) - GeForce GT 520 () - Intel(R) Core(TM) i3-2120 CPU @ 3.30GHz (4 Threads)
Issue description
When I set texture rect stretch mode to Tile and open fullscreen while scene is running texture rect changes to only one Tile with lines coming from the right side and down these line change colour depending on image colour
https://github.com/godotengine/godot/assets/146011432/22573f03-2c3d-4d05-ab25-c44a021cff19
Steps to reproduce
Put a Texture Rect
add an image to Texture Rect
Change Texture Rect Stretch mode to Tile
Run Scene
Minimal reproduction project
N/A

This bug is only when using the Compatibility renderer correct? Was able to reproduce on both regular and mono versions when using the compatibility renderer. Bug did not occur on Forward+ or Mobile renderers.

Yes I was using compatibility because of my bad hardware but I didn't test mobile

Likely a duplicate of #79315 which is fixed since v4.2.dev2. The fix was also backported to v4.1.2 (included since v4.1.2.rc1). Please test these or newer versions.

THANK YOU SO MUCH


serde's -rc4 dependency breaks old cargo

See https://users.rust-lang.org/t/crates-io-compatibility-with-old-cargo/9127
It appears that since we have a dependency on serde, even optional, then Cargo < 0.9 (w/ Rust 1.8) can't parse serde-0.9.0's dev-dependency on serde-derive 0.9.0-rc4, specifically the "-rc4" part.  It doesn't matter that this version is out of our range, and from my tests even yanking won't solve anything.
So what should num do?
I think we're stuck, because anyone referencing num with old Cargo is seemingly going to have this transitive problem, even if we were to now remove our serde feature entirely.  I made a test crate to try this out, and even though the latest version has no dependencies at all, and all others are yanked, it still can't be used by old Cargo.
If somebody has a working Cargo.lock already, they should be fine, hopefully.  But for such a person it doesn't matter what we do now.  It may be that such old users are extinct by now anyway.
So... shall we embrace the break and raise our minimum Rust to 1.8?  That's the least that's not broken right now, through no fault of our own.  There are also some nice things we'll gain access to, like the std::ops::*Assign traits that were stabilized in 1.8.

One casualty will be Ubuntu 16.04, which has rustc 1.7 and cargo 0.8 in universe.

Interesting issue and this seems like the only reasonable move.


Content-Length header is wrong

I'm getting an error from Rack::Lint:
ERROR Rack::Lint::LintError: Content-Length header was 599, but should be 261

My simple rackup file contains:
require 'rubygems'
require 'bundler/setup'
require 'rack-livereload'

use Rack::LiveReload
run Rack::Directory.new('.')

What I'm doing wrong? Do I misunderstand the middleware concept?

Do you get the same error with a basic Rack app, like say:
run lambda { |env| [ 200, {}, [ 'hi' ] ] }

Your sample misses a content type. The following works:
use Rack::LiveReload
run lambda { |env| [ 200, { 'Content-Type' => 'text/html' }, [ 'hi' ] ] }

I (think that I) need Rack::Directory for reloading my static HTML files for a live HTML course. Other suggestions?

Same problem here, I get the following message in the web server log:
!! Unexpected error while processing request: Content-Length header was 2175, but should be 1837

I was making a bad assumption about the returns from Rack apps, and that is now fixed. Take it for a spin.

Jep, works perfectly!


Installing new Gstream version 1.1.14

I am trying to install a new version of gstream on nvidia jetson tx2 (https://gstreamer.freedesktop.org/releases/1.14/ )
but it is a little bit confusion because it needs also libmirprotobuf,
because i also upgraded to protobuf 3.5.1 which is newer than the protobuf version which is used in libmirprotobuf so compiling gstreamer failes. Its really annyoing how to get a new version of libmirprotobuf because this one has diverse links to other libraries.
Best regards.

Hi @ZeroCool11000 , we are still internally testing the 1.14 version of GStreamer before supporting it in JetPack-L4T.


fix: remove service name/type from discord notifier

⚠⚠⚠ Since we do not accept all types of pull requests and do not want to waste your time. Please be sure that you have read pull request rules:
https://github.com/louislam/uptime-kuma/blob/master/CONTRIBUTING.md#can-i-create-a-pull-request-for-uptime-kuma
Tick the checkbox if you understand [x]:

[x] I have read and understand the pull request rules.

Description
Fixes #3327, closes #4495.
To do this, I have fully removed the Service Name/Service Type field from the Discord notifier embed. As discussed in the #4495 PR, no other monitor has a distinction between Service Type and Service URL. In alignment with the same comment, I've also moved the fields to their own variable so we are not maintaining two versions of the fields array.
I'd also like to use this PR to discuss reformatting the Discord embed entirely? In my opinion, repeating the service name so close to each other makes the embed look bad. Additionally, we repeat the time of the outage in an embed field and the embed footer.
Type of change

Other

Checklist

[x] My code follows the style guidelines of this project
[x] I ran ESLint and other linters for modified files
[x] I have performed a self-review of my own code and tested it
[x] I have commented my code, particularly in hard-to-understand areas (including JSDoc for methods)
[x] My changes generates no new warnings
[ ] My code needed automated testing. I have added them (this is optional task)

Screenshots
Current (and the issue I aim to fix):

Proposed:

I made a mess trying to clean up that conflict. Sort of expected it to apply easier... Sorry :p
I think it makes sense to exclude it if extractAddress returns "" or monitorJSON["hostname"] (ping and steam will both do this). Additionally, I'm not sure if using the msg is a great idea bc it repeats a bunch of information.

myredis is redis
Discord is HTTP
localhost is a ping

:)

I also added a couple translation keys for this:

It's a little cursed, the wayToGetDiscordURL key needs a fullstop on the end for it to flow better but I wasn't sure if I should change it because it's translated already.


Odinson parser

This PR adds the odinson parser as well as a odinson format file in the demo project.

Thanks, @softdesign-ro!  Can you please ensure that the README is up-to-date as well?


Add --cookies option for yt-dlp

Sometimes YT rejects to download a file without login. This can be fixed by using --cookies  in yt-dlp execution.
May this option be added to yt2doc command line parameters?

Probably going to ball pack this with https://github.com/shun-liang/yt2doc/issues/65 and add cli options that allows one to add extra options for yt-dlp.


Fix error in Amathutils.cpp

Status
PRODUCTION
Description
There was an bug when calculating the distance between points leading to errors when calculating the distance between 3D points
Related PRs
#1651

@sgermanserrano Thanks!


Select distinct. Done.


Fix test_rule.py error

elasticsearch-py
Test Run
Send real alerts

7.0.0
〇
〇

7.10.0
✖
✖

7.10.0
〇 (fix test_rules.py )
✖

7.10.0
〇 (fix test_rules.py )
〇(Fix initializing self.thread_data.alerts_sent for running elastalert-test-rule #2991)

Confirmed that the PR improves the usage of the ES API based on the ES 7.10 documentation located here: https://elasticsearch-py.readthedocs.io/en/v7.10.1/api.html#elasticsearch

Confirmed that the PR improves the usage of the ES API based on the ES 7.10 documentation located here: https://elasticsearch-py.readthedocs.io/en/v7.10.1/api.html#elasticsearch

I've seen the following warning when running ElastAlertServer on Elasticsearch-py 7.10.0: It seems that the new version of Elasticsearch-py now warns you of what will be deprecated in the next major version.
16:13:49.571Z ERROR elastalert-server:
    ProcessController:  /home/node/.local/lib/python3.8/site-packages/elasticsearch/connection/base.py:190: ElasticsearchDeprecationWarning: Camel case format name dateOptionalTime is deprecated and will be removed in a future version. Use snake case name date_optional_time instead.
      warnings.warn(message, category=ElasticsearchDeprecationWarning)
    /home/node/.local/lib/python3.8/site-packages/elasticsearch/connection/base.py:190: ElasticsearchDeprecationWarning: [types removal] Using include_type_name in put mapping requests is deprecated. The parameter will be removed in the next major version.
      warnings.warn(message, category=ElasticsearchDeprecationWarning)

I've seen the following warning when running ElastAlertServer on Elasticsearch-py 7.10.0: It seems that the new version of Elasticsearch-py now warns you of what will be deprecated in the next major version.
16:13:49.571Z ERROR elastalert-server:
    ProcessController:  /home/node/.local/lib/python3.8/site-packages/elasticsearch/connection/base.py:190: ElasticsearchDeprecationWarning: Camel case format name dateOptionalTime is deprecated and will be removed in a future version. Use snake case name date_optional_time instead.
      warnings.warn(message, category=ElasticsearchDeprecationWarning)
    /home/node/.local/lib/python3.8/site-packages/elasticsearch/connection/base.py:190: ElasticsearchDeprecationWarning: [types removal] Using include_type_name in put mapping requests is deprecated. The parameter will be removed in the next major version.
      warnings.warn(message, category=ElasticsearchDeprecationWarning)


FR: Import multiple snapshots files

Hi,
Currently, we can only import one Snapshots fiel at a time.
It seems it would be possible to import multiple snapshots file by modifying this line
https://github.com/reaper-oss/sws/blob/master/Snapshots/Snapshots.cpp#L170
with
char* cFile = BrowseForFiles(__LOCALIZE("Import snapshot...","sws_DLG_101"), str, NULL, true, "SWSSnap files\0*.SWSSnap\0");
Maybe a loop will be needed after that, but I'm not familiar with C++ and it seems the requirements for building SWS have evolved.
Can someone have a look ? Thanks :)

Looping over a list of files would mean opening the "Snapshot Paste" dialog once for every selected file (with default settings). By default it tries to apply the snapshot to existing tracks without adding it to the list so only the last selected snapshot file would be effective. Would that still be useful?
(I don't use snapshots much so I might be missing something about the use case)

@cfillion The goal is just to be able to import multiple SWSSnap files in a project from a single Import Files window, but no need for any apply dialog or to apply any Snapshots parameter after that. Just import snapshots in project (Snapshots are saved in the project - that's why more friendly way to transfer them from projects to projects are required). Having a dialog box popup for every snapshots will be a bit unusable :P
The requests come from Vijay BTW, I don't use Snapshots either, but this requests cannot be solved via ReaScript (we cannot push and update EXTENSION chunk from it), and it seems it is more adapted from SWS extension itself.


feat(axe core 3.5.1): update axe-core

Description of changes
Update axe-core from 3.3.2 to 3.5.1. Marked as Do Not Merge because our other packages (accessibility-insights-service and accessibility-insights-scan) have not yet been updated, so the report has some missing wcag links and doesn't exclude new best practices rules.
Pull request checklist

[ ] Addresses an existing issue: Fixes #0000
[ ] Added relevant unit test for your changes. (yarn test)
[ ] Verified code coverage for the changes made. Check coverage report at: <rootDir>/test-results/unit/coverage
[ ] Ran precheckin (yarn precheckin)

Codecov Report

Merging #44 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #44   +/-   ##
=======================================
  Coverage   95.78%   95.78%
=======================================
  Files          20       20
  Lines         403      403
  Branches       20       20
=======================================
  Hits          386      386
  Misses         17       17

Continue to review full report at Codecov.

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


Polymer needs an html lint

Not sure whether yaniswang/HTMLHint will address the quirks in polymer's HTML syntax. Here's the issue open against it: https://github.com/yaniswang/HTMLHint/issues/44
PS: Not sure whether the issue belongs here or should be raised against polymer starter kit.

I think there's already a lint tool being created, although you can disable some rules on your project folder's .htmlhintrc file.

@peduxe is this lint tool being created on github? I tried searching, couldn't find any. Can you please share any relevant links?

@gazal-k https://github.com/PolymerLabs try there, lots of experiments

We have a linter tool polylint that should help with this issue.


Documentation: papers need to be marked archival

I just got stuck compiling proceedings with manually written YAML files. Apparently it is required to have a key archival that is set to true in the papers.yml file. Otherwise aclpub yields a LaTeX error asking whether there is perhaps a missing item in my list (i.e. the list of papers) because the \begin{itemize}...\end{itemise} environment is empty.

This is required to prevent people from adding non-archival papers to the Anthology, which requires a headache. What would you recommend?

You could either add a note to README.md (under the header papers.yml) saying something like:

Also note that all archival papers require a field called archival with the value set to true. Papers lacking this information will not appear in the proceedings.

Or you could edit the example to read:
- id: Unique ID for the paper.
  authors:  # List of authors, structure detailed below.
    - first_name: First name e.g. Jane
      middle_name: (opt) Middle name e.g. Emily
      last_name: Last name e.g. Doe
      preferred_name: (opt) Prefered name, if not the same as first_name.
      institution: Name of the author's institution.
      email: Author's email.
      openreview: (opt) Author's OpenReview username.
      google_scholar: (opt) Author's Google Scholar ID.
      orcid: (opt) Author's ORCID ID.
      dblp: (opt) Author's DBLP ID.
      semantic_scholar: (opt) Author's Semantic Scholar ID.
  attributes:
    # Key-value pairs used to manage other aspects of
    # the publication process. Below are examples of possible
    # attributes. These attributes are not shown in the proceedings ...
    # but these are really useful in other steps, e.g., in the
    # definition of the program.
    paper_type: long | short
    presentation_type: oral | poster
    submitted_area: Semantics | Machine Learning | ...
  file: File name relative to the papers/ directory, e.g. 1.pdf
  attachments:
    # A list of additional files associated with the paper.
    # The type, along with one of file must be specified.
    - type: dataset | note | poster | presentation | software | attachment
      file: Local file path, e.g. attachments/5.zip
  title: Title of the paper.
  abstract: Abstract of the paper, usually a LaTeX fragment.
  # Papers without this information will be left out of the proceedings:
  archival: true

Doesn't really matter what is added, as long as it's clear what to do. I only found the solution after producing blank proceedings and then reading the Python code, where I found out what to add to make the papers appear.

@ryancotterell should the default be true with an explicit archival: false be required to remove papers? Which case is more common?

Hi, @zhzhang: I strongly suggest setting the default to true.
nonarchival papers are pretty rare...

Makes sense, @crux82 @ryancotterell please review the PR above to resolve.


Add support for proxy settings

In the function call_proc, the second argument to uv.spawn gets an env parameter.
If the user has http_proxy and/or https_proxy set the command called in uv.spawn might fail if that setting is not passed down.
So, I think there could be two easy fixes for this:

Automatically set the http(s)_proxy as env parameter when the user has those bash variables set.
Allow users to specify a http(s)_proxy.

I had issues cloning plugins because this could not be set. However, setting the proxy settings in env solved it.

Related to #77

Paq now makes a copy of the current environment so that doesn't happen. should be ok now.


Fix KEVM regression

https://github.com/runtimeverification/haskell-backend/pull/3398 has broken some KEVM tests:
make: *** [Makefile:544: tests/specs/mcd/vat-move-diff-rough-spec.k.prove] Error 1
make: *** [Makefile:544: tests/specs/mcd/vow-flog-fail-rough-spec.k.prove] Error 1
make: *** [Makefile:544: tests/specs/mcd/vow-fess-fail-rough-spec.k.prove] Error 1

We need to investigate. If there is a quick fix we can push that but otherwise we should first revert the problematic PR.

The tests/specs/mcd/vat-move-diff-rough-spec.k.prove spec is failing with the following error:
anapantilie@Anas-MacBook-Pro: ~/RV/evm-semantics/mcd-var-move master!
$ ./kore-exec.sh                                                                                [13:41:01]
kore-exec: [198331810] Error (ErrorBottomTotalFunction):
    Evaluating total function
        /* Fn Spa */
        Lbl'Unds'Set'Unds'{}(
            /* Fl Fn D Sfa */
            /* InternalSet: */ /* element: */ LblSetItem{}(
                /* Fl Fn D Sfa */
                /* Inj: */ inj{SortInt{}, SortKItem{}}(
                    /* Fl Fn D Sfa */ VarACCT'Unds'ID:SortInt{}
                )
            ),
            /* Fn Sfa */
            /* InternalSet: */ Lbl'Unds'Set'Unds'{}(
                /* element: */ LblSetItem{}(
                    /* Fl Fn D Sfa */
                    /* Inj: */ inj{SortInt{}, SortKItem{}}(
                        /* Fl Fn D Sfa */ VarACCT'Unds'ID:SortInt{}
                    )
                ),
                /* opaque child: */ /* Fl Fn D Sfa */ VarAC3'Unds':SortSet{}
            )
        )
    has resulted in \bottom.
Context:
    (InfoAttemptUnification) while attempting unification


[1.18.2] Crash using the new version of Pretty Pipes

Description
After updating the mod, entering a world with fluids already placed in them crashes the game.
Crash Report
https://pastebin.com/y6MYzmRa
Mod versions

PrettyPipesFluids-1.18.2-1.0.0
PrettyPipes-1.12.5

P.S. The fluid pipes don't seem to work correctly after the update. You can't insert upgrades into them.

can confirm, same issue, can't insert the upgrades so the mod is basically unusable currently.

I'll be honest, the newest version of pretty pipes changed quite a few things. I won't be updating the current version and instead at some point will completely rework the code but I just don't have the time right now

Btw I just uploaded a new version for 1.18.2 and I think it should work now. Please let me know if there are still issue with v1.0.1

Great news I'll test today
On Fri, Oct 21, 2022, 2:15 PM Quarris @.***> wrote:

Btw I just uploaded a new version for 1.18.2 and I think it should work
now. Please let me know if there are still issue with v1.0.1
—
Reply to this email directly, view it on GitHub
https://github.com/Quarris/PrettyFluidPipes/issues/9#issuecomment-1287442666,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACGGKDLNZ2CG5J4XWWKM5J3WEMBVZANCNFSM53JFVVBA
.
You are receiving this because you commented.Message ID:
@.***>


Add datasource and namespace parameters for loki overview dashboard

The "Loki Overview" dashboard is a simplified version of the "Loki Operational" dashboard to monitor Loki clusters that use memberlist and boltdb-shipper for operations. The PR adds the missing parameters datasource and namepace to enable usage on multiple environments (i.e. staging, testing, production)

Does observability/observatorium-logs/loki-overview.libsonnet come from some sort of automation? 🤔
Bit tough to review all the changes, so I would like to know how it's being maintained.

Does observability/observatorium-logs/loki-overview.libsonnet come from some sort of automation? thinking
Bit tough to review all the changes, so I would like to know how it's being maintained.

Currently it is still developed by hand on Grafana and re-exported into json.

If that helps, this is how the board looks right now:

And this is after this change is applied:


[BUG] Data Annotator tool does not handle tabs

Explanation and example file following...

Fixed! Html input fields auto sanatize escape sequences such as \t and \n to \\t and \\n. I check for this now and revert (y)


keep publishr dep

@ryan-roemer I missed this in your recent PR, and just noticed it when I tried to publish a victory package. Did you intend to remove publishr?

Ugh. No. Thanks!!!

Should be -dev though, not here...


Feature calendarheatmap

Reduce the usage of plain  elements, instead look for Ui elements from chakra-ui .
Try to use chakra-ui provided props for styling instead of applying styles like this style={{ position: "absolute", top: "45%", left: "10px" }}


Add kubernetes persistent volumes metrics export

What does this PR do?
It adds the export of persistent volume and claims related metrics.
Motivation
The need to monitor those metrics.

Is this still WIP?

Yup, I did not take so much to work on it. I'll finish it now!

Looks good, let's add tests and merge


Format for setEndDate and setStartDate?

Documentation doesn't mention which format is expected for setEndDate or setStartDate.
It refeers to endDate option, which doesn't either explain the required format.
I do not want to base endDate and newDate on the current date, but on a specific date. For example:
Fri Aug 19 2016 00:00:00 GMT+0100 (GMT Daylight Time)

Conversion is implemented here: https://github.com/eternicode/bootstrap-datepicker/blob/6788e92fc9d277a93c7be5e11236c0ec583af679/js/bootstrap-datepicker.js#L246-L268 It looks like both Date object in local time (see implementation of _zero_time method which is used for conversion) or a string parsed with format option is possible. Should be documented.


Event Grid subscription on blob storage with event hub

[ ] bug report
[x ] request for new sample
[ ] documentation issue or request
[ ] regression (a behavior that used to work and stopped in a new release)

Hi,
Is there a sample anywhere that shows how to create an event grid subscription on a blob storage account? I would like to then make the end point topic an event hub.
There are samples for event hubs but its complicated to wire up the event subscription on a blob storage account and i just keep getting 400 bad request errors.
Thanks
Doug

Just to add some further information this is the code i'm using below.
The error i'm getting is an invalid arm id.
I'm confused as the storage account exists (first arm id) and i've also manually created the event hub namespace and hub (2nd arm id is the namespace id)... so both exist...
func getEventSubscriptionsClient() eventgrid.EventSubscriptionsClient {
	eventgridClient := eventgrid.NewEventSubscriptionsClient(subscriptionID)
	eventgridClient.Authorizer, _ = getAuthorizer()
	eventgridClient.AddToUserAgent(userAgent)
	return eventgridClient
}

func createEventSubscription(ctx context.Context) (eventgrid.EventSubscription, error) {
	client := getEventSubscriptionsClient()
	future, err := client.CreateOrUpdate(ctx, "/subscriptions/redacted/resourceGroups/rubbish1/providers/Microsoft.Storage/storageAccounts/abcdefnort", "mysubscription",
		eventgrid.EventSubscription{
			EventSubscriptionProperties: &eventgrid.EventSubscriptionProperties{
				Destination: &eventgrid.EventHubEventSubscriptionDestination{
					EndpointType: eventgrid.EndpointTypeEventHub,
					EventHubEventSubscriptionDestinationProperties: &eventgrid.EventHubEventSubscriptionDestinationProperties{
						ResourceID: to.StringPtr("/subscriptions/redacted/resourceGroups/rubbish1/providers/Microsoft.EventHub/namespaces/douglas"),
					},
				},
			},
		},
	)
	if err != nil {
		//return s, fmt.Errorf(fmt.Sprintf(errorPrefix, err))
	}
	err = future.WaitForCompletionRef(ctx, client.Client)
	if err != nil {
		//return s, fmt.Errorf(fmt.Sprintf(errorPrefix, fmt.Sprintf("cannot get the storage account create future response: %v", err)))
	}
	return future.Result(client)
}

This is solved. I was using the resource id of the event hub namespace rather than the resource id of the hub itself.
Feel free to close the issue . I still think a sample would be beneficial so i'll leave the issue open for now.
Thanks


404 on browsing to *.git within app

Browsing to any of the repository URLs ('General URL' from the repository details page) with the .git extension gives a 404. Committing and pushing to that URL from git commands is fine, it's just browsing to the URL within the app that doesn't work.
I've tried adding .git as a file extension within IIS but this did't do anything. The 404 is handled by bonobo rather than IIS so i'm hoping there's a simple setup missing.
There is nothing in the logs apart from the SQLIte native library loading error which from what I have read is not related.
Any ideas?

You can't browse to the Git URLs, they're just intended to be for use with the Git http protocol.
I don't think this is considered to be a bug (it doesn't stop you doing anything), but it's probably an opportunity for improvement.
See #449 for some past discussion of this.


Empty room causes unhandled exception

Shade Info:

Version: 1.1.0

How to Reproduce the Issue:
First create a room in hue without a light.
fun main() {
val shade = Shade()
runBlocking {
                shade.setBaseUrl("somebaseurl")
                shade.auth.awaitToken()
                shade.groups.getGroups().forEach { (id, light) ->
                    println("Found Group $id named ${light.name}")
                }
       }
}

Expected behavior:
should print all groups ids and their names
Actual behavior:
throws an unhandled exception:
SEVERE: Unhandled exception
com.squareup.moshi.JsonDataException: Required property 'brightness' missing at $.4.action
at inkapplications.shade.lights.LightStateJsonAdapter.fromJson(LightStateJsonAdapter.kt:92)
at inkapplications.shade.lights.LightStateJsonAdapter.fromJson(LightStateJsonAdapter.kt:17)
at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:137)
at inkapplications.shade.groups.Group_RoomJsonAdapter.fromJson(Group_RoomJsonAdapter.kt:57)
at inkapplications.shade.groups.Group_RoomJsonAdapter.fromJson(Group_RoomJsonAdapter.kt:16)
at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:137)
at com.squareup.moshi.adapters.PolymorphicJsonAdapterFactory$PolymorphicJsonAdapter.fromJson(PolymorphicJsonAdapterFactory.java:197)
at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:137)
at com.squareup.moshi.MapJsonAdapter.fromJson(MapJsonAdapter.java:69)
at com.squareup.moshi.MapJsonAdapter.fromJson(MapJsonAdapter.java:30)
at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:137)
at retrofit2.converter.moshi.MoshiResponseBodyConverter.convert(MoshiResponseBodyConverter.java:45)
at retrofit2.converter.moshi.MoshiResponseBodyConverter.convert(MoshiResponseBodyConverter.java:27)
at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:225)
at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:121)
at okhttp3.RealCall$AsyncCall.run(RealCall.kt:138)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)
I suspect that this happens because there are rooms without lights in my hue setup.
This is the response from hue /api/groups where both Bedroom and Bathroom
has no action.brightness because there are no lights in them. The issue was resolved by removing the rooms without lights.

Thanks for the detailed report! 🙌
Was able to reproduce and this should be fixed in version 1.1.1 🎉


Windows installer won't start

I have a problem installing Atom 0.190.0 using AtomSetup.exe - it runs for a fraction of a second and exits immediately without any error message.
I managed to determine that Atom is using something called Squirrel to build the installer (is it mentioned somewhere?), so here is its SquirrelSetup.log:
Program: Starting Squirrel Updater: --install .
Program: Starting install, writing to C:\Users\szx\AppData\Local\SquirrelTemp
CheckForUpdateImpl: Failed to load local releases, starting from scratch: System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\szx\AppData\Local\atom\packages\RELEASES'.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at Squirrel.Utility.LoadLocalReleases(String localReleaseFile)
   at Squirrel.UpdateManager.CheckForUpdateImpl.<CheckForUpdate>d__28.MoveNext()
CheckForUpdateImpl: Reading RELEASES file from C:\Users\szx\AppData\Local\SquirrelTemp
CheckForUpdateImpl: First run or local directory is corrupt, starting from scratch
ApplyReleasesImpl: Writing files to app directory: C:\Users\szx\AppData\Local\atom\app-0.187.0
ApplyReleasesImpl: Squirrel Enabled Apps: [C:\Users\szx\AppData\Local\atom\app-0.187.0\atom.exe]
ApplyReleasesImpl: Starting fixPinnedExecutables
ApplyReleasesImpl: fixPinnedExecutables: oldAppDirectories is empty, this is pointless
ApplyReleasesImpl: cleanDeadVersions: for version 0.187.0
ApplyReleasesImpl: cleanDeadVersions: exclude folder app-0.187.0
Program: Starting Squirrel Updater: --install .
Program: Starting install, writing to C:\Users\szx\AppData\Local\SquirrelTemp
CheckForUpdateImpl: Reading RELEASES file from C:\Users\szx\AppData\Local\SquirrelTemp
ApplyReleasesImpl: No release to install, running the app
ApplyReleasesImpl: Squirrel Enabled Apps: [C:\Users\szx\AppData\Local\atom\app-0.190.0\atom.exe]
Program: Starting Squirrel Updater: --install .
Program: Starting install, writing to C:\Users\szx\AppData\Local\SquirrelTemp
CheckForUpdateImpl: Reading RELEASES file from C:\Users\szx\AppData\Local\SquirrelTemp
ApplyReleasesImpl: No release to install, running the app
ApplyReleasesImpl: Squirrel Enabled Apps: [C:\Users\szx\AppData\Local\atom\app-0.190.0\atom.exe]
Program: Starting Squirrel Updater: --install .
Program: Starting install, writing to C:\Users\szx\AppData\Local\SquirrelTemp
CheckForUpdateImpl: Reading RELEASES file from C:\Users\szx\AppData\Local\SquirrelTemp
ApplyReleasesImpl: No release to install, running the app
ApplyReleasesImpl: Squirrel Enabled Apps: [C:\Users\szx\AppData\Local\atom\app-0.190.0\atom.exe]
Program: Starting Squirrel Updater: --install .
Program: Starting install, writing to C:\Users\szx\AppData\Local\SquirrelTemp
CheckForUpdateImpl: Reading RELEASES file from C:\Users\szx\AppData\Local\SquirrelTemp
ApplyReleasesImpl: No release to install, running the app
ApplyReleasesImpl: Squirrel Enabled Apps: [C:\Users\szx\AppData\Local\atom\app-0.190.0\atom.exe]
Program: Starting Squirrel Updater: --install .
Program: Starting install, writing to C:\Users\szx\AppData\Local\SquirrelTemp
CheckForUpdateImpl: Reading RELEASES file from C:\Users\szx\AppData\Local\SquirrelTemp
ApplyReleasesImpl: No release to install, running the app
ApplyReleasesImpl: Squirrel Enabled Apps: [C:\Users\szx\AppData\Local\atom\app-0.190.0\atom.exe]
Program: Starting Squirrel Updater: --install .
Program: Starting install, writing to C:\Users\szx\AppData\Local\SquirrelTemp
CheckForUpdateImpl: Reading RELEASES file from C:\Users\szx\AppData\Local\SquirrelTemp
ApplyReleasesImpl: No release to install, running the app
ApplyReleasesImpl: Squirrel Enabled Apps: [C:\Users\szx\AppData\Local\atom\app-0.190.0\atom.exe]
Program: Starting Squirrel Updater: --install .
Program: Starting install, writing to C:\Users\szx\AppData\Local\SquirrelTemp
CheckForUpdateImpl: Reading RELEASES file from C:\Users\szx\AppData\Local\SquirrelTemp
ApplyReleasesImpl: No release to install, running the app
ApplyReleasesImpl: Squirrel Enabled Apps: [C:\Users\szx\AppData\Local\atom\app-0.190.0\atom.exe]
Program: Starting Squirrel Updater: --install .
Program: Starting install, writing to C:\Users\szx\AppData\Local\SquirrelTemp
CheckForUpdateImpl: Reading RELEASES file from C:\Users\szx\AppData\Local\SquirrelTemp
CheckForUpdateImpl: hwhat, local version is greater than remote version
ApplyReleasesImpl: Found partially applied release folder, killing it: C:\Users\szx\AppData\Local\atom\app-0.189.0
Utility: DeleteDirectory: could not delete - C:\Users\szx\AppData\Local\atom\app-0.189.0\resources\app\apm\node_modules\npm\node_modules\fstream-npm\node_modules: System.IO.IOException: The directory is not empty.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Squirrel.Utility.<DeleteDirectory>d__3b.MoveNext()
Utility: DeleteDirectory: could not delete - C:\Users\szx\AppData\Local\atom\app-0.189.0\resources\app\apm\node_modules\npm\node_modules\fstream-npm: System.IO.IOException: The directory is not empty.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Squirrel.Utility.<DeleteDirectory>d__3b.MoveNext()
Utility: DeleteDirectory: could not delete - C:\Users\szx\AppData\Local\atom\app-0.189.0\resources\app\node_modules\babel-core\node_modules\output-file-sync\node_modules\mkdirp\node_modules: System.IO.IOException: The directory is not empty.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Squirrel.Utility.<DeleteDirectory>d__3b.MoveNext()
Utility: DeleteDirectory: could not delete - C:\Users\szx\AppData\Local\atom\app-0.189.0\resources\app\node_modules\babel-core\node_modules\output-file-sync\node_modules\mkdirp: System.IO.IOException: The directory is not empty.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Squirrel.Utility.<DeleteDirectory>d__3b.MoveNext()
Utility: DeleteDirectory: could not delete - C:\Users\szx\AppData\Local\atom\app-0.189.0\resources\app\node_modules\babel-core\node_modules\output-file-sync\node_modules: System.IO.IOException: The directory is not empty.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Squirrel.Utility.<DeleteDirectory>d__3b.MoveNext()
Utility: DeleteDirectory: could not delete - C:\Users\szx\AppData\Local\atom\app-0.189.0\resources\app\node_modules\babel-core\node_modules\output-file-sync: System.IO.IOException: The directory is not empty.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Squirrel.Utility.<DeleteDirectory>d__3b.MoveNext()
Utility: DeleteDirectory: could not delete - C:\Users\szx\AppData\Local\atom\app-0.189.0\resources\app\node_modules\babel-core\node_modules: System.IO.IOException: The directory is not empty.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Squirrel.Utility.<DeleteDirectory>d__3b.MoveNext()
Utility: DeleteDirectory: could not delete - C:\Users\szx\AppData\Local\atom\app-0.189.0\resources\app\node_modules\babel-core: System.IO.IOException: The directory is not empty.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Squirrel.Utility.<DeleteDirectory>d__3b.MoveNext()
Utility: DeleteDirectory: could not delete - C:\Users\szx\AppData\Local\atom\app-0.189.0\resources\app\apm\node_modules\npm\node_modules: System.IO.IOException: The directory is not empty.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Squirrel.Utility.<DeleteDirectory>d__3b.MoveNext()
Utility: DeleteDirectory: could not delete - C:\Users\szx\AppData\Local\atom\app-0.189.0\resources\app\apm\node_modules\npm: System.IO.IOException: The directory is not empty.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Squirrel.Utility.<DeleteDirectory>d__3b.MoveNext()
Utility: DeleteDirectory: could not delete - C:\Users\szx\AppData\Local\atom\app-0.189.0\resources\app\apm\node_modules: System.IO.IOException: The directory is not empty.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Squirrel.Utility.<DeleteDirectory>d__3b.MoveNext()
Utility: DeleteDirectory: could not delete - C:\Users\szx\AppData\Local\atom\app-0.189.0\resources\app\apm: System.IO.IOException: The directory is not empty.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Squirrel.Utility.<DeleteDirectory>d__3b.MoveNext()
Utility: DeleteDirectory: could not delete - C:\Users\szx\AppData\Local\atom\app-0.189.0\resources\app\node_modules: System.IO.IOException: The directory is not empty.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Squirrel.Utility.<DeleteDirectory>d__3b.MoveNext()
Utility: DeleteDirectory: could not delete - C:\Users\szx\AppData\Local\atom\app-0.189.0\resources\app: System.IO.IOException: The directory is not empty.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Squirrel.Utility.<DeleteDirectory>d__3b.MoveNext()
Utility: DeleteDirectory: could not delete - C:\Users\szx\AppData\Local\atom\app-0.189.0\resources: System.IO.IOException: The directory is not empty.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Squirrel.Utility.<DeleteDirectory>d__3b.MoveNext()
Utility: DeleteDirectory: could not delete - C:\Users\szx\AppData\Local\atom\app-0.189.0: System.IO.IOException: The directory is not empty.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
   at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
   at Squirrel.Utility.<DeleteDirectory>d__3b.MoveNext()
ApplyReleasesImpl: Writing files to app directory: C:\Users\szx\AppData\Local\atom\app-0.189.0
ApplyReleasesImpl: Squirrel Enabled Apps: [C:\Users\szx\AppData\Local\atom\app-0.190.0\atom.exe]
ApplyReleasesImpl: Starting fixPinnedExecutables
ApplyReleasesImpl: Processing shortcut 'C:\Users\szx\AppData\Local\atom\app-0.190.0\atom.exe'
ApplyReleasesImpl: Does not match 'C:\Users\szx\AppData\Local\atom\app-0.187.0', continuing to next directory
ApplyReleasesImpl: Processing shortcut 'C:\Program Files (x86)\CMake\bin\cmake-gui.exe'
ApplyReleasesImpl: Does not match 'C:\Users\szx\AppData\Local\atom\app-0.187.0', continuing to next directory
ApplyReleasesImpl: Does not match 'C:\Users\szx\AppData\Local\atom\app-0.190.0', continuing to next directory
ApplyReleasesImpl: Processing shortcut ''
ApplyReleasesImpl: Does not match 'C:\Users\szx\AppData\Local\atom\app-0.187.0', continuing to next directory
ApplyReleasesImpl: Does not match 'C:\Users\szx\AppData\Local\atom\app-0.190.0', continuing to next directory
ApplyReleasesImpl: Processing shortcut 'C:\Program Files (x86)\foobar2000\foobar2000.exe'
ApplyReleasesImpl: Does not match 'C:\Users\szx\AppData\Local\atom\app-0.187.0', continuing to next directory
ApplyReleasesImpl: Does not match 'C:\Users\szx\AppData\Local\atom\app-0.190.0', continuing to next directory
ApplyReleasesImpl: Processing shortcut 'C:\Program Files (x86)\Mozilla Firefox\firefox.exe'
ApplyReleasesImpl: Does not match 'C:\Users\szx\AppData\Local\atom\app-0.187.0', continuing to next directory
ApplyReleasesImpl: Does not match 'C:\Users\szx\AppData\Local\atom\app-0.190.0', continuing to next directory
ApplyReleasesImpl: Processing shortcut 'C:\Program Files (x86)\Skype\Phone\Skype.exe'
ApplyReleasesImpl: Does not match 'C:\Users\szx\AppData\Local\atom\app-0.187.0', continuing to next directory
ApplyReleasesImpl: Does not match 'C:\Users\szx\AppData\Local\atom\app-0.190.0', continuing to next directory
ApplyReleasesImpl: Processing shortcut 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe'
ApplyReleasesImpl: Does not match 'C:\Users\szx\AppData\Local\atom\app-0.187.0', continuing to next directory
ApplyReleasesImpl: Does not match 'C:\Users\szx\AppData\Local\atom\app-0.190.0', continuing to next directory
ApplyReleasesImpl: Processing shortcut 'C:\Users\szx\AppData\Roaming\uTorrent\uTorrent.exe'
ApplyReleasesImpl: Does not match 'C:\Users\szx\AppData\Local\atom\app-0.187.0', continuing to next directory
ApplyReleasesImpl: Does not match 'C:\Users\szx\AppData\Local\atom\app-0.190.0', continuing to next directory
ApplyReleasesImpl: cleanDeadVersions: for version 0.190.0
ApplyReleasesImpl: cleanDeadVersions: exclude folder app-0.190.0
ApplyReleasesImpl: cleanDeadVersions: exclude folder app-0.190.0
Program: Starting Squirrel Updater: --install .
Program: Starting install, writing to C:\Users\szx\AppData\Local\SquirrelTemp
CheckForUpdateImpl: Reading RELEASES file from C:\Users\szx\AppData\Local\SquirrelTemp
ApplyReleasesImpl: No release to install, running the app
ApplyReleasesImpl: Squirrel Enabled Apps: [C:\Users\szx\AppData\Local\atom\app-0.190.0\atom.exe]
Program: Starting Squirrel Updater: --install .
Program: Starting install, writing to C:\Users\szx\AppData\Local\SquirrelTemp
CheckForUpdateImpl: Reading RELEASES file from C:\Users\szx\AppData\Local\SquirrelTemp
ApplyReleasesImpl: No release to install, running the app
ApplyReleasesImpl: Squirrel Enabled Apps: [C:\Users\szx\AppData\Local\atom\app-0.190.0\atom.exe]
Program: Starting Squirrel Updater: --install .
Program: Starting install, writing to C:\Users\szx\AppData\Local\SquirrelTemp
CheckForUpdateImpl: Reading RELEASES file from C:\Users\szx\AppData\Local\SquirrelTemp
ApplyReleasesImpl: No release to install, running the app
ApplyReleasesImpl: Squirrel Enabled Apps: [C:\Users\szx\AppData\Local\atom\app-0.190.0\atom.exe]
Program: Starting Squirrel Updater: --install .
Program: Starting install, writing to C:\Users\szx\AppData\Local\SquirrelTemp
CheckForUpdateImpl: Reading RELEASES file from C:\Users\szx\AppData\Local\SquirrelTemp
ApplyReleasesImpl: No release to install, running the app
ApplyReleasesImpl: Squirrel Enabled Apps: [C:\Users\szx\AppData\Local\atom\app-0.190.0\atom.exe]

FYI deleting the AppData\Local\atom directory manually fixed this.

Sounds like a duplicate of https://github.com/atom/atom/issues/5767 -- just left a comment there to point to this issue. Thanks for the report.


Fix action caller next middleware handling

Q
A

Is bugfix?
✔

New feature?
❌

Breaks BC?
❌

Tests pass?
✔

There is the next example.
Route
Route::get('/')
            ->to(new ActionCaller(SiteController::class, 'index', $container))
            ->prepend(function (ServerRequestInterface $request, RequestHandlerInterface $handler) use ($container) {
                $response = $container->get(ResponseFactoryInterface::class)->createResponse();
                if (!empty($request->getQueryParams())) {
                    $response->getBody()->write('This route not allowed with query params');
                    return $response->withStatus(403);
                }
                $response = $handler->handle($request);
                $body = $response->getBody();
                $body->rewind();
                $content = $body->getContents();
                file_put_contents('log-body.txt', $content);
                return $response;
            })->then(function (ServerRequestInterface $request, RequestHandlerInterface $handler) use ($container) {
                file_put_contents('log-uri.txt', $request->getUri());
                $response = $container->get(ResponseFactoryInterface::class)->createResponse();
                return $response;
            })
            ->name('site/index'),

Action
public function index(): ResponseInterface
{
    $response = $this->responseFactory->createResponse();
    $output = $this->render('index');
    $response->getBody()->write($output);
    return $response;
}

Don't be scared, this is just my test case:) The first middleware prepended in the prepend() method fires successfully. The second middleware prepended in the then() method does not.
Of cause, I can do like this and evrerything will be ok.
public function index(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
    $response = $this->responseFactory->createResponse();
    $output = $this->render('index');

    $response->getBody()->write($output);
    $handler->handle($request);
    return $response;
}

But is it what we expect? I dont think so.
P.S. Basically I do not know why then() method is needed. Everything I want I can do with a prepended middleware.

Route::get('/')
            ->to($beforeMiddleware)
            ->to(new ActionCaller(SiteController::class, 'index', $container))
            ->to($afterMiddleware)

Route::get('/')
            ->to(new ActionCaller(SiteController::class, 'index', $container))
            ->prepend($beforeMiddleware)
            ->then($afterMiddleware)

They are the same, there is no logical difference, as @yiiliveext said above. But they differ slightly in design, the second case is more readable than the first.

They are the same, there is no logical difference, as @yiiliveext said above. But they differ slightly in design, the second case is more readable than the first.
What about this

Route::get('/')
            ->to(new ActionCaller(SiteController::class, 'index', $container))
            ->prepend($middleware1)
            ->to($middleware2)
            ->then($middleware3)
            ->prepend($middleware4)
            ->then($middleware5)

Looks like it is not very clear. What do you think?

Looks like it is not very clear. What do you think?

Your opinion is also not clear
Route::get('/', new ActionCaller(SiteController::class, 'index', $container))
           ->prependMiddleware($middleware1)
           ->addMiddleware($middleware2)
           ->prependMiddleware($middleware3)
           ->addMiddleware($middleware4); // can be infinity

We cannot manage the approach for each user

Looks like it is not very clear. What do you think?

Your opinion is also not clear
Route::get('/', new ActionCaller(SiteController::class, 'index', $container))
           ->prependMiddleware($middleware1)
           ->addMiddleware($middleware2)
           ->prependMiddleware($middleware3)
           ->addMiddleware($middleware4); // can be infinity

We cannot manage the approach for each user

You don't understand. We have either addMiddleware() or addMiddleware(), but not both together. So it looks very clear
Route::get('/', new ActionCaller(SiteController::class, 'index', $container))
     ->addMiddleware($middleware1)
     ->addMiddleware($middleware2)
     ->addMiddleware($middleware3)
     ->addMiddleware($middleware4);

$middleware4 will be processed first.

Middlewares work as a stack, which means the LIFO (Last In First Out) way used, so add(), addMiddleware() are more appropriate method names. The last added middleware will be processed first.

OK. I got you, so that the ActionCaller will be processed last?

Middlewares work as a stack, which means the LIFO (Last In First Out) way used, so add(), addMiddleware() are more appropriate method names. The last added middleware will be processed first.

OK. I got you, so that the ActionCaller will be processed last?

Yes, it is.

Yes, it is.

If someone wants to add middleware after ActionCaller what should to do it?

Yes, it is.

If someone wants to add middleware after ActionCaller what should to do it?

If you want to execute some code after an action you can do it in any middleware
Route::get('/', new ActionCaller(SiteController::class, 'index', $container))
     ->addMiddleware(function (ServerRequestInterface $request, RequestHandlerInterface $handler) {
        //do something before the index action
        $response = $handler->handle($request);
       //do something after the index action
       return $response;
    });

See an example in the first post. I check the query params before the test action and log the body after.

@rustamwin add it before and design middleware like:
function (ServerRequestInterface $request, RequestHandlerInterface $handler) {
    $response = $handler->handle($request);
    // do your stuff
    return $response;
}

This particular change is 👍 Let's remove confusing methods separately.

@samdark yes I know, probably we should add it to docs


MukthaNarayan Recommendations

Adding my recommendations for things to do at hometown:
- [ ] Branch 1
- [ ] Adding a file to test Issue #1
- [ ] Commit
- [ ] Initiate a Pull Request #1
- [ ] Request review
- [ ] Make additional changes to PR #1
- [ ] Get approval
- [ ] Merge PR #1

This exercise is been completed.


feat: add request token, custom css selector for signature help

:tada: This PR is included in version 0.4.0 :tada:
The release is available on:

GitHub release
Atom package

Your semantic-release bot :package::rocket:


React Component - Developer Bios

Skeleton is up, needs formatting and tweaking. Right now the bios are all filler text


chore(deps): upgrade dev dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-dev-dependencies-1.x" workflow

⚪ Backport skipped
The pull request was not backported as there were no branches to backport to. If this is a mistake, please apply the desired version labels or run the backport tool manually.
Manual backport
To create the backport manually run:
backport --pr 2475

Questions ?
Please refer to the Backport tool documentation


fl_input lacks default string

FLTK's fl_input lets you supply a default string; it pre-fills it in the dialog.  FLTKHS's flInput lacks this parameter.  It's very handy for editing e.g. names, where you might want to make a small change to an existing string.

https://github.com/deech/fltkhs/pull/138


Add CSV Exporter

Summary
Implement a new CSV exporter for OIL's IntrospectionResult.
Test plan
TODO

Codecov Report

Merging #349 (2d9bc20) into main (8dd1182) will decrease coverage by 22.72%.
Report is 17 commits behind head on main.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             main     #349       +/-   ##
===========================================
- Coverage   68.01%   45.29%   -22.72%
===========================================
  Files         114      101       -13
  Lines       11138    10805      -333
  Branches     1864     1811       -53
===========================================
- Hits         7575     4894     -2681
- Misses       2595     5050     +2455
+ Partials      968      861      -107

see 74 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


filtered_messages() cannot subscribe to same topic multiple times

Calling filtered_messages multiple times generally works, but only if the filters are mututally exclusive.
When we subscribe the same topic multiple times, the code runs but data is received only the last message filter.
import asyncio
from contextlib import suppress
import asyncio_mqtt

asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())

async def publisher_task():
    async with asyncio_mqtt.Client("localhost") as client:
        while True:
            await client.publish("test/test", payload=1234)
            await asyncio.sleep(0.5)

async def receiver_task1(client: asyncio_mqtt.Client):
    async with client.filtered_messages("test/test") as messages:
        await client.subscribe("test/test")
        async for message in messages:
            print("task1: ", message.payload)

async def receiver_task2(client: asyncio_mqtt.Client):
    async with client.filtered_messages("test/test") as messages:
        await client.subscribe("test/test")
        async for message in messages:
            print("task2: ", message.payload)

async def main():
    t0 = asyncio.create_task( publisher_task() )

    async with asyncio_mqtt.Client("localhost") as client:
        t1 = asyncio.create_task( receiver_task1(client) )
        t2 = asyncio.create_task( receiver_task2(client) )
        await asyncio.sleep(4)
        t1.cancel()
        t2.cancel()
        with suppress(asyncio.CancelledError):
            await t1
        with suppress(asyncio.CancelledError):
            await t2

    t0.cancel()
    with suppress(asyncio.CancelledError):
        await t0

asyncio.run(main())

Returns:
task2:  b'1234'
task2:  b'1234'
task2:  b'1234'
task2:  b'1234'
task2:  b'1234'
task2:  b'1234'
task2:  b'1234'

i.e. no data from receiver 1.
Is this intentional?

This seems related https://github.com/eclipse/paho.mqtt.python/issues/336

Hi there,
Since 0.15.0 we recommend using the messages() generator together with Topic.matches() to filter messages.
Your example with the new syntax would be as follows, and also prints the data from the first receiver:
import asyncio
from contextlib import suppress
import asyncio_mqtt

asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())

async def publisher_task():
    async with asyncio_mqtt.Client("localhost") as client:
        while True:
            await client.publish("test/test", payload=1234)
            await asyncio.sleep(0.5)

async def receiver_task1(client: asyncio_mqtt.Client):
    async with client.messages() as messages:
        await client.subscribe("test/test")
        async for message in messages:
            if message.topic.matches("test/test"):
                print("task1: ", message.payload)

async def receiver_task2(client: asyncio_mqtt.Client):
    async with client.messages() as messages:
        await client.subscribe("test/test")
        async for message in messages:
            if message.topic.matches("test/test"):
                print("task2: ", message.payload)

async def main():
    t0 = asyncio.create_task(publisher_task())

    async with asyncio_mqtt.Client("localhost") as client:
        t1 = asyncio.create_task(receiver_task1(client))
        t2 = asyncio.create_task(receiver_task2(client))
        await asyncio.sleep(4)
        t1.cancel()
        t2.cancel()
        with suppress(asyncio.CancelledError):
            await t1
        with suppress(asyncio.CancelledError):
            await t2

    t0.cancel()
    with suppress(asyncio.CancelledError):
        await t0

asyncio.run(main())

Hope that helps! 😊

awesome. Thanks. Yes that solves it.


Laravel 4.2 Migrate:reset error

Whenever I try running the migrate:reset command, this fails.  Even with all defaults settings (i.e. generated the migration files using entrust:migration)
Here is the error:

PHP Fatal error:  Class 'EntrustSetupTables' not found in (My web root)/(My home directory)/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php on line 301
{
    "error":{
        "type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException",
        "message":"Class 'EntrustSetupTables' not found",
        "file":"(My web root)\/(My home directory)\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Migrations\/Migrator.php",
        "line":301
    }
}

Is there some reason why this thing isn't working?  All my other migration files work just fine.

Any updates on this?
I think this should be closed.


Keyboard Manager: chrome shortcuts remapping not working

ℹ Computer information

PowerToys version: 0.27.1
Running PowerToys as Admin: not working both run as "admin" and "standard user"
Windows build number: Version 1909 (OS Build 18363.1256)

📝 Provide detailed reproduction steps (if any)

Remap left alt + right to left ctrl + right
Remap left alt + left to left ctrl + left
Try to navigate in chrome through tab browse history using new shortcuts

✔ Expected result
Shortcuts should be remapped to the defined in Keyboard Manager
❌ Actual result
Both native shortcuts (using left alt) and new ones (using left ctrl) do not work at all.
📷 Screenshots

You have the mapping backwards.    Think you want this:

Perfect! You are completely right! It means that I misunderstood how to map the shortcuts.
Thank you for your clarification.
We can close the issue, everything is working as expected.


constraints on delete, on update

Hello, i am a newbie in yii2. I want to use your tool to migrate a database, where some of tables have foreign  key constraint on delete cascade, and some of them on delete restrict, the same for update. Is it some possibility to read this value  from database. It is just on delete cascade in Generator.php .
Thanks in advance

Sorry, I don't get what you mean..

OK, I will try to explain it better now.
I use your migration-tool.
In your  Generator.php there is a function:
protected function generateRelations()
...
$relations = [];
foreach ($db->getSchema()->getTableSchemas($schemaName) as $table) {
$tableName = $table->name;
foreach ($table->foreignKeys as $refs) {
$refTable = $refs[0];
$refTableName = $this->generateTableName($refTable);
unset($refs[0]);
            $fks = implode(']], [[', array_keys($refs));
            $pks = implode(']], [[', array_values($refs));

           $relation = "FOREIGN KEY ([[$fks]]) REFERENCES $refTableName ([[$pks]]) ON DELETE CASCADE ON UPDATE CASCADE";
        $relations[$tableName][$refTable] = $relation;
        }
    }
    return $relations;
}

`
You see, here the kind of the relations is declared fix in the code.
In my database I have declared  several different  referential action  for foreign keys when delete or update happens. Sometimes I have ON DELETE CASCADE, and in other tables ON DELETE RETSTRICT.
In your Generator.php it is hard coded "ON DELETE CASCADE".
If I use it like this, in some cases I might get problems.
I need to get the type of relation in the migrate script, which is really declared in the database, and I have no idea, how to get them. So I would be really really thankful, if you can help me and tell me a solution for this.
Is there a possibility  to read this parameter from mysql database and write it to the migration file during the generation?
I am hopefully looking forward to your answer
Many thanks
lzakon


[FINAL RFC] aarch64 support

[UPDATED] one last round of RFC!
Please manifest your suggestions. Otherwise I'll rebase the commit log and ping for a x86 regression test, then hit the merge button.
Instructions on testing & suggesting patches:

take this PR branch (from my personal repo), or:
git fetch origin pull/1231/head:aarch64_test the checkout to aarch64_test
test on both x86 and aarch64, see what's broken.
for further patches, please open PRs against the aarch64_DEV_BASE branch. I will cherry-pick them into this one.

current state
quark is working on both x86 and aarch64. We have some regressions in aarch64 ^reg. Whether there is regression on x86 is unknown, please help with testing!
there are a few items on the checklist, otherwise we are ready to merge, cheers.
checklist

[x] fix runtime errors on aarch64 (introduced by new commits from main)
[x] fix compilation errors on x86
[x] pending patches (I hand-picked the commits into this PR, the original PRs are closed)

[x] #1234
[x] #1237

[x] fix vdso build (for both archs)

[x] it seems some sources are missing
[x] remove vdso objects from the git tracking.

[x] fix makefile (regarding pinning toolchains) for both archs
[ ] test x86 for regression
[x] update readme for aarch64 support
[x] cleanups (formats, linter, comments, documentations, etc.)

Note: I try to fix as many warning as possible, some of them however require more refactoring to fix due to conditional compiling.

[x] if you like, please review this PR. (well, it's a lot, I know!). One key point is to check if there are leftover aarch64 specific things that are not wrapped in a #[cfg(...)] block.

checklists:

[ ] vdso objects are tracked by mistake. need to fix.

btw I would like to remove some of the logging used for debugging.  We certainly have a lot, especially in the paging and mm.
Some are needed, some are no longer. If you have some ideas please let me know :D

checklists:
* [ ]  fix compilation errors on x86

Is anyone doing this? Otherwise I could take it.

checklists:

[ ]  fix compilation errors on x86

Is anyone doing this? Otherwise I could take it.

I'm doing it. Please do not work on the code at this moment. I'm actively rebasing things and I can't keep track of patches.

btw I would like to remove some of the logging used for debugging. We certainly have a lot, especially in the paging and mm.
Some are needed, some are no longer. If you have some ideas please let me know :D

IMO these are not any more needed/can be easily added if needed:

https://github.com/QuarkContainer/Quark/blob/9f832c6bf2c0e9f5ff841446088d7c4dda423003/qlib/kernel/threadmgr/task_usermem.rs#L175

https://github.com/QuarkContainer/Quark/blob/f0997eadeaf7c8c3d56032912afe9b392b94d196/qlib/pagetable.rs#L484

@shrik3 vdso cleanups

@shrik3 vdso cleanups

after the cleanup (and removing all .o, .so stuffs) does make -C vdso work for you?

@shrik3 vdso cleanups

after the cleanup (and removing all .o, .so stuffs) does make -C vdso work for you?

Yes, tried with: 61c250306beeb2f4ad3f98058184fa10a1805cd8 + vdso cleanups + makefile-patch + make qkernel_debug

* Proposed patch (see above)

I've applied them.

Sorry for the malformed eMail, anyway I attache the patch here

Sorry for the malformed eMail, anyway I attache the patch here

don't worry about that, the attached patch is easy to apply, I can simply pipe it into git am

I'm observing a bug in LoadEnv where the stack layout has a "interesting" ArgvStart. This is the root cause of some previous EL1 PF with weird FAR.
[INFO] [2/4540100000|0] >> mm::SetupStack: stackLayout: StackLayout {
    ArgvStart:<PHONE_NUMBER>4520439065,
    ArgvEnd:<PHONE_NUMBER>42201,
    EnvvStart:<PHONE_NUMBER>42201,
    EvvvEnd:<PHONE_NUMBER>43840,
}
[Print] [2/4540100000|0] get panic : Some(argvend < argvstart ???)
[Print] [2/4540100000|0] panic occurred in file 'src/qlib/kernel/memmgr/mm.rs' at line 410

Seems quite easy to fix.. I'm on it :D

CharlyYu (17):
      aarch64: set vcpu init by kvm_bindings
      aarch64: fix elf loader problems
      aarch64: add kernel pagetable identical mapping
      aarch64: add vdso of arm64
      aarch64: support tls for aarch64
      aarch64: rename GetRsp to GetCurrentKernelSp
      aarch64: fix address issue
      aarch64: specify copy dst len with src len
      aarch64: distinguish arch for LibcStat
      aarch64: add SyscallTable for aarch64
      aarch64: distinguish arch when set auxv
      aarch64: fix substraction overflow in NewMmapLayout
      aarch64: support EnterUser for aarch64
      aarch64: add CopyPageUnsafe asm codes for arm64
      aarch64: fix PageOpts definition missing MT_NORMAL
      aarch64: do not set hwcap of x86 to auxv
      aarch64: fix arch specific epoll event issue

Christo Bita (30):
      clean up dead code
      aarch64: fix compilation
      aarch64: asm wrappers for FP state store/restore
      aarch64: placeholders for context state
      aarch64: add notes for future refactoring
      aarch64: memory layout related defs and functions
      aarch64: do not trap FP instructions
      aarch64: remove invalid arguments for mmap()
      aarch64: Fix wrong stack initialization
      aarch64: PageFault-Handler for EL1/0
      aarch64: add formatting for PtRegs
      aarch64: use bitflags methods to operate on PTEs
      aarch64: refactor page fault handler defs
      aarch64: handle page-fault for Accessed-Flag.
      aarch64: handle missing PAGE/VALID flags faults
      aarch64: add missing MT_NORMAL Flag for PTEs
      aarch64: add debug context for UnknownException in EL0
      aarch64: include HYPERCALL_MMIO in Kernel memory-space.
      aarch64: Fix IRet - set correct stack_pointer.
      aarch64: handle PF from COW-Write events
      aarch64: set PC of clone task to the clone front-end.
      Formating Range - LowerHex
      aarch64: define user space upper-border per arch
      aarch64: do not unmap HYPERCALL-MMIO page on exit
      aarch64: more informative log on unhandeled exception.
      aarch64: make syscall table consistent
      aarch64: set sys_faccessat2 to SysNoSys
      aarch64: fix mismatch between passed parameter and read register.
      fix makefiles
      vdso: clean up leftover artifacts

Tianhao Wang (43):
      aarch64: fix compiler error
      aarch64: implement hypercall interface
      aarch64: fix PT flags and MMIO page mapping
      aarch64: complete pagetable flags defs
      aarch64: add exception table and syscall handler
      aarch64: save/restore regs in ptregs format
      aarch64: account task leave in exception handler
      aarch64: set sys_rseq to SysNoSys
      aarch64: fix slice copy dest length
      aarch64: remove host kvm mapping for MMIO page
      aarch64: cleanup paging
      aarch64: control accessing user mem from EL1
      aarch64: emulate MSR MIDR_EL1 for userspace.
      aarch64: save tls when leaving el0
      aarch64: remove x86 specific code
      aarch64: return cntfrq as vcpu frequency
      aarch64: swap 4th and 5th parameter for SysClone
      aarch64: make consistent context definition.
      aarch64: task_clone: switch to child
      remove obsolete switch_to
      aarch64: fix getdents64 syscall
      aarch64: chore: cleanup
      aarch64: add ReturnToApp() function
      aarch64: saner logging in PF handler
      aarch64: refactor MemAbort functions PF handler
      aarch64: refactor PageFaultErrorCode
      aarch64: refactor table switch; flush tlb
      aarch64: fix syntax error in asm
      aarch64: mprotect do not corrupt PTE flags
      aarch64: refactor page fault handling
      aarch64: mark placeholders todo!
      aarch64: ignore BRK exceptions
      keep user vdso base addr in task.mm
      aarch64: define UContext
      aarch64: implement signal delivery
      aarch64: use HostSubmit() in KVM_VCPU_YIELD
      aarch64: fix slice copy
      aarch64: temporarily disable OpenAt optimization
      aarch64: set default SCTLR_EL1.SPAN to 1
      aarch64: wip: force sigill on unknown exception
      aarch64: fix what we broke for x86 build
      docs: update readme for aarch64 support
      CLEANUP TEMP: chore

Yulin Sun (1):
      CLEANUP TEMP: fix aarch64 build