findImportedNames only matches the first import

When I exec a file that begins with something like that:
from mymodule.foo import bar
from mymodule.secondfoo import hello

Only the first module is loaded. The reason is that the regexp matches "bar\n    from mymodule.secondfoo import hello".
In order to fix this issue, I have done the following:
diff --git a/lib/pypy.js b/lib/pypy.js
index 6fa7fbb..931221e 100644
--- a/lib/pypy.js
+++ b/lib/pypy.js
@@ -730,7 +730,7 @@ PyPyJS.prototype._repl_loop = function _repl_loop(prmpt, ps1) {
 // XXX TODO: this is far from complete and should not be done with a regex.
 // Perhaps we can call into python's "ast" module for this parsing?
 //
-var importStatementRE = /(from\s+([a-zA-Z0-9_\.]+)\s+)?import\s+\(?\s*([a-zA-Z0-9_\.\*]+(\s+as\s+[a-zA-Z0-9_]+)?\s*,?\s*)+\s*\)?/g
+var importStatementRE = /(from\s+([a-zA-Z0-9_\.]+)\s+)?import\s+\(?\s*([a-zA-Z0-9_\.\*]+(\s+as\s+[a-zA-Z0-9_]+)?[ \t]*,?[ \t]*)+[ \t]*\)?/g
 PyPyJS.prototype.findImportedNames = function findImportedNames(code) {
   var match = null;
   var imports = [];

I know this function should be rewritten but meanwhile this allows my code to work...

Ah, so the \s in the regex is matching past the newline?  I guess I brought too much of my python-regex knowledge over to javascript, thanks @MaximeCheramy

The \s matches the line break yes. More specifically, it matches: [ \f\n\r\t\v\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]

OK, i test the new re with in pypyjs-release and remove all the work-a-round in the tests with:

https://github.com/pypyjs/pypyjs-release/commit/0f299181936c1a37b3b3e4440a747fd6652f9a52
https://github.com/pypyjs/pypyjs.github.io/commit/6be03c5456a3dcfa2b21b76c2f1d31d5a7380cc2

It looks good:
https://travis-ci.org/pypyjs/pypyjs.github.io/builds/68835622


Delete enum types as part of destroy

solution yoinked from here https://stackoverflow.com/a/11968551

Thank you very much for your valuable contribution 👍


Update maven plugins

Update maven plugins to modern versions
Also gives us ability to generate dependency update report etc

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-PR-Builder/10658/
Test PASSed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-PR-Builder-jdk11/4/
Test FAILed.

jenkins, test this please

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-PR-Builder/10693/
Test PASSed.

jenkins, test this please

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-PR-Builder/10705/
Test PASSed.

jenkins, test this please

alluxio-bot, merge this please


A few small suggestions

It would be nice if the instruction list showed sections.  Also if it parsed html tags, so important text could be bolded

Markdown support would be nice as well


[Feature] Provide API to cancel all queued tasks at once

Is your feature request related to a problem? Please describe.
In situation where you want to execute an important task and the job queue is full with other tasks, it can take quite a long time to cancel all of them and execute the important task.
Describe the solution you'd like
Bosh director should provide an API which can cancel all queued tasks at once.
Describe alternatives you've considered
An alternative could be to implement priorities for tasks. In this way users can put important task in front of other tasks. I think this feature requires much bigger implementation effort. That is why implementing a fast cancel could be the first step to improve the situation.
Additional context
Bosh CLI uses his API to cancel a single task.

Implemented with https://github.com/cloudfoundry/bosh/commit/37fef5c3bf52efbcad8ebeeb4dc16835a61a33ee and previous commits.


feat: add support for UUPS proxy in QGB contract

Overview

Closes https://github.com/celestiaorg/quantum-gravity-bridge/issues/146
This provides the UUPS upgradability mechanism for the QGB smart contract. The deployment and upgrade scripts will be handled in a separate issue.
Checklist

[ ] New and updated code has appropriate documentation
[ ] New and updated code has new and/or updated testing
[ ] Required CI checks are passing
[ ] Visual proof for any user facing features like CLI or documentation updates
[ ] Linked issues closed with keywords

Turning to draft as I have some questions about the implementation I did, and I need to answer them before being 100% confident in this PR

Reopening for review, the implementation looks fine


What to do with the pre-commit tool

We're getting this kind of error of our pre-commit thingy: https://results.pre-commit.ci/run/github/238460517/1642317160.jW4EH-NuS1eqYcHn0ZI9iA
I don't really understand where it's coming from. The only pre-commit thing we have is:
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },

on our package.json. @ianhi any idea? Seems like we need a .pre-commit-config.yaml file to fix it, does this make sense?
Should we migrate to another tool?

indeed we do need that file - sorry i never added it after the tool was enabled. This is nice because it can combine fixes for python and ts into one tool. I'd suggest we follow the one ipympl uses - I can make a pr


Point CODESMITHY environment variable at local build

At the moment I'm sure the build only works because I have a global CODESMITHY environment variables that points at the dependencies. But the local build should not depend on those.

Fixed in 58785b587021342580452a380a66895726dee33f


Fix #100: add support for forward slash in namepaths

This might be too naive of an approach but appears to work as expected.

Looks like a pretty good approach to me. Can you reformat your commit summary to be:
Update: Add support for slash in namepaths (fixes #100)

Also, have can you sign the CLA? http://eslint.org/cla

Done and done!

Thanks!


Update Candid Files

Motivation
The canisters APIs have been updated.
Changes

Updated the candid interface files for the canisters used in this library.
Updated the javascript bindings for the latest candid interfaces.

Tests

[ ] Please check the API updates for any breaking changes that affect our code.

I've reverted the changes of the ckETH minter as on main. I'll provide the changes that require some adaptations in a separate PR (#751).

I would rather not make manual changes to a PR created by a bot.
I propose we just run the bot again after your fix is in.
Or if we can't wait for that we can do more separate PRs.

Makes sense, I should have done that. Noted.


add config.yaml documentation

explain attributes in config.yaml

The first issue that come to mind when you are looking at project

The first issue that come to mind when you are looking at project

I'm going to solve it soon. If you can help - it would be great!


Serious memory leak for UI project

This bug can be reproduced by using CellMap.ToString(). I had implemented the interface type ISpanFormattable but I didn't handle the case that outputs the string when the format string is "", "N" or "n".


error creating Role Binding

I am writing to use create role bindings using the RBAC module on version 1.8.0, I am able to create the service accounts, while trying to assign role to the new service accounts it throws the below message
error creating Role Binding: Post "https://api.confluent.cloud/iam/v2/role-bindings" POST https://api.confluent.cloud/iam/v2/role-bindings giving up after 5 attempt(s).
My initially thought was that it might be affected due to absence of Kafka secrets not mentioned in resource file, however despite adding them, the error is still the same. Additionally, role assignment does not works for the user as well. I'd request you to please assist with it.

@mps021 could you share an example of your confluent_role_binding resource definition that fails with 500?

@mps021 could you share an example of your confluent_role_binding resource definition that fails with 500?

@linouk23  below is my resource definition.
resource "confluent_role_binding" "DeveloperRead" {   role_name     = "DeveloperRead"   crn_pattern   = var.crn_pattern   count         =  length(var.user_developer_read)   principal     =  var.user_developer_read[count.index] }
variable "user_developer_read" {   type = list(string)   description = "user_name"    default = ["User:sa-xxxx"] }

Could you share the CRN pattern you're using? I'm wondering whether our backend returns 500 instead of 400.

I'll close it due to inactivity, feel free to reopen.

can you please tell me what i should i mention in the crn pattern of confluent_role_binding block of terraform if i want to use it for a topic

@apurv-jay see our docs:

https://registry.terraform.io/providers/confluentinc/confluent/latest/docs/resources/confluent_role_binding#example-usage
https://docs.confluent.io/cloud/current/api.html#section/Identifiers-and-URLs/Confluent-Resource-Names-(CRNs)


[Improvement-13476][*]  Improve DS load hdfs configuration automatically by using environment variable HADOOP_CONF_DIR

Purpose of the pull request

Improve DS load hdfs configuration automatically by using common environment variables HADOOP_CONF_DIR  or HADOOP_HOME which are  usually  already configured in os;
It provides a more convenient choice. If the environment variable does not exist or is an error configuration, DS will load the configuration  as before;
This closes #13476
Brief change log

HdfsStorageOperator
dolphinscheduler_env.sh : add tips for  environment variableHADOOP_HOME and HADOOP_CONF_DIR

Verify this pull request
This change added tests and can be verified as follows:

HdfsStorageOperatorTest

Please use mvn spotless:apply to fix the code style.

please send to detail to<EMAIL_ADDRESS>@xxjingcd

In addition, i think there's nothing wrong with current way which move configuration files into classpath, i just wonder do we really have to make this change?

It is not  convenient enough. You have to copy hdfs-site.xml and core-site.xml to the classpath manually; And it will bring maintenance costs,  users  have to remember that  copy again when configuration files change ;

I think we should better avoid using system env, maybe we can add hadoop.conf.dir in our property file.

It is a choice for users , you can still move configuration files into classpath. This only takes effect if you specify an environment variable；
And the environment variables are usually already configured in the operating system;  That mean users can load correct configuration without doing anything.
It is a general approach;

Codecov Report

Merging #13478 (73157dc) into dev (80da35e) will decrease coverage by 0.02%.
The diff coverage is 68.96%.

@@             Coverage Diff              @@
##                dev   #13478      +/-   ##
============================================
- Coverage     39.62%   39.60%   -0.02%
- Complexity     4354     4364      +10
============================================
  Files          1097     1097
  Lines         41150    41184      +34
  Branches       4712     4718       +6
============================================
+ Hits          16304    16311       +7
- Misses        23036    23061      +25
- Partials       1810     1812       +2

Impacted Files
Coverage Δ

...duler/plugin/storage/hdfs/HdfsStorageOperator.java
24.51% <68.96%> (+3.82%)
:arrow_up:

...r/plugin/registry/zookeeper/ZookeeperRegistry.java
43.54% <0.00%> (-7.26%)
:arrow_down:

...erver/master/processor/queue/TaskEventService.java
75.00% <0.00%> (-5.36%)
:arrow_down:

...nscheduler/service/process/ProcessServiceImpl.java
30.22% <0.00%> (-0.03%)
:arrow_down:

...he/dolphinscheduler/common/thread/ThreadUtils.java
0.00% <0.00%> (ø)

...er/master/event/TaskWaitTaskGroupStateHandler.java
0.00% <0.00%> (ø)

...duler/plugin/datasource/hive/utils/CommonUtil.java

...rce/hive/security/UserGroupInformationFactory.java
0.00% <0.00%> (ø)

...r/plugin/datasource/hive/HiveDataSourceClient.java
2.50% <0.00%> (+1.14%)
:arrow_up:

...e/dolphinscheduler/remote/NettyRemotingClient.java
52.77% <0.00%> (+1.38%)
:arrow_up:

... and 1 more

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

Please use mvn spotless:apply to fix the code style.

I've already fixed it

I think we should better avoid using system env, maybe we can add hadoop.conf.dir in our property file.
In addition, i think there's nothing wrong with current way which move configuration files into classpath, i just wonder do we really have to make this change?

Environment variables  HADOOP_CONF_DIR and HADOOP_HOME is very common in most components, e.g HBASE, Spark、Flink, and so on.

Environment variables HADOOP_CONF_DIR and HADOOP_HOME is very common in most components, e.g HBASE, Spark、Flink, and so on.

You are right, HADOOP_CONF_DIR is a common environment variable, HOWEVER, i think add it into properties is more general, especially when deploying in k8s.

please send to detail to<EMAIL_ADDRESS>@xxjingcd

what detail？ Is it a mistake?

Environment variables HADOOP_CONF_DIR and HADOOP_HOME is very common in most components, e.g HBASE, Spark、Flink, and so on.

You are right, HADOOP_CONF_DIR is a common environment variable, HOWEVER, i think add it into properties is more general, especially when deploying in k8s.

In practice, users always maintain a set of common global variables， this always include HADOOP_CONF_DIR and HADOOP_HOME.
In a word, using environment variables will make DS deploy faster and easily. That is the reason why this pr use environment variables;
Actually, all I know about components are use environment variables to configure. For Example, a source code fragment of  Flink’s HadoopUtils
    public static String[] possibleHadoopConfPaths(
            org.apache.flink.configuration.Configuration flinkConfiguration) {
        String[] possiblePaths = new String[4];
        possiblePaths[0] = flinkConfiguration.getString(ConfigConstants.PATH_HADOOP_CONFIG, null);
        possiblePaths[1] = System.getenv("HADOOP_CONF_DIR");

        if (System.getenv("HADOOP_HOME") != null) {
            possiblePaths[2] = System.getenv("HADOOP_HOME") + "/conf";
            possiblePaths[3] = System.getenv("HADOOP_HOME") + "/etc/hadoop"; // hadoop 2.2
        }
        return Arrays.stream(possiblePaths).filter(Objects::nonNull).toArray(String[]::new);
    }

At Last, we should not put all configurations in properties， especially if there have global common environment variables. That is why DS has  file dolphinscheduler_env.sh , similar to spark-env.sh;
When there are no global environment variables, there is not much difference between putting in dolphinscheduler_env.sh  and properties;

please send to detail to<EMAIL_ADDRESS>@xxjingcd

what detail？ Is it a mistake?

@xxjingcd I think the detail stuff @zhongjiajie comments here may refer to #13460

I know very little about k8s. Maybe you can use env in dockerfile or config dolphinscheduler_env.sh similar to how you configure properties files.

@xxjingcd Sorry for my mistake, we have already created environment variables with configMap in k8s deploy mode, including configuration HADOOP_CONF_DIR.

Is this convenient for users to configure HDFS?

In this PR, i think you don't have to change that part of codes, it's up to users whether override hdfs configuration or not.

Whether it is convenient enough to configure environment variables HADOOP_CONF_DIR.

For me, there's no problem, please update docs in resource center configuration page : )
Also, you don't have to add environment configuration in dolphinscheduler_env.sh (refer to https://github.com/apache/dolphinscheduler/pull/13028).
Basically LGTM, cc @zhongjiajie @EricGao888

@Radeity thanks for your code review work.

In this PR, i think you don't have to change that part of codes, it's up to users whether override hdfs configuration or not.

OK, I'll remove the todo (about the question).

Also, you don't have to add environment configuration in dolphinscheduler_env.sh (refer to https://github.com/apache/dolphinscheduler/pull/13028).

The purpose of the pr #13028 is to remove the export of dolphinscheduler_env.sh  in the task’s initialization, so it deleted the environment configuration used in user's task. And it make a mistake, JAVA_HOME should not be deleted, because  JAVA_HOME used in  dolphinscheduler-dameon.sh.
After this pr, dolphinscheduler_env.sh is only used by DS component (used in dolphinscheduler-dameon.sh ) and DS interval, not by the user’s task; And after pr #13317, the user's tasks can specify the env file config by shell.env_source_list; That means environment file used in DS and user's task is separated now. So I think it's no problem to do that. Or maybe I don't get what you mean?

For me, there's no problem, please update docs in resource center configuration page :

OK, I'll sync the configuration.

So I think it's no problem to do that. Or maybe I don't get what you mean?

We should better only add ds' internal env configuration, which we don't have now. And user/tenant manages external env configurations by themselves. $JAVA_HOME belongs to external configurations, we just have to declare them in the doc. That's my personal understanding of that pr, have to further make sure. cc @ruanwenjun

So I think it's no problem to do that. Or maybe I don't get what you mean?

We should better only add ds' internal env configuration, which we don't have now. And user/tenant manages external env configurations by themselves. $JAVA_HOME belongs to external configurations, we just have to declare them in the doc. That's my personal understanding of that pr, have to further make sure. cc @ruanwenjun

Ok, I will remove $JAVA_HOME to make this pr‘s purpose simple.


No compatible version found<EMAIL_ADDRESS>

Currently, the img package is missing. So that when I install it, This raise "No compatible version found<EMAIL_ADDRESS>

Can you try again? :smile:

Fixed now


[SUPPORT] HoodieMultiTableDeltaStreamer does not work as expected

Tips before filing an issue

Have you gone through our FAQs?

Join the mailing list to engage in conversations and get faster support at<EMAIL_ADDRESS>

If you have triaged this as a bug, then file an issue directly.

Describe the problem you faced
When I run HoodieMultiTableDeltaStreamer with spark-on-k8s-operator. I saw it run but just one table that have data to fill in, how should I config to run it perfectly with more than 2 tables. How does it work when run on k8s cluster. Does 1 driver handle multiple tables or 1 driver each table. Does it process sequentially or parrallel on driver ? Thanks so much if have anyone explain these points for me?
To Reproduce
Steps to reproduce the behavior:

Expected behavior
A clear and concise description of what you expected to happen.
Environment Description

Hudi version : 0.13.0

Spark version : 3.2

Hive version : 3.1.1

Hadoop version : 2.3.0

Storage (HDFS/S3/GCS..) : hdfs

Running on Docker? (yes/no) : kubenetes

Additional context
Add any other context about the problem here.
Stacktrace
Add the stacktrace of the error.

@nttq1sub HoodieMultiTableDeltaStreamer ingest the data parallely in the streaming manner. It creates the streaming jobs for each of the table and ingest data continously depending on the mode. One driver only handles multiple tables.

@nttq1sub HoodieMultiTableDeltaStreamer ingest the data parallely in the streaming manner. It creates the streaming jobs for each of the table and ingest data continously depending on the mode. One driver only handles multiple tables.

this is what I read from hudi document, when I use HoodieMultiTableDeltaStreamer to ingest data from kafka to hdfs, does it read from one topic until it reach last latest offset of data then after that, It continue to process to another topic, each topic I ingest to lake is one table corresponding.

@nttq1sub Sorry for delay in response here. Yes, You are correct. It will read from one topic and ingest one table for that MicroBatchExecution and then runs the next table.


Pack name length limit?

Describe the bug
I'm not sure if this is in cpackget or elsewhere in the chain, but it appears if the pack name is too long, the install process fails, although I can't find any reference to what this limit is.
We don't use long names for general use, but we have a CI process in place to automatically check our packs, which include doing a test creation and install of the pack. To insure there are no clashes we give the pack a unique name based off the build name, but this can be quite lengthy. A recent failure had the pack name at 108 characters (excluding the vendor name and version).
This could also just be to do with path length issues in Windows. The pack name is repeated twice in the pdsc path (folder name for pack name and then again in the pdsc file name). At 108 characters that takes my total path length to be 261 characters for the installed pdsc; over the normal limit of 256.
Expected behavior
Either improved documentation (ideally via the schema) to limit the pack name length, or handling of this better during the install process (some warning to the user that the install won't work)
Environment (please complete the following information):
Windows 10

I would like to narrow this down a little bit.
a) When you run the command cbuild list environment does it print the line:
  Long pathname support=enabled

b) What is the output for CMSIS_PACK_ROOT in the command above?
c) Am I right in assuming that you run something cpackget add my/long/path/to/my/pack/myvendor.mypack.major.minor.patch.pack?
Can you run the command with the flag: -v and attach the log file here? Maybe it becomes clearer where it fails?
I am afraid it will be a combination of filename and path length, therefore limiting the vendor name and pack name will not solve the issue. E.g. you could have a crazy length version qualifier after the - which to my knowledge is not limited.
Anyhow, do you have any suggestion for a good size limit for vendor and name? E.g. 32 characters each
Current max name: 46
Current max vendor: 19

Lack of additional information to properly reproduce the problem. Hence closing for the time being.


geerlingguy/centos7 1.1.3 box is no longer available

Currently we force the vagrant box version to 1.1.3, because 1.1.4 had issues, but 1.1.3 version is no longer available. This means projects like https://github.com/wunderkraut/wundertools that depend on wundermachina are unusable for any developers who don't have the old 1.1.3 version of the box available to them.

Correction, 1.1.3 is only the default so the default settings are not working. It's easy to override this in the vagrant_local.conf of wundertools.

Default box version has been updated to 1.2.0


generated_tests_are_fresh continuously fails

Every time I start out with a clean branch and run cargo test generated_tests_are_fresh fails and I have to run cargo gen-tests which produces new test files that only differ by line endings.

Do you have git core.autocrlf on? On Windows this converts the line endings to crlf, and I guess the tests expect lf.

I believe I solved it by setting core.autocrlf to false for rust-analyzer, so no line-ending conversions should occur.

I'm surprised that that fixed the test. Thanks.


[WIP] [KOGITO-1248] Case Management process generation

Signed-off-by: ruromero<EMAIL_ADDRESS>
Added CaseFile and CaseRoleInstance to model
Added DynamicNodeVisitor and MilestoneVisitor
Added AbstractNodeVisitor and other intermediate classes to reduce duplicated code.
Refactored Process generation logic into ProcessVisitor
Added ProcessGenerationTest class to validate all the generated processes are equivalent to the processes parsed from XML.
Added all the case management processes from the jbpm project
Fixed multiple imports
Filter out metadata attributes related to graphical representation
Small clean up

This is a WIP pull request to try to get some feedback on situations that are failing in the ProcessGenerationTest.
An example are
Or
Can anyone take look at this PR and answer the following:

Do you think the added test is useful to make sure the processes are generated as expected?
Why the actions not properly added to BoundaryEventNodes as they seem to be added to other nodes like the EndStateNode
Why the actions are not exactly the same as the parsed process? See https://github.com/kiegroup/kogito-runtimes/pull/410/files#diff-212e4a63b3ab85c0e9f7c53d34b27c8fR350
Is the refactoring missing something?
Are the CaseManagement classes added to the model sufficient?

Hi @ruromero I'll take a look at the PR and help on the review.

Jenkins retest this please

Closing in order to split in to simpler and more specific PR.


Show error message in case of compile error

If the project is in a non-compiling state before running webpack:
With a compile error the output looks like this:
Creating an optimized production build...
Failed to compile.

./src/Main.purs
Error: compilation failed

npm ERR! code ELIFECYCLE
npm ERR! errno 1

or

For comparison, the error of spago build:
Compiling Root
Error found:
in module Root
at src/Root.purs:26:7 - 26:10 (line 26, column 7 - line 26, column 10)

  Unknown value log

See https://github.com/purescript/documentation/blob/master/errors/UnknownName.md for more information,
or to contribute content related to this error.

[error] Failed to build.

Therefore I would suggest appending the error message. Not sure if this could lead to duplicates though.
Result
./src/Main.purs
Error: compilation failed: Error found:
in module Root
at src/Root.purs:26:7 - 26:10 (line 26, column 7 - line 26, column 10)

  Unknown value log

See https://github.com/purescript/documentation/blob/master/errors/UnknownName.md for more information,
or to contribute content related to this error.

npm ERR! code ELIFECYCLE
npm ERR! errno 1

Great catch, thanks!


Presence feature

Apologies for the massive PR, there are two main things happening here:

widget-message uses the presence module to subscribe to all participants in a convo
PresenceAvatar container displays an avatar with presence fetched from the module

Most of the commits are implementations of the PresenceAvatar and updates to the snapshots of those components.

Deploy preview ready!
Built with commit 6dced185271ed580ab5e5ea8ef1a5cadc16d865a
https://deploy-preview-573--hopeful-hamilton-4090b9.netlify.com

@bzang ready for a review now


File Tranfer greyed

What steps will reproduce the problem?
Open ssh connection right click under session on your connection "File
Transfer" is greyed out

What is the expected output? What do you see instead?
File Transfer should be not greyed out

What version of the product are you using? On what operating system?
<IP_ADDRESS>

Original issue reported on code.google.com by<EMAIL_ADDRESS>on 4 Dec 2013 at 2:54

Make sure pscp is configured in F2 Options


Add Sync impl for Sel

Need this so I can store Sels in lazy statics and avoid the lookup for every method call.

Thanks! I also implemented Send in e012a14 while we're at it, and published to crates.io as version 0.2.2.


can't download image source image: unkow sheme - imageproxy

Hey, everyone!
I'm facing this message always that I send a huge image (following example):
https://apis-editor-imgproxy-74dlu.ondigitalocean.app/FY4zP-XgJV8moZFD7rsebbSvEHk-tEfDhaWi_o0183E/c2ZvMy5kaWdpdGFsb2NlYW5zcGFjZXMuY29tL2FwaXNlZGl0b3IvcHJvamVjdHMvNjM1MDA3MzNmNjhkMDlhODk2MTE1NWE2L2Fzc2V0cy9hc3NldHNfazVtYTI2Nm8xcC0tLXRlc3RlLmpwZWc
What could it be?
My settings:
IMGPROXY_MAX_SRC_FILE_SIZE: 30000000;
IMGPROXY_MAX_SRC_RESOLUTION: 100;
IMGPROXY_DOWNLOAD_TIMEOUT: true.
The image that sent has 7.9MB and 4961x3366

Hey @AiltonApis!
The URL scheme is missing in your source image URL. Currently, your source image URL is sfo3.digitaloceanspaces.com/apiseditor/projects/63500733f68d09a8961155a6/assets/assets_k5ma266o1p---teste.jpeg, but is should be https://sfo3.digitaloceanspaces.com/apiseditor/projects/63500733f68d09a8961155a6/assets/assets_k5ma266o1p---teste.jpeg

Wow!

Sorry for this beginner query.


Port to AVX2 and AVX-512

This could be made much faster with wider registers.

A sample for AVX512:
`
void checkContinuation(__m512i counts,
__m512i previous_counts,
__mmask64 *has_error) {
__m512i right1 = _mm512_subs_epu8(_mm512_alignr_epi8(counts, previous_counts,64 - 1),
_mm512_set1_epi8(1));
__m512i sum = _mm512_add_epi8(counts, right1);
__m512i right2 = _mm512_subs_epu8(_mm512_alignr_epi8(sum, previous_counts,64 - 2),
_mm512_set1_epi8(2));
sum = _mm512_add_epi8(sum, right2);
// overlap || underlap
// sum > count && count > 0 || !(sum > count) && !(count > 0)
// (sum > count) == (count > 0)
__mmask64 overunder =
_mm512_cmpeq_epu8_mask(sum,counts) ^
_mm512_cmpeq_epu8_mask(counts, _mm512_setzero_si512());
*has_error |= ~overunder;
}
`
Mostly s/mm/mm512/g and s/__m128i/__m512i/g.  has_error has to change to a mask though.

Yup, AVX-512 natively has unsigned compare, and can save some ANDs with masked-compare into another mask.  (Compilers are typically decent at doing this optimization for you with intrinsics)
The cheapness of branching on a mask being non-zero means it might be worth adding an early-out.  But I guess for most use-cases, invalid data is very much the exception, and hurting the valid case at all to return early for the invalid case isn't worth it.

The AVX2 in-lane behaviour of vpalignr is an obstacle to straightforward widening to __m256i, though.  http://felixcloutier.com/x86/PALIGNR.html has a diagram for 256-bit.  We might want to do some unaligned loads to get data where we want it, instead of shuffling.  e.g. maybe advance by 28 bytes per iteration instead of 32, and shuffle something from the end back to the front with vpermd?
AVX-512 has a lane-crossing byte shuffle in vpermb, but that requires AVX512VBMI (cannonlake, but not SKX or KNL), and it costs multiple shuffle uops so it's not ideal.  (vpermw is multiple uops on SKX, vpermb will probably be at least as many on Cannonlake.)  2-source shuffles like vpermt2b are very powerful but probably even slower.

The AVX2 in-lane behaviour of vpalignr is an obstacle to straightforward widening to __m256i, though.

I am optimistic. I expect that it will cost a couple of extra instructions to muck up the lanes... but we are currently issuing around 48 muops per vector register... So we can afford to spend a lot of instructions on getting the lanes properly populated.
Extra loads are probably fine, as you suggest. We probably have load capacity to spare.
Chances are good that we can double the speed (almost) by going to AVX2.

The overriding issue is that basic shift or alignr operations will be possibly twice or more slower (in instruction counts, and latency/throughput).  However we only do four alignr's, so it may not be much overhead.
Another option is to process 2-4 separate streams in 128-bit subregisters, by splitting the input into substrings and patching the edges.  We only need to look 4 bytes behind each split boundary to carry continuations properly.

The overriding issue is that basic shift or alignr operations will be possibly twice or more slower (in instruction counts, and latency/throughput).

My expectation is that we are doubling the cost of something that is nearly negligible.  We are at 0.7 to 0.8 cycles with 128-bit registers, so I think we ought to achieve 0.4 cycles with 256-bit registers and 0.2 cycles with 512-bit registers. It may be hard to get exactly 0.2 cycles with current AVX-512 processors, but we ought to be able to get close (~0.25 cycles?).
Of course, one just needs to implement it to know.

PR12 was the last thing I was worried about before porting; I didn't want to have to move any tricky deltas across SIMD versions afterwards.

Port done. Closing.


Sometimes the patching fails

Encountered Exception when trying to call 'Before Level Load' method for mod 'Zebra.MoreSaves': System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NotImplementedException: The method or operation is not implemented.    at HarmonyLib.PatchFunctions.UpdateWrapper(MethodBase original, PatchInfo patchInfo)    at HarmonyLib.PatchProcessor.Patch()    at MoreSaves.Patching.SaveHelper..ctor(Harmony harmony)    at MoreSaves.ModEntry.BeforeLevelLoad()    --- End of inner exception stack trace ---    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)    at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)    at JumpKing.Mods.ModLoader.CallBeforeLevelLoadMethods()
this is harmony weirdness, generic methods patching fails, no idea why it happens

