Opening homepage of anyone should cause a new tab to open

As discussed with @yashsriv
This is an easy issue.

Here's a reason why this is a bad idea: https://css-tricks.com/use-target_blank/

That article makes a lot of good points!
I originally had the issue that navigating away from the page in any way and then pressing the "back" button gets you to the base search page (instead of your search query etc being open.)  @yashsriv  said that this was the way it was supposed to be if I entered another url manually in the adress bar - but it should not be the case for navigating away by clicking on a link on the page itself (the link in question being the homepage link). That's how we arrived at the solution.
Maybe I should rescope the issue here, so that a consensus can be reached?

Maybe we can add query params to the URL so that, on pressing back, we come back to the exact previous search. However, that might make the URL look dirty due to the large no. of possible parameters. Best to have the link open in a separate tab. What do ya' say?


don't collect observed ArraySymbolics

If is_observed returns true for ArraySymbolic, forward directly to observed instead of collecting first.
Checklist

[x] Appropriate tests were added
[x] Any code changes were done in a way that does not break public API
[x] All documentation related to code changes were updated
[x] The new code follows the
contributor guidelines, in particular the SciML Style Guide and
COLPRAC.
[x] Any new documentation only uses public API

I removed the tuple stuff and added some tests to ensure that ArraySymbolics are forwarede "as is" without collecting if is_(parameter/variable/observed) returns true.

I just ran into some edge case that is tested in SciMLBase downstream in my own work. It will be broken by the changes in this PR. Could you refactor the check in _getp so that instead of checking is_observed(sys, p) it checks any(x -> is_observed(sys, x), collect(p))? Also, it looks like the downstream environment needs to cap SymbolicUtils to <1.6. Please add that here as well so that CI runs.

Could you refactor the check in _getp so that instead of checking is_observed(sys, p) it checks any(x -> is_observed(sys, x), collect(p))?

I guess you're referring to _getu as I am not altering _getp at all? I think changing to any(x -> is_observed(sys, x), collect(p)) is kinda the opposite of what this PR is trying to achieve. Without this PR:

user requests ArraySymbolic sym,

if is_variable(sym) -> call variable_index(sym) without collecting
if is_parameter(sym) -> call parameter_index(sym) without collecting
else collect and try again on the ::NotSymbolic Array of ScalarSymbolic

My PR tries to apply the same behavior to observed states, meaning that is_observed(sym) returns true, call observed(sym) directly without collecting sym. If is_observed(sym) is false, it will collect and call it again on the collected array, which will then hit the code path which does more or less exactly what you suggested anyway
https://github.com/SciML/SymbolicIndexingInterface.jl/blob/c9c7b6c1fd6fd3ac787e6a9d554d84efcd80f2e4/src/state_indexing.jl#L147-L170
So I am not sure what happens in your edge cases, but maybe is_observed does not fall back to some is_observed(_::ArraySymbolic) = false even though observed cannot handle the ArraySymbolic?

The problem is that if you have an ODESystem with parameters p[1], p[2], p[3] (all scalarized, so they're stored as 3 scalars instead of a single vector) and try to do getu(sys, p[2:3]), is_parameter(sys, p[2:3]) is false, but is_observed(sys, p[2:3]) is true, which means that it will generate a function for p[2:3]. These generated functions break type inference, so the operation becomes type-unstable. It's also unnecessarily expensive when in reality this should just be a couple of getindex calls.
I'll check this case with your PR shortly, since it might just not break inference in which case it's mostly fine.


Fix FindReplace Integration tests

Turns out we never adapted our tests for the altered behaviour introduced in #11869.
I tried my best to preserve the test cases.
cc @abose

All tests pass, changes look fine, LGTM

It seems to me that the order of tests will matter now, so if we will start to shuffle around the test code we could start to see some failures.
I wonder if we could do something more explicit about it...

@ficristo You're referring to the "remember the last search behavior", correct? At the very least, each test should store previous value (in beforeEach), then restore it after the test (in afterEach). A better approach would be to mock the mechanism that stores the last search, and then create/destroy a new mock for each test.

@redmunds yes.
Maybe for now we can commit this and file a new issue about this thing: what do you all think?

Oops, Missed this test failure. Thanks @MarcelGerber
The order of the tests will come into picture when the test cases are modified, in which case the author who writes the test will mostly become aware of this quirk. As this will put the test suite back to working state, Merging the fix for now.


Getting "Chat not found" -error

Hey,
I'm using tdlib now for a while. But out of nowhere, I get a lot of those errors

{'@type': 'error', 'code': 5, 'message': 'Chat not found'}

But I'm pretty sure I'm using the right chat_id. Are there other possibilities this error could occur?

Okay now I'm calling getChats for every message I sent. I thought this is obsolete since I'm calling this right after login with tdlib.
However this solved the issue...

Thank you for pointing out. Live saver xD

See https://github.com/tdlib/td/issues/578. This particular issue is about user identifiers, but everything written there can be also applied to chat identifiers.

I have one more question to this behavior: getChats only works if the user has an active chat with me right? So if he removes the chat von chatlist I will get the error "chat not found". But if he saved my number in his contactlist I also could call getContact right?
So what happens if I build my send_message function like this:
getChatgetContact sendMessage

@MalteToenjes If message database is enabled, you need to only once receive a chat with the user in any way. After that you can use the chat without any additional requests.

Thanks for your reply. But still when the user delete/clear the chat from chatlist I will get a "Chat not found" - Error or? Because I still get some of those I would like try to understand why they came sometimes

@MalteToenjes "the user delete/clear the chat from chatlist" is not related to "chat not found". Only the way you get the chat is related. If chat can't be received the way you are trying to get it, then the error happens.


[TASK]: Create error distribution chart

Create a function to return Vegalite specification to show a combination of error-distribution and the "rainplot" of a particular variable(s).
We have a prototype in place under temp/Vegalite.vue, though we will very likely want to change the data input format.
This step requires data manipulation to generate the errors between a given simulated result and some ground truth.
The chart will need to have a output signal, an event that captures what had been selected from link/brush interaction on the chart against the x-asis.
Design sketch:

Duplicate of https://github.com/DARPA-ASKEM/terarium/issues/4275


Performance is very low on ARM

What version of Go are you using (go version)?
1.8.1 (and 1.7.5 to compare with)
What operating system and processor architecture are you using (go env)?
RaspberryPi model 3B with raspbian OS
GOARCH="arm"
GOBIN=""
GOEXE=""
GOHOSTARCH="arm"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/mkk/gopath"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_arm"
CC="gcc"
GOGCCFLAGS="-fPIC -marm -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build329748828=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
What did you do?
My code is using sqlx library and SQLite3 driver. I'm using go test command with --cover argument.
Here is a repo to clone<EMAIL_ADDRESS>To reproduce the issue, clone the repository at commit a40a933, CD to cd almacen, go get all external libraries and make test.
$ git clone<EMAIL_ADDRESS>$ git reset --hard a40a933
$ cd wfrp3-data/almacen
$ go get github.com/op/go-logging github.com/gorilla/mux github.com/jmoiron/sqlx github.com/mattn/go-sqlite3 github.com/stretchr/testify/assert
$ make test

There will be several errors in the output - this is expected:
# _/mkk/wfrp3-data/almacen/whdbobj
/tmp/go-build545648482/_/mkk/wfrp3-data/almacen/whdbobj/_test/_obj_test/cardaction.go:258: undefined: err
/tmp/go-build545648482/_/mkk/wfrp3-data/almacen/whdbobj/_test/_obj_test/cardaction.go:291: multiple-value json.Marshal() in single-value context
/tmp/go-build545648482/_/mkk/wfrp3-data/almacen/whdbobj/_test/_obj_test/cardaction.go:297: cannot use ca.cons.MainText (type string) as type []string in field value
/tmp/go-build545648482/_/mkk/wfrp3-data/almacen/whdbobj/_test/_obj_test/cardaction.go:298: cannot use ca.reck.MainText (type string) as type []string in field value
/tmp/go-build545648482/_/mkk/wfrp3-data/almacen/whdbobj/_test/_obj_test/cardaction.go:300: no new variables on left side of :=
/tmp/go-build545648482/_/mkk/wfrp3-data/almacen/whdbobj/_test/_obj_test/cardaction.go:309: missing return at end of function
?       _/mkk/wfrp3-data/almacen        [no test files]
FAIL    _/mkk/wfrp3-data/almacen/whdbobj [build failed]
Makefile:33: recipe for target 'test' failed
make: *** [test] Error 2

Another side issue is that line numbers in error messages are not correct. For example, the first error states that there is an undefined "err" at line 258 of file "cardaction.go", but line 258 returns an empty string and does not mention "err". Version 1.7.5 was displaying different line numbers for the same error messages, but not correct either: it complains about undefined "err" on line 261, which is a comment line. This happens probably due to presence of multi-line strings enclosed in backticks.
What did you expect to see?

The command executes is just a several seconds (as in version 1.7.5)
(Side issue) Error messages display correct line numbers. For example, the undefined "err" is on line 216.

What did you see instead?

It takes a couple of minutes to execute make test on version 1.8.1 ARMv6.
Incorrect line numbers in the output

I was using 1.7.5 and was used to the performance I had. When I downloaded 1.8.1 to replace 1.7.5, I notices vast performance drop: from some 12 seconds to about 3 minutes.
The slow thing is compiling. This is the command that executes slow:
$ go build --ldflags '-extldflags "-static"' -v .
Here is the output:
github.com/jmoiron/sqlx/reflectx
github.com/gorilla/mux
golang.org/x/net/context
github.com/op/go-logging
github.com/mattn/go-sqlite3
github.com/jmoiron/sqlx
_/mkk/wfrp3-data/almacen

The execution "halts" for almost 3 minutes after github.com/jmoiron/sqlx is printed and before _/mkk/wfrp3-data/almacen is printed. The presence of flags does not impact the performance, so the following command takes just the same time (~3 minutes) to execute.
go build -v .
PS. I'll file a separate issue about line numbers a bit later.

I was using 1.7.5 and was used to the performance I had. When I downloaded 1.8.1 to replace 1.7.5, I notices vast performance drop: from some 12 seconds to about 3 minutes.
The slow thing is compiling. This is the command that executes slow:
$ go build --ldflags '-extldflags "-static"' -v .
Here is the output:
github.com/jmoiron/sqlx/reflectx
github.com/gorilla/mux
golang.org/x/net/context
github.com/op/go-logging
github.com/mattn/go-sqlite3
github.com/jmoiron/sqlx
_/mkk/wfrp3-data/almacen

The execution "halts" for almost 3 minutes after github.com/jmoiron/sqlx is printed and before _/mkk/wfrp3-data/almacen is printed. The presence of flags does not impact the performance, so the following command takes just the same time (~3 minutes) to execute.
go build -v .
PS. I'll file a separate issue about line numbers a bit later.

Please try with go install (instead of go build) and test again.

Yeah, this is almost certainly because go build doesn't do any caching, which we have existing bugs open for. If you run go install or go test -i then subsequent builds will not have to rebuild all the dependencies. (This is not ARM-specific)

Ok. I had to copy "almacen" directory to under GOPATH. My GOPATH is /mkk/gopath, so the full application path is now /mkk/gopath/src/bitbucket.org/dertarr/wfrp3-data/almacen.
Executed the following (with the output) on version 1.8.1:
pi@raspberrypi:/mkk/gopath/src/bitbucket.org/dertarr/wfrp3-data/almacen $ go install -v .
github.com/gorilla/mux
github.com/op/go-logging
github.com/jmoiron/sqlx/reflectx
golang.org/x/net/context
github.com/mattn/go-sqlite3
github.com/jmoiron/sqlx
bitbucket.org/dertarr/wfrp3-data/almacen

It took 3 minutes to complete. Executing the same command for the second time takes almost no time. Then I updated a string literal inside my code and executed the command for the third time. The output is shorter, and the command completes in about 5 seconds, as it doesn't need to rebuild all libraries:
pi@raspberrypi:/mkk/gopath/src/bitbucket.org/dertarr/wfrp3-data/almacen $ go install -v .
bitbucket.org/dertarr/wfrp3-data/almacen

Then I switched to version 1.7.5. and deleted /mkk/gopath/pkg/linux_arm/github.com/jmoiron directory. Executed the command:

It took the same 3 minutes to complete (it was rebuilding all libraries, not just the sqlx). I reverted the changes in the string literal and repeated go install -v . - the command completed in some 5 seconds.

So, the issue appeared in go build with version 1.8.1?

Sounds like this is just the build caching issue, which is known. The meta bug of sorts is #4719 which is partially about removing the need to "install" built deps and just always cache them. We've been making progress towards this over the past few releases, making the buildid in object files more inclusive. But more remains.
I'm going to close this issue. For now, keep in mind that you need to run go install or go test -i to install deps when switching versions if you want go build or go test to be fast.


[Bug] [move-cli] The move-cli package test --filter parameter does not take effect in some scenarios

🐛 Bug
The move-cli package test --filter parameter does not take effect in some scenarios
To reproduce
Code snippet to reproduce
git clone https://github.com/move-language/move.git
cd move/language/tools/move-cli/tests/move_unit_tests/assign_dev_addr_for_dep
move package test --filter M::nop

or
git clone https://github.com/move-language/move.git
cd move/language/tools/move-cli/tests/move_unit_tests/assign_dev_addr_for_dep
move package test --filter 0x2::M::nop

Expected Behavior
match one test
System information
macOS: 10.14.6
move-cli: 0.1.0
Additional context
move package help test:
-f, --filter
A filter string to determine which unit tests to run. A unit test will be run only if it
contains this string in its fully qualified (::<module_name>::<fn_name>) name
Code:  https://github.com/move-language/move/blob/7733658048a8bc80e9ba415b8c99aed9234eaa5f/language/tools/move-unit-test/src/test_runner.rs#L197

@jolestar Can you help cherry pick this PR to starcoin and issue a new version?

with #337 move test --filter only matches module::test_fun, but not address, is this expected behaviour ?

@jiangying000   I hope to solve this issue https://github.com/move-language/move/issues/271

Ok, it may take some time for #271 to be addressed, I can pick #337 to starcoinorg/move first

@jiangying000 After repairing, cherry pick together.

@jiangying000 After repairing, cherry pick together.

ok


C/C++ Weird hex values highlight in enum

Describe the issue
Only the first 0 is highlighted
Which language seems to have the issue?
C and C++
Are you using highlight or highlightAuto?
No idea. It's the default setting on StackOverflow
Sample Code to Reproduce
enum Chairs
{
  OldChair1 = 0x00001,
  OldChair2 = 0x00002,
  OldChair3 = 0x00004,
  NewChair1 = 0x80001,
  NewChair2  // 0x8002
 };

as can be found in this StackOverflow question

Expected behavior
The whole hex number is highlighted
Additional context

Looking at the linked post, it seems that the code is detected as protobuf:

When setting the language to cpp, it is highlighted correctly:

@joshgoebel when trying the auto-detect on the developer-playground, the same snippet is considered crystal, which also leads to broken highlighting:

For thoughts on auto-detect:

https://github.com/highlightjs/highlight.js/issues/1213 (larger discussion)
https://github.com/highlightjs/highlight.js/issues/2910 (more recently)

This is either a mixture of a StackOverflow issue or a pure auto-detect issue, which is just par for the course with a small code snippet like this.  All the X = Y looks very much like a properties or protobuf file which is why this is being auto-detected as on SO.  As @Hirse mentions if you manually specify the language on SO it will be highlighted correctly.
Closing this as cantfix, since auto-correct is "best effort" and often wrong for small snippets.  This is a limitation, not a bug.  Anyone with brilliant ideas on how to make auto-detect more genius are always happy to chime in. :-)
I will split off the Crystal comment to a separate issue as crystal's relevance tuning is CRAZY off and should be fixed.


