(PUP-7519) Enabling rubocop securitycop scans

Background: Rubocop scans were not running as the various cops in .rubocop.yml were not kept uptodate with the latest definitions. This will enable only SecurityCop/YAMLLoad as a start to revive the scans in an effort to flag any inadvertent usages.  Additional security or other cop rules can/would be added in future.
Rubocop do not have support for flagging YAML.load_file which would have been desirable. Likewise it is not necessary to mark the known instance of Yaml.load_file in Puppet::Util::Yaml to be ignored.
Note that there are a couple of other YAML.load instances elsewhere so this may generate violations. If that is not desired this PR be merged after all these have been resolved/changed appropriately.

Huh! looks like the rubocop version used in Travis does not recognize Security/YAMLLoad(?). Will figure and push the needed changes again.

CLA signed by all contributors.

Gemfile had to be updated to use the latest rubocop gem as the Security Cop being used seems to be available only in 0.48.xx onwards (in a more later version than 0.39.0).
As noted above, this will cause builds to fail in the current state due to use of YAML.load at a couple of places.

Thanks for getting this working @jsane. Unfortunately if we merge this, then all subsequent PRs will fail. So I'd like to resolve the usages of unsafe YAML.load. Ideally those places should be modified to use our safe yaml load methods, so instead of:
    if config = YAML.load(text)

Instead do:
config = Puppet::Resource::Catalog.from_data_hash(Puppet::Util::Yaml.load(text))

The Puppet::Util::Yaml module needs to be modified to allow safely parsing of in-memory strings, as opposed to only files.
@thallgren could you take a look at this as part of the safe yaml epic?

@thallgren Understandably this might not be high on priority wrt other things but wanted to know if there are plans to take this up anytime in coming future.  /cc @joshcooper

@josh, I actually created a (maint) PR a couple of weeks ago that upgrades .rubocop to 0.49.  See https://github.com/puppetlabs/puppet/pull/6088. I think that should go in first. Then sure, enabling a check for Yaml load make sense.

Another problem that needs to be circumvented somehow is that newer versions of rubocop requires Ruby >= 2.0.0. When can we drop support for 1.9.3?

I think we configured .travis to skip rubocop scans in ruby 1.9.3

Hi @jsane, with the 5.5.x branch being cut, please retarget that branch.  Thanks!

@jsane this needs a rebase, and let's continue targeting master (after @thallgren PR lands)

Ack. I will target master per your comment in Thomas's PR.

Created a new PR: https://github.com/puppetlabs/puppet/pull/6732. Closing this one - decided to started with a new branch instead of dealing with rebasing old set of changes.


Performance Improvement: Enhancing Web UI Rendering Speed for "showDragLines"

[x] Bugfix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)

Proposed changes
This PR focuses on optimizing the performance of the showDragLines feature in the web UI, resulting in a significant improvement of approximately 2x. Through testing on Edge DevTools performance page, it was observed that the "Long Task" duration for a Node-RED flow page containing 800 nodes decreased from around 90ms to 50ms. This translates to an increase in frame rate from approximately 11 frames per second to 20 frames per second.
I am not sure why these few lines of code I have modified are effective. My changes probably have no side effects

Checklist

[x] I have read the contribution guidelines
[ ] For non-bugfix PRs, I have discussed this change on the forum/slack team.
[x] I have run npm run test to verify the unit tests pass
[ ] I have added suitable unit tests to cover the new/changed functionality