if the first mod that uses harmony loads and its v2.3.3 it breaks more saves as it specifically only works with harmony v2.2.2, the reason why specifically the accelerate blocks mod broke stuff for me was that it would be loaded first and uses v2.3.3, while w/o it a mod would load that uses v2.2.2;


Add verbose log to modelLoader

What this PR does / why we need it
Which issue(s) this PR fixes

Fixes https://github.com/InftyAI/llmaz/issues/122
Special notes for your reviewer
Does this PR introduce a user-facing change?

None

/kind cleanup
/lgtm
/approve


"Current Layer Contents" is empty for all layers... Docker minimum version?

Is there a minimum Docker version that this works with? Do I need 20.10.x?
I'm using Docker 19.03.15, and the "Current Layer Contents" pane is empty with every Docker image I test it with.

Ditto for "Aggregated Layer Contents", by the way.
If it matters, my dive.log file contains:
level=error msg="IsNewView() unexpected error: unknown view"

Dumb question: How do you scroll the contents of the "Image Details" pane?

I get this issue with WSL2 (on Windows 10) using Ubuntu 22.04 LTS using podman. as my container-engine.
Can not find any other errors.


FaceLandmarker.createFromOptions() seems not working

Have I written custom code (as opposed to using a stock example script provided in MediaPipe)
Yes
OS Platform and Distribution
Windows 11
MediaPipe Tasks SDK version
<EMAIL_ADDRESS>Task name (e.g. Image classification, Gesture recognition etc.)
Face Landmark Recognition
Programming Language and version (e.g. C++, Python, Java)
Javascript
Describe the actual behavior
trying to load FaceLandmarker from a js type=module on my webapp (exactly as explained in the official codepen example). This is what I wrote:
import vision from "https://cdn.jsdelivr.net/npm/<EMAIL_ADDRESS>const { FaceLandmarker, FilesetResolver, DrawingUtils } = vision;
let runningMode= "IMAGE";
let faceLandmarker;
async function initializeFaceLandmarker() {
    const wasmFolderPath = 'https://cdn.jsdelivr.net/npm/<EMAIL_ADDRESS>    const filesetResolver = await FilesetResolver.forVisionTasks(
        wasmFolderPath
    );

    console.log('resolved: filesetResolver', filesetResolver)

    console.log('trying to create faceLandmarker');
    faceLandmarker = await FaceLandmarker.createFromOptions(filesetResolver, {
        baseOptions: {
            modelAssetPath: `https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/1/face_landmarker.task`,
            delegate: "GPU"
        },
        outputFaceBlendshapes: true,
        runningMode: "IMAGE",
        numFaces: 1,
    });

    console.log('inside initializeFaceLandmarker: faceLandmarker', faceLandmarker);
}
initializeFaceLandmarker();