Checkpoints Request

Hi there,
This work is remarkable and inspires me a lot.  Currently, I am engaged in retraining the model according to the instructions provided in your project.
Nevertheless, I would like to inquire if it would be possible for you to release the pre-trained weights/checkpoints of the model described in the paper. I would greatly appreciate your help.
Thanks,
Best Regards

Hi,
Thanks for your interest in our work. We will release the dataset and checkpoints by the end of June 2024.
Best,
Li

hello, where i can get the checkpoint


Recursion

There's already a code for this question here. Moreover, your function prototype does not match with that of InterviewBit's. If you'd like to get it merged, kindly correct the prototype and see if your solution gets accepted on IwBit.

A reminder, are you working on it?


Allow scoped and local extensions

This allows one to create either a scoped global extension through static::extend(), which will apply to all newly-constructed instances of a class going forward, or they can also use $object->extend() to apply an extension to the single instance at run-time.
This allows access to protected and private methods within an instance, allowing full customisation of a given instance if it's allowed to be extendable.

Could you add some usage examples?

@LukeTowers sure, so one example, which spurned this PR, was me trying to emulate the run method in the Backend\Classes\Controller method - specifically, this block: (https://github.com/wintercms/winter/blob/develop/modules/backend/classes/Controller.php#L219-L243) - within a behaviour.
Since the behavior is provided the controller as a $controller property, I can emulate anything that uses public methods and properties, but I can't use the protected $publicActions and $requiredPermissions properties of that controller.
For example - this won't work:
    public function apiRun(string $action, array $params = [])
    {
        $this->controller->action = $action;
        $this->controller->params = $params;
        $this->controller->suppressView = true;

        // Determine if the action is public
        $isPublicAction = in_array($action, $this->controller->publicActions);

        if (!$isPublicAction) {
            if ($this->controller->requiredPermissions && !$this->controller->user->hasAnyAccess($this->controller->requiredPermissions)) {
                return $this->errorResponse('Unable to access this API endpoint', 403);
            }
        }

With this PR in place, I can use a local extension and return the callback to determine authorisation:
    public function apiRun(string $action, array $params = [])
    {
        $this->controller->action = $action;
        $this->controller->params = $params;
        $this->controller->suppressView = true;

        // Determine if the action is public
        $allowed = $this->controller->extend(function () {
            $isPublicAction = in_array($action, $this->publicActions);

            if (!$isPublicAction) {
                if ($this->requiredPermissions && !$this->user->hasAnyAccess($this->requiredPermissions)) {
                    return false;
                }
            }

            return true;
        });

        if (!$allowed) {
              return $this->errorResponse('Unable to access this API endpoint', 403);
        }

Another example, say I wanted to make a global extension, but needed access to some protected methods, this would now be possible:
FormWidgetBase::extend(function () {
    // $valueFrom is protected, and has no getter in this class.
    if ($this->valueFrom === 'my_field') {
        $this->addDynamicMethod('someMethod', function () {
            // ....
        });
    }
}, true);

Just realised in the most recent tests that this also means that we can now define dynamic methods that can use protected or private methods and properties within.

Hmm, with that example I'm not so sure that extend is the right name for that method, at least in the context of the use case of injecting the provided closure into the context of the object instance that extend() is being called on. Is that the only use case for that method or would there be other reasons to use it like that? Also what would ->extend() inside of an ::extend() look like / be used for / actually do?

@LukeTowers the name can certainly be worked on if there's any better ideas, although extend does hew close to class extends, which is what this functionality does on a smaller scale IMO.
My first example is an example of a global extension (ie. Class:extend()) moving through to a local extension (ie. $class->extend), since it's a snippet of a controller behavior that is adding an apiRun method that then needs to extend further into the controller that the behavior is attached to. Effectively, the local extension is just acting on the specific controller as opposed to acting on any controller.

@LukeTowers any further thoughts on the above?

Tested this with my use case where I need to have access to methods added by behavior and it works beautifully:
MyModel::extend(function () {
    $this->extend(function () {
        $this->behaviorMethodAvailable();
    });
}, true);

And it's amazingly nice to be able to use $this for both static and local closures!

This is so freaking powerful!!! This changes everything.
Amazing work @bennothommo!

What's also very nice is behavior is unchanged if Class::extend() is called only with a $callback.
Also, the error is much more clear when no $callback is provided:
before:
\Cms\Classes\Page::extend();

   ArgumentCountError  Too few arguments to function Winter\Storm\Extension\Extendable::extend(), 0 passed in /home/w2c/w2c.studioazura.comeval()'d code on line 1 and exactly 1 expected.

after:
\Cms\Classes\Page::extend();

   InvalidArgumentException  The extend() method requires a callback parameter or closure.

Let's get the conflicts resolved and a quick docs PR up and then I can review

Ready to go @LukeTowers

Tested this with my use case where I need to have access to methods added by behavior and it works beautifully:
MyModel::extend(function () {
    $this->extend(function () {
        $this->behaviorMethodAvailable();
    });
}, true);

@bennothommo I successfully tested this before the PR got merged, but now it doesn't see the behavior methods...

@mjauvin I'd need to see the context of how you've implemented the extension.

@bennothommo here is an example:
public function boot(): void
{
    \StudioAzura\Aerocom\Models\Service::extend(function () {
        $this->extend(function () {
            $this->addTranslatableAttributes('myTranslatableField');
        });
    }, true);
}

The Service model implements the TranslatableModel behavior and should have the addTranslatableAttributes() method available at this point, but I get error:
Call to undefined method StudioAzura\Aerocom\Models\Service::addTranslatableAttributes()
I tested this exact case before the PR got merged, so I know it was working.
What am I missing ?

@mjauvin I'm not sure how it worked before 😕. Basically, the extension callbacks (ie. the static extend call) are called before the behaviors are loaded. All this PR did was enable the ability to use protected and private methods - it didn't change the ordering of initialisation.

Wait - I saw my comment in your PR that was to introduce the after option to run callbacks after the behaviors are loaded - this should work. I'll investigate this further.

@mjauvin This commit should fix it (a8ba4eef2e96851c5f2293f1fbf70047c3004159), however, I'm still curious as to how it worked before, because it should never have. Static extend calls are always fired before behaviors are loaded, because they provide the ability to dynamically add behaviors. Local extensions (ie $object->extend) fire immediately on the given object, which means when used in a static extend call, it would've fired before the behaviors too.
The commit above will delay local extensions until after the construction is complete, because that was always the intention of them to be available on "constructed" objects (like when used in run-time).

I don't know, but I'm 99% sure I tested this when I wrote the comment in this PR.  The new test case I introduced in that commit is testing your exact scenario?

@bennothommo pretty sure. Where is getFoo() defined ? Is it in a behavior implemented by the model ?

@bennothommo problem is your test class extends the Extendable class, mine extends the Model class (which uses the ExtendableTrait)


[Bug]: ClimateControl entity no longer available

Describe the bug
Since Updating to 0.6.2, the climate control entities are no longer available. The initialisation fails with an exception (see log below). Downgrading to 0.6.1 fixes the issue.
Firmware of your Miniserver
<IP_ADDRESS>
HomeAssistant install method
Hassio
Version of HomeAssistant
2024.1.6
Version of Pyloxone
0.6.2
Update pyloxone
0.6.2 is the latest version
Log
Settings for the log can be found on the main page under the section Log Configuration 2024-02-04 12:20:51.668 ERROR (MainThread) [homeassistant.loader] Unexpected exception importing platform custom_components.loxone.climate
2024-02-04 12:20:51.682 ERROR (MainThread) [homeassistant.setup] Unable to prepare setup for platform 'loxone.climate': Platform not found (Exception importing custom_components.loxone.climate).
2024-02-04 12:20:51.706 ERROR (MainThread) [homeassistant.loader] Unexpected exception importing platform custom_components.loxone.climate
2024-02-04 12:20:51.714 ERROR (MainThread) [homeassistant.setup] Unable to prepare setup for platform 'loxone.climate': Platform not found (Exception importing custom_components.loxone.climate).

@rainerbeck https://github.com/JoDehli/PyLoxone/issues/237

Cheers. The issue #237 didn't show somehow....

@rainerbeck the issue was already closed. I reopened it that other user's see the current problems.


support configurable s3_endpoint

it needs to set a different end point to access a bucket in China region.

I will submit a pull request for this.

will wait for official support for china region.


Add https_info / HttpsInfo for access to peer's leaf certificate

This adds a HttpsInfo extension into responses when configuring a client with https_info(true).  The extension can be obtained by callers to get access to the peer's leaf certificate.  Works with both native and rustls TLS.  Fixes #1428.
Not sure if this is the best way to solve it, but it works, doesn't expose TLS connector specific types, and should not cause overhead unless enabled.  Happy to refactor and clean up as much as needed for this to go in.

I'm not sure, it is very unfortunate, sorry. But that is why that one CI job exists, to test all the things I'd never try locally.

The MSRV failure looks unrelated to this change.

Very cool. I was thinking of making a change like this myself today, but found this PR first. Glad it'll hopefully be added.


XMMatrixRotationRollPitchYaw arguments order

The function is named XMMatrixRotationRollPitchYaw, but its arguments are in a different order, which is a little tricky:
inline XMMATRIX XM_CALLCONV XMMatrixRotationRollPitchYaw
(
    float Pitch,
    float Yaw,
    float Roll
)

Don't know if there's an easy backwards-compatible fix to this problem, but I figure it should be documented as an issue anyways.

The function name indicates the order of rotation  which is roll, the pitch, then yaw. The parameter order itself is x-axis, y-axis, z-axis which makes a bit more sense with XMMatrixRotationRollPitchYawFromVector.
This is also true of the XMQuaternionRotationRollPitchYaw function, as well as XMQuaternionRotationRollPitchYawFromVector.


##If I have no background image, this algorithm is broken!!!

Thanks for your code~ But I have a serious question. If I have only one image and no background image, how can I get the foreground objects?

This method is designed for cases where you have a background.
You can look for other methods that do not require background, or come back in September when we release our new models.


More Quick Settings Tiles [Tracking Issue]

[ ] Flashlight
[ ] Screen Flashlight
[ ] Whistle
[ ] Sunset alerts
[ ] White Noise

It looks like v5.7.1 notes say Flashlight tile should be live, but I cant seem to find it in my F-Droid build on /e/OS v20.0.0 (Android 12).
Device compat. Issue?

It looks like v5.7.1 notes say Flashlight tile should be live, but I cant seem to find it in my F-Droid build on /e/OS v20.0.0 (Android 12).
Device compat. Issue?

Hi, no the flashlight quick settings tile (system notification shade) was not yet implemented. The feature that was released in 5.7.* was the Screen Flashlight quick action (the buttons in the top corners on Trail Sense / on the top of the tools tab).

Oh, sorry for the noise! That works lovely


cannot login with a hifi plus account

cannot login with a hifi plus account. when i copy and paste the activation link into a browser  i get the following message : FileNotFoundError: [WinError 2] The system cannot find the file specified. please help

Interesting. I haven't developed on Windows so I will have to do some testing.
Does the script's process break when you copy the activation link? Or after you sign in on the webpage? Or something else...

The breaks when I copy a link for download. If the link is low quality, it will down but if it is lossless or hires it will break. You said you didn’t develop on windows does it mean that the script isn’t compatible to windows machines?Sent from my iPhoneOn Dec 19, 2023, at 8:04 PM, Colin Coe @.***> wrote:
Interesting. I haven't developed on Windows so I will have to do some testing.
Does the script's process break when you copy the activation link? Or after you sign in on the webpage? Or something else...
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

Interesting. I've just pulled up a Windows system, and I am running through the whole flow.
Note: I am seeing the error that you're mentioning upon first run to create a Fire TV client. That error is just in the logs, and I will clean it up. I highlighted the link with my cursor, then did a control - C + control - V into my browser, and that was successful.
@kingdariud01 can you try version 2023.12.7 that is the newest release?

I am sorry but the newest version did not work for me either. It returns the same error message as before. As far a the  exe file it  crashes at launch. I am running windows 11 may be my window version? Sent from my iPhoneOn Dec 19, 2023, at 9:28 PM, Colin Coe @.***> wrote:
Interesting. I've just pulled up a Windows system, and I am running through the whole flow.
Note: I am seeing the error that you're mentioning upon first run to create a Fire TV client. That error is just in the logs, and I will clean it up. I highlighted the link with my cursor, then did a control - C + control - V into my browser, and that was successful.
@kingdariud01 can you try version 2023.12.7 that is the newest release?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

@kingdariud01 is this the error that you're experiencing?

In this case, it's because of Windows security: by default, it doesn't allow scripts to be run without modifications. If you just want to be able to run the .exe or the Python scripts, you can run this in Powershell:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser

more information here
If it's not that issue, can you send a screen shot of what the error is when you try to run either the Python package or the .exe?

This is what I get when I run tidal-wave url. Thanks

This is what I get when I run tidal-wave url. Thanks

@kingdariud01 there's no image or other text after the first line. Maybe try to upload again?

Closing this issue as it's been 2 weeks without further information.


Requirements to run the scripts?

Hello there,
was wondering if there are many machine specs required to run the script? because I'm trying to run it on a large dataset (80 GBs) and it's stuck at processing dataset, never making any progress or writing any images and it causes my ubuntu to freeze.
Thanks

I have no idea what the specific reqs are, but the process of just opening the bag file can take a very long time with huge bag files that have lots of entries. It's not the most scalable file format and the whole index of all entries is scanned and parsed whenever you open it. I've seen this take many minutes on fast machines with SSD for very large files.


Split FCL and the JS-SDK into separate repositories

In order to solidify the difference between FCL and the JS-SDK, we should separate the repositories.
Expected Outcomes

[ ] Code, and issues for FCL exists in a separate repository from the JS-SDK.

Closing given the benefits the monorepo is affording us.


Ladders in the shadows in Batman: Arkham Knight.

Ladders in the shadows in Batman: Arkham Knight. Can be clearly seen on this screenshot

Software information.
settings: texture:high other:low/off
System information

GPU:NVIDIA GTX 1060 6GB
Driver:369.18 (old compiler)
Wine version: wine-staging 3.7
DXVK version: master

Log files

d3d11.log:
BatmanAK_d3d11.log

dxgi.log:
BatmanAK_dxgi.log

Driver:369.18 (old compiler)

Does it work with the new one?

@doitsujin Yes, in fact, with the new compiler there is no such problem. Excuse me. I apparently just got confused with the startup parameters and decided that there is no difference. Although with the new compiler a lot of other problems ...

@pingubot Well, the most noticeable is the low perfomance and the lack of some textures. Batman doesn't have a cloak at all.

Try installing the latest 396.18.05 driver. It fixes any performance issues in 396.18

@pingubot

It might be good if you could report the issue in the nvidia driver issue #267

That issue should be closed, because Very low performance was fixed in 396.18.02. Yes, there is still +/- performance difference in some games and other graphics glitches, but they should be reported separately (to ease tracking).

I reported the same issue #221 here.
On Linux with the old compiler i got the same issue (I didn't try yet the new Nvidia driver).
When playing on Windows side with DX11, i got similar lighting effect when there were framedrops (< 30)
Textures with DXVK seems low res even if the setting is set to high. And weird drop/low framerates when moving fast with Batman as shown in this video.

Disabling Nvidia Gameworks settings seems fixing those helicopters light glitches from screenshot.
Also disabling nvapi, nvcuda, ... other PhysX related stuff in winecfg fixing some texture flickering and adds some fps.
Still no cape, so BM flying with the pray.

@pingubot I tested on the 396.24 driver with a new compiler. The problem is gone, performance is normal, but Batman's cloak is gone.

@pingubot
GPU: NVIDIA GTX 750 Ti 2GB
Driver: 396.18.11
Wine version: wine-staging 3.8
DXVK version: 0.52

settings: low/off
Batman's cloak, invisible NPCs and some missing textures I noticed before are now visible.

I can confirm that 0.52 now renders the cloak properly without using __GL_NextGenCompiler=0.
The game now crashes when in detective mode when the camera is pointing at certain objects but that's probably a whole different issue.

Yup, also have problems with detective mode. It's such a shame because the performance and rendering is otherwise exemplary. Console output here is pretty nothingless. Anybody been able to work out what's actually going on here?

Maybe someone can create an apitrace on Windows showing the detective mode so I can actually debug that issue.

Apparently this is fixed with the newest Nvidia drivers.

I see no improvement with the 396.45 drivers, the game still crashes at the same point. The only difference is that the game now crashes suddenly, while it used to freeze and show a UE4 error dialog.
I'm still using the 1.1.70 libvulkan, maybe that's the issue.

The crash is unrelated, but there's not an awful lot I can do unless someone manages to grab an apitrace.


Type hint the functions, for better static analysis.

Type hints are great!
Not only do they make codebases more robust and prevent errors from being written, often times, they make functions describe themselves, without the developer needing to read the documentation.
for example:
def represent(
    img_path,
    model_name="VGG-Face",
    enforce_detection=True,
    detector_backend="opencv",
    align=True,
    normalization="base",
):

could be changed to
def represent(
    img_path: str | os.PathLike | np.ndarray | bytes,
    # or for older python version support, we could use typing.Union
    model_name: Literal["VGG-Face"] | Literal["Dlib"] | ... = "VGG-Face",
    enforce_detection: bool = True,
    detector_backend: Literal["opencv"] | Literal["blib"] | ... = "opencv",
    align: bool = True,
    normalization: str = "base",
) -> list[np.ndarray]:

For all the parameters which are multiple choice, we can use the following type-hint method

A small demo
def represent(
    img_path: str | os.PathLike | np.ndarray | bytes,
    model_name: Literal["VGG-Face"] | Literal["Facenet"] | Literal["Facenet512"] | Literal["OpenFace"] | Literal["DeepFace"] | Literal["DeepID"] | Literal["Dlib"] | Literal["ArcFace"] | Literal["SFace"] = "VGG-Face",
    enforce_detection: bool = True,
    detector_backend: Literal["opencv"] | Literal["retinaface"] | Literal["mtcnn"] | Literal["ssd"] | Literal["dlib"] | Literal["mediapipe"] = "opencv",
    align: bool = True,
    normalization: str = "base",
) -> list[np.ndarray]:

sorry but i am using python not to use typing


Kured automatic unlock

Fixes #1117

@mysticaltech I've noticed that the kustomization was not re-executed after the change. I wonder if we should use the local value instead of vars also for all the other values in the version field (where applicable).

@mnencia You are right, it's better that way, so it applies the change even on upgrade. Thanks for the push!  🙏


Running multiple instances of lint-staged in a monorepo leads to automatic backup errors

Description
Following the (dated) instructions for how to use lint-staged with husky in a monorepo, i tried to run lint-staged using yarn workspaces foreach run --parallel lint-staged in a husky script but that leads to the git stashing behavior to often report that there was a problem in restoring the automated backup.
so then i also tried running lint-staged with --no-stash and trying to do the stashing myself with git stash --keep-index and git stash pop, but that also leads to some strange behavior when lint-staged also does lint fixing - the stash pop producing errant files, and one of my coworkers reported lint-staged just removing every file in the entire repo on his machine somehow lol.
if i don't parallelize it, running lint-staged just takes a long time since my project is large, so i'd really like for it to be able to run in parallel. Is there a better pattern for this for handling monorepos?
Steps to reproduce

make a yarn workspaces monorepo
add lint-staged as a dep to each of the workspaces
define a lint-staged file for each workspace, that does eslint --fix
install husky to the root, make a precommit hook that calles yarn workspaces foreach run --parallel lint-staged
make various edits, see that things happen confusingly

Debug Logs

expand to view
➤ YN0000<EMAIL_ADDRESS>Running lint-staged with the following config:
➤ YN0000<EMAIL_ADDRESS>{
➤ YN0000<EMAIL_ADDRESS>  '*': async (files) => {
➤ YN0000<EMAIL_ADDRESS>  const prettierFiles = micromatch(
➤ YN0000<EMAIL_ADDRESS>    files,
➤ YN0000<EMAIL_ADDRESS>    prettierSupportedExtensions.map((extension) => `**/*${extension}`)
➤ YN0000<EMAIL_ADDRESS>  );
➤ YN0000<EMAIL_ADDRESS>  const eslintFiles = await filterEslintIgnoredFiles(
➤ YN0000<EMAIL_ADDRESS>    micromatch(
➤ YN0000<EMAIL_ADDRESS>      files,
➤ YN0000<EMAIL_ADDRESS>      ["js", "ts", "jsx", "tsx"].map((extension) => `**/*${extension}`)
➤ YN0000<EMAIL_ADDRESS>    )
➤ YN0000<EMAIL_ADDRESS>  );
➤ YN0000<EMAIL_ADDRESS>
➤ YN0000<EMAIL_ADDRESS>  return [
➤ YN0000<EMAIL_ADDRESS>    ...(eslintFiles.length > 0
➤ YN0000<EMAIL_ADDRESS>      ? [`yarn eslint --fix ${eslintFiles.join(" ")}`]
➤ YN0000<EMAIL_ADDRESS>      : []),
➤ YN0000<EMAIL_ADDRESS>    ...(prettierFiles.length > 0
➤ YN0000<EMAIL_ADDRESS>      ? [`prettier --write ${prettierFiles.map(addQuotes).join(" ")}`]
➤ YN0000<EMAIL_ADDRESS>      : []),
➤ YN0000<EMAIL_ADDRESS>  ];
➤ YN0000<EMAIL_ADDRESS>}
➤ YN0000<EMAIL_ADDRESS>}
➤ YN0000<EMAIL_ADDRESS>ℹ No staged files match any configured task.
➤ YN0000<EMAIL_ADDRESS>Running lint-staged with the following config:
➤ YN0000<EMAIL_ADDRESS>{
➤ YN0000<EMAIL_ADDRESS>  '*': async (files) => {
➤ YN0000<EMAIL_ADDRESS>  const prettierFiles = micromatch(
➤ YN0000<EMAIL_ADDRESS>    files,
➤ YN0000<EMAIL_ADDRESS>    prettierSupportedExtensions.map((extension) => `**/*${extension}`)
➤ YN0000<EMAIL_ADDRESS>  );
➤ YN0000<EMAIL_ADDRESS>  const eslintFiles = await filterEslintIgnoredFiles(
➤ YN0000<EMAIL_ADDRESS>    micromatch(
➤ YN0000<EMAIL_ADDRESS>      files,
➤ YN0000<EMAIL_ADDRESS>      ["js", "ts", "jsx", "tsx"].map((extension) => `**/*${extension}`)
➤ YN0000<EMAIL_ADDRESS>    )
➤ YN0000<EMAIL_ADDRESS>  );
➤ YN0000<EMAIL_ADDRESS>
➤ YN0000<EMAIL_ADDRESS>  return [
➤ YN0000<EMAIL_ADDRESS>    ...(eslintFiles.length > 0
➤ YN0000<EMAIL_ADDRESS>      ? [`yarn eslint --fix ${eslintFiles.join(" ")}`]
➤ YN0000<EMAIL_ADDRESS>      : []),
➤ YN0000<EMAIL_ADDRESS>    ...(prettierFiles.length > 0
➤ YN0000<EMAIL_ADDRESS>      ? [`prettier --write ${prettierFiles.map(addQuotes).join(" ")}`]
➤ YN0000<EMAIL_ADDRESS>      : []),
➤ YN0000<EMAIL_ADDRESS>  ];
➤ YN0000<EMAIL_ADDRESS>}
➤ YN0000<EMAIL_ADDRESS>}
➤ YN0000<EMAIL_ADDRESS>ℹ No staged files match any configured task.
➤ YN0000<EMAIL_ADDRESS>Running lint-staged with the following config:
➤ YN0000<EMAIL_ADDRESS>{
➤ YN0000<EMAIL_ADDRESS>  '*': async (files) => {
➤ YN0000<EMAIL_ADDRESS>  const prettierFiles = micromatch(
➤ YN0000<EMAIL_ADDRESS>    files,
➤ YN0000<EMAIL_ADDRESS>    prettierSupportedExtensions.map((extension) => `**/*${extension}`)
➤ YN0000<EMAIL_ADDRESS>  );
➤ YN0000<EMAIL_ADDRESS>  const eslintFiles = await filterEslintIgnoredFiles(
➤ YN0000<EMAIL_ADDRESS>    micromatch(
➤ YN0000<EMAIL_ADDRESS>      files,
➤ YN0000<EMAIL_ADDRESS>      ["js", "ts", "jsx", "tsx"].map((extension) => `**/*${extension}`)
➤ YN0000<EMAIL_ADDRESS>    )
➤ YN0000<EMAIL_ADDRESS>  );
➤ YN0000<EMAIL_ADDRESS>
➤ YN0000<EMAIL_ADDRESS>  return [
➤ YN0000<EMAIL_ADDRESS>    ...(eslintFiles.length > 0
➤ YN0000<EMAIL_ADDRESS>      ? [`yarn eslint --fix ${eslintFiles.join(" ")}`]
➤ YN0000<EMAIL_ADDRESS>      : []),
➤ YN0000<EMAIL_ADDRESS>    ...(prettierFiles.length > 0
➤ YN0000<EMAIL_ADDRESS>      ? [`prettier --write ${prettierFiles.map(addQuotes).join(" ")}`]
➤ YN0000<EMAIL_ADDRESS>      : []),
➤ YN0000<EMAIL_ADDRESS>  ];
➤ YN0000<EMAIL_ADDRESS>}
➤ YN0000<EMAIL_ADDRESS>}
➤ YN0000<EMAIL_ADDRESS>[STARTED] Preparing...
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] Preparing...
➤ YN0000<EMAIL_ADDRESS>[STARTED] Running tasks...
➤ YN0000<EMAIL_ADDRESS>[STARTED] Running tasks for *
➤ YN0000<EMAIL_ADDRESS>[STARTED] yarn eslint --fix /Users/omar/code/every.org/every.org/packages/commo…
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] yarn eslint --fix /Users/omar/code/every.org/every.org/packages/commo…
➤ YN0000<EMAIL_ADDRESS>[STARTED] prettier --write "/Users/omar/code/every.org/every.org/packages/commo…
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] prettier --write "/Users/omar/code/every.org/every.org/packages/commo…
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] Running tasks for *
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] Running tasks...
➤ YN0000<EMAIL_ADDRESS>[STARTED] Applying modifications...
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] Applying modifications...
➤ YN0000<EMAIL_ADDRESS>[STARTED] Cleaning up...
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] Cleaning up...
➤ YN0000<EMAIL_ADDRESS>Running lint-staged with the following config:
➤ YN0000<EMAIL_ADDRESS>{
➤ YN0000<EMAIL_ADDRESS>  '*': async (files) => {
➤ YN0000<EMAIL_ADDRESS>  const prettierFiles = micromatch(
➤ YN0000<EMAIL_ADDRESS>    files,
➤ YN0000<EMAIL_ADDRESS>    prettierSupportedExtensions.map((extension) => `**/*${extension}`)
➤ YN0000<EMAIL_ADDRESS>  );
➤ YN0000<EMAIL_ADDRESS>  const eslintFiles = await filterEslintIgnoredFiles(
➤ YN0000<EMAIL_ADDRESS>    micromatch(
➤ YN0000<EMAIL_ADDRESS>      files,
➤ YN0000<EMAIL_ADDRESS>      ["js", "ts", "jsx", "tsx"].map((extension) => `**/*${extension}`)
➤ YN0000<EMAIL_ADDRESS>    )
➤ YN0000<EMAIL_ADDRESS>  );
➤ YN0000<EMAIL_ADDRESS>
➤ YN0000<EMAIL_ADDRESS>  return [
➤ YN0000<EMAIL_ADDRESS>    ...(eslintFiles.length > 0
➤ YN0000<EMAIL_ADDRESS>      ? [`yarn eslint --fix ${eslintFiles.join(" ")}`]
➤ YN0000<EMAIL_ADDRESS>      : []),
➤ YN0000<EMAIL_ADDRESS>    ...(prettierFiles.length > 0
➤ YN0000<EMAIL_ADDRESS>      ? [`prettier --write ${prettierFiles.map(addQuotes).join(" ")}`]
➤ YN0000<EMAIL_ADDRESS>      : []),
➤ YN0000<EMAIL_ADDRESS>  ];
➤ YN0000<EMAIL_ADDRESS>}
➤ YN0000<EMAIL_ADDRESS>}
➤ YN0000<EMAIL_ADDRESS>[STARTED] Preparing...
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] Preparing...
➤ YN0000<EMAIL_ADDRESS>[STARTED] Running tasks...
➤ YN0000<EMAIL_ADDRESS>[STARTED] Running tasks for *
➤ YN0000<EMAIL_ADDRESS>[STARTED] yarn eslint --fix /Users/omar/code/every.org/every.org/packages/websi…
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] yarn eslint --fix /Users/omar/code/every.org/every.org/packages/websi…
➤ YN0000<EMAIL_ADDRESS>[STARTED] prettier --write "/Users/omar/code/every.org/every.org/packages/websi…
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] prettier --write "/Users/omar/code/every.org/every.org/packages/websi…
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] Running tasks for *
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] Running tasks...
➤ YN0000<EMAIL_ADDRESS>[STARTED] Applying modifications...
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] Applying modifications...
➤ YN0000<EMAIL_ADDRESS>[STARTED] Cleaning up...
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] Cleaning up...
➤ YN0000<EMAIL_ADDRESS>Running lint-staged with the following config:
➤ YN0000<EMAIL_ADDRESS>{
➤ YN0000<EMAIL_ADDRESS>  '*': async (files) => {
➤ YN0000<EMAIL_ADDRESS>  const prettierFiles = micromatch(
➤ YN0000<EMAIL_ADDRESS>    files,
➤ YN0000<EMAIL_ADDRESS>    prettierSupportedExtensions.map((extension) => `**/*${extension}`)
➤ YN0000<EMAIL_ADDRESS>  );
➤ YN0000<EMAIL_ADDRESS>  const eslintFiles = await filterEslintIgnoredFiles(
➤ YN0000<EMAIL_ADDRESS>    micromatch(
➤ YN0000<EMAIL_ADDRESS>      files,
➤ YN0000<EMAIL_ADDRESS>      ["js", "ts", "jsx", "tsx"].map((extension) => `**/*${extension}`)
➤ YN0000<EMAIL_ADDRESS>    )
➤ YN0000<EMAIL_ADDRESS>  );
➤ YN0000<EMAIL_ADDRESS>
➤ YN0000<EMAIL_ADDRESS>  return [
➤ YN0000<EMAIL_ADDRESS>    ...(eslintFiles.length > 0
➤ YN0000<EMAIL_ADDRESS>      ? [`yarn eslint --fix ${eslintFiles.join(" ")}`]
➤ YN0000<EMAIL_ADDRESS>      : []),
➤ YN0000<EMAIL_ADDRESS>    ...(prettierFiles.length > 0
➤ YN0000<EMAIL_ADDRESS>      ? [`prettier --write ${prettierFiles.map(addQuotes).join(" ")}`]
➤ YN0000<EMAIL_ADDRESS>      : []),
➤ YN0000<EMAIL_ADDRESS>  ];
➤ YN0000<EMAIL_ADDRESS>}
➤ YN0000<EMAIL_ADDRESS>}
➤ YN0000<EMAIL_ADDRESS>[STARTED] Preparing...
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] Preparing...
➤ YN0000<EMAIL_ADDRESS>[STARTED] Running tasks...
➤ YN0000<EMAIL_ADDRESS>[STARTED] Running tasks for *
➤ YN0000<EMAIL_ADDRESS>[STARTED] yarn eslint --fix /Users/omar/code/every.org/every.org/packages/api/s…
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] yarn eslint --fix /Users/omar/code/every.org/every.org/packages/api/s…
➤ YN0000<EMAIL_ADDRESS>[STARTED] prettier --write "/Users/omar/code/every.org/every.org/packages/api/s…
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] prettier --write "/Users/omar/code/every.org/every.org/packages/api/s…
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] Running tasks for *
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] Running tasks...
➤ YN0000<EMAIL_ADDRESS>[STARTED] Applying modifications...
➤ YN0000<EMAIL_ADDRESS>[SUCCESS] Applying modifications...
➤ YN0000<EMAIL_ADDRESS>[STARTED] Cleaning up...
➤ YN0000<EMAIL_ADDRESS>[FAILED] lint-staged automatic backup is missing!
➤ YN0000: Done in 17s 857ms
🚨 Lint fix command failed! Please fix the lint errors by hand.
 Tell us about your development environment -->