Hi @fullmooooon - thanks for this.
Your changes causes it to bypass redrawing the view whilst dragging new links around. So whilst it is doing less work, it does  now mean some updates aren't happening that should.
For example, with the link nodes, you can see here (just about... assuming the gif compression doesn't hide it...) when I start to drag a link, the circle port on the right-hand link node appears as a target for the link:

That only works if _redraw() gets called to refresh the node appearance.
So whilst I'm sure there are optimisations to be had, I think this one is maybe a bit too simple.


Remove testutils package and minor cleanup

The RunningOnCircleCI, IsRunningInContainer test-utils were no longer needed because CI is not running on CircleCI in this repo, so we don't need these utilities.
Given that the _test.go file is only built on Linux, I moved the remaining SetupTestOSContext utility to the _test.go file itself as a helper, and removed the testutils package.
There's no Dockerfile in this repo, so we can removed the .dockerignore. Also cleaned up some entries from .gitignore (more entries could probably be removed).

Actually; the _test.go is linux-only, so we can likely get rid of the whole testutils directory; let me do so

@dims @justincormack ptal

LGTM
Way cleaner now! thanks @thaJeztah


parse twitch ids as strings instead of ints

All IDs from Twitch (mostly User-IDs) should be treated as strings for two reasons:

It is what is returned through the API and what is officially recommended
It fixes a data type inconsistency between Youtube and Twitch Results:# from twitch stream:
{
  "author": {
    "name": "someuser",
    "id": 123456789,
    ...
  },
  ...
}

# from youtube stream:
{
  "author": {
    "name": "someuser",
    "id": "ABCDEFGHIJKL_xyzasdfqwe",
    ...
  },
  ...
}

The problem seems to arise from the fact that the int_or_none remapping function is used for IDs of all kinds in the twitch site code, for example:
_AUTHOR_REMAPPING = {
    '_id': r('id', int_or_none),
    'name': 'name',
    'display_name': 'display_name',
    ...
}

I went ahead and replaced all occurrences of int_or_none with str_or_none where it looks like an ID is being parsed.
This probably breaks some existing code, but given the library's version is "0.0.8" it looks like there aren't any stability guarantees yet anyway.

Thanks for this contribution! I will pull it in as soon as I update the main branch to version 0.1.0.

These changes will be included in the next pip version (i.e., v0.1.2). Thanks!


[python] Add a missing log-line for uns ndarray ingest

Issue and/or context: This made debugging https://forum.tiledb.com/t/tiledberror-tiledb-s3-error-storing-h5ad-with-soma-format/602 a bit confusing.
Changes: Add the missing log-line.
Notes for Reviewer:

Codecov Report
Patch coverage: 100.00% and project coverage change: +26.63 :tada:

Comparison is base (e11e495) 64.66% compared to head (90abde7) 91.30%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@             Coverage Diff             @@
##             main    #1551       +/-   ##
===========================================
+ Coverage   64.66%   91.30%   +26.63%
===========================================
  Files         104       30       -74
  Lines        8685     2552     -6133
===========================================
- Hits         5616     2330     -3286
+ Misses       3069      222     -2847

Flag
Coverage Δ

python
91.30% <100.00%> (+<0.01%)
:arrow_up:

r
?

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

apis/python/src/tiledbsoma/io/ingest.py
84.95% <100.00%> (+0.02%)
:arrow_up:

... and 74 files with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


[wip] Ensure that the args coming out of arg2symbol have the right loc

Motivation
Fixes #1167; sometimes we would pass an arg to arg2symbol in the namer pass, see that something was already present in the arguments() field of the symbol, and not bother updating it, but this pre-existing arg wouldn't necessarily have the right location. This, in turn, would throw off debug messages that included the argument later on, because we print arguments by following their loc. This just adds a line that always overwrites the loc, so it should always be correct when we get something back out of arg2symbol.
Test plan
See included automated tests.

Can we add a test?
Otherwise, looks good to me


Tailwind, Bootstrap or MUI?: Your Choice of CSS Framework

We're looking to enhance the styling of this simple app, and we want your expertise and preference to play a key role in this. You have the freedom to choose between three popular CSS frameworks: Tailwind CSS, Material-UI (MUI), and Bootstrap. Your unique styling will help us make the project visually appealing.
Good luck!

This commit adds Tailwind to the project https://github.com/mitchiemt11/trailers-trove/pull/35/commits/8dbdaad7781dc3c8c7f49c4f6646687994c7f1dd. I will rebuild the entire trailers section using tailwindd


when deploying with microk8s ingress gets broken on restart

Windows-based deployment with multipass.
Because this is a VM I have to modify ingress to point to the <IP.xip.io> rather than to the localhost.
When I stop microk8s and start again, the value "localhost" is again set in the ingress, also "tls" section is gone.

Looks like this stems from https://bugs.launchpad.net/juju/+bug/1863013. In other words, when the Juju controller boots back up, it overwrites the existing Ingress, after we've patched it with TLS and whatnot. I think the short-term fix will to avoid juju expose, and just directly create an Ingress with kubectl.

Fixed by https://github.com/ubuntu/microk8s/pull/965


Small fixes for Makefile

I added some small fixes to the Makefile so that installing the Python package works for Python 3 (by doing make python_package followed by pip install [path-to-falconn/python_pkg).
See #14 and uses swig instead of swig3.0 as suggested in #48.

Hi Marcel,
thank you for the pull request! Our makefile certainly needs some work.
You mention the python_package target in your pull request, but the NUMPY_INCLUDE_DIR variable is only used in the python_swig target. Is that intentional? The python_swig target is only for meant for development purposes, I added it so I could test changes to the Python wrapper more quickly.
Cheers,
Ludwig

Either way, I'm merging it for now. The change of swig is very useful.

Hi, sorry for not responding earlier. The main goal of my changes was to get make to run without complaining ;-)
If I remember correctly, make complained about numpy missing (not 100% sure though, I might have tried different make targets).

Yup, the changes should definitely make the Makefile more robust. Thanks!


Suggestion: Use commands instead of &str to execute commands

Hey guys, I have been using gluesql for a while and I wanted to suggest improvements to it.
In your example:
use gluesql::prelude::*;

fn main() {
    let storage = SledStorage::new("data/doc-db").unwrap();
    let mut glue = Glue::new(storage);
    let sqls = vec![
        "DROP TABLE IF EXISTS Glue;",
        "CREATE TABLE Glue (id INTEGER);",
        "INSERT INTO Glue VALUES (100);",
        "INSERT INTO Glue VALUES (200);",
        "SELECT * FROM Glue WHERE id > 100;",
    ];

    for sql in sqls {
        let output = glue.execute(sql).unwrap();
        println!("{:?}", output)
    }
}

While this is great for basic stuff, I wanted to suggest a more cleaner alternative.
Here is my suggestion to use commands to execute stuff such as select etc etc. Here is my example (this is pseudo code):
glue.drop(["Glue"]);
glue.create("Glue", vec![id: INTEGER]); // Takes two arguments, one is for the table name, the other is for column names
glue.insert("Glue", vec!(100);
glue.insert("Glue", vec!(200);
glue.select("Glue", ["*"], [id > 100, id == 100]; // table_name, columns, condition(s)

Unless if there was a way to do this already?

Currently, the only interface you can use is SQL text.
However, there is a good news.
We are planning to add GlueSQL's own query builder so you will be able to use .. not soon but not too late.
Until this year, you will be able to see some visible working example of the new query builder.

@panarch Hey mate thanks for your response :)

We are planning to add GlueSQL's own query builder so you will be able to use .. not soon but not too late.

Sorry mate but what is a query builder? Is it similar to the example I have provided?
Can I have a pseudo code example please?

@Raj2032 Sure,
sea-query would be a good example.
You can expect similar feature like SeaQuery.
Differences are... SeaQuery is for supporting multiple SQL databases using same query interface.
In the case of the query builder which GlueSQL plans to make is only for us, GlueSQL.
It is designed to use full functionality of what GlueSQL provides.
Pros - Query builder can use full feature of GlueSQL, so there would be no issue to use gluesql-only-specific features using query builder.
Cons - Not compatible with other databases, GlueSQL query builder only works for GlueSQL.

@panarch If I understood you correctly, the gluesql query would be similar to sea:
assert_eq!(
    Query::select()
        .column(Glyph::Image)
        .from(Glyph::Table)
        .and_where(Expr::col(Glyph::Image).like("A"))
        .and_where(Expr::col(Glyph::Id).is_in(vec![1, 2, 3]))
        .build(PostgresQueryBuilder),
    (
        r#"SELECT "image" FROM "glyph" WHERE "image" LIKE $1 AND "id" IN ($2, $3, $4)"#
            .to_owned(),
        Values(vec![
            Value::String(Some(Box::new("A".to_owned()))),
            Value::Int(Some(1)),
            Value::Int(Some(2)),
            Value::Int(Some(3))
        ])
    )
);

Yes similar but method names and detailed usage would be quite different.
I'll share the draft in the public soon
also thanks for the question. this helps us to decide priority between issues.


Push Notifications: OneSignal.com

Hi, is it possible to use onesignal.com for push notifications? I bought the delitestudio pro version but with thousands of notifications our server goes down all the time. It would be better to sent the notifications on another server.

@delitestudio
If you use another service you will need to modify the code a little bit.
You will need to change the logic of hasBeenRegistered registerWebService unregisterWebService  in https://github.com/shprink/wordpress-hybrid-client/blob/develop/lib/pushNotifications/service.js

@delitestudio can you guys add an option to send a maximum of X push notification per minute?


Fixed menu min height to stretch from top to bottom.

Stretched navigation min height from to bottom of the screen to match designs.

Travis should be fixed by #34


Download dataset with less ROIs

Hello! I've been working with the NeuroGraph dataset on a project and now I want to run some tests on the same dataset with fewer ROIS. I've been reading the documentation and I saw that there is a preprocess function in utils and that NeuroGraphDataset also could take a pre_transform function. However, the preprocess function, as far as I can see, doesn't apply to a torch_geometric.data.Data object. Is there a way for me to import the NeuroGraphDataset HCPAge but with less that 1000 ROIs?
Thank you!

Thank you for using NeuroGraph. Unfortunately, the benchmarks we offer are based on 1000 ROIs in resting state setting. However, you can use utils.preprocess() function for preprocessing if you have already downloaded the dataset. Otherwise, please use Brain_Connectome_Rest_Download class for downloading and preprocessing the HCP dataset.
For using preprocess function with pyg, you just need to use it in pyg inMemoryDataset class to get the dataset in the desired format.


Origin request header same as page URL on HtmlSubmitInput.click()

HtmlPage page1 = webClient.getPage(url_with_query_parameters);
HtmlForm form = page1 .getFormByName("...");
HtmlSubmitInput button = form.getInputByName("...");
HtmlPage page2 = button.click(); // Origin header is the same as url_with_query_parameters

Expected [1]

scheme "://" host [ ":" port ]

For version 2.31 following workaround works:
webClient.addRequestHeader(HttpHeader.ORIGIN, "https://localhost:12345");

https://tools.ietf.org/html/rfc6454#section-7

have added two more test cases; they working fine and the result is the same when using the real browsers.
Please check if there is any misunderstanding from my side.
Commit: https://github.com/HtmlUnit/htmlunit/commit/a3f91aea7b7f697bf8631301d14a49a083cbd93d

A fix similar to your PR is on the way. Check on twitter if a new snapshot build is available


Rudimentary Memento support on replay

I noticed that replaying WARCs provides a 14-digit datetime placeholder. As I anticipate this will eventually be semantic, it need not necessarily be. However, providing Memento (RFC7089) HTTP response headers would give some temporal context to the capture.
As a start, initially providing the Memento-Datetime HTTP response header (in RFC1123 format, e.g., Memento-Datetime: Fri, 09 Jan 2009 01:00:00 GMT) when viewing a capture from the WARC would be useful for further integration into other systems.

Yep. I agree.

We should also support the Accept-Datetime request header. Need index improvements (#11) for that.

@ato I agree re:Accept-Datetime but I figured getting the capture/memento to report what it is would be a start for further negotiation.
For the endpoint that is receiving the Accept-Datetime header, be sure to have the Vary: Accept-Datetime in the response (see RFC7089 §2.1.2).
For the capture (memento) itself, you may also want to report a Link response header to relate the capture (at a URI-M) to the live web URI (URI-R) with rel="original", e.g., example in §4.1.1.


Feature: Add oracletext

Is it possible to add a command to get oracle text on card. Like a command per image or a switch that gives it under each image?

We'd love to implement something like this!
I did a bit of a dive on the Messenger docs and it doesn't look like it's possible to add text when sending image attachments.
Right now there are two issues -

The MythicSpoiler API doesn't link the latest spoiler tables and the card search tables in any meaningful way, meaning that additional information like oracle text, translations, or links to the original webpage aren't currently available. That said, I'm in touch with the person who runs it and we can probably get working on that for the near future. I haven't started that conversation yet though because...

I'm not sure how we would use that information even if it was surfaced - if it's not possible to attach text to an image attachment, then oracle text would only be useful as a text-only mode (which isn't totally invalid... however I'm not certain that that's something anyone even wants). We could also send image and oracle text as separate messages but I also don't think that's a particularly pleasant UX.

That said, I might just not have read the docs closely enough and this is for sure the next big feature for MSBot - any thoughts are welcome


semilunar - add hyphenated synonym "semi-lunar"

Add hyphenated form "semi-lunar" to relevant semilunar heart valve terms, where needed.
See semi-lunar valve UBERON:0005623.

Hyphenated synonym has been added.

Reopened issue to add hyphenated form "semi-lunar" to trigeminal ganglion (semilunar ganglion) and semilunar valve regurgitation terms.


description doesn't match azure-pipelines

[Enter feedback here]
The pipeline that is imported from the GitHub repo needs more work than what is described here. The Readme on the GitHub repo mentions it. Please update.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: fa0194a9-ffa7-fa79-e6c7-8ecb5e8c93ec
Version Independent ID: 4f5a9f04-b629-b8b1-1332-9260c95d13b7
Content: Azure Machine Learning service training and deployment - Azure Pipelines
Content Source: docs/pipelines/targets/azure-machine-learning.md
Product: devops
Technology: devops-cicd
GitHub Login: @jpe316
Microsoft Alias: jordane

Looking at the history of the pipeline.yml file, it looks like there was an update that changed the resource group and name of the service connection for ScottGu build session. You might want to revert that back.

@bospoort -- thank you for bringing this to our attention.  I have asked our expert to review your request.
@jpe316 -- please look into this information.


✨Changed theme more inline with my personal site

Codecov Report

Merging #13 (299bdf7) into main (47f4063) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #13   +/-   ##
=======================================
  Coverage   73.04%   73.04%
=======================================
  Files           5        5
  Lines         115      115
  Branches       21       21
=======================================
  Hits           84       84
  Misses         27       27
  Partials        4        4

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 47f4063...299bdf7. Read the comment docs.


When download from twitch in the end it do "[ffmpeg] Fixing malformed AAC bitstream" and it take huge amount of space to do.

Pretty often when I'm running out of space and downloading huge stream around 10 gig, this operation fail. What is weird if I manually download with ffmpeg source file that mmpeg trying to apply this "Fixing malformed AAC bitstream" to is fine and can be played after "Fixing malformed AAC bitstream" fails.
But if it automatical download with https://www.godo.dev/tutorials/python-record-twitch/ and I get same error, then source file cannot be opened.
What this "Fixing malformed AAC bitstream" do, can it be turned off by default?

This also sometimes happens to already downloaded files when you provide multiple streams and one of the streams was already downloaded.

You can skip this with --fixup never though the media will be most likely have playback issues.


feat(semantic): add check for duplicate class elements in checker

Current dependencies on/for this PR:

main

PR #2455   👈

This stack of pull requests is managed by Graphite.


Cache make generate results with Bazel

Is your feature request related to a problem? Please describe:
Running make generate takes time. Running make generate twice will take approximately the same amount of time to run.
Describe the solution you'd like:
make generate results needs to be cached with Bazel. This way, if nothing changed regarding the files needs to be generated, I expect make generate to finish much faster.

/remove-lifecycle stale

/remove-lifecycle stale

/remove-lifecycle stale

/remove-lifecycle rotten

This issue is still very relevant.

Still relevant.
/reopen

/reopen
/remove-lifecycle rotten

/remove-lifecycle rotten

/remove-lifecycle stale
/label good-first-issue


Timer won't stop

💻 Environment
User agent: windows_native_app/7.4.345-obm-87-obm-98-obm-99-obm-101
Version: 7.4.345
UpdateChannel: stable
User is on Windows 10.
🐞 Actual behavior
User is reporting timer won't stop. Clearing cache has not helped. Error message says "Constraint violation..." User is unsure about full message (see message below)
"Hi, I am receiving the error message again. I tried stopping a timer on the desktop app, but the timer is still running (and the start/stop button is not working). The error message is just disappeared but it said something like “Constraint violation …” I am logged in under<EMAIL_ADDRESS>💯 Expected behavior
User should be able to stop the timer by pressing the stop button.
🔨 Steps to reproduce
Unable to reproduce this.
📦 Additional info
I've attached the only attachable file that came through with the feedback.
toggldesktop.log
More information can be found here.
Case

Problem

In certain scenario, the update of a running Time Entry violates the Unique Constrains of our local Database (time_entries Table, and id_time_entries_guid Constraint). It results in "Can't stop Time Entry and Error Display alert"

Solution
I could't reproduce this issue during development, so I suggest the solution for the fallback, which is that DesktopLibrary should allow this "Stop" action regardless of error from the database. As a result, the user can actually stop the Time Entry, then calling the API.
Do we have alternative idea? @IndrekV

case

case

Case
This case also has a log attached to it in case you need it.

Did some investigation, here is what I found. The issue appears when the app tries to save a time entry as new time entry (insert clause in database) but the time entry is already present in the database. When we create a time entry we create a local_id for that entry. This is what is later used to detect if time entry is already present and needs update or need to be created in the database with insert clause.
https://github.com/toggl/toggldesktop/blob/b82de90e96f6543f215006c2ac6e47907eb3ea40/src/database.cc#L2245
This line is not executed on first insert action and this causes the second faulty insert to be triggered. Probably some error just before this line and after the insert line that is causing this. We need to send all sql errors we get also to bugsnag so we can monitor this.

User Report

User Report

Is this relevant?

User report

is bug is back after today's update

this is so frustrating, making to not work properly

For everyone having the issue: please try to clear the application's cache https://support.toggl.com/en/articles/2410845-clearing-the-local-data-from-toggl-desktop.
It should fix the issue, at least for a while. Meanwhile, we'll make sure the next application update will not allow this error to happen.


ArrayIndexOutOfBoundsException on historical in class GroupByMergingQueryRunnerV2 when grouping on high-cardinality dimension

Affected Version
Druid 0.16.0
Description
An ArrayIndexOutOfBoundsException is thrown by a historical when grouping on a high-cardinality dimension.
This happens reproducibly on a test cluster with two historicals (r4.4xl) and a dataset that was ingested with the new native index_parallel job using the druid indexer, so not the middlemanager but the new indexer process.
The dataset is 12 GB in size as displayed in Druid's legacy coordinator console and consists of 500 shards, segment size is around 25MB with 100k records per segment and rollup was disabled during the ingestion. (83 dimensions, 1 metric)
The data constitutes a single hour which has no query granularity and hourly segment granularity.
The data set was just for testing, so it is not a battle-hardened data model. The data is in so far battle tested as that is is authentic production data which we ingest with a hadoop indexer into our production cluster. In this case the data is rolled up. In contrast, I took this data set and ingested it without rollup using the new experimental ingestion pipeline that was introduced in Druid 0.16.
I was executing the following query
SELECT
  "deviceId",
  COUNT(*) AS "Count"
FROM "hackathon"
WHERE "__time" >= CURRENT_TIMESTAMP - INTERVAL '1' YEAR
GROUP BY 1
ORDER BY "Count" DESC
LIMIT 100

This always raises the following exception within one of the historicals:
     [java] 2019-11-21T18:17:57,132 ERROR [processing-3] org.apache.druid.query.groupby.epinephelinae.GroupByMergingQueryRunnerV2 - Exception with one of the sequences!
     [java] java.lang.ArrayIndexOutOfBoundsException
     [java] 2019-11-21T18:17:57,132 ERROR [processing-3] com.google.common.util.concurrent.Futures$CombinedFuture - input future failed.
     [java] java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException
     [java] 	at org.apache.druid.query.groupby.epinephelinae.GroupByMergingQueryRunnerV2$1$1$1.call(GroupByMergingQueryRunnerV2.java:253) ~[druid-processing-0.16.0-incubating.jar:0.16.0-incubating]
     [java] 	at org.apache.druid.query.groupby.epinephelinae.GroupByMergingQueryRunnerV2$1$1$1.call(GroupByMergingQueryRunnerV2.java:233) ~[druid-processing-0.16.0-incubating.jar:0.16.0-incubating]
     [java] 	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_212]
     [java] 	at org.apache.druid.query.PrioritizedListenableFutureTask.run(PrioritizedExecutorService.java:247) [druid-processing-0.16.0-incubating.jar:0.16.0-incubating]
     [java] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_212]
     [java] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_212]
     [java] 	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_212]
     [java] Caused by: java.lang.ArrayIndexOutOfBoundsException

If I instead group on other dimensions then I do not receive any exeption. So this specifically happens with a dimension that has a high cardinality because it contains device IDs.
However, I tried to group on other high-cardinality dimensions like a session ID that contains a GUUID and this only resulted in a ResourceLimitExceeded exception which is fine.
I couldn't provoke another ArrayIndexOutOfBoundsException so far with any of the other columns.
I then relaxed the above query by removing the ORDER BY clause and then a resultset was returned to me.
I was also able to retain the ORDER BY clause by adding a filter condition on "deviceId IS NOT NULL" which did not raise an ArrayIndexOutOfBounds exception anymore but ran into the ResourceLimitExceededException.
In summary, it looks to me as if the error might have to do with high cardinality dimensions that can contain null entries.

Hi @sascha-coenen, groupBy v2 supports array-based aggregation and hash-based aggregation. I'm wondering if this error relates to something else besides too high cardinality. Would you please try the same query with forceHashAggregation = true in your query context?

Hi. Sorry for reporting back so late.
I tried to test out what you proposed but I wasn't able to reproduce the issue anymore. I don't think that we made any changes to our setup. Perhaps this was caused by some ephemeral situation like segment distribution or something.
If this exception ever resurfaces I will definitely try out your suggestion. Sorry for having posted a non-reproducible bug. At the time the exception showed up deterministically.

This might be an issue with the merge process that uses the OffheapIncrementalIndex.
When the latter is initialized without any metrics (which is what your query seems to do), it fails on ArrayIndexOutOfBoundsException due to a bug in OffheapIncrementalIndex.
Checkout PR #10001 which solved this issue. The main purpose of this PR is performance improvements (nearly doubles the ingestion throughput), but it so happens that an added test in this PR discovered this bug and fixed it.


Failed to load homepage due to an error.

Steps to reproduce
Visit the homepage.
Expected result
The site should load lists of repositories.
Actual result
The page is stuck with the dimmer, and the lists are not being loaded.
Additional Information
Please see and investigate the console error.

Fixed in https://github.com/rhanmiano/the-starred-ph/pull/28


KeepAliveHandle.release() should not be deprecated, or a better-named alternative should be introduced

Use case
In 3.3.0, KeepAliveHandle.release() was deprecated (see #108384).
However, in some situations, it makes sense to just create a single KeepAliveHandle for the entire lifecycle of an Element, and then just dispose() it once when the applicable Element is disposed. Then, in deactivate, simply call release on the KeepAliveHandle. This is the intended behavior as documented at https://api.flutter.dev/flutter/widgets/KeepAliveNotification-class.html and https://api.flutter.dev/flutter/widgets/KeepAliveHandle-class.html.
Proposal
Seeing as the KeepAliveHandle docs indicate it can be manually triggered without a need for disposal (which makes sense), this behavior should be preserved and not deprecated.
The creation of a new method equivalent to release (but perhaps with a more declarative name) or removing the deprecation status on release would solve this. I'd be happy to open a PR for this.
Suggested new method name: removeKeepAlive. This name does not imply it is disposing nor releasing any resources. In addition, documentation can be added to this new method that indicates dispose must be called later on.
class KeepAliveHandle extends ChangeNotifier {
  // ...

  /// Trigger the listeners to indicate that the widget
  /// no longer needs to be kept alive. A widget can be marked as needing to be
  /// kept alive again with [KeepAliveNotification.dispatch].
  ///
  /// *This method does not call [dispose].* When the handle is not needed
  /// anymore, it must be [dispose]d regardless of whether notifying listeners.
  void removeKeepAlive() {
    notifyListeners();
  }

  // ...
}

Hi @GregoryConrad, thanks for filing this proposal.

However, in some situations, it makes sense to just create a single KeepAliveHandle for the entire lifecycle of an Element, and then just dispose() it once when the applicable Element is disposed

Can you share such a situation for our reference?

@danagbemava-nc Sure. First off, it'd make implementations like AutomaticKeepAliveClientMixin much easier because you wouldn't need to do all sorts of null checks and asserts all over; you'd just need a single handle ??= KeepAliveHandle(); before you dispatch a notification. Further, you would only need to call a simple handle?.removeKeepAlive()/handle?.dispose() when appropriate.
(Wasn't planning on changing the implementation of AutomaticKeepAliveClientMixin in my PR, but I suppose I could for maintainability reasons since it is certainly on the confusing side right now, considering what it could be.)
But also, I ran into this issue when working on some code that is React hooks-esque. It is exceedingly difficult to deal with mutating the handle (between null and back to an object) when working in a function that is designed to not have side effects.
Finally, with release deprecated as-is, the Listenable handle is essentially good for just a one-time use. From a design standpoint, this doesn't quite make as much sense because:

Listenable is only fired once on dispose. Probably would make more sense to just use a different mechanism entirely that just has a dispose in this case, but:
KeepAliveNotification consumes a Listenable handle (which doesn't have to be a KeepAliveHandle) that can fire multiple times to indicate a remove of a keep alive and allows reuse of the listener. Because of this, why does KeepAliveHandle` not provide this intended functionality?

Thanks for the details. Labeling as a proposal based on the info shared above


[move-prover] Documentation generator.

This PR provides the initial implementation of a documentation generator for Move, including declarations, specifications, and implementations.
The generators produces markdown files which are tailored to work on github.  For a description of the generator, see language/move-prover/docgen/README.md. For an example of a final result, you can take a look at the generated doc here which is part of a baseline test for this PR.
Motivation
Beautiful specs.
Have you read the Contributing Guidelines on pull requests?
Yes
Test Plan
New tests.
Related PRs
NA

This is unreal!!!

Closes #3924

@bors-libra r=sblackshear

:pushpin: Commit 2ae4ea2 has been approved by sblackshear

:hourglass: Testing commit 2ae4ea2932009dd22ee4f6e09a8b128b9b076c04 with merge 959b80ef2fe9d319d9c73257ebfe33f19e75c5f9...

CC @JoelMarcey who I think will be pumped about this.

Indeed I am pumped about this @sblackshear 🙂
This is amazing @wrwg -- I won't be able to review the PR in detail until this afternoon, but in no way would I block landing this. I can't wait to either test the PR locally or run this after it is committed.

CC @JoelMarcey who I think will be pumped about this.

Indeed I am pumped about this @sblackshear 🙂
This is amazing @wrwg -- I won't be able to review the PR in detail until this afternoon, but in no way would I block landing this. I can't wait to either test the PR locally or run this after it is committed.

I'm going to land it soon but we can easily tweak the output later. There are also various flags to play with different presentation styles.

:sunny: Test successful - checks-actions_land_blocking_test, checks-circle_commit_workflow
Approved by: sblackshear
Pushing 959b80ef2fe9d319d9c73257ebfe33f19e75c5f9 to master...

:eyes: Test was successful, but fast-forwarding failed: 422 Update is not a fast forward

@bors-libra r=sblackshear

:pushpin: Commit 7e28901 has been approved by sblackshear

:hourglass: Testing commit 7e28901dbe0b23cca4ee7926dddae5f6e7592ece with merge b0622d62e62ccb265b394b1f76ade7e0abddb09f...

:broken_heart: Test failed - checks-circle_commit_workflow

@bors-libra retry

:hourglass: Testing commit 7e28901dbe0b23cca4ee7926dddae5f6e7592ece with merge 317966efb1007eb1afa9716e0b56c7508fc16727...

@wrwg What was the exact command string that you used to generate https://github.com/wrwg/libra/blob/docgen/language/move-prover/docgen/tests/sources/libra.spec_inline.md ?

:sunny: Test successful - checks-actions_land_blocking_test, checks-circle_commit_workflow
Approved by: sblackshear
Pushing 317966efb1007eb1afa9716e0b56c7508fc16727 to master...

@wrwg What was the exact command string that you used to generate https://github.com/wrwg/libra/blob/docgen/language/move-prover/docgen/tests/sources/libra.spec_inline.md ?

Now that it landed, you can do
cargo run -p move-prover -- --docgen --doc-include-impl=true --output=doc.md --search-path=language/move-prover/tests/sources/stdlib/modules language/move-prover/docgen/tests/sources/libra.move

... to reproduce the content above in ./doc.md. There is also a little user guide.
And this directory contains the output of three different flag settings for the generator for comparison (and baseline testing).
There are currently no Move sources prepped for documentation apart of that test example of an outdated and modified version of libra.move used above.

Ah - I didn't have the full path to the source file. That was my problem.
Saw the user guide, which is what helped me get started testing 👍


CitrusTest does not fail if assertEquals fails

A simple test that should fail result in a success for Citrus.
public class TestTest extends JUnit4CitrusTestRunner {

  @Test
  @CitrusTest
  public void test() {
    assertEquals("a", "b");
  }

}

Result output
18:41:55,110 INFO         citrus.Citrus|
18:41:55,111 INFO         citrus.Citrus|  TestTest.test .................................................. SUCCESS
18:41:55,111 INFO         citrus.Citrus|
18:41:55,111 INFO         citrus.Citrus| TOTAL:	1
18:41:55,112 DEBUG        citrus.Citrus| SKIPPED:	0 (0.0%)
18:41:55,112 INFO         citrus.Citrus| FAILED:	0 (0.0%)
18:41:55,112 INFO         citrus.Citrus| SUCCESS:	1 (100.0%)
18:41:55,112 INFO         citrus.Citrus|
18:41:55,112 INFO         citrus.Citrus|

Yes, this is misleading. However you are not using any Citrus test action here. So from Citrus point of view everything is ok. The JUnit test case should fail as expected with respective error reports though.
I will have a look how we can transmit the error to Citrus although the error is out of Citrus scope here.

@christophd maybe you can use some kind of Interceptor here

Also see #287 which is related to this issue


TypeError when trying to access messages on result

Hello, I'm trying to access the messages on the result and it fail when I define the schema using the block syntax for a required filled attribute.
I'm using ruby 2.4.1p111 On OSX Darwin 16.7.0 Darwin Kernel Version 16.7.0
I didn't have much time to debug it. Below there's and example of the problem, the schemas are a bit different. On the failing one, I use a logic predicate to allow int or string.
It's me the problem?
Working schema:
work = Dry::Validation.Schema do
  required(:nested_schema).schema do
    required(:code).filled(:str?)
  end
end

work.({}).messages
=> {:nested_schema=>["is missing"]}

Failing schema:
doesnt_work = Dry::Validation.Schema do
  required(:nested_schema).schema do
    required(:code).filled { str? | int? }
  end
end

doesnt_work.({}).messages
TypeError: no implicit conversion of Symbol into Integer
	from ($HOME)/Development/dry-validation/lib/dry/validation/message_set.rb:113:in `[]'
	from ($HOME)/Development/dry-validation/lib/dry/validation/message_set.rb:113:in `block in initialize_placeholders!'
	from ($HOME)/Development/dry-validation/lib/dry/validation/message_set.rb:106:in `each'
	from ($HOME)/Development/dry-validation/lib/dry/validation/message_set.rb:106:in `reduce'
	from ($HOME)/Development/dry-validation/lib/dry/validation/message_set.rb:106:in `initialize_placeholders!'
	from ($HOME)/Development/dry-validation/lib/dry/validation/message_set.rb:27:in `initialize'
	from ($HOME)/Development/dry-validation/lib/dry/validation/message_set.rb:16:in `new'
	from ($HOME)/Development/dry-validation/lib/dry/validation/message_set.rb:16:in `[]'
	from ($HOME)/Development/dry-validation/lib/dry/validation/message_compiler.rb:36:in `call'
	from ($HOME)/Development/dry-validation/lib/dry/validation/result.rb:53:in `message_set'
	from ($HOME)/Development/dry-validation/lib/dry/validation/result.rb:41:in `messages'
	from (irb):6

node variable inside the while block result in empty array and it fail when trying to do node[key]
#file dry-validation/lib/dry/validation/message_set.r:105
      def initialize_placeholders!
        @placeholders = paths.reduce({}) do |hash, path|
          curr_idx = 0
          last_idx = path.size - 1
          node = hash

          while curr_idx <= last_idx do
            key = path[curr_idx]
            node = (node[key] || node[key] = curr_idx < last_idx ? {} : [])
            curr_idx += 1
          end

          hash
        end
      end

So far I've found that paths variable for the working schema is:
paths => [[:nested_schema]]

and for the failing schema is
paths => [[:nested_schema], [:nested_schema, :code]]

I'm going to keep searching for a solution later, for now I'll change the schema definition to avoid the exception.
Awesome library!

I have the same problem with the following schema:
schema = Dry::Validation.Schema do
  required(:attributes).schema do
    optional(:text) { int? | none? }
  end
end

schema.({}).messages
TypeError: no implicit conversion of Symbol into Integer

But in my case, it's possible to rewrite it as:
schema = Dry::Validation.Schema do
  required(:attributes).schema do
    optional(:text).maybe(:int?)
  end
end

Posted it to https://github.com/dry-rb/dry-schema/issues/26

@flash-gordon how did you resolve it? should I use latest version?

@jaswinder97 yes you should


example code does not work on codepen

https://codepen.io/wesbos/pen/EPLVMv?editors=0110
Nothing renders when you visit the link on chrome and firefox

Can you explain more what OS you are on. It works on both chrome and firefox on my system. Thanks!

Hello The permission for webcam was blocked but when i allowed the code worked


announcement banner for the new site of fortran-lang.org

As We are planning to finish the migration by end of next week. we would like to add a banner to the current page to make visitors aware of the upcoming migration.
Once we migrated to the sphinx based webpage this repository will be available at the default GH pages URL https://fortran-lang.github.io/fortran-lang.org and we will create a banner on the new webpage referencing the old repository in case somebody finds something missing.
Preview available at https://fortran-lang.org/pr/418/
Thanks and Regards,
Henil Shalin Panchal
CC @awvwgk

#build_preview

#build_preview

#build_preview

@awvwgk , I did that by mistake , can you please revert it.
Thanks and Regards,
Henil Shalin Panchal

#delete_preview


Fix: Issues with yanked pkg types-setuptools

Closes #199

Tysm @klieret for the fix! Makes sense - good way to catch any easy replacements that need to be there. Merged!


feat(proxyBuffers): Add app-level proxy buffer config options

Fixes #293
Alternative to #307
Some credit goes to @Anichale for getting the ball rolling on this. I'm just taking it over the finish line.
cc @jdumars you also have mentioned needing this feature somewhat urgently, so if I can ask you to verify this meets your needs, that would be great!

Codecov Report

Merging #323 into master will increase coverage by 1%.
The diff coverage is 100%.

@@          Coverage Diff           @@
##           master    #323   +/-   ##
======================================
+ Coverage   55.69%   56.7%   +1%
======================================
  Files           6       6
  Lines         386     395    +9
======================================
+ Hits          215     224    +9
  Misses        151     151
  Partials       20      20

Impacted Files
Coverage Δ

nginx/config.go
56.86% <ø> (ø)
:white_check_mark:

model/model.go
48.59% <100%> (+2.25%)
:white_check_mark:

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 ea19e45...25fa16d. Read the comment docs.

I've been trying to test this with the commented-out service_annotations key in router's values.yaml, but I don't see my annotations being templated correctly into the deployed service. Did we break this, or am I testing wrong?

It appears that the annotations will only work in this case if put into the top-level values.yaml in the overall Workflow chart.

I set values via fetching down the latest dev workflow chart (resolved to v2.11.1-dev-20170301202706-sha.70ccd31) and modified workflow/charts/router/values.yaml with the following relevant section:
service_annotations:
  router.deis.io/nginx.proxyBuffers.number: "10"
  router.deis.io/nginx.proxyBuffers.size: "5k"
  router.deis.io/nginx.proxyBuffers.busySize: "10k"
  router.deis.io/connectTimeout: "35s"

Chart installation was successful.  Created and deployed a test app hi (from deis/example-go) and see the following values:
	server {
		listen 8080;
		server_name ~^hi\.(?<domain>.+)$;
		server_name_in_redirect off;
		port_in_redirect off;
		set $app_name "hi";

		vhost_traffic_status_filter_by_set_key hi application::*;

		location / {
			proxy_buffering off;
			proxy_buffers 8 4k;
			proxy_busy_buffers_size 8k;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $remote_addr;
			proxy_set_header X-Forwarded-Proto $access_scheme;
			proxy_set_header X-Forwarded-Port $forwarded_port;
			proxy_redirect off;
			proxy_connect_timeout 30s;
			proxy_send_timeout 1300s;
			proxy_read_timeout 1300s;
			proxy_http_version 1.1;
			proxy_set_header Upgrade $http_upgrade;
			proxy_set_header Connection $connection_upgrade;
			proxy_pass http://<IP_ADDRESS>:80;
		}

	}

Note how the values above don't match the customized values intended from values.yaml.  Also, if helpful:
$ k get svc -n hi -o yaml
apiVersion: v1
items:
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      router.deis.io/domains: hi
      router.deis.io/maintenance: "False"
      router.deis.io/ssl.enforce: "False"
    creationTimestamp: 2017-03-03T18:29:50Z
    labels:
      app: hi
      heritage: deis
      router.deis.io/routable: "true"
    name: hi
    namespace: hi
    resourceVersion: "1610125"
    selfLink: /api/v1/namespaces/hi/services/hi
    uid: 63681d6b-003f-11e7-bd36-42010a800074
  spec:
    clusterIP: <IP_ADDRESS>
    ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: 5000
    selector:
      app: hi
      heritage: deis
      type: web
    sessionAffinity: None
    type: ClusterIP
  status:
    loadBalancer: {}
kind: List
metadata: {}
resourceVersion: ""
selfLink: ""

When testing this, I have only succeeded at setting one annotation. More than one (or a specific one?) leads to a templating error from helm. I don't know the specific problem yet but I'll dig further.

And this probably isn't specific to this PR, but I could not get service_annotations to be created if I modified only the values.yaml in the router chart. Only the top-level values.yaml in the overall Workflow chart is respected.

Current problem for me: using helm v2.2.1 and the deis-dev Workflow chart, I edit workflow/values.yaml to contain this:
  service_annotations:
    router.deis.io/nginx.proxyBuffers.number: "10"

This leads to an error:
$ helm install --namespace=deis ./workflow/
Error: release eloping-molly failed: Service in version "v1" cannot be handled as a Service: [pos 107]: json: expect char '"' but got char '1'

If I set all the values in the router/values.yaml, I can install the chart. But the nginx.conf doesn't reflect those values, even after I rebuilt from the updated commit.

This appears to be because the root-level values.yaml in the Workflow "umbrella" chart has an empty service_annotations entry. This is respected and the corresponding value in router/values.yaml is ignored.
If I comment out service_annotations completely in the root-level values.yaml, I get template parsing errors from my changes to router/values.yaml, as noted above:
$ helm upgrade edgy-goat ./workflow/
Error: UPGRADE FAILED: [pos 196]: json: expect char '"' but got char '1'

@mboersma @vdice let me clarify what's been going on in terms of why you guys have had some difficulty...
Prior to this morning, this PR was titled "Add app-level proxy buffer config options." "app level" were the operative words. Adding annotations to the router's own deployment or service doesn't effect the addition of those annotations to the "routable services" (i.e. services for individual applications).
An aside: Adding annotations to the router's deployment effects "global" / router-level configuration changes. Adding annotations to the router's service mainly effects whatever load balancer might have been provisioned for the router (depends on what cloud provider, if any, is in play). See https://github.com/deis/router/pull/327 for an example of that being used to change an ELB setting if on AWS.
Ok... back to the story at hand... this PR was aimed only at app-level configuration before this morning. Since the deis CLI and the controller have no specific support for managing these settings, the only way to apply them to any given application would have been to manually apply these annotations to a given application's service using kubectl edit.
In a separate thread with @jdumars, I've learned that an important customer wants to set proxy number, size, etc. globally (i.e. at the router-level) and have that apply to all applications. That struck me as heavy-handed, because I think the conditions that trigger someone to tweak those settings probably don't occur often.
So what I've done now is spent most of today updating this PR so that all of these settings can be managed globally, but also overridden on an app-by-app basis if so desired... hopefully that makes everyone happy. 😄 (I've changed the PR's name accordingly to reflect this, btw.)
So... just to ensure we're all on the same page now. To set router-level configuration, add annotations to the router's deployment. This can allegedly be done by editing values.yaml, although I have never tried it personally. To override any such settings at the application level, you need to apply the annotations directly to the application service(s) in question using kubectl edit.
Slack me with any follow-up questions.

And based on my previous comment, I'm wondering if https://github.com/deis/router/issues/325 is perhaps not actually an issue, but rather a symptom of this misunderstanding.

I'm wondering if #325 is perhaps not actually an issue

It is an issue, in that there doesn't appear to be a way to set deployment_annotations or service_annotations successfully otherwise. It's not an issue created by this PR though--looks to have been broken before that.
PR #328 seems to fix it, but I'm not sure if it might cause other subtle issues by blindly quoting all annotation values.

@mboersma

I'm not sure if it might cause other subtle issues by blindly quoting all annotation values

See my comment on that: https://github.com/deis/router/pull/328#discussion_r104499193

In conjunction with #328, I rebuilt and re-tested this and see the deployment annotations making it all the way through to the main nginx.conf section. I'll test with app service-specific annotations next.

^^ double-confirming that deployment annotations work for me as well.
><> cat workflow/values.yaml | grep proxyBuffers
    router.deis.io/nginx.proxyBuffers.enabled: "true"
><> kd exec deis-router-2009517868-1f1pv cat /opt/router/conf/nginx.conf | grep proxy_buffering
                        proxy_buffering on;
                        proxy_buffering on;
                        proxy_buffering on;
                        proxy_buffering on;

I made annotations to app services and they do appear to override the more global defaults correctly inside nginx.conf.


JetBrains: Build Q3 roadmap, incl. Agent integration

Ideas:

autocomplete in the Terminal
ask #chat-jetbrains

The roadmap for the JetBrains plugin over the next ~6 weeks is going to focus on closing feature gaps with the VS Code extension, in particular with respect to autocomplete and onboarding.


[Run] App icons disappear or do not show up at all

ℹ Computer information

PowerToys version: v0.23.2
PowerToy Utility: Run
Running PowerToys as Admin: yes
Windows build number: 2004 build 19041.572

📝 Provide detailed reproduction steps (if any)

hit the hotkeys to open up the run prompt
run software

✔ Expected result
This should just open the application like it would if you started it normally.
❌ Actual result
The software doesn't show up with an icon.
Instead, it's just white and blank. Not only in the run prompt, also in the taskbar after it started.
📷 Screenshots

📑 Additional Context
So far, I only found some apps that show this behavior. I also tried reinstalling them but it does not work.
Apps I found so far:

several game launchers
teamspeak
shareX
all adobe products

When I open up their path folder, they all have icons and if I start them via my startmenu, it works fine.

Can you please try following and see if it fixes your issue :

Clear cache at %userprofile%/appdata/local/microsoft/powertoys/powertoys run/Cache
Restart powertoys.

If this still doesn't fix your issue can you please share logs at %userprofile%/appdata/local/microsoft/powertoys/powertoys run/ along with a snapshot of application properties? To do this, open folder containing application by pressing Ctrl+Shift+E in PT Run, right-click on shortcut and select properties.

I tried that and it sadly didn't change anything.
Just to give a bit more info. I noticed that this issue happens in both startmenu folders
where shortcuts are stored. So it doesn't matter if the app is in
%userprofile%/appdata/roaming/microsoft/windows/startmenu/programs/

or in:
C:/ProgramData/microsoft/windows/startmenu/programs/

I used Adobe After Effects 2020 for testing this and its properties looks like this:

My logs are here:
Logs.zip

Win32 app icons in PT Run are picked from the thumbnail shown on the top right corner of shortcut. The screenshot you shared shows that to be a blank icon.

I see. However, the icon is visible next to the name and it's the right one.
I also tried to "Switch Symbol..." and reselect it but it doesn't fix the issue.

I see. However, the icon is visible next to the name and it's the right one.
I also tried to "Switch Symbol..." and reselect it but it doesn't fix the issue.

I just tried that switching symbol (and then cleared image cache and restarted), but it changes to some random icon in PT Run. Seems like an issue with the underlying ThumbnailProvider API.

I tested a bit more and it seems like manually setting the symbol and clearing the image cache and restarting fixes the icon in the taskbar but not in PT Run. It's still white there but at least it's the right one in my taskbar now.
I wonder what's causing this tho because I never had this issue before I used PT Run. It seems like it messed up some of the icons when I ran the apps through it.

I tested a bit more and it seems like manually setting the symbol and clearing the image cache and restarting fixes the icon in the taskbar but not in PT Run. It's still white there but at least it's the right one in my taskbar now.
I wonder what's causing this tho because I never had this issue before I used PT Run. It seems like it messed up some of the icons when I ran the apps through it.

The taskbar issue is getting fixed because you are manually switching it to a new icon. And I doubt that PT Run is corrupting any icons. We don't modify any icons and instead use the thumbnails provided by shell API's.

@DAmNRelentless we need a way to repro this.  Right now, just like @somil55 stated, all we do is read data at startup, we don't write.

Is this still happening?  We've adjusted some work flows and haven't seen any more reports

Is this still happening?  We've adjusted some work flows and haven't seen any more reports

I recently reinstalled my whole OS because of a new SSD. After installing PowerToys on the new system, this issue doesn't appear anymore. Maybe it was the update or it was a problem in the OS.
Thanks a lot! I'll close this. :)

I recently reinstalled my whole OS because of a new SSD. After installing PowerToys on the new system, this issue doesn't appear anymore. Maybe it was the update or it was a problem in the OS.
Thanks a lot! I'll close this. :)

Clear cache at %userprofile%/appdata/local/microsoft/powertoys/powertoys run/Cache
Restart powertoys.

I recently encountered this issue when I installed a new browser, and uninstalled the old one. Can confirm that the solution from the 1st reply works.
PowerToys v0.49.1
W11 v22000.318


Document some of the statistics provided for time-varying parameters and recruitment

I got a question from Steve Barbeaux (@zandjyo) about the Parm_devs_detail output from r4ss. This is just a direct reporting of the table in Report.sso created by the code here:
https://github.com/nmfs-ost/ss3-source-code/blob/20ada0b8c994868e3c7851f655c8172be045f505/SS_write_report.tpl#L499-L537
However, there are some things I don't know about the output, such as

How do Rho and est_rho differ? Maybe Rho is the user-specified dev_autocorr parameter and est_rho is the resulting autocorrelation of the estimated parameters?
The D-W column is the Durbin-Watson statistic https://en.wikipedia.org/wiki/Durbin–Watson_statistic but I don't know how to interpret it.

The est_rho and Durbin-Watson columns are also output in the SPAWN_RECRUIT table but not yet reported by r4ss (as discussed in this forgotten issue from 2021: https://github.com/r4ss/r4ss/issues/478).

You are correct regarding rho:  Rho is the parameter value and est_rho is the post-run calculation of rho from the vector of devs.
Now that you found the Wikipedia article, you know as much about D-W as I do.   Values near 2 are have nil autocorrelation, values near 0 are high positive autocorr, values near 4 are highly negative autocorr.  The test statistic seems complex; article states that there is a R routine.

@iantaylor-NOAA do you think that we can close this issue with the updates to the documentation of report.sso?


feature request: add column

In editable rows and tables, you have add row, but in editible columns and tables, there is no add columns.
Love what you're doing with this. Thanks.

Pull requests are welcome :)


[BUG] v0.10.8 & Bitcoin Switch - it works only once!

Describe the bug
After a Telegram message from one user about problems with the LNURLDevice, I decided to check and updated the LNBits version. I did a server update, and indeed, after that, the device worked only once and did not work again. Even restarting the LNBits server didn't help me.
To Reproduce
Steps to reproduce the behavior:

Update to v0.10.8 (commit few ahead -  6bbebe0cee3c9f5aa3dbe90c76454f04f9dc14f3) by commands:
#!/bin/bash

set -ex

sudo runuser - lnbits <<__EOF__
set -ex

cd ~/lnbits
git pull
poetry self update
poetry install
__EOF__

echo "Update finished"

sudo systemctl restart lnbits

echo "LNBits restarted"

Try Bitcoin Switch device connected by websocket as LNURLDevice

Expected behavior
Every time after payment, the device should be triggered.
Desktop (please complete the following information):

LNbits version: 0.10.8, Commit version: 6bbebe0cee3c9f5aa3dbe90c76454f04f9dc14f3
Database SQLite

Additional context
I made logs and commented on them. I also deleted private information. I hope this helps.
May 26 10:47:29 fuckedbitcoin poetry[4115019]: 2023-05-26 10:47:29.80 | INFO | CLIENT-IP-VIEWER:0 - "GET /images/bitcoin-shop.png HTTP/1.1" 304
May 26 10:47:29 fuckedbitcoin poetry[4115019]: 2023-05-26 10:47:29.80 | INFO | CLIENT-IP-VIEWER:0 - "GET /image/nostrnip5.png HTTP/1.1" 304
May 26 10:47:29 fuckedbitcoin poetry[4115019]: 2023-05-26 10:47:29.81 | INFO | CLIENT-IP-VIEWER:0 - "GET /image/scrub.png HTTP/1.1" 304
May 26 10:47:29 fuckedbitcoin poetry[4115019]: 2023-05-26 10:47:29.81 | INFO | CLIENT-IP-VIEWER:0 - "GET /image/tpos.png HTTP/1.1" 304
May 26 10:47:29 fuckedbitcoin poetry[4115019]: 2023-05-26 10:47:29.82 | INFO | CLIENT-IP-VIEWER:0 - "GET /image/split-payments.png HTTP/1.1" 304
May 26 10:47:29 fuckedbitcoin poetry[4115019]: 2023-05-26 10:47:29.82 | INFO | CLIENT-IP-VIEWER:0 - "GET /image/lndhub.png HTTP/1.1" 304
May 26 10:47:29 fuckedbitcoin poetry[4115019]: 2023-05-26 10:47:29.82 | INFO | CLIENT-IP-VIEWER:0 - "GET /image/usermanager.png HTTP/1.1" 304
May 26 10:47:30 fuckedbitcoin poetry[4115019]: 2023-05-26 10:47:30.11 | INFO | CLIENT-IP-VIEWER:0 - "GET /api/v1/wallet HTTP/1.1" 200
May 26 10:47:30 fuckedbitcoin poetry[4115019]: 2023-05-26 10:47:30.44 | INFO | CLIENT-IP-VIEWER:0 - "GET /service-worker.js HTTP/1.1" 200

May 26 10:47:49 fuckedbitcoin poetry[4115019]: 2023-05-26 10:47:49.90 | INFO | CLIENT-IP-VIEWER:0 - "GET /api/v1/payments/sse?api-key=API-KEY HTTP/1.1" 200
May 26 10:48:16 fuckedbitcoin poetry[4115019]: 2023-05-26 10:48:16.12 | INFO | CLIENT-IP-VIEWER:0 - "GET /lnurldevice/api/v2/lnurl/SWITCH-ID?pin=12&amount=0.8&duration=1600 HTTP/1.1" 200
May 26 10:48:23 fuckedbitcoin poetry[4115019]: 2023-05-26 10:48:23.53 | INFO | CLIENT-IP-VIEWER:0 - "GET /lnurldevice/api/v1/lnurl/cb/mdWNEY9ABvGEj9etYgZiHM?amount=136000 HTTP/1.1" 200
May 26 10:48:26 fuckedbitcoin poetry[4115019]: 2023-05-26 10:48:26.10 | INFO | > got a payment notification
May 26 10:48:26 fuckedbitcoin poetry[4115019]: Task exception was never retrieved
May 26 10:48:26 fuckedbitcoin poetry[4115019]: future: <Task finished name='Task-354' coro=<wait_for_paid_invoices() done, defined at /home/lnbits/lnbits/lnbits/core/tasks.py:32> exception=AttributeError("'Payment' object has no attribute '_asdict'")>
May 26 10:48:26 fuckedbitcoin poetry[4115019]: AttributeError: 'Payment' object has no attribute '_asdict'

^^^^^^^^^^^ Here the Bitcoin Switch device was triggered ^^^^^^^^^^

vvvvvvvvvvvvvvvvvv Then it didn't work vvvvvvvvvvvvvvvvvvvvvvvvvvvv
May 26 10:48:49 fuckedbitcoin poetry[4115019]: ValueError: I/O operation on closed file
May 26 10:48:49 fuckedbitcoin poetry[4115019]: 2023-05-26 10:48:49.91 | ERROR | Exception: I/O operation on closed file
May 26 10:48:49 fuckedbitcoin poetry[4115019]: 2023-05-26 10:48:49.91 | ERROR | Exception in ASGI application
May 26 10:49:07 fuckedbitcoin poetry[4115019]: 2023-05-26 10:49:07.34 | INFO | OTHER-CLIENT-IP-VIEWER:0 - "GET /lnurldevice/api/v2/lnurl/SWITCH-ID?pin=12&amount=0.8&duration=1600 HTTP/1.1" 200
May 26 10:49:15 fuckedbitcoin poetry[4115019]: 2023-05-26 10:49:15.11 | INFO | CLIENT-IP-VIEWER:0 - "GET /api/v1/payments/sse?api-key=API-KEY HTTP/1.1" 200
May 26 10:49:22 fuckedbitcoin poetry[4115019]: 2023-05-26 10:49:22.60 | INFO | OTHER-VIEWER-CLIENT:0 - "GET /lnurldevice/api/v1/lnurl/cb/nppoLkqm2LGyAeWy8iLgq7?amount=136000&nonce=1685090962330 HTTP/1.1" 200
May 26 10:49:23 fuckedbitcoin poetry[4115019]: 2023-05-26 10:49:23.42 | INFO | > got a payment notification
May 26 10:50:05 fuckedbitcoin poetry[4115019]: 2023-05-26 10:50:05.59 | INFO | OTHER-CLIENT-IP-VIEWER:0 - "GET /lnurldevice/api/v2/lnurl/SWITCH-ID?pin=12&amount=0.8&duration=1600 HTTP/1.1" 200
May 26 10:50:13 fuckedbitcoin poetry[4115019]: 2023-05-26 10:50:13.09 | INFO | OTHER-VIEWER-CLIENT:0 - "GET /lnurldevice/api/v1/lnurl/cb/Ua6xnK2yWcfP2cXksB3vZH?amount=136000&nonce=1685091012908 HTTP/1.1" 200
May 26 10:50:13 fuckedbitcoin poetry[4115019]: 2023-05-26 10:50:13.77 | INFO | > got a payment notification

-------- I have restarted here... But the device doesn't work anyway --------------------
May 26 10:51:07 fuckedbitcoin systemd[1]: Stopped LNbits.
May 26 10:51:07 fuckedbitcoin systemd[1]: Started LNbits.
May 26 10:51:10 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:10.89 | INFO | Started server process [4115852]
May 26 10:51:10 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:10.89 | INFO | Waiting for application startup.
May 26 10:51:11 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:11.99 | INFO | ✔ All migrations done.
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.01 | SUCCESS | ✔ Access super user account at: http://<IP_ADDRESS>:5000/wallet?usr=ADMIN_ID
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.01 | INFO | Starting LNbits
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.01 | INFO | Version: 0.10.8
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.01 | INFO | Baseurl: http://<IP_ADDRESS>:5000/
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.01 | INFO | Host: <IP_ADDRESS>
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.01 | INFO | Port: 5000
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.01 | INFO | Debug: False
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.01 | INFO | Site title: FuckedBitcoin LNBits
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.01 | INFO | Funding source: LndRestWallet
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.01 | INFO | Data folder: ./data
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.01 | INFO | Git version: 6bbebe0cee3c9f5aa3dbe90c76454f04f9dc14f3
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.01 | INFO | Database: SQLite
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.01 | INFO | Service fee: 0.0
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.01 | WARNING | no certificate for lndrest provided, this only works if you have a publicly issued certificate
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.06 | INFO | ✔ Backend LndRestWallet connected and with a balance of<PHONE_NUMBER> msat.
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.09 | INFO | Application startup complete.
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.09 | INFO | Uvicorn running on http://<IP_ADDRESS>:5000 (Press CTRL+C to quit)
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.09 | INFO | Task: checking all pending payments (incoming=True, outgoing=True) of last 15 days
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.10 | INFO | Task: pending check finished for 0 payments (took 0.005 s)
May 26 10:51:12 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:12.10 | INFO | Task: expired invoice deletion finished (took 0.001 s)
May 26 10:51:13 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:13.25 | INFO | ('IPv6-Some-IP', 0) - "WebSocket /nostrrelay/T4agNGhq" [accepted]
May 26 10:51:13 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:13.25 | INFO | connection open
May 26 10:51:13 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:13.25 | INFO | ('IPv6-Some-IP', 0) - "WebSocket /nostrclient/api/v1/relay" [accepted]
May 26 10:51:13 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:13.25 | INFO | connection open
May 26 10:51:13 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:13.37 | INFO | ('CANDY-BITCOIN-SWITCH-IP', 0) - "WebSocket /api/v1/ws/SWITCH-ID" [accepted]
May 26 10:51:13 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:13.37 | INFO | connection open
May 26 10:51:21 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:21.03 | INFO | ('<IP_ADDRESS>', 35446) - "WebSocket /nostrclient/api/v1/relay" [accepted]
May 26 10:51:21 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:21.03 | INFO | connection open
May 26 10:51:21 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:21.04 | INFO | Connected to 'nostrclient' websocket
May 26 10:51:21 fuckedbitcoin poetry[4115852]: asyncio.exceptions.CancelledError
May 26 10:51:21 fuckedbitcoin poetry[4115852]: During handling of the above exception, another exception occurred:
May 26 10:51:21 fuckedbitcoin poetry[4115852]: RuntimeError: The connection pool was closed while 1 HTTP requests/responses were still in-flight.
May 26 10:51:21 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:21.10 | ERROR | Exception: The connection pool was closed while 1 HTTP requests/responses were still in-flight.
May 26 10:51:21 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:21.10 | INFO | OTHER-CLIENT-IP-VIEWER:0 - "GET /lnurldevice/api/v2/lnurl/SWITCH-ID?pin=12&amount=0.8&duration=1600 HTTP/1.1" 500
May 26 10:51:21 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:21.10 | ERROR | Exception in ASGI application
May 26 10:51:38 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:38.39 | WARNING | Could only fetch one Bitcoin price.
May 26 10:51:38 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:38.42 | INFO | OTHER-VIEWER-CLIENT:0 - "GET /lnurldevice/api/v2/lnurl/SWITCH-ID?pin=12&amount=0.8&duration=1600 HTTP/1.1" 200
May 26 10:51:43 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:43.91 | INFO | OTHER-VIEWER-CLIENT:0 - "GET /lnurldevice/api/v1/lnurl/cb/gUt83qgTRd6nwHZjdzBKNz?amount=136000&nonce=1685091103735 HTTP/1.1" 200
May 26 10:51:44 fuckedbitcoin poetry[4115852]: 2023-05-26 10:51:44.69 | INFO | > got a payment notification
May 26 10:51:44 fuckedbitcoin poetry[4115852]: Task exception was never retrieved
May 26 10:51:44 fuckedbitcoin poetry[4115852]: future: <Task finished name='Task-354' coro=<wait_for_paid_invoices() done, defined at /home/lnbits/lnbits/lnbits/core/tasks.py:32> exception=AttributeError("'Payment' object has no attribute '_asdict'")>
May 26 10:51:44 fuckedbitcoin poetry[4115852]: AttributeError: 'Payment' object has no attribute '_asdict'
May 26 10:52:18 fuckedbitcoin poetry[4115852]: 2023-05-26 10:52:18.29 | WARNING | Could only fetch one Bitcoin price.
May 26 10:52:18 fuckedbitcoin poetry[4115852]: 2023-05-26 10:52:18.31 | INFO | CLIENT-IP-VIEWER:0 - "GET /lnurldevice/api/v2/lnurl/SWITCH-ID?pin=12&amount=0.8&duration=1600 HTTP/1.1" 200
May 26 10:52:20 fuckedbitcoin poetry[4115852]: 2023-05-26 10:52:20.17 | INFO | CLIENT-IP-VIEWER:0 - "GET /lnurldevice/api/v1/lnurl/cb/Fpu6fs38PKm9Gj3Factwct?amount=136000 HTTP/1.1" 200
May 26 10:52:20 fuckedbitcoin poetry[4115852]: 2023-05-26 10:52:20.94 | INFO | > got a payment notification
May 26 10:53:20 fuckedbitcoin poetry[4115852]: 2023-05-26 10:53:20.99 | ERROR | lost connection to lnd invoices stream: 'peer closed connection without sending complete message body (incomplete chunked read)', retrying in 5 seconds
May 26 10:54:19 fuckedbitcoin poetry[4115852]: 2023-05-26 10:54:19.02 | INFO | CLIENT-IP-VIEWER:0 - "GET /lnurldevice/api/v2/lnurl/SWITCH-ID?pin=12&amount=0.8&duration=1600 HTTP/1.1" 200
May 26 10:54:22 fuckedbitcoin poetry[4115852]: 2023-05-26 10:54:22.80 | INFO | CLIENT-IP-VIEWER:0 - "GET /lnurldevice/api/v1/lnurl/cb/4WkBgUXU3cdYNULG2eoVbR?amount=136000 HTTP/1.1" 200
May 26 10:54:28 fuckedbitcoin poetry[4115852]: 2023-05-26 10:54:28.81 | INFO | > got a payment notification
May 26 10:54:59 fuckedbitcoin poetry[4115852]: 2023-05-26 10:54:59.19 | INFO | CLIENT-IP-VIEWER:0 - "GET /lnurldevice/?usr=6668afec4a424646b8f690711cb1bb91 HTTP/1.1" 200
May 26 10:54:59 fuckedbitcoin poetry[4115852]: 2023-05-26 10:54:59.78 | INFO | CLIENT-IP-VIEWER:0 - "GET /api/v1/currencies HTTP/1.1" 200
May 26 10:54:59 fuckedbitcoin poetry[4115852]: 2023-05-26 10:54:59.80 | INFO | CLIENT-IP-VIEWER:0 - "GET /lnurldevice/api/v1/lnurlpos HTTP/1.1" 200
May 26 10:55:00 fuckedbitcoin poetry[4115852]: 2023-05-26 10:55:00.40 | INFO | CLIENT-IP-VIEWER:0 - "GET /service-worker.js HTTP/1.1" 200
May 26 10:55:02 fuckedbitcoin poetry[4115852]: 2023-05-26 10:55:02.87 | INFO | ('CLIENT-IP-VIEWER', 0) - "WebSocket /api/v1/ws/SWITCH-ID" [accepted]
May 26 10:55:02 fuckedbitcoin poetry[4115852]: 2023-05-26 10:55:02.87 | INFO | connection open
May 26 10:55:07 fuckedbitcoin poetry[4115852]: 2023-05-26 10:55:07.95 | INFO | CLIENT-IP-VIEWER:0 - "GET /lnurldevice/api/v2/lnurl/SWITCH-ID?pin=12&amount=0.8&duration=1600 HTTP/1.1" 200
May 26 10:55:09 fuckedbitcoin poetry[4115852]: 2023-05-26 10:55:09.23 | INFO | CLIENT-IP-VIEWER:0 - "GET /lnurldevice/api/v1/lnurl/cb/QAvEuyoyRuBA5EMXUchFZd?amount=136000 HTTP/1.1" 200
May 26 10:55:10 fuckedbitcoin poetry[4115852]: 2023-05-26 10:55:10.14 | INFO | > got a payment notification
May 26 10:55:34 fuckedbitcoin poetry[4115852]: 2023-05-26 10:55:34.52 | WARNING | Could only fetch one Bitcoin price.
May 26 10:55:34 fuckedbitcoin poetry[4115852]: 2023-05-26 10:55:34.54 | INFO | CLIENT-IP-VIEWER:0 - "GET /lnurldevice/api/v2/lnurl/SWITCH-ID?pin=12&amount=0.8&duration=1600 HTTP/1.1" 200
May 26 10:55:35 fuckedbitcoin poetry[4115852]: 2023-05-26 10:55:35.62 | INFO | CLIENT-IP-VIEWER:0 - "GET /lnurldevice/api/v1/lnurl/cb/4bukLWQr9eEuFQ8fq2zzBG?amount=136000 HTTP/1.1" 200
May 26 10:55:38 fuckedbitcoin poetry[4115852]: 2023-05-26 10:55:38.29 | INFO | > got a payment notification

^^^^^^^^^^^^^^^^^^ But the device doesn't work anyway ----------------------

Sorry! It seems to be my problem!
There was a traffic jam! The engine was running, but the candy was not falling! Now I asked my wife to check and she shook the candy dispenser. It's very unusual that everything coincided like this!
Perhaps there is a problem that Axel described earlier - that a reboot is needed to make everything work. But at that moment I had a blockage, and the purity of the experiment was violated. Now everything works! I checked two times now.


Unexpected behaviour for optional conversion

Hi I'm getting some unexpected behaviour for the following parser printer logic where I'm trying to make a conversion between an optional dictionary and an empty dictionary (dictionary with values maps to dictionary with values, nil maps to empty dictionary, and the reverse) For completeness the full code of my parser printer is below. The problematic conversion is as follows:
.convert(
    apply: { $0 ?? [:] }, // here $0 is an optional dictionary, maps to empty dictionary when nil
    unapply: { $0.isEmpty ? nil : $0 } // here $0 is a dictionary, maps to nil when empty
)

.convert creates an AnyConversion using the following initializer https://github.com/pointfreeco/swift-parsing/blob/c5adbb6e0cc09ac85009417d28f712883dd97edc/Sources/Parsing/Conversions/AnyConversion.swift#L135-L149
Here unapply will fail for an empty dictionary since it will return nil (by design) but then throws a ConvertingError() instead of returning nil.
The nil value is needed to be able to also walk to Optionally path when printing in my full example below
let quotedStringParser = ParsePrint {
    "\"".utf8
    PrefixUpTo("\"".utf8).map(.string)
    "\"".utf8
}

let attributeParser = ParsePrint {
    PrefixUpTo("=".utf8).map(.string)
    "=".utf8
    quotedStringParser
}

let attributesParser = Many {
    attributeParser
} separator: {
    Whitespace(1..., .horizontal)
}.map(
    .convert(
        apply: { attributes in
            attributes.reduce(into: [:]) { $0[$1.0] = $1.1 }
        }, unapply: { dictionary in
            dictionary.map { $0 }
        }
    )
)

let tagNameParser = ParsePrint {
    From<Conversions.UTF8ViewToSubstring, Prefix<Substring>>(.substring) {
        Prefix { $0.isLetter }
    }.map(.string)
}

let tagHeadParser = ParsePrint {
    tagNameParser
    Optionally {
        Whitespace(1..., .horizontal)
        attributesParser
    }.map(
        .convert( // Here's the problematic conversion
            apply: { $0 ?? [:] },
            unapply: { $0.isEmpty ? nil : $0 }
        )
    )
    Whitespace(.horizontal)
}

Hi @JaapWijnen! I think this is more of a quirk of optional promotion in the language, and less of a bug in Parsing. You're using a convenience version of .convert that is explicitly designed to use optionality to fail, which means you're dealing with a double-optional, which can behave in confusing ways.
There are a few ways to get things working again.

The quickest would be to make things explicit, probably easiest with Optional.some and .none instead of nil:
-unapply: { $0.isEmpty ? nil : $0 }
+unapply: { $0.isEmpty ? .some(.none) : $0 }

But really we would recommend avoiding .convert, as it uses erasure and is slow. Instead, you could define a custom Conversion by conforming to the protocol.

Assuming this isn't a bug, can I close it out or convert it to a discussion?

Ah! I missed that. Thanks for pointing it out. That makes a lot of sense. Yup I'll close it!


Plans for a next 2.x release?

Hello, earlier this year I reported #460, which was fixed very quickly. Thanks!
I would like to bundle this fix into our release versions of pygame-ce, but we normally use release versions of dependencies, rather than intermediate git commits.
Therefore, I'm writing to request a new release. Thanks for maintaining this library!

I'll bump the priority for this, thanks for the feedback!

This has been released!
https://github.com/libsdl-org/SDL_image/releases/tag/release-2.8.3


Strange prediction from RAMS

I've passed the first sample from the probav dataset through the RAMS network and get an odd result, is this correct?

Yes, I haven't finished cleaning up my training script but the grid is caused by the PixelShuffle layers and the input/output being similar is due to the global residual branch. Seems about right.

Actually that's not correct, the sr output should be of shape (1, 384, 384). I think it's because you used t=28. They use t=9 in the paper/code. I referenced their tensorflow implementation for some of the code for the temporal reduction block and I noticed it only plays nicely with some values of t.

I get the same result for t=9

Interesting, I thought my test checked for this. I'll be able to look at it later today. Thanks for trying it out.

Ok so I'm unable to replicate the output of (1, 2, 384, 384) for t=9, however this is true for t=28. In the paper they set t=9 and select 9 images randomly from the set of LR images. The t and kernel size values are used to compute how many temporal reduction blocks are used with the equation  np.floor((channels-1)/(kernel_size-1)-1).astype(int) here from their tensorflow implementation.
If you plug t=9 and kernel_size=3 into that equation (minus the np.floor) you get 3 blocks, however if you use t=28 you get 12.5 blocks which I believe is causing the output dims to be different.
I did some quick maths and looks like it works for t = [9, 11, 13, 15, 17, ...], where t>=9 I added some assert statements in the model to ensure this with a warning and some suggested values for t. I also updated the tests. Let me know if this works for you.
On a side note, I'll be adding some more models soon which aren't constrained by t>=9.

See #7

Hmm I get this issue for every t I try.  Please see https://github.com/robmarkcole/scratchpad/blob/main/rams-quickstart.ipynb

Seems like it's working fine. In your notebook when you print sr.shape you got (1,1,384,384) which is the correct shape (b,c,h,w). It would only be wrong if the channel dim was not equal to your input channels.

I do sometimes get (1,2,384,384) even for single channel..

This expected though, no? RAMS uses nn.PixelShuffle to increase the resolution which creates the pattern you're seeing. It's also not a trained model so I would expect it to not have learned how to upsample properly.

If you simply upsample using a single PixelShuffle layer with scale_factor=3:
import einops
import torch.nn as nn
from torchrs.datasets import PROBAV

dataset = torchrs.datasets.PROBAV(split="train", band="RED")
sample = dataset[0]
lr = sample["lr"][:9]
lr = einops.rearrange(lr, "t c h w -> (t c) h w")
sr = nn.PixelShuffle(3)(lr)
hr = sample["hr"]

And then plot sr and hr you get:

And on closer inspection of the top left corner of the sr image.

Of course, RAMS has multiple PixelShuffle ops and they are summed together so I would expect the checkerboard artifacts to be exacerbated like you are seeing.

It's also not a trained model how did I overlook this.. Thanks!


New menu (invoked by pressing ALT) conflicts with internal todoist's "edit task" function

OS Linux Mint 20 Cinnamon (Based on Ubuntu 20.04)
Cinnamon 4.6.7

In todoist you can edit tasks by:

clicking on them. It open a big full-screen window with a lot of options (subtasks, comments, activity).
Alt-clicking on them. This allows to quickly edit the name and some other major characteristics (priority, date)

Unfortunately, the creation of the menu (invoked by pressing ALT) in todoist-linux, conflicts with the second option of alt-clicking. Every time I alt-click a task, the menu opens and doesn't go away until I press Alt at some point again.

Good catch @mikkovedru, Thanks.
I didn't know about alt-click type of editing. It sounds pretty nice.
I hope it can be fixed quickly.

Maybe @ceiphr could help fixing this issue?

Nice catch. This weekend I can look into this issue.

I can confirm this issue is reproducible. It is also an issue on Todoist's Official snap.
IIRC Alt is a hard-coded toggle in electron.
I've filed an issue on https://github.com/electron/electron to prevent the toggle on mouse click: https://github.com/electron/electron/issues/26149
AFAIK, our only option for now is to offer a setting in the config to disable zoom in/out/reset and the alt menu. Should we take that approach or wait for an upstream fix (which will probably take a while, given how popular electron is)?

The response https://github.com/electron/electron/issues/26149#issuecomment-716075800 there says that we should try to update to a new supported version of the Electron and see if the issue is still present.

I guess this should be the first priority then. I don't know how complicated it is to update from the currently used Electron version to a new one...

I don't see a need to disable zoom in/out/reset or have such a setting. It's only the Alt menu that is the problem.

In general it sound unbelievable that there would be such an obvious bug in such a popular framework. So I assume that either the bug doesn't exist in a new version or that we just don't know how other people are doing menus in the right way. Because otherwise, all other Alt + whatever-button key combinations would not work (for example pressing Alt+A would do whatever the application set that combination to do, but when Alt is let go, the menu is still invoked).

Talking about the menu. Would be possible to add Alt + specific-button key combination in order to open a specific alt-menu? Look how it is done in Firefox:

I can press Alt + S and that opens a History menu. Todoist-linux doesn't have that:

If the issue can't be solved in other ways, config setting could be an option. Simply pressing Alt would do nothing, but one could still invoke the menu by pressing Alt + F, Alt + V or Alt + H.

Here is what the Wikipedia article says about Electron versions. FYI todoist-linux uses version 4.2.12.

I'll make a branch on my fork to try and experiment with upgrading electron.
It is bizarre to say, but sadly the zoom functionality comes from the alt menu existing. I'm just invoking a role electron has set for the feature.
IIRC This is possible, but it wouldn't override alt, so you would have the alt toggle and another key binding for toggling as well.
This is possible and easy to implement: https://www.electronjs.org/docs/api/menu#menusetapplicationmenumenu
I agree, we'll make the config option a last resort.

I'll get back to this issue after I experiment with the electron upgrade.

Upgrading the electron dependencies doesn't resolve the issue:
https://github.com/ceiphr/todoist-linux/tree/update-electron

Hi! Thanks for your hard work. I will be really appreciative, if you add the menu-disable option to config.

Hi! I've set "toggle-menubar" to false in the config (i had to add it manually, there was no such a parameter), but the ALT button is still causes the menu to be displayed. Am I doing everything right?

@m-danya #129 has a bug I need to fix after final exams. If you want the version with the #128 fixes, pull and build https://github.com/ceiphr/todoist-linux/tree/feature-menubar-improvements. It will create Todoist_1.24.0_amd64.deb like you mentioned. Just reinstall the package and you should be set.

Thank you, it works! I really appreciate your work!
The full sequence of steps I've taken is listed below, i think it can be useful for people, who want to get the alt-button problem fix:
sudo apt purge todoist
git clone https://github.com/KryDos/todoist-linux
cd todoist-linux
git fetch origin pull/128/head:test
git checkout test
make env
make up
make build-deb
sudo dpkg --install dist/Todoist_1.24.0_amd64.deb


Parse Markdown and Output Markdown

Recently I've started using https://github.com/entangled/entangled to write literate style documentation with actual implementation embedded in "```" markdown code blocks.
This is pretty neat, but some filetypes (like JSON) do not have comments and can not be supported this way. It would also sometimes be interesting to represent code or data, in actual markdown format, for example tables.
I see you're already using Comby to match Markdown and output HTML
Could I use Comby today to parse Markdown tables, output package.json dependencies, and the other way around: generate a table of project dependencies from package.json?  Is this something you have considered?

Hi @flow-danny. Thanks for sharing the context around your project. I haven't had a chance to look into it deeply, but it looks neat.

Could I use Comby today to parse Markdown tables, output package.json dependencies, and the other way around: generate a table of project dependencies from package.json?

My high-level impression here is "Mostly, yes.", with the caveat that it depends on the input and the matching capabilities of Comby currently, and what the output format looks like. I've used Comby as a 'roll my own templating engine', which sounds similar to what you want. You could do the same, and I would point out that there are two things to take note of that controls parsing for your use case.

You can define which syntactic elements are significant in your parsing/transformation. For my own templating engine you see above, I use a kind of parenthesis language where the only thing that I really care about is that (), [] and {} are balanced. This is the .dyck language that I use for the website, and that could suit your initial needs. It can then be useful to combine the language definition with a template that rewrites tokens like \paren if you need an unbalanced parenthesis in the output, like I do here. How strongly you want to enforce the syntax is all up to you: maybe .dyck is good enough. Other than that, you can completely change and define which syntax is significant (whether syntax denotes a balanced property, comments, or string data). Since you mentioned comments for JSON, you could also add the comment format you want. Have a look at the format and example here on doing so here: https://comby.dev/#faq-language-extension.

The second capability that you have is to define specific templates to transform your inputs. Those templates will work with respect to the language definition in (1), and I hope my example with Markdown-like HTML is a good enough source of inspiration.

Note that there's no specific parsing support for entire constructs like "a markdown table" or "a JSON object with keys and values". The transformations are purely syntactic, so the level of interface for transforming those high level pieces will come down to how you define the templates. There are certainly more involved transformations that are hard to write in a one-to-one way, and here you'll either have to make use of rules, or it might be outside of Comby's current capabilities. My intuition is that the specific example package.json -> Markdown or vice versa will likely require rules and may stretch the current capabilities a bit.
If you run into limitations or trouble with the above, ping me on Gitter, or here in the issue tracker if you really prefer.

Is this something you have considered?

I think the closest thing I've considered recently is custom transformations that turn source code into HTML or similar presentation formats for better syntax highlighting (since regex can be limiting for matching a lot of syntactic structures).


Docs about OpenZiti settings when working with EdgeX foundry

Add documentation about how to enable OpenZiti in eKuiper and how to work with EdgeX Foundry in secure mode.
What would you like to be added/modified:
EdgeX rule engine tutorial: https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/edgex/edgex_rule_engine_tutorial.md
EdgeX command tutorial, this will call EdgeX REST API: https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/edgex/edgex_rule_engine_tutorial.md
Why is this needed:

@dovholuknf The docs proposal, FYI


CVE-2020-36604 joi has hoek dependency with this security vunerability

My Environment
My Environment
ArangoDB Version: 3.10.1
Deployment Mode: N/A
Deployment Strategy: N/A
Configuration: N/A
Infrastructure: N/A
Operating System: N/A
Total RAM in your machine: N/A
Disks in use: N/A
Used Package: N/A
Component, Query & Data
Affected feature:
The frontend UI application has an outdated package hoek 6.1.3, which is used by joi 14.3.1.
https://nvd.nist.gov/vuln/detail/CVE-2020-36604
hoek before 8.5.1 and 9.x before 9.0.3 allows prototype poisoning in the clone function.  joi library
Problem:
N/A
Expected result:
N/A

Awesome!


Add Beginner Clue to Hiscore lookup, Hiscore plugin and Chat commands plugin

Fixes #8469
~Fixed the hiscore lookup, not sure if I should use this branch to fix the HiScore plugin itself to (Like add the clue icon)~
According to Adam I can put that fix/feature in this PR too.
Also fixes:

Hiscore Plugin
Adds !clues beginner to Chat command Plugin

Also: Sorry for the messy PR, I wanted to do this but didn't have the tools to do it correctly at the moment.

There still seems to be an issue with a new entry in the HS that I can't seem to place looking at the API and the normal page. It's entry 26 (row 27) in the api call but everytime I try to find info it always returns -1.

This should probably have one commit to adjust for the new response from the api, one for chatcommands, and one for the hiscore plugin.

I'll remember to do that next time. I'll also be


Tabs auto converts to tab

Hello, why when i put tab insead to put tab, editor put 8 spaces? I need tab!

Please make sure you have Soft Tabs unchecked in the Settings View (Ctrl+,).
This behavior is being improved in #3719-please subscribe there for updates.


Raymond development

Create the about me servlet. Can be reached with<EMAIL_ADDRESS>

When done can you include a screenshot of the new page?

This is how it looks like


Cloud output: make reading logs by initializer a more "secure" operation

Envoy is not usable with cloud output when logging is enabled. See https://github.com/grafana/k6-operator/issues/179. It’d be good to figure out some alternative in order not to depend on logs in the initializer so much.
Context. Previously, adding k6 dependency to the operator to calculate MaxVUs and Duration was deemed as too heavy to add directly - that's how initializer job appeared. Check if that changed in recent refactoring of k6.

Additionally, k6 Operator is not usable in some specific cases of k6 scripts. It was reported in #207 and see explanation here.
k6 docs about k6 archive, k6 inspect and k6 cloud behaving differently than k6 run around env vars:
https://k6.io/docs/using-k6/environment-variables/
It's a bit of mess of inconsistent behaviour. It'd be good to have a generalized solution to this, in order not to stumble over k6 exceptions.

The same problem can manifest even without cloud output but in any scenario when there is another process writing to the output of the initializer Pod. Which sounds a bit strange at first glance but it does happen, case in study:
https://community.grafana.com/t/k6-operator-error-not-spawning-starter-and-basic-resources/110778/19
Renaming the issue to reflect new reality.

After some additional thinking and feedback :slightly_smiling_face:
Initializer pod is currently used for two reasons:

cloud output tests require duration and max VUs values in order to be started: those are retrieved with k6 inspect command.
prior validation of a script. k6 Operator test runs can have lots of runners and before scheduling them, it makes sense to at least confirm that the script is valid.

If there is a way to implement this without running a pod but by calling k6 Go library, we could remove initializer pod completely! That would simplify running tests for users (because of initializer-specific errors mentioned above), simplify TestRun CRD definition and simplify logic of TestRun controller.
Now to figure out if it can be done with k6 Go code...

Another important reason to solve this: regular issues with configuring env vars for k6 scripts. The error appears because of k6 quirks and inconsistencies between different commands, and people regularly stumble on this. Some sample issues:

https://github.com/grafana/k6-operator/issues/375
https://github.com/grafana/k6-operator/pull/376
https://github.com/grafana/k6-operator/issues/207
forum questions

A few times, we've received reports on reading logs not being possible, for example:

https://github.com/grafana/k6-operator/issues/281

Another case when the problem can manifest is if one writes an extension and logs something (even fmt.Println) in the init function of the extension.

@yorugac would you consider a bigger rework of how the initializer is integrated?
See my comment at: https://github.com/grafana/k6-operator/pull/453#issuecomment-2431121129

Hi @frittentheke, I've finally grokked both your PRs and commented there accordingly 🙌

would you consider a bigger rework of how the initializer is integrated?

Well, this issue, #193, does exist, so that can be taken as "certainly" 😄
I actually hope to find the solution that would allow to remove initializer pod completely. But that kind of solution obviously takes awhile. So in general, we definitely could do with additional improvements of the current flow. On a condition that they don't break existing use cases, of course.


copy behaviour of annotations and object identity

Annotations of objects are by default not deepcopied when manipulating an object, e.g. upon slicing of a signal. However, array annotations are explicitly deepcopied (see https://github.com/NeuralEnsemble/python-neo/issues/809#issuecomment-619902320), whereas this is not the case for regular annotations.
This can lead to unexpected behaviour, e.g. when identifying objects via annotations (see #809).
I am not sure at which point it would be best to fix this behaviour. There are multiple options here:

extend the __get_item__ methods in a similar fashion as implemented for array_annotations. This would lead to multiple steps in the process of slicing. First linking of annotations by __array_finalize and then explicit deepcopying later on.
extend the __array_finalize__ methods as these are called also during the process of slicing
introduce unique object identifiers within neo. This would require an extended discussion first about the concept of identifiers to use and their expected behaviour in Neo.

@apdavison @samuelgarcia Do you have a preference regarding the different options here?

Hi Julia.
I think really prefer deepcopy of annotation.
I forget why we did not copy annotations yet.
Having uid for neo object is not a solution I like.
And about the when to make the copy, I don't known choose the simpler!!
Cheers,
Samuel

I think this is important to put in 0.9 no ? Even with something very simple.
This is the last stuff. No ?

I don't think this will go into the next release as there is not enough time to implement and review it properly. @samuelgarcia @apdavison I suggest to postpone this to 0.11.0. even though it is labeled as blocker.