devtool's console prints:
main.js:81 resolved: filesetResolver {wasmLoaderPath: 'https://cdn.jsdelivr.net/npm/<EMAIL_ADDRESS>wasmBinaryPath: 'https://cdn.jsdelivr.net/npm/<EMAIL_ADDRESS>main.js:85 trying to create faceLandmarker

and stocks there

Describe the expected behaviour
I expected to exit the await stocked and obtain my FaceLandmarker object.

import vision from "https://cdn.jsdelivr.net/npm/<EMAIL_ADDRESS>const { FaceLandmarker, FilesetResolver, DrawingUtils } = vision;
let runningMode= "IMAGE";
let faceLandmarker;
async function initializeFaceLandmarker() {
    const wasmFolderPath = 'https://cdn.jsdelivr.net/npm/<EMAIL_ADDRESS>    const filesetResolver = await FilesetResolver.forVisionTasks(
        wasmFolderPath
    );

    console.log('resolved: filesetResolver', filesetResolver)

    console.log('trying to create faceLandmarker');
    faceLandmarker = await FaceLandmarker.createFromOptions(filesetResolver, {
        baseOptions: {
            modelAssetPath: `https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/1/face_landmarker.task`,
            delegate: "GPU"
        },
        outputFaceBlendshapes: true,
        runningMode: "IMAGE",
        numFaces: 1,
    });

    console.log('inside initializeFaceLandmarker: faceLandmarker', faceLandmarker);
}
initializeFaceLandmarker();