- **OS:** Mac Big Sur
- **Node.js:* 14.16.1
- **`lint-staged`:** 11.0.0

Encountering the same issue: running lint-staged in parallel in a lerna monorepo with staged changes on multiple repositories always end with the error [FAILED] lint-staged automatic backup is missing!
Tested on<EMAIL_ADDRESS>and<EMAIL_ADDRESS>with<EMAIL_ADDRESS>

It looks like you can't run multiple lint-staged instances on the same repo. Each instance will attempt to use git stash, and they will interfere with each other.
Either switch to sequential or avoid lint-staged (lint the whole codebase, not only a portion of files intended for a new commit).

Disabling the backup did enable me to run in parallel in a monorepo.
Now I'm curious, is there a way that we could perhaps scale this? All the stashes work correctly, it's just that they get restored in the incorrect order AFAIK.
What I'm wondering is, we have this way of creating dangling commits.
const hash = await this.execGit(['stash', 'create'])

source: https://github.com/okonet/lint-staged/blob/7240f61730aa923b18156cc64ff5350f2d5be16d/lib/gitWorkflow.js#L223
Can we continue creating dangling commits, and use them in the restore step?

We are working on a better monorepo support. You're supposed to run lint-staged only once from the root, and then use multiple configurations. This has some other issues at the moment, but it's the way forward... Maybe you can try to change your setup towards that?

@iiroj so you mean that this is working as intended? What are the current issues you're facing, can they be found here?

@wbern currently parent globs like ../*.js are broken, and then there's this: https://github.com/okonet/lint-staged/pull/1106

Once that PR is merged I will definitely give it a try!

Version 12.3.5 is now released and hopefully fixed this issue. Can you confirm?

@iiroj
Im getting some pid issues using latest version and in a monorepo setup:
◼ Applying modifications from tasks...
◼ Cleaning up temporary files...
/XXX/node_modules/pidtree/lib/pidtree.js:61
      callback(new Error('No matching pid found'));
               ^

Error: No matching pid found
    at /XXX/node_modules/pidtree/lib/pidtree.js:61:16
    at /XXX/node_modules/pidtree/lib/ps.js:40:7
    at ChildProcess.<anonymous> (/XXX/node_modules/pidtree/lib/bin.js:45:5)

Sorry for the delay in this, I just ran lint-staged in my repo with one needed indentation fix in 101 packages (all with their own .lintstagedrc files) and although it does the job it doesn't properly give any output on the progress.
It starts to have some fancy loading but then it just becomes like the below in the terminal.
Invoking "lint-staged "
-----------------------

There's also another problem with this approach for us, because lint-staged is taking quite some time to finish scanning all the packages even if we've only changed a single package in the repo.
We already have a script that can output which projects have changed in our repo, so it would be good if we could feed a list of paths to lint-staged to look inside, to speed up the scan-step.

squat for an answer

It wasn't clear to me at first from this thread how to actually set up lint-staged with a monorepo. Here is what worked for me following @iiroj 's comment via https://github.com/okonet/lint-staged/issues/988#issuecomment-1039948428
At first I had a lint-staged.config.js at the root of the monorepo. Do NOT do this. This caused the error in the comment above ^ and wiped all my staged changes.
Here's what worked for me:

Install lint-staged at the monorepo root ONLY.
Install lint-staged in package-a AND include your lint-staged.config.js
Repeat the process for package-b and so on

The repo I have this configured on: https://github.com/waldronmatt/module-federation-template . Using Lerna, Yarn Workspaces, Turbo, Husky, Lint-Staged, Commitizen, Commitlint

You should not be installing it in every package. If it’s still required for it to work then we need a separate issue with as many details as possible but you should be running one instance from the root with multiple configs in every package. Right @iiroj ?

The pidtree error looks like a separate thing. I can create a fix by simply suppressing it. Should be safe, since it happens when trying to kill a process which no longer exists.

The pidtree error looks like a separate thing. I can create a fix by simply suppressing it. Should be safe, since it happens when trying to kill a process which no longer exists.

I think so

You should not be installing it in every package. If it’s still required for it to work then we need a separate issue with as many details as possible but you should be running one instance from the root with multiple configs in every package. Right @iiroj ?

Thanks, you're right. Tested again with lint-staged install at root and only config files for each package is working for me.

What worked for me is to install lint-staged at the root level and also have the config at the root level, in my case inside package.json (lucky me it was the same for all packages so globs were simple).


feat: add cypress component testing

Hey, following up on https://github.com/cypress-io/cypress/issues/16627#issuecomment-1020692622
This PR shows how you can use Cypress for testing your components in isolation. Instead of the E2E runner, I'm using the new (still in alpha) component testing runner - it's 95% the same as the E2E runner though, the differences are "under the hood". The API is almost the same, except you don't cy.visit, you do mount.
Use

npm install to install everything
Open the interactive Component Testing runner with npx cypress open-ct
Run all the specs with npx cypress run-ct (include --headed to see the UI)

How it works

Uses webpack dev server to automatically update and re-run your tests when you save
Documentation
Getting Started

Here is a video of it in action with your repo. Video.

I do appreciate the advice, but using babel to build generates different code than what is generated by typescript, so that makes testing less useful, since a goal here is to use typescript to generate whatever code is needed.
I'd really love to be able to just test it inside cypress, without having a webpack server -- cypress can run the code, and the tests, but for some arbitrary reasoning i don't follow, so i don't know how to fix/get around, the component testing runner just doesn't work with it standalone.


Added MotionEffectsView

This PR adapts UIKit's UIInterpolatingMotionEffect to SwiftUI.
When I wanted to add this effect to an app I'm making, I had searched the net for awhile and not found anything good that could do this. The only thing close that I found was this article on a blog called trailingClosure, however, this was a terrible implementation because it incurs really bad gimbal lock and causes the entire SwiftUI view hierarchy to redraw 60 times per second, killing the battery.
Because Apple's documentation of SwiftUI is worse than carving my brain out with a rusty spoon, I was having trouble implementing a way to use Apple's UIView.motionEffects with UIViewRepresentable. But then, I remembered that I'd seen this repo at some point. So I looked in here, and saw that while you didn't have a wrapper for motion effects, meanwhile, you did provide some good examples of how to use UIViewRepresentable to wrap some visual effects.
Based on how you implemented UIHostingVisualEffectBlurView in this repo, I created UIHostingMotionEffectsView. Since your repo was so helpful, I figured that I should make a PR to add the motion effects view to your repo, if you're accepting PRs that is.
Hopefully this will be useful to others looking to add this kind of motion effect to their SwiftUI views, in a way that doesn't kill the battery or cause the whole view hierarchy to constantly redraw.

@gistya I'm definitely accepting PRs! Thank you for making this, I'll review it as soon as I get the chance. I may have some suggestions for the API but this looks really promising!

@gistya I'm definitely accepting PRs! Thank you for making this, I'll review it as soon as I get the chance. I may have some suggestions for the API but this looks really promising!

Closing due to inactivity, feel free to reopen if you respond/make any changes!


array-api-strict v2.1.2 breaks CI

What is your issue?
array-api-strict v2.1.2 (released some hours ago) needs numpy >=2.1, but the conda-forge package is missing that pin:
see:

https://github.com/conda-forge/array-api-strict-feedstock/issues/13
https://github.com/conda-forge/array-api-strict-feedstock/pull/14

Some of xarray's dependencies are not available yet for numpy >=2.1, the current environments resolve to numpy 2.0.2. This breaks the tests where array-api-strict is imported.

The offending package is numba which has pinned numpy <2.1 for the current version 0.60.
numba 0.61 will be numpy 2.1 compatible, but isn't yet released.
One short-term solution to unlock CI would be to pin numpy <2.1 in all CI with environments containing numba.

you mean, pin array-api-strict for now?

That would be one solution, or to pin numpy>=2,<2.1. Not sure what's more reasonable.

if I understand correctly, the issue is that the new version of array-api-strict requires numpy>=2.1 but the conda-forge package metadata does not reflect that. So I don't think requiring an older version of numpy would help, since we'd still get the new (broken) version of array-api-strict.

The conda-forge array-api-strict metadata is fixed now.
If the current choice is to pin array-api-strict or numpy, I'd constrain the former though.

numpy is indirectly constrained by numba, so if the metadata has been fixed there might be nothing we need to do here?

Thanks @rgommers, much appreciated.
@keewis The all-but-numba check fails even with numpy=2.1.3 and array-api-strict=2.1.2. See https://github.com/pydata/xarray/actions/runs/11739187309/job/32703227103?pr=9751

I'll look into it, but this might take some time.

@keewis I've pinned array-api-strict<=2.1 in all relevant environments in #9751. Would be good to get this in to unlock CI again. Would also buy you some time to investigate the issues wrt the failing array-api-strict related tests.


Question about project architecture

I was in the process of implementing a similar tool for OpenAPI to Typebox conversion and runtime checks through Typebox validation. Then I came across this project, whose codebase seems understandable and well-written.
I wonder: is there any particular reason why you chose to implement the JSON Schema to Typebox conversion yourself instead of using https://github.com/xddq/schema2typebox?
Thank you for your effort!

Hey @gunzip thank you for you feedback. I don't remember why I choose to do the conversion by myself I think is just did it because I was experimenting with the whole idea of this project. Then, since it worked for us, we keep it.


Unable to use with Ubuntu 18.04.

This playbook does  not work on Ubuntu 18.04 because the package  gnupg2 is no longer available but is a dependency here https://github.com/cloudalchemy/ansible-grafana/blob/db9b5fb57a47ce8849c674094813892350028b1e/vars/debian.yml#L3-L8
According to this comment on AskUbuntu gnupg is gnupg2 in Ubuntu 18.04, so for Ubuntu 18.04 (and possibly newer versions) gnupg could be installed.
I changed the value in my local copy of the playbook and was able to install Grafana on Ubuntu 18.04.

Installation is continuously tested on ubuntu 18.04 and gnupg2 is still available in ubuntu 18.04 repositories, so I wonder where is the problem?

I believe we ran into the same issue on another role - the easiest fix was to run
- apt: { update_cache: yes }

in the pre_tasks section of the play executing the role, iirc.

For compatibility reasons, role is not using apt module directly (package is used) and I would prefer to stay it this way.

This is already done in https://github.com/cloudalchemy/ansible-grafana/blob/master/tasks/install.yml#L4-L6


Misspelling of can be misleading...

DelegateCommnad is a misspelling of DelegateCommand

Fixed typo, my mistake!
thanks.


Ignore Cilium endpoints not found error for the status command.

The fix is required for the Customers that have disableEndpointCRD: "true" in the Cilium configuration.
Status output example when disableEndpointCRD: "true":

The logic was stolen from: https://github.com/cilium/cilium-cli/blob/main/install/install.go#L582-L587

Is your screenshot with this fix or without? Is the intention to show 0 pods managed?

This is with fix. I think 0 pods is a side-effect of disableEndpointCRD: "true".

Some additional context on why this PR is needed:
https://github.com/cilium/cilium-cli/pull/2233 changed the exit code of the status subcommand so that if there was an error in any of the calls triggered to gather the status, the command finishes with error. However, when the cluster is configured with disableEndpointCRD: "true", the "error" is expected and exiting with a non-zero value is actually incorrect.
A better solution would be for the CLI to support this option, but until we have that, this change allows the status subcommand to exit with zero when there aren't any actual errors.

I do think the overall status command should be changed to be made aware of disableEndpointCRD

Yes, but this is outside the scope of this PR, the goal of which is to make the status subcommand not return an error when nothing is wrong.

It seems like the correct behavior would be to hide the Cluster Pods: section entirely. Is it true that Cilium is managing "0/0" Pods if Endpoints are disabled? I think yes.

I don't think so. I guess it depends on what is the expected meaning of "managed by Cilium". In setups that use kvstore mode it's common to disable the endpoint CRD to reduce unnecessary strain on the API server. From my point of view, this doesn't mean that the pods are not managed by Cilium, but only that there's no CiliumEndpoint CRD for those pods.

I don't think so. I guess it depends on what is the expected meaning of "managed by Cilium". In setups that use kvstore mode it's common to disable the endpoint CRD to reduce unnecessary strain on the API server. From my point of view, this doesn't mean that the pods are not managed by Cilium, but only that there's no CiliumEndpoint CRD for those pods.

Understood, here's an Issue to track making this status output more accurate: https://github.com/cilium/cilium-cli/issues/2334


Can XYGraph handle missing y values?

I want to create a graph that visualizes users' weights over time, where each point on the graph corresponds to a recorded weight for a specific date. If no weight is recorded for a particular date, the graph should still include an X-axis point for that date but with no corresponding Y value.
Despite missing Y values, I would like the line connecting the existing data points to remain continuous, ideally with a smooth or rounded appearance between the points.
Is it possible to achieve using the XYGraph?
I have the list of points <Int, Long?>, but when creating LinePlot data i don't see the way to generate an empty point.
LinePlot(
    data = graphData.points.mapIndexed { index, point ->
        Point(index, point.y?:-1L)
    }

LinePlot takes a list of X, Y data points to plot. If there is no data point, then leave it out of the list of data passed to the LinePlot.
If you specify a line type, LinePlot will connect all points. If you want discontinuous lines this can be done with separate LinePlots for each continuous line you want to plot.
Currently there is only support for straight lines connecting each point or a "stair step" type of line. Using a Bezier curve to connect points would be a new feature.

Thanks, turns out I was filtering the points in the wrong way. This code works:
LinePlot(
    modifier = Modifier.height(200.dp),
    data = graphData.points.mapIndexedNotNull { index, point ->
        point.y?.let { y -> Point(index, y) }
    }


OCPBUGS-33471: Fix proxy ordering

Background / Context
recert recently added a --proxy feature that replaces the proxy configuration in the cluster
Issue / Requirement / Reason for change
The --proxy feature is not working as expected, some rollouts happen due to the order of the proxy env vars in the kube-apiserver's and kube-controller-manager's container's env. Seems to happen a few times before the cluster stabilizes
This is simply because of a typo in the code, the HTTP_PROXY and HTTPS_PROXY env vars are being swapped in the generic_proxy_fix function
Solves OCPBUGS-33471
Solution / Feature Overview
Fix the typo in the generic_proxy_fix function
Other Information
The back-and-forth rollouts in e.g. kube-apiserver are due to the KubeAPIServer CR being at first in correct, which causes the deployment of the kube-apiserver to change, then another controller reads the fixes the KubeAPIServer CR itself, which then causes yet another revision
Also made some changes to the tests, even though those changes would not have caught this bug.

/lgtm

/retest

/jira refresh

/jira refresh

/retest

/jira refresh

/retest

Force merging since CI is broken and this change is likely correct


My placeholder is correct but the editor still says its wrong!

Challenge http://www.freecodecamp.com/challenges/waypoint-add-placeholder-text-to-a-text-field has an issue. Please describe how to reproduce it, and include links to screen shots if possible.

CatPhotoApp
Click here for cat photos.

Things cats love:

cat nip
laser pointers
lasagna

Top 3 things cats hate:

flea treatment
thunder
other cats

The input code won't show up here!

Hey @shanemarvinmay,
Try modifying the input tag instead of adding an additional input tag. That should fix you issue.


0.9.0-rc2

0.9.0-rc2
Changed

pandora discover now processes one sample at a time, but runs with several threads on the heavy tasks, i.e. when
mapping reads, finding candidate regions, and finding denovo variants. The result is that it now takes a lot less RAM to
run on multiple samples.

I am fine with merging this to master, as it has unit tests, but the issue is that this version of pandora depends on a make_prg prototype that is untested. This is actually the only reason I am marking these releases as pre-releases, and I am a bit hesitant to merge to master. As soon as the paper stuff is finished, I will add unit tests and thoroughly test the make_prg prototype, transforming it into a production version, and then I think we can do actual releases and merge to master. If the paper results on this new version of pandora and the make_prg prototype turns out fine, it might be ok to merge to master already, but I'd leave this decision to you and Zam then. My POV is that dev can be ahead of master and can have unstable versions, but master should always point to the latest stable one. OFC this is totally arguable, what do you think?

I think we all agree with this

My POV is that dev can be ahead of master and can have unstable versions, but master should always point to the latest stable one.

The question is , what counts as tested and stable. If the new make-prg is giving "the same" results as the old one with the 20way, then that is, at a system level, quite a lot of testing of 37,000 different instances of make-prg.
Personally i'm ok with merging to master, and then adding unit tests to make-prg, and if issues come up, fixing them.

Has Brice tried out the new make-prg?

Has Brice tried out the new make-prg?

No, as far as I am aware

As of now, I actually just need to monitor the 20-way pipeline and ensure it runs fine. OFC this is a very idle task, so I am either resuming my try to make a pandora conda recipe or I can start already adding unit tests to make_prg. Which of these tasks you think I should prioritize?

Given all of this, I vote to merge to master. As these tagged releases are clearly stated as pre-releases it's fine if there is minor instability - so I'm happy with it being on master.

I'm also happy

Alright, will be merged to master!


Optional parameter to show or hide date in tooltip title

Description
Added the property shouldShowDateInTitle to the tooltip module. It default to true to enable backwards compatibility.
Motivation and Context
In order to use the grouped bar chart in non date scenarios we needed to make optional the visibility of the date. We included a property to show it or hide it accordingly.
How Has This Been Tested?
Added tests for the accesor and for the updateTitle function.
Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

Thanks a lot @martinmanzo !!


Does not seem to generate well-formed ELF binaries

I'm running Ubuntu and when I run ./build, I get a permission denied error upon execve -- which I take to mean that it cannot even attempt to execute binaries produced. Have ELF binaries changed much since 2008?

Alright, so it turns out that yours generates just fine binaries but they either require sudo to execute on a 64-bit system or something like qemu-i386. My apologies. Incidentally, I've made a C++ port of stoneknifeforth that's of comparable length.

Hello @tekknolagi,
I made a pull request here to make GitHub detect the .tbf1 files as Forth.  Would you consider this for your version as well?

I think so.  Stoneknife forth uses whitespace delimited tokens, and start new definitions with :.

Then by all means yes, submit away
Lars Brinkhoff<EMAIL_ADDRESS>schrieb am Do., 20. Juli 2017,
09:51:

I think so. Stoneknife forth uses whitespace delimited tokens, and start
new definitions with :.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kragen/stoneknifeforth/issues/2#issuecomment-316625722,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAYfD582ilpDdWToQCaR6L-9yBqhGxIPks5sPwcKgaJpZM4OcjSF
.

That's pretty interesting! I'm running LinuxMint on an amd64 CPU at the moment and it seems to be able to run StoneKnifeForth's i386 binaries even after I uninstall qemu-user. I do have a pretty extensive set of *:i386 packages installed, as well as things like libc6-i386, but I'm not sure how that would help SKF, because the binaries it generates are all, so far, statically linked. I'm guessing there's some kind of kernel configuration parameter that governs whether the amd64 kernel supports running processes in i386 mode or not.
By the way, thanks a million for figuring out why it had been broken on modern Linuxes for years! The C++ interpreter looks cool, too.

Is this related to https://news.ycombinator.com/item?id=5204255 ?


Ability to clone shape (from lokesh1729:master)

https://github.com/scanny/python-pptx/pull/589

Obviously this request and the other (#589) hasn't gone to the main branch.
What exactly was the root issue for this? The feature itself would be highly appreciated.
Wasn't it general enough? What are the limits in this case?


Use cffconvert directly via subprocess to validate

Uses cffconvert directly in a subprocess for validation.

Closing for orchestration.


Use transaction_connection_validator from Sequel

Sounds like a good thing: https://github.com/jeremyevans/sequel/commit/c31dde28e79f5d67398c2ab849cedc84e45dd386

Needs https://github.com/Starkast/wikimum/pull/579


Need a little clarity on add amazon accounts

The documentation states ...
add_account_aws
usage: manage.py add_account_aws [-h] -n NAME [--thirdparty] [--active]
[--notes NOTES] --id IDENTIFIER
[--update-existing]
[--canonical_id CANONICAL_ID]
[--s3_name S3_NAME] [--role_name ROLE_NAME]
Whats not really clear is  [-h] -n NAME [--thirdparty] [--active]
[--notes NOTES] --id IDENTIFIER
[--update-existing]
[--canonical_id CANONICAL_ID]
The other questions would I need to create a S3 bucket and additional role name ... as the EC2 instance was already launched with the SecurityMonkeyRole ....
Thanks for any help ...

Hello @devonartis : trying to understand what you are calling out -- are you calling out the -n NAME part?

The other questions would I need to create a S3 bucket and additional role name ... as the EC2 instance was already launched with the SecurityMonkeyRole ....

You don't need to create an S3 bucket. I'm going to make an assumption that you are wondering about what the s3_name and canonical_id are referring to. These refer to how AWS references S3 principals. S3 has an older security system that relies on ACLs (bucket polices with IAM syntax were added later). The older system makes use of an ACL and this ACL has both, a friendly human readable name, and a corresponding canonical ID, which is a very long string. These refer to entire accounts. Security Monkey needs to know about these in order to determine if there is unknown or "non-friendly" cross-account access to your S3 buckets.
The S3 name is largely being ignored for new regions, and as such, the canonical ID is what really matters today. However, yours truly submitted a PR a few months ago that will automagically fetch the canonical IDs for you. There is a monkey fetch_aws_canonical_ids command that will do this for you (in fact, I need to update the quickstart guide to indicate this, so this is a legit gap in the docs), since the canonical ID is not easy to find. The s3_name is still there and useful to associate a human readable S3 ID with the canonical ID (you can see this for an S3 bucket in SM under the GrantReferences entry.

#770 should address documentation ambiguities.


improve the doc for "spark.memory.offHeap.size"

What changes were proposed in this pull request?
The description of "spark.memory.offHeap.size" in the current document does not clearly state that memory is counted with bytes....
This PR contains a small fix for this tiny issue
How was this patch tested?
document fix

I didn't create a JIRA as I think it is not necessary....if the reviewer still prefers with a JIRA, I can add one

Test build #52564 has started for PR 11561 at commit 143135b.

Test build #52564 has finished for PR 11561 at commit 143135b.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

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/SparkPullRequestBuilder/52564/
Test PASSed.

@srowen mind reviewing it?

Test build #52577 has started for PR 11561 at commit 9eceb9f.

Test build #52577 has finished for PR 11561 at commit 9eceb9f.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

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/SparkPullRequestBuilder/52577/
Test PASSed.

LGTM. Merging to master and 1.6.

Thanks, @CodingCat

thanks,  @srowen @zsxwing


[stable/jenkins] JCasC auto reload works without ssh keys

Is this a new chart

NOTE: We're experiencing a high volume of PRs to this repo and reviews will be delayed. Please host your own chart repository and submit your repository to the Helm Hub instead of this repo to make them discoverable to the community. Here is how to submit new chart repositories to the Helm Hub.

What this PR does / why we need it:
We make use of the fact that the Jenkins Configuration as Code Plugin can be triggered via http POST to JENKINS_URL/configuration-as-code/reloadand a pre-shared key.
This way we do not rely on any users which need to exist in Jenkins and there is no need to configure ssh keys which by the way have more permissions than just reloading the configuration.
It also allows us to us kiwigrid/k8s-sidecar:0.1.20 as sidecar for configuration reloads instead of it's fork shadwell/k8s-sidecar. That's 1M+ vs 10k pulls on dockerhub.
References:

Triggering Configuration Reload
kiwigrid/k8s-sidecar

Which issue this PR fixes
(optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged)

fixes #

Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md
[x] Title of the PR starts with chart name (e.g. [stable/mychartname])

/assign @maorfr

/assign mogaal

/retest

The Jenkins update site seems to have some issues at the moment. The init container which is trying to download the plugins fails and restarts...

Part-of: #16931

/lgtm
amazing, as always.

@maorfr Thanks for the kind words. It's a pleasure to contribute.


[FEATURE] upgrade shoud take log from elemental upgrade and process its return code

Is your feature request related to a problem? Please describe.

In upgrade post-drain code, the upgrade_os will call elemental upgrade
chroot $HOST_DIR elemental upgrade --directory ${tmp_rootfs_mount#"$HOST_DIR"}
But for it's running log and return code, there is no proper processing now.
Describe the solution you'd like

Elemental supports setting a log file cmd.PersistentFlags().String("logfile", "", "Set logfile")
Upgrade could use this parameter, set a file to capture log, and alos catch the return code, when it is 1, add proper output and print the log.
Note: At shell script view, elemental only returns 1 when error happens.
func Execute() {
	err := rootCmd.Execute()
	if err != nil {
		os.Exit(1)
	}
}

Describe alternatives you've considered

elemental should also enrich it's return code to reflect proper error.
Additional context

Observed when trouble-shooting issue:
https://github.com/harvester/harvester/issues/3062

@starbops Please help add the log; we can save the log to a directory under /host/usr/local/.
As a further enhancement, adding a trap to clean the downloaded file , in case jobs are retried.

Tested with upgrade from v1.0.3 to v.1.1.1-rc1 per instructions here

Signed-off-by: Zespre Chang<EMAIL_ADDRESS>IMPORTANT: Please do not create a Pull Request without creating an issue first.
Problem:
We need more information about the execution of elemental upgrade.
Solution:

Set up log file for elemental upgrade, the log file will be put under /usr/local/upgrade_tmp/ on each node.
Clean up downloaded large files (squashfs) before exit

Related Issue:
#3069
Test plan:

Prepare a v1.0.3 Harvester cluster with any number of nodes
Kickstart the upgrade to v1.1.0 (contains the changes in this PR)
After the upgrade succeeded, check the log file under /usr/local/upgrade_tmp/elemental-upgrade-*.log, and there shouldn't be any squashfs file

node-0:~ # ls -ltrh /usr/local/upgrade_tmp/
total 12K
-rw------- 1 root root   58 Nov  3 09:27 tmp.Gxer603C2T
-rw------- 1 root root   58 Nov  3 09:33 tmp.7ho2PcdZH2
-rwxr-xr-x 1 root root 1.4K Nov  3 09:34 elemental-upgrade-20221103093405.log

node-0:~ # cat /usr/local/upgrade_tmp/elemental-upgrade-20221103093405.log
INFO[2022-11-03T09:34:05Z] Starting elemental version v0.0.14
INFO[2022-11-03T09:34:05Z] Upgrading active partition
INFO[2022-11-03T09:34:05Z] Creating file system image /run/initramfs/cos-state/cOS/transition.img
INFO[2022-11-03T09:34:05Z] Running before-upgrade hook
INFO[2022-11-03T09:34:05Z] Copying COS_ACTIVE image...
INFO[2022-11-03T09:34:36Z] Finished copying COS_ACTIVE...
INFO[2022-11-03T09:34:38Z] Running after-upgrade-chroot hook
INFO[2022-11-03T09:34:38Z] Running after-upgrade hook
INFO[2022-11-03T09:34:39Z] Backing up current active image
INFO[2022-11-03T09:34:39Z] Moving /run/initramfs/cos-state/cOS/active.img to /run/initramfs/cos-state/cOS/passive.img
INFO[2022-11-03T09:34:39Z] Finished moving /run/initramfs/cos-state/cOS/active.img to /run/initramfs/cos-state/cOS/passive.img
INFO[2022-11-03T09:34:39Z] Moving /run/initramfs/cos-state/cOS/transition.img to /run/initramfs/cos-state/cOS/active.img
INFO[2022-11-03T09:34:39Z] Finished moving /run/initramfs/cos-state/cOS/transition.img to /run/initramfs/cos-state/cOS/active.img
INFO[2022-11-03T09:34:39Z] Upgrade completed


Lazily evaluate postprocessors

Profiling shows that we're running postprocessors too often. Also, we're creating too many this.data = []s, which bloats memory.

The hard part is that once we introduced predicates, we were forced to evaluate the postprocessor on the spot because it affected the parse itself.

Oops.
IMO any opportunity to trim the length of embedded JS and running functions too often - :+1:

we're creating too many this.data = []s, which bloats memory

Have you considered using a global empty list?

Robin is suggesting that we separate postprocessors and predicates

This sounds like a good idea.

This sounds like a good idea.

Philosophically, yes, but syntactically, wouldn't it be a mess? The other option I'm open to is to have postprocessors throw a specific error for rejecting, but that may have a performance penalty. I'm not sure how performant throw/catch is in JS.

throw-catch will be definitely slower than rerunning multiple times.
for postprocessing, could we just memoize the results? (I might be misunderstanding the question)

I'm not sure how performant throw/catch is in JS.

I'm not sure either, but I do know that just the existence of a try/catch block in the code
will cause V8 JS engine (Chrome/Node.js) to be unable to optimize the whole function which includes the try/catch, regardless of the execution or non execution of the catch block.
Upcoming versions of V8 However, can finally do optimize these try/catch blocks.
So if you are making any attempt to use try/catch for this purpose I suggest you benchmark
using V8 5.8+
See instruction how to enable the latest version of V8 on Chrome Canary.
https://v8project.blogspot.co.il/2017/02/help-us-test-future-of-v8.html


unit checking

There are a few parts to unit checking:

[ ] basic checking -- given a model with units specified, typecheck them.
[ ] type inference -- this is (a) helpful for users so that we can suggest units, but is also necessary for modules like smth1 where we really want the smth1 units to be generic
[ ] UI to edit units on variables.  somewhat complicated by there not being much space in the sidebar, so we are going to have to be better at scrolling or rearrange things
[ ] UI to edit project unit relations (e.g. people person and persons are all interchangable units).  This should probably be tied in to the general "control panel" view for a project we need.
[ ] (maybe) a classic frustration is that constants are unitless: a variable with equation 3 * n_homes is expected to have the same unit as n_homes, so if 3 is a constant designed to help convert from one unit to another, you have to pull it out into its own aux to give it its own unit.  It would be nice if we could say 3 { units: people/home } * n_homes inline in the equation, but this will require lexing and parsing changes.

basic checking:

[ ] add "standard" unit equivalences
[ ] add support for "time" units
[ ] add support for simple modules


Add topic chips for NewsResourceCard

Two follow ups for future PRs:

Chip should be disabled if user is not following the topic
Handle topic chip interaction

Planning to look into this again late next week.
(We have a team offsite this week, and first half of next week is holidays in US.)

alrighty, i think this is ready for another review now that https://github.com/android/nowinandroid/pull/178 is merged

@calren can you try to fix the branch conflict?


Support for ChanVariable(channel): MY_VAR=value

In Asterisk manager.conf the channelvars option exists:
;
; Display certain channel variables every time a channel-oriented
; event is emitted:
;
;channelvars = var1,var2,var3

So if one would define channelvars = var1,var2,var3 you would get the following appended to all channel-oriented events:
ChanVariable(SIP/jw9933-00000062): var1=14
ChanVariable(SIP/jw9933-00000062): var2=value-of-var2
ChanVariable(SIP/jw9933-00000062): var3=value-of-var3

However, PAMI doesn't understand this syntax and you end up with only one key ChanVariable(SIP/jw9933-00000062) that has the value var3=value-of-var3 as var1 and var2 is overwritten.
So I have this (quite ugly I know) code to parse it for now:
    /**
     * @return array
     */
    protected function getChannelVariables(\PAMI\Message\Event\EventMessage $event)
    {
        $channel_vars = array();
        $channel_id = $event->getKey('Channel');

        // we can't get the variables if we doesn't have a channel
        if ($channel_id === null)
            return $channel_vars;

        $prefix = "ChanVariable(" . $channel_id . "):";
        $length = strlen($prefix);
        $rows = explode("\n", $event->getRawContent());
        foreach ($rows as $row)
            if (substr($row, 0, $length) == $prefix)
            {
                list($chanvar, $data) = explode('=', substr($row, $length));
                $channel_vars[trim($chanvar)] = trim($data);
            }
        return $channel_vars;
    }