devtool's console prints:
main.js:81 resolved: filesetResolver {wasmLoaderPath: 'https://cdn.jsdelivr.net/npm/<EMAIL_ADDRESS>wasmBinaryPath: 'https://cdn.jsdelivr.net/npm/<EMAIL_ADDRESS>main.js:85 trying to create faceLandmarker
main.js:97 inside initializeFaceLandmarker: faceLandmarker {FACELANDMARKER OBJECT}  <<<<<<<<<<<<<

Standalone code/steps you may have used to try to get what you need
import vision from "https://cdn.jsdelivr.net/npm/<EMAIL_ADDRESS>const { FaceLandmarker, FilesetResolver, DrawingUtils } = vision;
let runningMode= "IMAGE";
let faceLandmarker;
async function initializeFaceLandmarker() {
    const wasmFolderPath = 'https://cdn.jsdelivr.net/npm/<EMAIL_ADDRESS>    const filesetResolver = await FilesetResolver.forVisionTasks(
        wasmFolderPath
    );

    console.log('resolved: filesetResolver', filesetResolver)

    console.log('trying to create faceLandmarker');
    faceLandmarker = await FaceLandmarker.createFromOptions(filesetResolver, {
        baseOptions: {
            modelAssetPath: `https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/1/face_landmarker.task`,
            delegate: "GPU"
        },
        outputFaceBlendshapes: true,
        runningMode: "IMAGE",
        numFaces: 1,
    });

    console.log('inside initializeFaceLandmarker: faceLandmarker', faceLandmarker);
}
initializeFaceLandmarker();

Other info / Complete Logs
No response

Hello @no-made,
This issue has been resolved in the commit https://github.com/google/mediapipe/commit/c5b1edd709fedfac5ce86946a322866a89757d25. Please revert back if this still an issue from your end. Thank you

Hello @no-made,
This gives you better understanding #4548(comment) on the query you have raised.


Send location doesn't work in Android M

I believe it's caused by the new permission model in Android M.

Fixed


include: add uc_fn_thisval()

Can be used to get rid of a layer of pointer indirection when acquiring the function "this" context in resource type handlers.
Signed-off-by: Felix Fietkau<EMAIL_ADDRESS>[rename "uc_fn_this_val" to "uc_fn_thisval", expand commit message]
Signed-off-by: Jo-Philipp Wich<EMAIL_ADDRESS>

Superseded by #134


add ionic spinners

There is currently some styles in the ionSpinner html template needed for testing, until the newer dist of ionic for ionic-sass is merged. Other than that, I think everything works.

@jorjordandan maybe we should also bump the ionic-sass dependency in this package so users don't end up with an old version of the CSS?

Probably a good idea, since without css the spinners take up the whole page. There was no dependency listed for meteoric:ionic-sass in the package.js or versions.json - the only place I found a reference was in the guide. Did you just mean I should specify the version in the guide? Or are you adding the dependency in some way that I'm not familiar with?

Oh you're right, I think I deliberately didn't specify a dependency on ionic-sass so that users could bring their own version if they wished (compiled CSS, a LESS version, etc). So maybe it's OK as is.

Okay I'll take care of those issues as soon as possible, thanks for the feedback!


Adding Test for urlFor

Tested that urlFor triggers deprecation error
Tested that urlFor aliases pathFor

Coverage increased (+0.2%) to 93.789% when pulling 5649a78a6e9ca05591433fbb1af7796b5076e908 on danielgsims:router-test into 794073a27b2dd9ef492124263038291b7f8daeb3 on slimphp:3.x.

Testing this message gives us full coverage on the Router. I wasn't sure how others would feel by using a partial mock for testing the map urlFor -> pathFor. I thought it was okay because we don't care about that functionality, because it's tested in pathFor, we just want to make sure the alias works. I'd appreciate any feedback if anyone disagrees.

@akrabat Do you know anything about the HVVM Travis build? It looks like the error was converted into an exception, so the test goes on to run the subsequent code which shouldn't run. Any ideas?

For proper test you should expect for error, not to suppress it.
Example how to do so:
<?php
class MyTest extends PHPUnit_Framework_TestCase
{
    private $errors;

    protected function setUp() {
        $this->errors = array();
        set_error_handler(array($this, "errorHandler"));
    }

    public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) {
        $this->errors[] = compact("errno", "errstr", "errfile",
            "errline", "errcontext");
    }

    public function assertError($errstr, $errno) {
        foreach ($this->errors as $error) {
            if ($error["errstr"] === $errstr
                && $error["errno"] === $errno) {
                return;
            }
        }
        $this->fail("Error with level " . $errno .
            " and message '" . $errstr . "' not found in ",
            var_export($this->errors, TRUE));
    }

    public function testDoStuff() {
        // execute code that triggers a warning
        $this->assertError("Message for the expected error",
            E_USER_WARNING);
    }
}

@dopesong - Thanks for the feedback!
To address the '@' - There were two tests, one that tests whether the error is triggered, and another to test the functionality afterwards. I think the suppression operator was necessary because PHPUnit will convert the error to an exception through PHPUnit, right?
Also, with that strategy, how does PHPUnit keep that error handler attached? Just for the life of the one test case, the file, or the whole shebang? Do we need to use restore_error_handler in there?