There actually could be variables for different channels in some cases, but I don't use it right now so the above code doesn't support that.
I would like to have a more clean way of doing this. Some proposals:

If a key exists more than once during parsing, put them in an array so we don't overwrite values
Add a getChannelVariables($channel = null) helper to the base-class (EventMessage?) that parses the values and return them for the given channel. If no channel is specified then we merge the variables for all channels.
Maybe also add a getChannelVariable($channel, $key) that only looks for one specific key.
Another way?

I can implement this and make a PR if I this will be accepted as a contribution.
Thanks for a great library by the way!

Bug-fixing PRs are always welcome :)
There actually could be variables for different channels in some cases, but I don't use it right now so the above code doesn't support that.

Which events for example? And if you contribute a PR for this, will that implementation support that use case?
Regarding your suggested implementation: first off, yes, you're right, this should be in EventMessage, if it is only in events.
Concerning the place where this parsing should happen, I am a bit divided.
On the one hand, in line with how PAMI now works, I think these variables should be parsed when the event is created. In that case, it should indeed be done in the constructor of EventMessage, which then needs to override the constructor of IncomingMessage.
On the other hand, especially in high-throughput environments, adding more parsing logic to the constructors will slow every client down (even if it is a little). It doesn't matter when an Asterisk machine isn't too busy, but when you regularly get a throughput of a few hundred events/sec it adds up.
In that case, parsing it the first time (and only the first time) that the proposed ::getChannelVariable() is called, would be great.
As an aside: having a convenience method to get these variables make things just a little easier to work with, so I would be in favour of that.
Whether or not that would be accepted is of course for @marcelog to decide.I cannot think of a reason why not, though.

I don't remember the exact event, but think it was some event related to Dial or Bridge, as we then has two channels involved in the event. It's an edge-case, but yes - I intend on support that.
Given that you in all normal cases just want the variables I propose ::getChannelVariables($channels = null) and if channels isn't specified then we return the variables for all channels (normally just one).
How about the parsing of duplicated headers? Right now we overwrite them, should we put them in a array if we got more than one? This would affect backwards compatibility.

Hi guys,
@johanwilfer Could you paste some examples? The more complex the better.
So far, I would be in favor of a PR that parses this in the constructor of EventMessage, as pointed out by @jacobkiers. We could parse it and store an associative array indexed by channel name, where the value is an associative array itself, a typical K/V, then the method getChannelVariables would be a getter instead of a helper, returning everything we got. The caller could then traverse that as needed.
This is just a first thought, though, let's see the examples (and/or PR) first!
Thanks!

mmm I did a quick test, and I don't get the channel name between parenthesis:
Event: Hangup
Privilege: call,all
Channel: SIP/marcelog-00000000
ChannelState: 4
ChannelStateDesc: Ring
CallerIDNum: marcelog
CallerIDName: marcelog
ConnectedLineNum: <unknown>
ConnectedLineName: <unknown>
AccountCode:
Context: marcelog
Exten: 333
Priority: 1
Uniqueid:<PHONE_NUMBER>.0
ChanVariable: var1=
ChanVariable: var2=
ChanVariable: var3=
Cause: 0
Cause-txt: Unknown