With that strategy you can check if exact error triggered. Also you are correct that error handler must be restored, because set_error_handler is global.
Better to expect for error and value returned than suppress it.

I made some changes based on @dopesong's feedback. Closing, please see #1882


Fix warnings on log level variables on running sbt test command

PR Checklist

[x] A description of the changes is added to the description of this PR.
[x] If there is a related issue, make sure it is linked to this PR.

Description of changes
Resolves #91.

Whenever build/sbt test command is run, the warnings below are printed to the console:
[warn] there are 3 keys that are not used by any other settings/tasks:
[warn]
[warn] * cli / Compile / logLevel
[warn]   +- /home/runner/work/unitycatalog/unitycatalog/build.sbt:206

This issue comes from the key linting added in sbt 1.4.0, which warns keys are used by some tasks but not by others. In our case, Compile / logLevel is used in cli, client, server but not in apiDocs.

Thank you @tlm365 !
@vikrantpuppala can you double check whether this fixes the issue you reported in #91 ?

@vikrantpuppala @tlm365 is this PR ready?

@vikrantpuppala @tlm365 is this PR ready?

@tdas I think it's fine. But @vikrantpuppala is concerned that removing lint the key Compile / logLevel might be an unexpected behavior.

Thank you for this contribution @tlm365, can we merge this please @tdas?


Extend the companies API

Add "followers_stats", "status_update_stats" and "update" in companies API

@gpiroux would you mind to write the test for these?


Added skipConsumer flag

Added the skipConsumer flag so clients can skip it for instances where the consumer is not needed.
Couple notes:

The existing tests were failing so made new ones for this change (those tests don't like it would do anything so maybe we can remove them altogether? noticed they were from the original repo)
Also noticed the dist/ content was not being ignored so committed that as well
Used this ['property'] notation to test protected members, is that ok?

The existing tests were failing so made new ones for this change (those tests don't like it would do anything so maybe we can remove them altogether? noticed they were from the original repo)

Agree with removing them.

Used this ['property'] notation to test protected members, is that ok?

Hacky but works! Wouldn't do this on the code but given this are tests I think that's fine.


lint: add elseif checker v1

Fixes #77

@bontequero, could you review this for me?
We're better off merging recent checkers before new changes into architecture arrive.


Support for use in browser (webpack, browserify)

Is there any intention to support use of this module in the browser? Obviously certain transports would no longer be valid (i.e. file transports), but there's still plenty to this lib that makes me want to use it. Unfortunately, when including it in a webpack build I get errors due to the unchecked use of the fs module.

@joshacheson a PR for this would be welcome. Until then, this is a duplicate of #287.

FYI, It can be supported with the (BRFS)[https://github.com/substack/brfs] plugin at transform time.


Storage poc

Creating the same PR on separate branch as I cannot push to @StephenCoady fork.

Executed performance tests:

Latest release (no improvements in storage - using window.localstorage)
4mb of cache 7mb of offline data. The device works as a radiator

IndexedDB without tunning
12 mb of cache made my device explode
8 mb of offline

IndexedDB Object based (no JSON.stringify)
21mb of cache
90mb of offline data

No slow down in application (until the app is restarted ;)
The ultimate fix will be to add indexing/cursor instead of fetching entire offline data at startup however this will be noticeable with really large datasets.
Still working on this.
Ping @StephenCoady

Cache is saved as object directly.


fix: update svelte-eslint-parser to fix nested {#snippet}

Hmm. The latest svelte/compiler v5 seems to give an OOM error for the following code. I don't know why yet.
{#snippet
foo(
{
a
}
)
}
{/snippet}
{@render
foo(
{
a
}
)
}

There seems to be no problem with 5.0.0-next.163. There may be a problem with the difference with 5.0.0-next.164.

I haven't written a test case yet, so I'm not sure, but we may need to add the s flag to handle newline characters.
https://github.com/sveltejs/svelte/pull/12070/files#diff-07a9d6689d63c982b2e3a45ae4bd624240d27824e8c5bdce8a539b4d2a7c36f1R282

It seems to have been fixed already, we just need to wait for the next version release.
https://github.com/sveltejs/svelte/pull/12144/files

Some issues were still not fixed, so I opened an issue in the svelte repo.
https://github.com/sveltejs/svelte/issues/12156


What may lead to inconsistent outputs (when the binaries are compiled with different compiler versions)?

Hi,
Thanks for your contribution to the fantastic tool! May I ask some questions for you when I tried to use your tool in my current research work?
I expect the tool could stably produce CFG with different binaries from the same source code but with varying compiler versions,  and I will further investigate the difference between those binaries. After running the tool for a couple of days, I found that in some cases, asm2cfg produces significantly different CFGs. I am not an expert on the binary world, and I guess I may wrongly use the tool. So, please fix me if I misunderstood something, thanks!
The following are simple experiments to explain what I want to convey. The source code test.c will be compiled with gcc-11.1.0 -O1 test.c -o test1 to test1 and with gcc-trunk -O1 test.c -o test2 to test2. Then, I used the command recommended on the homepage to produce assembly code. Note that in test.c, I insert some 'markers' to represent different blocks and those markers should not be optimized away.  Note that the marker in test2.asm but not in test1.asm does not mean those markers are optimized away. To say why I natively run the two binaries with input and here are the results:
$./test1  0 0x0 0x777700 0 0x7 0xa7 0x0 0 0 0 0x0 0x8 0xA 0x000 0xA
start04321323394396400410422555567573end
$./test2  0 0x0 0x777700 0 0x7 0xa7 0x0 0 0 0 0x0 0x8 0xA 0x000 0xA
start04321323394396400410422555567573end

The sequences start04321323394396400410422555567573end means start 0 4 321 323 394 396 400 410 422 555 567 573 end. We can see some markers (e.g., marker_4) are alive but they are not presented in the test1.asm.
I used the current master version of asm2cfg and the gcc-trunk version is gcc version 13.0.0 20220528 (experimental) (GCC).
Here are some files I mentioned above to help reproduce in your machine (test-E.c is the source code preprocessed with gcc -E test.c).
reproducer.zip
What may be the reason why test1.asm lacks so much information? Is it possible for me to get the right results?
Thank you so much and looking forward to your response!
Best regards,
Haoxin

Hello and thank you! I'm not so familiar with GCC internals, more with LLVM. I originally started this tool for my research as well on LLVM.
I would highly suggest that different major GCC versions are able to produce different looking binaries for sure. This is also the case with LLVM. With different LLVM versions for example the optimizations passes might have changed a bit, or some default threshold values might have changed which affect the optimization decisions, or some other reason why compiler might have taken different turn with the optimization passes.
My best guess to track this down would be if you are able to print intermediate presentation (IR) after each optimization pass in GCC. In LLVM it's possible to see IR after each pass and also print the pass names used. I don't remember the flags anymore from top of my head. Been a long time since last worked with LLVM. IR is of course not the last assembly, but could give you clue what has changed between GCC versions.
Another quite handy tool to use is Compiler Explorer. I tried to copy paste your code there but it complains about missing include. You can there quickly test with different GCC and LLVM versions what is the compiled output.
Hope these helps!

Hi @Kazhuu, thank you so much for your insightful and helpful comments and suggestions!
Let me continue to investigate more and see what could be a better solution for me.
I just close this issue for now and thank you again for your time!


Fix several typos in tutorial

Found several typos in docs/source/tutorial/convnet.rst

detectiong => detecting
segmenation => segmentation
registedred => registered

LGTM

Thank you for your contribution!


Fix a PerformanceInliner crash caused by a null callee signature.

This is an obvious drive-by fix. It will crash when building
Foundation after I commit changes to the pipeline. My attempts at
creating a unit test were unsuccessful because it depends on some
interaction between inlining and specialization heuristics.

@swift-ci test.

You’ll be thrilled to know that hasAnySubstitutableParams() is going away once I figure out how to tweak the optimizer to fix the performance regression: https://github.com/apple/swift/pull/23291

@slavapestov Maybe #23291 will be fixed by https://github.com/apple/swift/pull/22445.


tabular sarsa update

Hi, just checking for my own sanity: in both tabular/sarsa_agent.py and tabular/sarsa_sr_agent.py you use the following to update q:
def update_q_values(self, s, a, r, next_s, next_a):
self.q[s][a] = self.q[s][a] + self.alpha * (r + self.gamma - (1.0 - self.env.is_terminal()) *
self.q[next_s][next_a] - self.q[s][a])
why is it r + self.gamma - (1.0-terminal)q[next_s][next_a] ... rather than r + self.gamma(1.0-terminal)*q[next_s][next_a] ?
you do the same with the SR update. This is a mistake, right? (I can see it might not effect the results too much, but I just wanted to check!)

Good catch, @henrycharlesworth ! Thanks for that. It seems you are correct.
I'll need to fine tune the parameters again for both Sarsa+SR and Sarsa in RiverSwim and SixArms. The parameters I report in the paper are not that effective. I'll be pushing a fix soon.

I fixed this issue in my last commit. This bug does change the results reported in the paper (I'll make sure to update it on arXiv soon). For the record, now when we run the code this is what we have (standard deviation over 100 runs is reported between parentheses):
Riverswim

Sarsa+SR w/ L1-norm: 1,213,544.1 (540,453.8)
[ step_size: 0.25 ; gamma(sr): 0.95 ; step_size(sr): 0.01 ; beta: 100 ; epsilon: 0.1 ]
Sarsa+SR w/ L2-norm: 1,192,052.4 (507,178.5)
[ step_size: 0.25 ; gamma(sr): 0.99 ; step_size(sr): 0.01 ; beta: 100 ; epsilon: 0.1 ]
Sarsa:  24,769.85 (196.1)
[ step_size: 0.005 ; epsilon: 0.01 ]

SixArms

Sarsa+SR w/ L1-norm: 1,052,933.8 (2,311,616.8)
[ step_size: 0.1 ; gamma(sr): 0.99 ; step_size(sr): 0.01 ; beta: 100 ; epsilon: 0.01 ]
Sarsa+SR w/ L2-norm: 819,926.7 (2,132,002.9)
[ step_size: 0.1 ; gamma(sr): 0.99 ; step_size(sr): 0.01 ; beta: 10 ; epsilon: 0.01 ]
Sarsa:  247,977.1 (4,969.5)
[ step_size: 0.465 ; epsilon: 0.03 ]

Conclusion
In summary, the general message of the paper doesn't change with the new results. Using the SR as an exploration bonus even in the tabular case drastically improves the performance of RL agents in RiverSwim and SixArms. Surprisingly, there was a considerable drop in performance though. It is interesting to understand why the introduced bug generated such a good result (it is equivalent of using gamma = 1 and an additional bonus on the reward signal). Finally, in these domains, using the L2-norm of the SR leads to worse performance than when using the L1-norm of the SR. This is the only change from the conclusions currently present in the paper.
I really appreciate the fact that you took the time to read my code and reach out telling me about the bug. Hopefully this answers your question.


Refactor widgets

Widgets are now finally based on existing code in vtk.js.
As a bonus, there's a small fix for updating the point placement positions on manipulator change.

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


RFC: useNewFetcher()

Would love feedback @dair-targ, @smith-it @Jamakase @Secretmapper @Jsarihan @yunyu @praxxis @zacharyfmarion @kmartinezmedia
Motivation
Fixes #463, #458, #428, #316, #358
Lots of improvements can be made to useFetcher() design - both based on understanding of use cases, as well as evolution of interfaces like Endpoint.
Providing a new hook allows for incremental adoption of a complete redesign of many of the concepts incorporating 2 years of learnings and experience across many companies.
There are two major areas of change here

The hook and fetch itself
Programmable side-effects

References:

Endpoint (these replace FetchShape in 5.0)
UpdateParams

class User
class User extends Entity {
  readonly username: string = '';
  readonly firstName: string = '';
  readonly lastName: string = '';
  readonly isAdmin: boolean = false;
  pk() { retulrn this.username }

  get getterValue() { return this.username.toUpperCase(); }
  get fullName() { return `${this.firstName} ${this.lastName}`; }
}

Summary:

One hook, many endpoints
Completely flexible, variable arguments
Resolve/return value
Endpoint definition - new updater

Details
One hook, many endpoints
The rules of hooks are very restrictive, so the less hooks you have to call, the more flexible. This also benefits render performance. In many cases you might want to fetch many different endpoints. What's worse is if you don't know which endpoints you might want to fetch upfront. With old design you'd have to hook up every possible one. This really destroys fetch-as-render pattern, as you want to be able to prefetch based on possible routes.
Before
const createUser = useFetcher(User.create());
const refreshUsers = useFetcher(User.list());

return (
<form onSubmit={() => createUser({}, userPayload)}>
  <button onClick={() => refreshUsers({})}>Refresh list</button>
</form>
);

After
const fetch = useNewFetcher();

return (
<form onSubmit={() => fetch(User.create(), {}, userPayload)}>
  <button onClick={() => fetch(User.list(), {})}>Refresh list</button>
</form>
);

Completely flexible, variable arguments
The concept of params + body for arguments was introduced to try to provide the most flexible approach in a world where type enforcement wasn't that flexible. With TypeScript 4's variadic tuples, it's now possible to strongly type arbitrary arguments to a function in a generic way. Furthermore, stumbling upon package.json's typeVersions, rest hooks can now publish multiple type versions to be compatible with different versions of typescript. This allows us to eagerly adopt TypeScript 4 features, while providing a usable TypeScript 3 experience.
Some common annoyances with the current parameter limitations are single-variable arguments like detail endpoints with an id, as well as no-argument case like a list endpoint or create endpoint.
const fetch = useNewFetcher();

return <form onSubmit={() => fetch(User.create(), userPayload)}><button onClick={() => fetch(User.list())}>Refresh list</button></form>

We'll also eventually bring this to the 'read' hooks like so:
// notice username is just a string, rather than object
const user = useResource(User.detail(), username);
// here we don't need arguments
const posts = useResource(Post.list());
// but list() has it being optional, which means this also works:
const goodPosts = useResource(Post.list(), { good: true });
// postId is a number in this case
const thePost = useResource(Post.detail(), postId);

Resolve/return value
Before
Currently the promise from a useFetcher() resolves with exactly the data from the endpoint's fetch.
This is problematic for a few reasons:

These are typically typed with the Denormalize<Scheam> of the endpoint, which often deviates from the value by having classes instead of pojos.
In some cases having access to the classes itself is useful - for instance using class methods, getters, etc. Or even using the value to compare with what comes out of useCache/useResource

Currently the resolution of the promise happens upon commit of the updates to the cache state. This guarantees any updates from the fetch exist in the current react render/DOM before processing the next step.
After
Idea 1) Just change resolution to denormalized value
const fetch = useNewFetcher();

const onClick = async () => {
  const userEntity  = await fetch(createUser, userPayload);
  assert(userEntity instanceof User);
  assert(data.getterValue !== undefined);
  return userEntity;
}

Pros:

simple revision, easy to use

Cons:

normalize+demoralize computation must be called for every fetch.

in practice, I've found that the majority of cases, the actual resolved value is not needed so this is some amount of extra CPU work that is wasted
We could provide two hooks - one that does this and one that doesn't. However, this introduces a larger API surface area.

Idea 2) Two stage promises
This sort of matches the fetch pattern - where the headers like status are available immediately, but json() returns another promise.
This also enables distinguishing the stages of a fetch - the resolution of fetch itself, and the commit of the updates to the DOM and react tree.
const fetch = useNewFetcher();

const onClick = async () => {
  const { data, commit } = await fetch(createUser, userPayload);
  assert(isPojo(data));
  assert(data.getterValue === undefined);
  // no DOM updates - react is still rendering previous value
  const userEntity = await commit();
  // now any DOM operations based on this resolution are complete
  assert(userEntity instanceof User);
  assert(data.getterValue !== undefined);
  return userEntity;
}

Pros

we can also distinguish between different phases of resolution

tho it's questionable the utility of doing anything before commit in what will always be react-land code. this might introduce more bugs

Only do computation when needed

Cons

common case slightly more complicated as you have to index into .data.

This is another thing to know, however it is quite discoverable in typescript so not super terrible.

Endpoint definition - new updater
By normalizing Entities, Rest Hooks guarantees data integrity and consistency even down to the referential equality level. However, there are still some cases where side effects result in changes to the actual results themselves. The most common reason for this is creation of new entities. While 'creation' is almost universally the cause for this (as deletion is handled more simply by delete schemas), the structure of data and where created elements go is not universal.
Before
Previously this was enabled by an optional third argument to the fetch UpdateParams enabling programmatic changes that are also strictly type enforced to ensure the data integrity of the Rest Hooks store.
const createArticle = useFetcher(ArticleResource.create());

createArticle({}, { id: 1 }, [
  [
    ArticleResource.list(),
    {},
    (newArticleID: string, articleIDs: string[] | undefined) => [
      ...(articleIDs || []),
      newArticleID,
    ],
  ],
]);

While simple, this design had several shortcomings

Only operates on the normalized results, often arrays of strings

This is non-intuitive as this doesn't relate directly to the data's form and requires understanding of internals
Code is confusing with two ordered args and necessary default handling
Lack of access to entities means sorting is not possible
Can only update top level results, which means lists nested inside entities cannot be updated

Is provided as an argument to the fetch rather than endpoint

Makes variable arguments impossible, and hard to reason about
Makes pattern reuse still require explicit wiring
Was thought to be more flexible than in 'fetchshape', as it has access to local variables in its event handler. However, Endpoints's can easily use .extend() to contextually override so this feature is moot.
Encourages antipatterns like writing hooks for specific endpoints

After

Operate on the actual denormalized form - that is the same shape that is consumsed with a useResource()
Move to Endpoint
Take the denormalized response as arg to first function
builder pattern to make updater definition easy

typeahead
strong type enforcement
much more readable than a size 3 tuple

Simplest case:
type UserList = Denormalized<typeof userList['schema']>

const createUser = new Endpoint(postToUserFunction, {
  schema: User,
  update: (newUser: Denormalize<S>)  => [ userList.bind().updater((users: UserList = []) => [newUser, ...users]) ],
});

More updates:
Component.tsx
const allusers = useResource(userList);
const adminUsers = useResource(userList, { admin: true });
const sortedUsers = useResource(userList, { sortBy: 'createdAt' });

The endpoint below ensures the new user shows up immediately in the usages above.
userEndpoint.ts
const createUser = new Endpoint(postToUserFunction, {
  schema: User,
  update: (newUser: Denormalize<S>)  => {
    const updates = [
      userList.bind().updater((users = []) => [newUser, ...users]),
      userList.bind({ sortBy: 'createdAt' }).updater((users = [], { sortBy }) => {
        const ret = [createdUser, ...users];
        ret.sortBy(sortBy);
        return ret;
      },
    ];
    if (newUser.isAdmin) {
      updates.push(userList.bind({ admin: true }).updater((users = []) => [newUser, ...users]));
    }
    return updates;
  },
});

Extracting patterns
In case more than one other endpoint might result in updating our list endpoint, we can centralize the logic of how that should work in our updated endpoint.
const userList = new Endpoint(getUsers, {
  schema: User[],
  addUserUpdater: (this: Endpoint, newUser: User) => this.updater((users = []) => [newUser, ...users]),
});

const createUser = new Endpoint(postToUserFunction, {
  schema: User,
  update: (newUser: Denormalize<S>) => [
    userList.bind({ admin: true }).addUserUpate(newUser),
    userList.bind({ }).addUserUpate(newUser),
  ]
});

Alternate Ideas - The programmatic approach
The no guarantees
const createUser = new Endpoint(postToUserFunction, {
  schema: User,
  update: (newUser: Denormalize<S>, state: State<unknown>) => {
    return {
      ...state,
      results: {
        ...state.results,
       [userList.key({ admin: true })]: [newUser.pk(), ...state.results[userList.key({ admin: true })]],
       [userList.key({ })]: [newUser.pk(), ...state.results[userList.key({ })]],
     }
    }
  }
}

Store Adapter
const createUser = new Endpoint(postToUserFunction, {
  schema: User,
  update: (newUser: Denormalize<S>, store: Store) => {
    const prependUser = (users = []) => [newUser, ...users]
    if (newUser.isAdmin) {
      store = store.set(
         userList.bind({admin: true}),
         prependUser
      );
    }
    store = store.set(
       userList.bind({}),
       prependUser
    );
    return store;
  }
}

const createUser = new Endpoint(postToUserFunction, {
  schema: User,
  update: (newUser: Denormalize<S>, store: Store) => {
    // this actually goes through every current result based on this endpoint
    // however it does not update extremely stale results for performance reasons
    store.get(userList).mapItems((key: string, users: User[]) => {
      if (!key.includes('admin') || newUser.isAdmin) {
        return [newUser, ...users];
      }
    });
  }
}

Another idea is to make an updater callback with identical API to manager middleware. We would probably want to minimize chaining actions, so some way of consolidating into one action would be preferable. Adding an adapter to raw state might be good for Manager's as well, so designing this interface could be beneficial to optionally improving middleware interfaces.

@praxxis Thanks for the response. Updated the description pretty heavily - both based on your questions and some evolution of my thoughts. Also reorganized the post to clearly delineate each change in its own section.

Adding an instance I encountered where a two stage promise would be helpful. This is within a modal that deletes a resource and closes on delete success.
const data = useResource(SomeResource.detail() { id })
const doDelete = useFetcher(SomeResource.delete())
// later on
onClick = async () => {
  await doDelete({ id })
  closeModal()
}

In this case, the component is still mounted when the delete completes, so useResource refetches, deterministically triggering a 400. A two stage promise should allow the component to unmount when the request succeeds but before the change is committed to the resthooks cache.

@sweetro This is very unexpected. It should be resolving that promise before the state is updated - unless you're using optimistic updates? If optimistic updates are used you'll want to just rearrange the lines:
const data = useResource(SomeResource.detail() { id })
const doDelete = useFetcher(SomeResource.delete())
// later on
onClick = async () => {
  closeModal()
  await doDelete({ id })
}

Resolved with #1239


Issue with k8s.io/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive/

This is a...

[ ] Feature Request
[x] Bug Report

Problem:
Online tutorial is not working. It gives an error about being unable to connect to "localhost:8080".
Proposed Solution:
Page to Update:
https://kubernetes.io/...

@psinghsp - could you share more details about your environment?
cc: @BenHall


Prevent publishing a post if it contains default title or default slug

Default title as Draft
Default slug as draft-{uuid}
if the post contains the default title or the default slug, it doesn't allow publishing it.
Asked here https://github.com/writingink/wink/issues/4#issuecomment-436954430

Thanks :)


Missing signature

Hi there,
I'm new to this panel and I'm running Grafana v.9.4.7.  I'm trying to run the innius-video-panel-1.0.7, but it says it is unsigned on the plugin page.
Found this closed thread from ~2 years ago saying that it was signed.  https://github.com/innius/grafana-video-panel/issues/9
I tried to uninstall the plugin but unsuccessfully with a prompt stating can not uninstall a core plugin; also tried to allow the loading of unsigned plugins in the config file but still won't load it properly upon restarting the grafana.
I also tried to manually install the 1.0.7 panel in the grafana/plugins folder yet still no luck...
Could you please advise what else I can or I should do to use this video panel?
Much appreciated!

Hello @Arjak11
Thanks for your issue. As far as I know there is nothing wrong with the signature of the plugin. I have it running in many different instances (both on premise and grafana cloud instances). I have never seen this error. This plugin is certainly not a core plugin so I suspect you are not managing the plugins correctly. Please checkout the grafana docs once more for more details about how to install plugins.
Kind Regards,
Ron


Various CI updates to test with updated ubuntu-latest images

https://github.com/actions/runner-images/issues/10636

Merged in 82dc9a9e84006eb8521b39313de30db569ed6f9e


As a user, I want a sorted list of all capital cities in a specific region, organized by population from largest to smallest so that I can gain insights into the demographic landscape of capital cities within that particular region

SQL:
select city.Name, country.Name as Country, city.Population  from city inner join country  on country.Capital = city.ID
and country.Region = '%region%'
order by city.Population desc;
Parameters:
%region%

report19.xml file added to feature/reports branch


fix: errenous critical log when GUILD_MESSAGES intent is used

About
by default the GUILD_MESSAGES intent (unprivileged) was causing critical logs on startup about not having a message content privileged intent
This pull request is about (X), which does (Y).
Checklist

[X] The pre-commit code linter has been run over all edited files to ensure the code is linted.
[X] I've ensured the change(s) work on 3.8.6 and higher.
[X] I have added the versionadded, versionchanged and deprecated to any new or changed user-facing function I committed.

Pull-Request specification
I've made this pull request: (check all that apply)

[ ] For the documentation
[ ] To add a new feature
[ ] As a general enhancement
[ ] As a refactor of the library/the library's code
[X] To fix an existing bug
[X] To resolve #1289

This is:

[ ] A breaking change

Merging. Thanks for contributing!


puppet: Switch to checking time against the AWS timeserver.

Since this is what chrony is sync'ing to, it lessens the chance of
spurious firings of this alert.
See https://aws.amazon.com/blogs/aws/keeping-time-with-amazon-time-sync-service/
Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[ ] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[ ] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[ ] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

Merged, thanks @alexmv!


Feature request: Migrating packages

Thanks for NVM for Windows. Would it be possible to implement the same feature as NVM has, that migrates global packages too?
https://github.com/creationix/nvm#migrating-global-packages-while-installing

Actually just changed from Node 8.8.1 to 8.10 and the installed global packages are the same. That should not be the case, or?

Which command did you run?

Two years ago? :-D I'd guess install and then use. Are there other ways?

Referensi kepada saya agar dapat menjalankan perintah?
Saya belum memahaminya..
,😉😉

Reference to me to be able to run the command?
I do not understand it ..
, 😉😉

Two years ago? :-D I'd guess install and then use. Are there other ways?

Haha, yeah was just wondering how this was possible since the whole issue list is full of people screaming for this feature

Well, as I remember it the packages for some reason was still there after changing which should normally not be the case. Hence the question.

****
``
@petervangennip
Jika mendapati masalah sekalipun kecil, ada baiknya bertanya, seperti mrminta fitur untuk di migrasi? agar semua menjadi baik.

****
``
@petervangennip
Jika mendapati masalah sekalipun kecil, ada baiknya bertanya, seperti meminta fitur untuk di migrasi? agar semua menjadi baik.

I really don't understand this man

Migrating packages is non-trivial, and conceptually it is far more about the npm ecosystem than it is about Node.
The biggest problems are native modules, some of which only work on specific architectures (32 vs 64 bit). It is also possible to specify a minimum and even maximum version number for a module. This means diving into the package.json file to determine when something can or cannot be migrated.
The other problem is the footprint size. If you migrate modules onto a SAN or network drive, you can be moving/adding many GB of data at a time. This can be exceptionally slow on some networks.
I know nvm for *nix has this, but the nature of the most common Windows environments are significantly different. I don't really see this being added to this tool, but I have been experimenting with some migration concepts in the successor project (code named "rt", not public at the moment). I can't guarantee migrations will make it in, but it's certainly on the table.


Request to add a new deployment by helm CLI

Is there a way to create a new kubernetes deployment  by  helm CLI
I already run the helm install  test  xxx.tgz -n ns  , and create a series of deployments.
After run this several days,  I want to create a new deployment to this running kubernetes .
How to do it by Helm CLI?

Hi @dingmeng. Have you had a chance to read through the documentation yet?
https://helm.sh/docs/chart_template_guide/getting_started/

Closing as unresponsive. Let us know if you require more information after reading through the docs.
Thanks.


Can sol::overload take lua_CFunctions?

I'd like to know if it can, for optimisation reasons. If it can't that's fine - I can just pass them the normal way. I can't really find anything about this in the docs, but it could be that I'm not looking hard enough.

You can. But, how would you access the lua_CFunction, from Lua?

To be more clear:
void func_1 (int) {

}

void func_2( std::string ) {

}

int func_3 (lua_State* L) {

}

int main () {
     sol::state lua;
     lua.set_function( "f", sol::overload(
          func_1,
          func_2,
          func_3
     ));

     lua.script("f(1)"); // func_1
     lua.script("f('hi')"); // func_2
     lua.script("f(????)"); // ????
}

That's the problem I've come to. I've considered making some sort of generator for a "combo function" which uses lazy evaluation to check the arguments and decide which C++ function to call, but haven't tried it yet. I assume this is what sol::overload is doing internally.

sol::overload checks the arguments when you call the function (so lazily, I guess??) and then matches to the first argument in the list that matches (first-come, fist-serve overload matching).
If you want to "hijack" into sol2's overloading mechanism and specify a "failure fallback" (?? I'm guessing, I still don't know what you want out of when someone calls 'f' with an unrecognized overload), that's not supported right now.
Right now, what happens is 1 and 2 would work, but anything asides from that that does NOT match will just error. Do you want a "call this if nothing matches" fallback? Or are you asking for something else? (The immediate answer to your question is no, no we do not have anything like that).
Note that you can simulate a "catch-all" function by changing func_3 to be...
sol::variadic_results func_3 (sol::variadic_args args ) {
     sol::variadic_results r;
     // inspect "args" for things you want like any other sol2 object
     // add things to variadic_results as needed
     return r;
}

See:
http://sol2.readthedocs.io/en/latest/api/variadic_args.html
http://sol2.readthedocs.io/en/latest/api/variadic_results.html
Note that variadic_results is just a std::vector<sol::object>. If you know you're not returning anything more than 1 object, you can 'optimize' down to a sol::object return.

 Thanks.
And to clarify, I was asking about a "call this if nothing matches" fallback.

I should probably add that variadic_results + variadic_args  fallback to the examples. But I'm still working on other stuff right now. I'll put it in the back of my mind.
I need... a LOT of more "advanced" examples. People definitely want them, but I don't know what "advanced" usage looks like for people. These kind of issue requests help me add things that people can understand easier, so thank you for filing them.

That's ok.
In terms of checking what's in the stack is compatible with a given overload, what I have at the moment is this; the culmination of a collection of static functions to construct a Vector:
if(sol::stack::check_get<FRotator>(lua_state, 1))
{
	return UKismetMathLibrary_Conv_RotatorToVector_Proxy(lua_state);
}

if(sol::stack::check_get<float>(lua_state, 1) && sol::stack::check_get<float>(lua_state, 2))
{
	return UKismetMathLibrary_MakeVector_Proxy(lua_state);
}

if(sol::stack::check_get<float>(lua_state, 1))
{
	return UKismetMathLibrary_Conv_FloatToVector_Proxy(lua_state);
}

if(sol::stack::check_get<FIntVector>(lua_state, 1))
{
	return UKismetMathLibrary_Conv_IntVectorToVector_Proxy(lua_state);
}

if(sol::stack::check_get<FVector2D>(lua_state, 1))
{
	return UKismetMathLibrary_Conv_Vector2DToVector_Proxy(lua_state);
}

if(sol::stack::check_get<FLinearColor>(lua_state, 1))
{
	return UKismetMathLibrary_Conv_LinearColorToVector_Proxy(lua_state);
}

return luaL_error(lua_state, "A matching overload could not be found for the given argument set.");

To do this the generator constructs a tree of the arguments needed by each version of the function, orders them most-to-least complex, and removes any that don't narrow anything down.
It doesn't work, though. Calling this generated "multi proxy" function (lua_State* lua_state is the only argument) will invariably cause a crash. I assume there's a much better way of figuring out what's stored in the stack that I'm just missing here.

Check is a function that returns just a boolean. It is documented: http://sol2.readthedocs.io/en/latest/api/stack.html#stack-check
If you do not give it a handler, it passes a no_panic handler.
Your overload resolution looks primitive, but more or less fine. If you can guarantee certain arities, you can eliminate large chunks of these checks by getting how many items are on the Lua stack (int arg_count = lua_gettop(lua_state);), and then eliminating all of the calls that do not have the necessary number of values.
If you use sol::variaidic_args, you get the argument count for the function call for free (.leftover_count()), you can retrieve a proxy element for a certain index auto p = vargs[index], and then you can still use sol::stack::check(lua_state, p.stack_index()) and then do p.get<T> when you need it.

This has been formalized for sol::variadic_args and there is an example for it in the repository now: https://github.com/ThePhD/sol2/blob/develop/examples/overloading_with_fallback.cpp
This is also part of the tests.


Change MultiCanvas line drawing logic to handle prerendered peaks

Implemented fix proposed by @chinshr, with a minor change. I calculate the length variable in the drawWave method instead of drawLine to avoid redundant calculations.
Please don't accept until @chinshr has had a look.

Coverage remained the same at 4.756% when pulling 19e03d2c1660226634fcf4147e2af65a71aeec7d on chrisparton1991:bug/multi-canvas-prerendered-peaks into 92517a5c131dabd3c04c4669216d603fb1a75fe1 on katspaugh:master.

This works. Great job, thanks!


All types sample

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Dev 5.x dev brett

Changes
Compatability with the 8.0+ PHP SDK.
References
v5 development thread
Testing
Please describe how this can be tested by reviewers. Be specific about anything not tested and reasons why. If this library has unit and/or integration testing, tests should be added for new functionality and existing tests should complete without errors.
[x] This change has been tested on the latest version of Symfony
Checklist
[ ] I have read the Auth0 general contribution guidelines
[ ] I have read the Auth0 Code of Conduct
[ ] All existing and new tests complete without errors

Hi @brettins 👋 Apologies for not seeing this sooner. We really appreciate you taking the time to make improvements to the SDK! We decided to go a slightly different route with V5 in the end, which you can read more about here: https://github.com/auth0/jwt-auth-bundle/issues/130#issuecomment-1336763726
That doesn't mean your effort here wasn't noticed and greatly appreciated, though — thank you! I hope you'll give the V5 beta a try and see if you can find more areas to improve there with us.


Add an "Unsubscribed" streams tab

When browsing streams to potentially subscribe to, it would be helpful to just view streams to which you're not currently subscribed. We should:

[ ] Add an "Unsubscribed" tab to the streams UI.
[ ] Direct the "Browse streams" and "Subscribe to more streams" links in the left sidebar to that tab.

Notes:

If the user is subscribed to all streams they can view, we should show a "No streams to show. View all streams" message. (We can play with the wording.)
For guest users, this new tab should be disabled whenever the "All streams" tab is disabled.

Hey @alya, I have implemented the things that you have listed in the issue for now. I have also created a thread in the CZO for this. Also I am little confused about the order of the tabs in stream settings.
Uploading a gif describing the working of the unsubscribed tab:

Cool, thanks! Please post a PR when ready.
Let's try putting "Unsubscribed" on the right; I think that will work best.

Done! I have pushed the PR. There are still some node tests that have to be done but I think you can test the working for now.


Sentry package - send events created offline when online

Use case
While using the Sentry package and sending events/exceptions you will lose data if offline. The package should save the messages until a point when the device has network again.
This data can be critical to supporting your app in the field.
Proposal
The Sentry package should save events/exceptions created while offline and send them when online

Offline caching is definitely useful but it's also required to handle hard crashes (i.e: segfault or a UncaughtExceptionHandler on Android). That's because often it's not possible to even stablish a TLS connection with Sentry before the app is gone.
Offline caching is supported by Sentry's cocoa and android SDKs already so ideally we'll do the same as the react-native Sentry SDK and simply piggy back on the native SDKs.

@bruno-garcia I would actually prefer a pure dart implementation. Much more portable for web/desktop, like the current one is. All the app would need to provide is a path to write to.

There are surely many advantages of having it all written in Dart. One of the downsides is that it won't capture crashes that happen in any Java code, or native (like a segfault). Even though we hope to provide as much functionality in a pure Dart SDK, IMHO most cases will be advisable to use the hybrid one.

Perhaps the base library can be dart based but with a native plugin library that adds specific support per platform when needed.

Agreed, we'll work on the Dart API too, it should still have a lot more features on its own.

A problem with this hybrid approach is that it won't work on other Flutter platforms like Windows or macOS.

Sentry has SDKs for macOS and Windows (native) and I assume one would want to capture also hard crashes caused by native code and that we could only do with some native SDK underneath.

We've released an alpha version of it for Android and iOS, give it a try and let us know if you find any issues :)
https://docs.sentry.io/platforms/flutter/


ESP32S3/S2 RISC-V ULP touch read example (IDFGH-9077)

Is your feature request related to a problem?
The ESP32S3 and S2 are unable to support wake-up with more than one touchpad.
Describe the solution you'd like.
However, the ULP RISC-V is able to read Touch registers and wake up the chip when any of them are touched.
An example with such a solution would be very helpful.
Describe alternatives you've considered.
No response
Additional context.
No response

Hi! @sudeep-mohanty! Any progress with this example? Please!!! ;-)

Thank you @sudeep-mohanty.
This is very important for our company LuON.me, because handling touch wake-up with only one input heavily complicates the code, if we need to handle multiple touch fields.
This increases response time and decreases repeatability.
That's why we're so looking forward to an example of Touch support in ULP to speed up and stabilize battery-powered touch buttons

Hello @MacWyznawca,
Apologies once again for a delayed reply. We have started work on adding touch sensor driver support for the ULP RISC-V. In the meantime, please find attached a basic example of the touch sensor working with the ULP RISC-V core. This hasn't been tested thoroughly and is likely to have changes before it is upstreamed to GitHub but it would present the idea of how the touch peripheral would work with the ULP RISC-V core. I would encourage you to try it out and let us know your feedback on it.
ulp_touch.zip

Thank you very much @sudeep-mohanty, the example works. I thought it would be more difficult (reading registers directly).
However, there is another problem. The current consumption is at a suspiciously high level. It is ~300 uA.
Our projects with ULP analog measurement and Touch Sleep enabled draw ~80-100uA in total (ESP32-S3 with other components and sensors).
Where to look for a solution?

OK, I understand @sudeep-mohanty
For now, I'm coping by using TOUCH_FSM_MODE_SW and starting the reading before the measurement. I've managed to get down to 70-90uA (standard Touch sensor settings), because waiting for the readout also costs some energy.
If you have a better idea, I'll be glad ;-)

Hi @MacWyznawca Back to the original question The ESP32S3 and S2 are unable to support wake-up with more than one touchpad.  there is another solution to work around it, you can call touch_pad_config  to enable the channels you want to use for deep/light sleep wakeup and call esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); to enable the power for touch, then all the channels you configured can wakeup the chip
Do not call xx_sleep_channel_xx at all in this solution, and please keep in mind the more channels enabled, the more frequent the overall external charge and discharge, resulting in higher power consumption.


APT whitelist request for google-chrome-stable in trusty

@clekstro can I get a status update on this? I'm trying to use this in my CI but it fails https://travis-ci.com/asi-pwr/finansowanie/jobs/192568193