This is asterisk 12.4.0

Asterisk 1.8
Event: Dial
Privilege: call,all
SubEvent: Begin
Channel: Local/0@pbx_dial_callroute_to_endpoint-00000008;2
Destination: SIP/jw1034-00000010
CallerIDNum: 1201
CallerIDName: <unknown>
ConnectedLineNum: strategy-sequential
ConnectedLineName: <unknown>
UniqueID: pbx-1439974866.33
DestUniqueID: pbx-1439974866.34
Dialstring: jw1034
ChanVariable(Local/0@pbx_dial_callroute_to_endpoint-00000008;2): var1=value
ChanVariable(Local/0@pbx_dial_callroute_to_endpoint-00000008;2): var2=value
ChanVariable(Local/0@pbx_dial_callroute_to_endpoint-00000008;2): var3=value
ChanVariable(SIP/jw1034-00000010): var1=value
ChanVariable(SIP/jw1034-00000010): var2=value
ChanVariable(SIP/jw1034-00000010): var3=value

Ok, so we have variants, with and without the channel name, the patch in question should take both into account

Asterisk 11 looks the same. So the format seems to have changed in Asterisk 12 as per issue #56
The Dial event is strange one here, maybe because of the local channel.

I'll start working on something. Thanks for the feedback!

Oh I think I have a small patch that will work.. let me show it to you guys first to know your thouhts, I just need to write a few tests

@johanwilfer @jacobkiers any thoughts on this one? https://github.com/marcelog/PAMI/pull/86

Wow! You are fast :-)
Maybe we should add some tests, for example a more simple case with only one channel and asterisk 12 syntax. I'll try this and get back to you.

Thank you @johanwilfer. If you can, please test it with your real use case scenario. I've added some more tests "just in case".

Testing now.. One question - why the lowercasing of variable names and channel-names?
Isn't it better to leave it as-is?

Well, IMHO it's better to normalize it because even asterisk doesn't honor the case in variable names in different versions. Doing this allows one to avoid some subtle bugs, your code will never depend on the casing of the names (and it will be really weird that someone would want that vAriABLE and variable refer to 2 different variables).

I've tested now, it works great. You are right about the lowercase - I change to lowercase in all the cases in the application now and it works the same.
I will run some more test after the weekend at the office, but it seems to work great.
Thank you @marcelog and @jacobkiers !

Great!  Thank you for the report and testing!
I'll merge on monday, feel free to come back and report any good or bad findings.

I've run some more tests now, it works perfectly. Thank you for this!


tsx 4.13.1 fails to find exported module in @aws-sdk/client-iot-data-plane with Node.js 20

Acknowledgements

[X] I read the documentation and searched existing issues to avoid duplicates
[X] I am reporting a confirmed bug (not seek debugging help)
[X] I understand this is a collaborative project and relies on my contributions
[X] I read and understood the Contribution guide

Minimal reproduction URL
https://github.com/coderbyheart/tsx-import-bug/actions/runs/9414431871/job/25933332684#step:5:6
Problem & expected behavior (under 200 words)
This works with 4.12.1: https://github.com/coderbyheart/tsx-import-bug/actions/runs/9414522107/job/25933611074#step:6:5
package.json
{
  "devDependencies": {
    "@aws-sdk/client-iot-data-plane": "3.592.0",
    "tsx": "4.13.1"
  },
  "engines": { "node": ">=20" }
}

index.ts
import { UpdateThingShadowCommand } from '@aws-sdk/client-iot-data-plane';

new UpdateThingShadowCommand({} as any);

Output
$ npx tsx -v
tsx v4.13.1
node v20.14.0

$ npx tsx index.ts

import { UpdateThingShadowCommand } from "@aws-sdk/client-iot-data-plane";
^

SyntaxError: The requested module '@aws-sdk/client-iot-data-plane' does not provide an export named 'UpdateThingShadowCommand'
at ModuleJob._instantiate (node:internal/modules/esm/module_job:134:21)
at async ModuleJob.run (node:internal/modules/esm/module_job:217:5)
at async ModuleLoader.import (node:internal/modules/esm/loader:316:24)
at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:123:5)

Node.js v20.14.0

Bugs are expected to be fixed by those affected by it

[X] I'm interested in working on this issue

Compensating engineering work financially will speed up resolution

[ ] I'm willing to offer financial support

I have the same issue with the envalid npm package (https://www.npmjs.com/package/envalid)

I'm facing the same issue on most installed packages.
This commit has caused the issue: https://github.com/privatenumber/tsx/commit/0a78bfd11b20fcb6460fdcdea7d3b1daebfe3ad0

I created another reproduction in my issue also about The requested module '...' does not provide an export named '...', reported over here:

https://github.com/privatenumber/tsx/issues/578

:tada: This issue has been resolved in v4.13.2
If you appreciate this project, please consider supporting this project by sponsoring :heart: :pray:

Thanks for the issue @coderbyheart! Should be fixed now ^


Implement Mean in Linalg - Vector Mean

Ref issue ##3051
Added VectorMean (and tests) for Eigen3

where's the problem with EIGEN3? i let's try to fix that instead of adding it back to the macros

It won't run any test/module with ifdef HAVE_EIGEN3

yea but there should not be any #ifdef HAVE_EIGEN3 anymore anywhere

Seriously..I forked the base this afternoon and I think it is everywhere..

Okay I'll rebase and remove any ifdef HAVE_EIGEN3 I run into.

@OXPHOS ok i see what you mean i just did a:
cd tests/unit
git grep HAVE_EIGEN

all those #ifdef HAVE_EIGEN should be out...

@vigsterkr Thanks for letting me know...learned a lot about cmake during the struggle. Will update the code later.

Ill open an entrance task to remove them all.

Much nicer if the patch is small.
There are some issues with the way you used git. The rest is fine to merge :)

@OXPHOS this is nice. Can you please have a look at my comments and address those?
@karlnapf for the linalg to work as we want it, we first need to remove the support for setting linalg backends shogun-wise globally. There should not be a viennacl build. If this thing is gone, one can easily add implementation for only eigen3 or only viennacl without having to implement both each time. This would eliminate the need to have that SG_NOTIMPLEMENTED things (as in this PR).

Thanks guys for your comments! I'll do the followings:

Remove HAVE_EIGEN3
Revise Mean_Eigen3.h for general SGVector/SGMatrix mean
Revise Mean_Eigen3_unittest.cc

@lambday can I  leave merging this to you? :)


readme: remove sudo from podman

we should not tell people to use sudo podman, this PR fixes that line

Did some testing on my box:
podman run -v .:/terraform-provider-aiven:z --workdir /terraform-provider-aiven golang:latest make lint
✔ docker.io/library/golang:latest
Trying to pull docker.io/library/golang:latest...
Getting image source signatures
Copying blob 9297634c9537 done
Copying blob 461bb1d8c517 done
Copying blob e6d3e61f7a50 done
Copying blob 6a0b51344be5 done
Copying blob 412caad352a3 done
Copying blob 0c6b8ff8c37e done
Copying blob 856234c9f319 done
Copying config 80d9a75ccb done
Writing manifest to image destination
Storing signatures
Error: lsetxattr /home/ivan.savciuc/terraform-provider-aiven/hack/tools/bin/golangci-lint: operation not permitted

it does not work without sudo out of the box, we should extend docs with the instructions to make it work without using sudo.


be able to set the schema registry compatibility via env var

About this change: What it does, why it matters
Require the ability to override the compatibility of the schema registry via env var.
(all contributors please complete this section, including maintainers)

Does the docker image get built automatically based on this merge?

Does the docker image get built automatically based on this merge?

Not yet. You can generate the image manually with:
./container/build_image.sh $(git rev-parse HEAD)

Ya we pull the image from docker hub now so don't want to revert back to building it ourselves.
What is the process for getting whats on master built and pushed to docker hub?

What is the process for getting whats on master built and pushed to docker hub?

ATM we update the container image once we make a new release on aiven.io . This is done because we want the docker image features to match what we have in production.