Add regression test for W17 / fit_time

Working on issue #96.
This PR adds a regression test. It compares the outputs of a fresh run of the main marginalisation function to outputs obtained with ExoTiC-ISM v2.0.0, which have been checked for correctness.
Also:

adds the output of a report.csv so that the results also get saved out in machine readable form, on top of the PDF report
links to the limb darkening folder with an absolute path by querying, rather than reading it from the configfile
copies the configfile by querying for its path rather than reading it from the condifgile
pulls out more of the parameters in the marginalisation to be function input parameters

@hrwakeford this PR is implementing the regression test I mentioned in #96. When I run this test locally, it passes, however on the GitHub repo it fails. I suspect that there is a difference in the underlying machine that influences the result. The test report says the GitHub Actions machine got rl_marg = 0.12401903394486499, while I get rl_marg = 0.12401905841361494 on my local Mac.

The difference is in the 7th digit after zero, so it doesn't seem significant to me, but I must admit I forgot what we said last time the significant digit is for this number. I wanted to ask you about a tolerance limit for these tests anyway. All the numbers I chose in the added test for the test tolerances (rtol) are currently completely arbitrary, and I wanted to ask you, what kind of tolerances would make sense for the individual quantities I included in the test?
We are talking about:

rl_marg
rl_marg_err
epoch_marg
epoch_marg_err
top_five_weights
top_five_sdnr
white_noise
red_noise
beta

For each of these the difference will need to be within the uncertainty on those values so for rl_marg if the difference is more than rl_marg_err then that is not great, that means it is not finding the same result within 1-sigma uncertainty on the data. The rest of these should come out with the same result each time. I am not sure what would cause differences, even small ones.

For each of these the difference will need to be within the uncertainty on those values so for rl_marg if the difference is more than rl_marg_err then that is not great, that means it is not finding the same result within 1-sigma uncertainty on the data. The rest of these should come out with the same result each time. I am not sure what would cause differences, even small ones.

@hrwakeford thanks, that makes sense! The marginalized parameters end up indeed much within 1 sigma, and the errors turn out extremely accurate. I have made the appropriate change and am now working through the rest of the parameters I am testing.
What would be an acceptable error margin on the calculated weights? E.g., the top five weights (variable "top_five_weights") are as follows on my machine:
[0.10877472617236775, 0.08219481507255598, 0.08213473840712483, 0.08096430014677133, 0.06651390301754695]
but the following on the CI machine:
[0.10879915797444946, 0.08220780315218218, 0.08214179180570744, 0.08097696287189796, 0.06652195620208606]
The ordering is the same and they accord to within about 0.005%. Would you have any guidance on how variant we can accept these to be between different machines?

@hrwakeford thanks, that makes sense! The marginalized parameters end up indeed much within 1 sigma, and the errors turn out extremely accurate. I have made the appropriate change and am now working through the rest of the parameters I am testing.
What would be an acceptable error margin on the calculated weights? E.g., the top five weights (variable "top_five_weights") are as follows on my machine:
[0.10877472617236775, 0.08219481507255598, 0.08213473840712483, 0.08096430014677133, 0.06651390301754695]
but the following on the CI machine:
[0.10879915797444946, 0.08220780315218218, 0.08214179180570744, 0.08097696287189796, 0.06652195620208606]
The ordering is the same and they accord to within about 0.005%. Would you have any guidance on how variant we can accept these to be between different machines?

It looks like the weights are well within the tolerance values. I would set them to 0.001% or keep it at 0.0005% that you found.

It looks like the weights are well within the tolerance values. I would set them to 0.001% or keep it at 0.0005% that you found.

All right, "top_five_weights" is done, on to the next one.
Results for "top_five_sdnr" run on my machine:
[122.82905364,<PHONE_NUMBER>,<PHONE_NUMBER>9,<PHONE_NUMBER>9,<PHONE_NUMBER>5]
same thing on the CI machine:
[122.82888405,<PHONE_NUMBER>3,<PHONE_NUMBER>5,<PHONE_NUMBER>9,<PHONE_NUMBER>6]
These also look very accurate, with the largest error being on the order of a small fraction of a percent. Does a relative error of 0.001 sound ok to you for these @hrwakeford ?

All right, "top_five_weights" is done, on to the next one.
Results for "top_five_sdnr" run on my machine:
[122.82905364,<PHONE_NUMBER>,<PHONE_NUMBER>9,<PHONE_NUMBER>9,<PHONE_NUMBER>5]
same thing on the CI machine:
[122.82888405,<PHONE_NUMBER>3,<PHONE_NUMBER>5,<PHONE_NUMBER>9,<PHONE_NUMBER>6]
These also look very accurate, with the largest error being on the order of a small fraction of a percent. Does a relative error of 0.001 sound ok to you for these @hrwakeford ?

Yep we would need it to at least the first decimal place for now. Note these may need to change when we use this on more precise data like from Webb

Yep we would need it to at least the first decimal place for now. Note these may need to change when we use this on more precise data like from Webb

Will check any more changes in the morning

Will check any more changes in the morning

Ok, we've reached the last parameter for which we need to find an acceptable tolerance - beta.
My machine yields beta=1.1389386251150133, while the CI machine gives beta=1.1389589422315824. Setting the relative tolerance to 1e-4 makes the test pass without problems - is this ok @hrwakeford?
If you agree with this, we have officially completed the first regression test for this code, and the tests will run each time when something is pushed to an open PR. It would make sense now to block the option to merge until all tests pass successfully. This would prevent us from ever merging new code that makes the existing code base break (with the caveat that the tests cover only certain cases). As an admin, @hrwakeford will always be able to merge PRs even if the tests didn't pass, so you will retain full control of what is happening (this is true for anybody that you give the admin rule for thsi repository). In any case, the test suite we currently have only takes a couple of minutes to run, so it should not pose big issues when we need to wait for them.
If you would like some assistance in how set this up (not allowing to merge PRs until the tests pass), please feel free to reach out and we can look at it together, it should only take a couple of minutes.
In any case, this PR is ready to be reviewed now @hrwakeford.

Ok, we've reached the last parameter for which we need to find an acceptable tolerance - beta.
My machine yields beta=1.1389386251150133, while the CI machine gives beta=1.1389589422315824. Setting the relative tolerance to 1e-4 makes the test pass without problems - is this ok @hrwakeford?
If you agree with this, we have officially completed the first regression test for this code, and the tests will run each time when something is pushed to an open PR. It would make sense now to block the option to merge until all tests pass successfully. This would prevent us from ever merging new code that makes the existing code base break (with the caveat that the tests cover only certain cases). As an admin, @hrwakeford will always be able to merge PRs even if the tests didn't pass, so you will retain full control of what is happening (this is true for anybody that you give the admin rule for thsi repository). In any case, the test suite we currently have only takes a couple of minutes to run, so it should not pose big issues when we need to wait for them.
If you would like some assistance in how set this up (not allowing to merge PRs until the tests pass), please feel free to reach out and we can look at it together, it should only take a couple of minutes.
In any case, this PR is ready to be reviewed now @hrwakeford.

How would this test come back if the value for beta is NaN? This happens when there is little to no red-noise in the data will the tolerance affect that condition?

How would this test come back if the value for beta is NaN? This happens when there is little to no red-noise in the data will the tolerance affect that condition?

How would this test come back if the value for beta is NaN? This happens when there is little to no red-noise in the data will the tolerance affect that condition?

That's a very good question. I haven't thought about it, but one thing to keep in mind that this test checks the results for the particular case of the W17 data set, with the G141 grating and the 'fit_time' grid selection. This means that we don't expect the test results to be anything else than the well behaved results I have set as our benchmark for this case when I did a run of it on my local machine, after making sure the results are correct. If any of the values turn out as a Nan, then the code is broken anyway (as we know there should be no NaNs in this specific test case), and we need to figure out what broke it. So, all this test does is to make sure there are no errors being introduced in a test case that we already know exactly how it should behave - hence the term "regression test".
If at any later point we have a case (data + grating + grid combo) that we know the exact behavior for, we could include this as a regression test. In this case, we would explicitly tell the test that it should except a NaN for a particular variable, and the tests would pass - because the code behaves exactly as we expect it to, whatever we as the code admins decided the expected behavior was.
In the end, regression tests can only catch bugs that would break already working things, unfortunately there is no way to make forward-looking tests that make sure any new cases behave well. This is the task of the code developers - us :)
The main used case is all the work we did when we were migrating the code way back when: we were running the same case over and over, tweaking parameters and the code set up, comparing the results to the "old" IDL results, because we trusted those to be the "truth". We were making sure the old stuff still works as expected, so that we can use it as a corect basis moving forward. Regression tests do exactly that, but automated.

How would this test come back if the value for beta is NaN? This happens when there is little to no red-noise in the data will the tolerance affect that condition?

That's a very good question. I haven't thought about it, but one thing to keep in mind that this test checks the results for the particular case of the W17 data set, with the G141 grating and the 'fit_time' grid selection. This means that we don't expect the test results to be anything else than the well behaved results I have set as our benchmark for this case when I did a run of it on my local machine, after making sure the results are correct. If any of the values turn out as a Nan, then the code is broken anyway (as we know there should be no NaNs in this specific test case), and we need to figure out what broke it. So, all this test does is to make sure there are no errors being introduced in a test case that we already know exactly how it should behave - hence the term "regression test".
If at any later point we have a case (data + grating + grid combo) that we know the exact behavior for, we could include this as a regression test. In this case, we would explicitly tell the test that it should except a NaN for a particular variable, and the tests would pass - because the code behaves exactly as we expect it to, whatever we as the code admins decided the expected behavior was.
In the end, regression tests can only catch bugs that would break already working things, unfortunately there is no way to make forward-looking tests that make sure any new cases behave well. This is the task of the code developers - us :)
The main used case is all the work we did when we were migrating the code way back when: we were running the same case over and over, tweaking parameters and the code set up, comparing the results to the "old" IDL results, because we trusted those to be the "truth". We were making sure the old stuff still works as expected, so that we can use it as a corect basis moving forward. Regression tests do exactly that, but automated.

Okay great thanks for explaining that, it makes a lot of sense. I found one typo that I corrected and committed, but other than that this all looks good and I am happy for this to be approved.

Okay great thanks for explaining that, it makes a lot of sense. I found one typo that I corrected and committed, but other than that this all looks good and I am happy for this to be approved.

Ok perfect. I just realized I need to rebase this PR first since there is new stuff that has been merged into develop, but after that we should be good to go. Give me one moment.

Ok perfect. I just realized I need to rebase this PR first since there is new stuff that has been merged into develop, but after that we should be good to go. Give me one moment.

@hrwakeford ok now this branch is up to date with develop. If you're fine with the PR, please go ahead and approve it. And then, whoever between the two of us is the first to see the tests pass, can merge it ^^

@hrwakeford ok now this branch is up to date with develop. If you're fine with the PR, please go ahead and approve it. And then, whoever between the two of us is the first to see the tests pass, can merge it ^^

Amazing work @ivalaginja thanks for that

Amazing work @ivalaginja thanks for that

Np, we have been talking about this for a while and I was on a testing streak over the holidays 💪

Np, we have been talking about this for a while and I was on a testing streak over the holidays 💪


Error: Cannot read properties of undefined (reading 'replace')

Hi!
I'm getting the following error when running this action from a workflow:
Error: Cannot read properties of undefined (reading 'replace')
I'm not getting any other specific details, so I'm not sure what the exact issue may by.
Here is an example of what is being passed to the action:
with:
    sourceFile: .github/actions/build/action.yml
    readme: .github/actions/build/README.md
    includeNameHeader: true
    tocLevel: 1
    lineBreaks: LF

The source and readme values are pointing to actions within the repository that are being fed in from tj-actions/changed-files. I am able to cat both of these files in a previous step and see their contents. Is this action expecting a different path?
Thanks for any guidance!

I think I know what's happening...
When the action is looking for sourceFile here, it's using the input being passed in, but the tag in the file itself has a different source value as it was generate locally. These need to match.

Didn't seem to do the trick...
Here's me arguments to the action:
with:
    sourceFile: .github/actions/api/build-app/action.yml
    readme: .github/actions/api/build-app/README.md
    includeNameHeader: true
    tocLevel: 1
    lineBreaks: LF
    lineBreaks: LF

I've updated the README to look something like this...
<!-- action-docs-header source=".github/actions/api/build-app/action.yml" -->
# Build Application
<!-- action-docs-header source=".github/actions/api/build-app/action.yml" -->
<!-- action-docs-description source=".github/actions/api/build-app/action.yml" -->
## Description

Builds and runs tests for app
<!-- action-docs-description source=".github/actions/api/build-app/action.yml" -->

I can run action-docs locally against these files with the same paths and it works.
Is there any extra debugging I can enable to figure out the issue?

Thanks for creating the issue, need to find some time to dig in.

Run npalm/action-docs-action@main
  with:
    readme: docs/actions/ci-deploy-eks.README
    sourceFile: .github/workflows/ci-deploy-eks.yaml
    includeNameHeader: true
    tocLevel: 2
    lineBreaks: LF
Error: Cannot read properties of undefined (reading 'replace')

We got the same error as this issue raised, any fix or work-around we may have, please ?


DNEXT-23670: Add the docs for new api ADMINReqRenameExt.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Shaik Nayab Rasool seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Make Application # 3 digits to help with sorting

Now that we can sort by columns I realize the Application # only fills with the number of digits it creates, e.g. one digit for 1-9 and two for 10-99. This means that sorting by the Application # column puts Ayyyy-10 ahead of Ayyyy-9. So I'm guessing the field only has one digit when populated with single digit numbers. If we make the field 3 digits and fill with the appropriate sequential number then it will sort by the 3 digit number and results should be as expected.

Hi Dan,
I believe I corrected it so that it will sort by the application # in #167
Here are some screenshots of it sorting:

One of them is ascending and the other is descending.
I manually edited the HTML elements by using Chrome's Dev Tool and then sorted it that way. There might be some cases that I haven't thought of for testing.

I just noticed that you wanted it to be 3 digits long, but I made it so that it's using regular expressions to work with any number of digits, which is why those values in the screenshots are sorted by year and then number digits.

Hi Andy - I don’t really care if it’s 3 digits or not. I was half-assed trying to solve the problem with a brute-force approach. As long as they sort properly in order, that’s the only thing that matters. Your solution sounds like what I wanted, not what I asked for, which is good. :-) Thanks for the quick work on all of this! ==> Dan

On Jun 4, 2020, at 5:42 PM, Andy Situ<EMAIL_ADDRESS>wrote:
I just noticed that you wanted it to be 3 digits long, but I made it so that it's using regular expressions to work with any number of digits, which is why those values in the screenshots are sorted by year and then number digits.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/dandahle/Catalyst-AppVetting/issues/146#issuecomment-639192536, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABQDU4NJIG7FDZKFAW5IDH3RVA5PPANCNFSM4ML47PYA.

Andy addressed the desired functionality in #167 so closing this and will test #167.


could not decode binary: invalid string with tag 174

Hello, I got this error
error caught in handler: error processing data: error decoding binary: could not decode binary: invalid string with tag 174

Directly after scanning the QR
Here is some information
Mobile OS: Android 6.0
Whatsapp Version: 2.19.190
go-whatsapp Version: latest, the master branch at 4c0e263c801b8b5bd7fad1577786ab6c32c2c042

A small note here for the owner, i'm also working on another project uses the same implementation as this project, but written in rust, and of course since most of my code is ported from this project i'm now facing the same problem.
Here is a debug log from my implementation that maybe help
OPEN THE LOG

[2019-07-08T02:46:39Z DEBUG wapi::client] Received message Text("s1,[\"Conn\",{\"ref\":\" MASKEDI\",\"wid\":\"MASKED@c.us\",\"connected\":true,\"isResponse\":\"false\",\"serverToken\":\"MASKED",\"browserToken\":\"  MQWKED",\"clientToken\":\"MASKED",\"lc\":\"US\",\"lg\":\"en\",\"locales\":\"en-US\",\"secret\":\"MASKED",\"protoVersion\":[0,17],\"binVersion\":11,\"battery\":48,\"plugged\":false,\"platform\":\"android\",\"features\":{\"URL\":true,\"FLAGS\":\"EAEYASgBOAFAAUgBWAFgAWgBmAEBoAEBsAECyAEB2AEC6AEC\"},\"phone\":{\"wa_version\":\"2.19.190\",\"mcc\":\"602\",\"mnc\":\"002\",\"os_version\":\"6.0\",\"device_manufacturer\":\"LENOVO\",\"device_model\":\"A7000plus\",\"os_build_number\":\"A7000-a_PLUS_S308_160618_ROW\"},\"pushname\":\"Shady Khalifa\",\"tos\":0}]")
[2019-07-08T02:46:39Z INFO  echo] new state: Connected
[2019-07-08T02:46:39Z DEBUG echo] PersistentSession { client_token: "MASKED", server_token: "MASKED", client_id:[...], mac: [...] }
[2019-07-08T02:46:39Z INFO  echo] user data changed: UserJid(Jid { id: "MASKED", is_group: false, is_broadcast: false, is_remote: false })
[2019-07-08T02:46:39Z DEBUG wapi::client] Received message Text("s2,[\"Blocklist\",{\"id\":1,\"blocklist\":[\"201145915654<EMAIL_ADDRESS>[2019-07-08T02:46:39Z DEBUG wapi::client] received json: Array([Short("Blocklist"), Object(Object { store: [("id", Number(Number { category: 1, exponent: 0, mantissa: 1 }), 0, 1), ("blocklist", Array([Short("201145915654@c.us"), Short("201098459714@c.us")]), 0, 0)] })])
[2019-07-08T02:46:39Z DEBUG wapi::client] Received message Binary([52, 55, 97, 102, 55, 54, 97, 51, 54, 99, 101, 102, 55, 51, 100, 97, 46, 45, 45, 51, 55, 44, 143, 101, 218, 52, 137, 207, 52, 177, 250, 42, 128, 60, 171, 213, 126, 119, 224, 168, 116, 2, 152, 239, 223, 149, 241, 245, 59, 2, 99, 220, 68, 91, 10, 201, 229, 160, 28, 210, 240, 238, 154, 30, 168, 29, 1, 7, 195, 210, 241, 179, 242, 237, 49, 101, 16, 36, 117, 126, 29, 110, 166, 125, 136, 149, 73, 4, 218, 75, 16, 151, 219, 229, 251, 80, 128, 130, 43, 68, 199, 1, 146, 9, 77, 41, 80, 171, 118, 172, 201, 64, 84, 118, 50, 97, 120, 233, 76, 147, 221, 137, 217, 250, 168, 163, 204, 197, 196, 112, 183, 253, 52, 144, 235, 28, 245, 55, 47, 15, 150, 123, 218, 200, 5, 56, 191, 208, 124, 214, 6, 28, 13, 74, 96, 114, 107, 111, 130, 22, 159, 181, 146, 222, 20, 164, 4, 4, 149, 81, 218, 174, 11, 196, 139, 14, 225, 129, 23, 136, 234, 165, 245, 155, 191, 250, 39, 68, 2, 230, 51, 90, 175, 190, 157, 211, 70, 32, 236, 95, 146, 113, 98, 183, 187, 132, 176, 170, 180, 239, 251, 165, 153, 124, 78, 150, 214, 142, 24, 89, 145, 167, 96, 253, 66, 155, 206, 160, 15, 129, 201, 58, 45, 132, 91, 160, 107, 187, 135, 96, 43, 183, 147, 182, 102, 175, 96, 212, 193, 38, 13, 87, 60, 19, 245, 217, 42, 181, 165, 8, 102, 141])
[2019-07-08T02:46:39Z TRACE wapi::protocol] Found the sep at: 21, and the tag is: [52, 55, 97, 102, 55, 54, 97, 51, 54, 99, 101, 102, 55, 51, 100, 97, 46, 45, 45, 51, 55]
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 9
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 248
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 23
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 91
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 139
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 248
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 52
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 45
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 250
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 255
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 80
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 52
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 45
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 250
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 255
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 80
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 52
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 45
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 250
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 255
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 80
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 52
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 45
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 250
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 255
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 80
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 40
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 45
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 250
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 255
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 80
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 40
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 45
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 250
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 255
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 80
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 40
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 45
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 250
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 255
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 80
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 40
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 45
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 250
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 255
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 35
[2019-07-08T02:46:39Z DEBUG wapi::node] trying to find the tag: 174
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: Unknown("Invalid Tag, tag 174")'

i'm open to provide more information as needed to reproduce this issue
Thanks :)

ok, it seems that whatsapp is going to add a new tag 174, or it is already added, in the whatsapp v2.19.190 is a beta version, i got another mobile with whatsapp v2.19.175 and it seems to work perfectly !

so @shekohex would you close this issue

Actually, we need to know what tag it is, since definitely WhatsApp will update to this version soon, so we would face that issue.
I managed to solve this by returning an empty Node when getting a 174 tag.
And my implementation is seems to work in beta version. I can login send/recv messages, but this sounds like a hack/workaround this issue, we need to investigate more to know actually what that tag is, or even is this actually a new tag or a bug in our decoder reading a wrong bits results a wrong tag ?!

hello, same error here "gowhatsapp: error occoured: error processing data: error decoding binary: could not decode binary: invalid string with tag 174" I hope you can fix it, thank you so much for your work!

have no idea, i use Latest WhatsApp Version (Android 9) and latest go-whatsapp version, works like a charm

The problem is linked with the version of phone whatsapp version, on my project I have a lot of numbers connecteds (more than 300) and sometimes this error is logged, but I don't have the phone to get more details

have no idea, i use Latest WhatsApp Version (Android 9) and latest go-whatsapp version, works like a charm

are you in beta channel ? what whatsapp version you are using ?

... sometimes this error is logged, but I don't have the phone to get more details

are you sure that it's a tag 174 error ? or similar one ? and what version of whatsapp you are using ?

@shekohex my WhatsApp version is 2.19.188, and it's latest version available in play store, and i'm not beta-tester

my WhatsApp version is 2.19.188, and it's latest version available in play store, and i'm not beta-tester

yup, but i'm using beta v2.19.190 and it has this problem.

Has anyone tried to find a clue in the official WAweb js source?

Has anyone tried to find a clue in the official WAweb js source?

I found this code videoDecErrorFrames: [174, i]  on Call definition

@SchulteMK

.... or even is this actually a new tag or a bug in our decoder reading a wrong bits results a wrong tag ?!

I'm afraid of the fact that could be a Decoder error, and there's no tag 174 at all.
I will try to Inspect these bytes to see what's actually going on.

Any update @shekohex ?

Any update @shekohex ?

not actually, i just bypass it as a workaround here by returning an empty node once i get that error,
i'm currently not using this project, as i said it helped me to implement my own.
by the way, i hadn't encounter any new errors since i fixed this using this workaround, i mean by errors here: logic errors, server error, invalid data, data corruption ..etc.
all working now.

Hello, I changed the phone for one with Android 9 (I am using WhatsApp
business) and it works fine, randomly the '174 tag' ocurrs, but is not all
the time.
El lun., 15 jul. 2019 a las 20:56, Shady Khalifa<EMAIL_ADDRESS>escribió:

Any update @shekohex https://github.com/shekohex ?
not actually, i just bypass it as a workaround here by returning an empty
node once i get that error,
i'm currently not using this project, as i said it helped me to implement
my own.
by the way, i hadn't encounter any new errors since i fixed this using
this workaround, i mean by errors here: logic errors, server error, invalid
data, data corruption ..etc.
all working now.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Rhymen/go-whatsapp/issues/187?email_source=notifications&email_token=AK2LPBBD7M3UNRQD32YUVZDP7UFEJA5CNFSM4H6XPTT2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZ7JHLA#issuecomment-511611820,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AK2LPBHTLMMKPFWUVNJ6SXDP7UFEJANCNFSM4H6XPTTQ
.

Lo folks, sorry but I I think this issue hasn't really gone away.
When enabling the account it's icon just stays greyed out as though it isn't connecting...

This is obviously after enabling it at least once the first time, scanning the QR successfully and then restarting Pidgin.
Only some of the time does the below appear after enabling it, sometimes it doesn't... but in all cases the account stays greyed out for me...

I'm using the latest nightly on Ubuntu 18.04 amd64, the way I personally install it is below (which includes a handy and legal way of obtaining the WhatsApp icon!)...
sudo wget -P /usr/lib/purple-2 https://buildbot.hehoe.de/purple-gowhatsapp/builds/libgowhatsapp_0.0.3~git9da9b8e+gowhatsapp~git5c79b2c_amd64_ubuntu18.04.so
for s in 16 22 48; do curl -sL web.archive.org/web/0im_/media.whatsapp.com/directory/logos/Bitmap/logo-color-symbol.png|sudo convert -background none -trim -resize $sx$s - /usr/share/pixmaps/pidgin/protocols/$s/whatsapp.png; done

This (for me) was fixed with 47b0740

@Lantizia I'm don't found this commit

Sorry I now know why my commit mention wasn't turning into a link automatically... it's in another fork - have updated the link above.

@Lantizia understood
But this commit did not fix the problem only mask the error, right?

Couldn't comment, not my code.

@houstondapaz I think I'm doing the same thing in my codebase, I didn't have any side effects thought.
Moreover, that error happens only on starting, and occurs 3 or more times.
I just ignore it 😌

I agree to ignore this error on your application, but we cannot ignore this error as a library

On Android 9 with WhatsApp version 2.19.254 I had the same issue, updating WhatsApp version to 2.19.258 solved this - I no longer get the 174 tag on the server. Could potentially be a bug introduced and then removed by the WhatsApp team.

Does anybody have an update on this?

solution?

May be related: https://github.com/rodarima/libwa/issues/1

Hi, I also got this error.
I tried to remove all chat history, and then tried to re-login and it works normally.

Still got this problem running a simple example
Mobile OS: Android 10
Whatsapp Version: <IP_ADDRESS>
go-whatsapp Version: v0.1.1 latest on master

I have encountered the same problem in the whatsapp signal bridge here: https://github.com/meinto/whatsapp-signal-bridge/issues/1


[doc] Add short-form contributors guide

This document is a short-form companion to the upcoming detailed contributors guide (which will follow in a subsequent PR). It gives an overview of how we work, how to create bug reports, our Security Issues Process, and the usual process for contributing code.
The contribution guide effort was kicked off by @vogelpi and has since seen suggestions, edits, and comments from a wide number of people across the project.
Notably, the Security Issues Process has been agreed by @moidx, @domrizz0, and @felixmiller.

Updated to address all outstanding comments.

@asb any concerns with merging this PR?

I've discussed offline with Dom who has confirmed he's happy for this to merge, so going ahead and committing.

Thanks @asb!


Crash Report

Fatal Crash occurred on Thread named 'Thread-4'
Unix Time :<PHONE_NUMBER>844
LocalTime : 20 авг. 2024 г. 16:35:36
ACTIVE_CODENAMES = []
app_version = 2.6.0
device_model = Redmi 10
SECURITY_PATCH = 2021-12-05
BASE_OS =
RELEASE = 11
CODENAME = REL
manufacturer = xiaomi
RELEASE_OR_CODENAME = 11
SDK_INT = 30
PREVIEW_SDK_FINGERPRINT = REL
PREVIEW_SDK_INT = 0
SDK = 30
brand = Redmi
supported_abi = [arm64-v8a,armeabi-v7a,armeabi]
INCREMENTAL =<PHONE_NUMBER>
Error Message : Attempt to invoke virtual method 'void com.google.android.material.tabs.TabLayout.setOnTabSelectedListener(com.google.android.material.tabs.TabLayout$OnTabSelectedListener)' on a null object reference
Error Cause : null
Error StackTrace :
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.material.tabs.TabLayout.setOnTabSelectedListener(com.google.android.material.tabs.TabLayout$OnTabSelectedListener)' on a null object reference
at com.rk.xededitor.MainActivity.MainActivityAsync.init$lambda$15(MainActivityAsync.kt:74)
at com.rk.xededitor.MainActivity.MainActivityAsync.$r8$lambda$fxSEMoBr_5hRi-wnw9lyslUNy7M(Unknown Source:0)
at com.rk.xededitor.MainActivity.MainActivityAsync$$ExternalSyntheticLambda9.run(D8$$SyntheticClass:0)
at java.lang.Thread.run(Thread.java:923)
Sometimes it can pop up (I have already cleared the data (several times))
This also gave me a message at the bottom that the theme file was not found and I need to reinstall the application

Fatal Crash occurred on Thread named 'Thread-4'
Unix Time :<PHONE_NUMBER>844
LocalTime : 20 авг. 2024 г. 16:35:36
ACTIVE_CODENAMES = []
app_version = 2.6.0
device_model = Redmi 10
SECURITY_PATCH = 2021-12-05
BASE_OS =
RELEASE = 11
CODENAME = REL
manufacturer = xiaomi
RELEASE_OR_CODENAME = 11
SDK_INT = 30
PREVIEW_SDK_FINGERPRINT = REL
PREVIEW_SDK_INT = 0
SDK = 30
brand = Redmi
supported_abi = [arm64-v8a,armeabi-v7a,armeabi]
INCREMENTAL =<PHONE_NUMBER>
Error Message : Attempt to invoke virtual method 'void com.google.android.material.tabs.TabLayout.setOnTabSelectedListener(com.google.android.material.tabs.TabLayout$OnTabSelectedListener)' on a null object reference
Error Cause : null
Error StackTrace :
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.material.tabs.TabLayout.setOnTabSelectedListener(com.google.android.material.tabs.TabLayout$OnTabSelectedListener)' on a null object reference
at com.rk.xededitor.MainActivity.MainActivityAsync.init$lambda$15(MainActivityAsync.kt:74)
at com.rk.xededitor.MainActivity.MainActivityAsync.$r8$lambda$fxSEMoBr_5hRi-wnw9lyslUNy7M(Unknown Source:0)
at com.rk.xededitor.MainActivity.MainActivityAsync$$ExternalSyntheticLambda9.run(D8$$SyntheticClass:0)
at java.lang.Thread.run(Thread.java:923)
Sometimes it can pop up (I have already cleared the data (several times))
This also gave me a message at the bottom that the theme file was not found and I need to reinstall the application

You don't need to reinstall application, it just a bug

I just erased the data, then logged in again and it popped up again

Fatal Crash occurred on Thread named 'Thread-4'
Unix Time :<PHONE_NUMBER>844
LocalTime : 20 авг. 2024 г. 16:35:36
ACTIVE_CODENAMES = []
app_version = 2.6.0
device_model = Redmi 10
SECURITY_PATCH = 2021-12-05
BASE_OS =
RELEASE = 11
CODENAME = REL
manufacturer = xiaomi
RELEASE_OR_CODENAME = 11
SDK_INT = 30
PREVIEW_SDK_FINGERPRINT = REL
PREVIEW_SDK_INT = 0
SDK = 30
brand = Redmi
supported_abi = [arm64-v8a,armeabi-v7a,armeabi]
INCREMENTAL =<PHONE_NUMBER>
Error Message : Attempt to invoke virtual method 'void com.google.android.material.tabs.TabLayout.setOnTabSelectedListener(com.google.android.material.tabs.TabLayout$OnTabSelectedListener)' on a null object reference
Error Cause : null
Error StackTrace :
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.material.tabs.TabLayout.setOnTabSelectedListener(com.google.android.material.tabs.TabLayout$OnTabSelectedListener)' on a null object reference
at com.rk.xededitor.MainActivity.MainActivityAsync.init$lambda$15(MainActivityAsync.kt:74)
at com.rk.xededitor.MainActivity.MainActivityAsync.$r8$lambda$fxSEMoBr_5hRi-wnw9lyslUNy7M(Unknown Source:0)
at com.rk.xededitor.MainActivity.MainActivityAsync$$ExternalSyntheticLambda9.run(D8$$SyntheticClass:0)
at java.lang.Thread.run(Thread.java:923)
Sometimes it can pop up (I have already cleared the data (several times))
This also gave me a message at the bottom that the theme file was not found and I need to reinstall the application

You don't need to reinstall application, it just a bug

Ok

Fatal Crash occurred on Thread named 'Thread-4'
Unix Time :<PHONE_NUMBER>844
LocalTime : 20 авг. 2024 г. 16:35:36
ACTIVE_CODENAMES = []
app_version = 2.6.0
device_model = Redmi 10
SECURITY_PATCH = 2021-12-05
BASE_OS =
RELEASE = 11
CODENAME = REL
manufacturer = xiaomi
RELEASE_OR_CODENAME = 11
SDK_INT = 30
PREVIEW_SDK_FINGERPRINT = REL
PREVIEW_SDK_INT = 0
SDK = 30
brand = Redmi
supported_abi = [arm64-v8a,armeabi-v7a,armeabi]
INCREMENTAL =<PHONE_NUMBER>
Error Message : Attempt to invoke virtual method 'void com.google.android.material.tabs.TabLayout.setOnTabSelectedListener(com.google.android.material.tabs.TabLayout$OnTabSelectedListener)' on a null object reference
Error Cause : null
Error StackTrace :
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.material.tabs.TabLayout.setOnTabSelectedListener(com.google.android.material.tabs.TabLayout$OnTabSelectedListener)' on a null object reference
at com.rk.xededitor.MainActivity.MainActivityAsync.init$lambda$15(MainActivityAsync.kt:74)
at com.rk.xededitor.MainActivity.MainActivityAsync.$r8$lambda$fxSEMoBr_5hRi-wnw9lyslUNy7M(Unknown Source:0)
at com.rk.xededitor.MainActivity.MainActivityAsync$$ExternalSyntheticLambda9.run(D8$$SyntheticClass:0)
at java.lang.Thread.run(Thread.java:923)
Sometimes it can pop up (I have already cleared the data (several times))
This also gave me a message at the bottom that the theme file was not found and I need to reinstall the application

You don't need to reinstall application, it just a bug

Ok

And the editor may look weird because it's not able to find the theme files, I'll fix it in next commit

Fixed :)


Facet2

@briandealwis This doesn't actually work. When I call createDataModel it seems to throw a NullPointerException without much of a stack trace. I'm trying to find an example of configuring the jst.web facet

That's NPE is a bug with the definitions in .localserver. I'll get some fixes up ASAP.

OK, I finally managed to get a config set up for the web facet that the framework accepts. So far all this does is refrain from creating an extra web.xml deployment descriptor but it's a good checkpoint so PTAL.
Next step will be to configure the various paths for the webapp folder and the like.

So far all this does is refrain from creating an extra web.xml deployment descriptor but it's a good checkpoint so PTAL

So that's to avoid the web.xml in the WebContent/WEB-INF in favour of the one in src/main/webapp?

LGTM with the .internal removed


Have containerd-shim filename depend on containerd filename

If containerd binary is renamed to docker-containerd, then it should
invoke the docker-containerd-shim binary.
Signed-off-by: Tibor Vass<EMAIL_ADDRESS>

LGTM.
We may change it to a proper option later.

Janky seems to stubbornly refuse to run on this so I tested locally.


Make citation cff file

There are info in the documentation on what to cite (inc. BibTeX entries). twirl might be described in an upcoming JOSS paper to differentiate it from prose.


(Design Doc) Explain why there is no Message Controller

Just so they don't think we forgot it or something. It could be in our design decision section.

things to change/add in design doc:

explain why we decided not to follow evan's advice not to implement a RequestModel design pattern:
we think that for it to work, based on our request model implementation, it would require a builder subclass for each implementation, which seems inproductive. tldr not worth it to spend time.
Accessibility report
a brief summary of what each group member has been working on since phase 1
Each group member should include a link to a significant pull request


Uint256Add hinter

Fixes #187
Fixes #219

I added a few modifications to the implementation of Uint256Add hint in the last commit, so we could use the same one for Uint256AddLow hint, as most of the logic is the same for both

Doesn't the current 1 field per operander approach work in this case?

Doesn't the current 1 field per operander approach work in this case?

Unfortunately no. The hint uses a and b as the parameters for the addition, and they are both of type Uint256, so it's actually two felts each one.


Added a service user that is common between the containers

This service user will be used as a base permissions user between the DB and any containers that get built, allowing us to persist the DB without permissions problems.

https://stackoverflow.com/questions/47197493/docker-mounting-volume-permission-denied
This is the error that occurs, and for now it appears that chmodding the db folder is the way for now.


:ghost: Skip Pathfinder calls when disconnected

Updating application delete action that calls Pathfinder API to not do that when running as Disconnected (e.g. for fast API tests).
Otherwise gets $ curl -X DELETE http://localhost:8080/applications/1 {"error":"Delete \"/pathfinder/assessments/bulkDelete\": unsupported protocol scheme \"\""}
Follow-up on https://github.com/konveyor/tackle2-hub/pull/242

Let's deal with this in pathfinder.go DeleteAssessment().

Good point, updated, thanks!


GLUE dev results

Is it possible for you to show your GLUE development results in the repos README file? In this case, we can use it as a baseline without submitting to the leaderboard.

Similar question.
Thanks


Django 2.0 support

Adds support for Django 2.0 and 2.1 to the plugin, test project, and tests.  Drops support for Django < 1.11.
Adds support for django-cms 3.5 and 3.6, drops support for django-cms 3.3.
Adds support for Python 3.7, drops testing against Python 3.4.
Updates tox configuration to test against appropriate versions.

Coverage remained the same at 89.313% when pulling f98143dbe5a5203ea49e6ac2676d092fbfa11c34 on mluard:django-2.0-support into 93eb0c8d8295a7767dfffff3279e9f5cd709a22e on mkoistinen:develop.

Coverage remained the same at 89.313% when pulling f98143dbe5a5203ea49e6ac2676d092fbfa11c34 on mluard:django-2.0-support into 93eb0c8d8295a7767dfffff3279e9f5cd709a22e on mkoistinen:develop.

Oh fantastic! Thanks for this thorough PR and sorry I didn't notice for 3 weeks. Great job!


Chinese, and Japanese

Just came across this repo.
Would it work for Chinese and Japanese language subs?
I'm guessing it needs some changes to work for those languages. Any pointers to which areas might need change?
Thanks

So, filter-subs works mostly through regex, of which there are a few patterns that match based on alphanumeric characters, e.g. the replace names regex matches using ([A-Z0-9 ][A-Z0-9' ]*: *|[A-Z]{1}[a-z]+ *: *|^[A-Za-z]+: *).
I think a good starting place would be to write some test cases, you can see here for some examples of what that looks like.
In terms of the code, if you can find an analogous regex pattern to use instead of the alphanumerics then it would be quite straight forward to either include that outright, or include it with an optional language flag. If you search within this file for all of the instances of A-Z and a-z that should probably be all of the locations that you'd need to change.
If you have any further questions and I'd be happy to help.

Thanks @m-lyon , much appreciaed!


Rename rustup-setup to rustup-init

The name setup has special meaning on Windows. It expects setup to be a windowsy setup program, doing specific things that rustup does not do. Let's avoid the whole problem by renaming the installer yet again to rustup-init. Anybody else have better names?
cc @vadimcn @retep998 what do you think?

Alternatively we could make it an actual installer.

@retep998 That's the subject of https://github.com/rust-lang-nursery/multirust-rs/issues/253

Alternatively you could embed a manifest.


Implement [required] validation

It would be awesome if it was possible to make the virtual-select required.
The element would have to get a red border if the form was submitted with a virtual-select without a value.
And the submit would also be prevented.

Bonus kudo's if this required property were also toggleable on/off.
The form can be accessd by checking input[type=hidden]'s .form property (might be null)

@Jaaap thanks for the suggestion. I will implement it in the future release.

@Jaaap this feature has been implemented and available in the release v1.0.24

Use required property to make a dropdown mandatory
Use toggleRequired() method to toggle required value
Use validate() method to validate the dropdown


Bump mesos version to 1.1.0

Bumping mesos version

was 1.1.0 really released!?
( at least not yet in the deb/ubuntu repos (as seen from the travis-ci log )

Strange in is already present in https://github.com/apache/mesos/releases anyway will keep it until it is released.

last week I'm not sure if I looked properly about existing 1.1.0 deb
for sure now I can see it!
root@node01:# apt-cache policy mesos
mesos:
  Installed: 1.0.1-2.0.93.ubuntu1404
  Candidate: 1.1.0-2.0.107.ubuntu1404
  Version table:
     1.1.0-2.0.107.ubuntu1404 0
        500 http://repos.mesosphere.com/ubuntu/ trusty/main amd64 Packages
 *** 1.0.1-2.0.93.ubuntu1404 0
        500 http://repos.mesosphere.com/ubuntu/ trusty/main amd64 Packages
        100 /var/lib/dpkg/status

ps: Im just not sure if 1.1.0 is the most stable option .. currently decided to first go with 1.0.1


Files should be RO

Just noticed that the preprocessing files, and others, are writable. I think we want to make them RO once created, and when chmod when deleting.

:+1:, yes! This is a fantastic idea!!
On (Apr-24-15|16:02), Daniel McDonald wrote:

Just noticed that the preprocessing files, and others, are writable. I think we want to make them RO once created, and when chmod when deleting.

Reply to this email directly or view it on GitHub:
https://github.com/biocore/qiita/issues/1104

:+1: Safety first!

This has been fixed internally in our systems


Project a week

Project a week
I will like to introduce an initiative under OSDC named project a week.
Motive
To make all interested people to get involved in the organization and contribute as per there knowledge and getting the experience of working on live projects and in an organization under the mentorship of OSDC members.
Structure
Mentors:- All the OSDC members of TC and CC
Idea introduction:- Can be done by anyone(student or mentor)
Project maintainer:- project introducer or someone decided by mentors. I will be highly interested to take this one.
Contributor:- Everyone is free to contribute. Even mentors.
Target:- working together to complete a project in a week.
Idea to be introduced:- before Saturday in the week u want to do the project to be started
Project week:-

Sunday to Saturday
Every week will be a project week except exam week which will be the improvement or look-back week. In the look-back week, there will be no new project but if u wish u can improve any previous project.
Every Saturday or Monday we can have a meetup on discussing how will we be doing next week project.

Benefits

Both hostlers and day scholars can contribute.
Each and everyone can contribute.

/cc @darkHarry

@ayushnagar123 this is a great idea and will help build up the community and increment #FTOs.
I have a few concerns regarding the project we accept so how about we build a detailed project accepting guideline.
What i propose is this :

If no one champions to mentor or maintain the project we can't accept the project no matter how good it is.
We should by poll or discussions create a team who'll zealously work on it.
There should be weekly tasks to achieve.

Why i propose the above guidelines :

If there is no head(probably the one who proposed) who'll make authoratative decisions and has a vision for the project the project will soon come to a halt.
If there is only one or two contributor it's better that the project be on their github because it's not bringing new contributors (Defending the motive)
Realistically speaking good projects take time so a project in a week seems far fetched to me.

Feel free to add/suggest.
@ryzokuken @V1shvesh @vaibhavk @saranshbarua @vaibhavk

Okay, So I think we can finalise the guidelines in the next meetup.

Sure


Groebner.jl integration

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@8280dd1). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master       #5   +/-   ##
=========================================
  Coverage          ?   73.92%
=========================================
  Files             ?        7
  Lines             ?      859
  Branches          ?        0
=========================================
  Hits              ?      635
  Misses            ?      224
  Partials          ?        0

Continue to review full report at Codecov.

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

https://github.com/sumiya11/Groebner.jl

Mind adding tests and adding an example?

After loading SIMDPolynomials and Groebner
julia> x1, x2 = [PackedMonomial{2,7}(i) for i in 0:1];

julia> system = [10*x1*x2^2 - 11*x1 + 10,
               10*x1^2*x2 - 11*x2 + 10];

julia> groebner(system)
3-element Vector{MPoly{Vector{SIMDPolynomials.Term{Int64, PackedMonomial{2, 7, 1}}}}}:
             11x₀² - 11x₁² - 10x₀ + 10x₁
 110x₁³ + 100x₀x₁ - 100x₁² - 121x₁ + 110
                     10x₀x₁² - 11x₀ + 10


Will this work for Github Projects Beta

I am trying to export the new Github projects Beta to CSV. At the moment when I run the code its showing only the available projects in classic. Please forgive me if I am confusing you with my question

@vishnumadhusoodanan did you get it working with projects beta?

@S-DICKSON I just tried and it did not work with projects beta, unfortunately

Tried it also. Seems this repo only works with classic projects. The newer projects use the GraphQL API.

I've created a new CSV exporter that supports ProjectsV2.
You can give it a try here:
GitHub Project CSV Exporter (ProjectV2)
Let us know how it goes!

Hey y'all! Sorry I didn't get these comments. This does not work with Projects V2, and I don't intend on working on it anytime soon, but anyone is welcome to fork and contribute if they want. I recommend y'all check out @justinmahar's project for V2 :)

thank you @wustep for this app and thanks @justinmahar, I can confirm the v2 version works a charm :)


Add of MaxPrice and MinPrice on SearchItems

Hi,
Can you please accept this pull request ?
Kind regards

According to the documentation the value must be converted into an int. I think it would be useful if I could hand over the double.
https://webservices.amazon.com/paapi5/documentation/search-items.html

I don't understand.
You want to put MaxPrice and MinPrice with the double type ? Or int ?

Maybe something like this?
namespace Nager.AmazonProductAdvertising.Model
{
    public class SearchRequest
    {
        public string Keywords { get; set; }
        public string Brand { get; set; }
        public string Title { get; set; }
        public int? ItemPage { get; set; }
        public SortBy? SortBy { get; set; }
        public string BrowseNodeId { get; set; }
        public string[] Resources { get; set; }
        public Merchant? Merchant { get; set; }
        public SearchIndex? SearchIndex { get; set; }
        public Condition? Condition { get; set; }

        [JsonProperty("maxPrice")]
        public long? MaxPriceRaw { get; private set; }
        [JsonProperty("minPrice")]
        public long? MinPriceRaw { get; private set; }

        [JsonIgnore]
        public long? MaxPrice { get; set { this.MaxPriceRaw = value * 100 } }
        [JsonIgnore]
        public long? MinPrice { get; set { this.MinPriceRaw = value * 100 } }
    }
}


Many changes to enable better channel abstraction and string-valued axes

@ieivanov I had to comment out one of the tests to get everything to work: https://github.com/micro-manager/pycro-manager/pull/478/commits/d67302627f010a471e00172451c463f944d88855
Was this working for you previously, and did my recent changes break it?

Sorry, test_empty_mda_acq was still under development, as you noticed. It's OK to comment it out for now, alternatively we can skip it with the @pytest.mark.skip() decorator.

Okay sounds good!


[Bug] package versions are conflicted

Version
1.10.1
Reproduction link
https://github.com/creativetimofficial/material-dashboard-react/releases/tag/1.10.1
Operating System
MacOS Catalina 10.15.7
Device
Macbook Pro
Browser & Version
without browser
Steps to reproduce

clone the repository
npm install

What is expected?
Dependencies are successfully installed,
What is actually happening?
an error bellow occurred
$ npm i
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! Found<EMAIL_ADDRESS>npm ERR! node_modules/react
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!   peer<EMAIL_ADDRESS>|| ^17.0.0" from<EMAIL_ADDRESS>npm ERR!   node_modules/@material-ui/core
npm ERR!     peer<EMAIL_ADDRESS>from<EMAIL_ADDRESS>npm ERR!     node_modules/@material-ui/icons
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!   11 more (@material-ui/icons, @material-ui/styles, ...)
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer<EMAIL_ADDRESS>from<EMAIL_ADDRESS>npm ERR! node_modules/react-event-listener
npm ERR<EMAIL_ADDRESS>from<EMAIL_ADDRESS>npm ERR!   node_modules/react-swipeable-views-utils
npm ERR<EMAIL_ADDRESS>from<EMAIL_ADDRESS>npm ERR!     node_modules/react-swipeable-views
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.

Solution
An dependency react-swipeable-views does not support React (and React-Dom) 17.
So, matriari-dashboard-react also should depend on React 16.4.0.
Additional comments

I solved this upgrading react-swipeable-views dependency to 0.14.0, so far it seems to be working OK (not the best solution but downgrading node and npm was not an option).

May I suggest updating this project to depend on 0.14.0 of react-swipeable-views as that project updated/fix their peerDependencies
https://github.com/oliviertassinari/react-swipeable-views/pull/640

Hi there
We've just updated the product now it has a new look with a flexible strucutre.
All the best
Sajad

What about react 18?

Hey @noamcohen97,
Until now it's not updated to react 18.
Regards,
Sajad


METRON-1443 Missing Critical MPack Install Instruction for Ubuntu

When installing Elasticsearch with the MPack on Ubuntu, you must manually install the Elasticsearch repositories.  The Mpack itself does not do this, like it does on CentOS.
When the development environment on Ubuntu is spun-up this step is performed within Ansible as a prerequisite to the Mpack install.  Until this can be fixed so that it matches what happens on CentOS, this needs to be at least documented.
I should have documented this in #903 , but did not do so.  Oops.

+1 by inspection

https://issues.apache.org/jira/browse/METRON-1444


Navigation problem .NET core document jump to .NET standard document

Hi,
I'm browsing tru left (tree) navigation of .NET core document and suddenly jump to .NET standard document.
Referrer : https://docs.microsoft.com/en-us/aspnet/core/fundamentals/websockets?view=aspnetcore-2.1

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

ID: 7b76cb0d-df6d-88c4-557d-ad327a566eef
Version Independent ID: 95083e1c-ef53-e813-08e2-1aa31b431f00
Content: Choose between .NET Core and .NET Framework for server apps
Content Source: docs/standard/choosing-core-framework-server.md
Service: unspecified
GitHub Login: @cartermp
Microsoft Alias: mairaw

Thanks @martinadhie. @scottaddie @Rick-Anderson should you guys use the contextual TOC so customers don't jump out of your docset for that TOC entry?

Should we move this issue to the aspnet/docs repo?

@tdykstra 	own's TOC. Tom?

Yes, this belongs in our repo for our ToC, I've created one there and you can close this one.  I haven't done contextual ToC links either, it's something I'll have to look into.

Thanks @tdykstra! Closing the issue here then.


Specify city for shipping

Proxying from @helpdesk:

If I'm selling something that will need to be picked up in person, how do I specify my state and city in the listing? All I see is "Ships to [country]".

The description field would be the most obvious place. Or they can send a message after the purchase occurs if they want it to be private.


Two-line fix for #4489 (DelaunayTriangulator bug)

I'm not fully confident that this solves every case where the uncommon bug in #4489 occurs, so I'm requesting review from anyone proficient with sort algorithms or who can maybe optimize some of the geometry code (this is unrelated, but while someone's looking through this class they might see some opportunities). The bug in #4489 appears to boil down to a sometimes-incorrect sort of the x-positions in an array called points. The repro case there has the last x-position at index 10, but it isn't the highest x-position in points. That seems to somehow swerve into affecting some other parts of the calculation, like the assumption in circumCircle() that COMPLETE must only be returned if the point is fully to the right of the circumcircle, and points are processed in what should be sorted order (either left to right or right to left, but not mixing the highest value in the middle like it currently does). The check in this PR seems to correct the sort order for the given repro case, but I don't know if it is robust for other cases.

Sorry about the Git history; it doesn't show up as a changed file, so it shouldn't change anything, but I don't know how to erase part of the PR's history.

No problem, when we squash merge, only the actual changes are added to the history in a single commit.

Nice work! It's been so long since I worked on this, I'm afraid I'm not very useful for determining if this is the right fix in all cases. A simple quicksort implementation doesn't have the check, but this one appears to have some optimization. FWIW, I tried it out with a number of meshes in Spine and the triangulations looked right. I also applied it to ConvexHull and it appears to continue to work correctly.


Add Pipeline Version to header in reduced data

An important point arouse from the meeting with Las Cumbres Observatory. To add the pipeline's version to the header of the processed image. The keyword can not be HISTORY instead a new keyword name has to be invented. In fact it might be necessary to define a set of pipeline-specific keywords.

I think we should use the keyword "VERSION" which will be of type STRING. For example: 1.0b


centos-ci/bootstrap.sh: fix epel release url

Hardcoding epel version will work only temporarily. Idea from:
https://github.com/geerlingguy/ansible-role-repo-epel/blob/master/defaults/main.yml
Signed-off-by: Miroslav Vadkerti<EMAIL_ADDRESS>

Can one of the admins verify this patch?

In the future would be awesome to rewrite bootstrap.sh to ansible so we can use roles for tasks like this. This is just a quick fix to unblock the CI, which seems to be failing:
https://ci.centos.org/job/leapp-integration-tests/


undefined method `val' for #Arel::Nodes::BindParam:0x0000000625ef08

Hi,
I followed the steps that you suggested http://invoicing.codemancers.com/, but unfortunately I cannot get it working. Once I want to build an object that inherits the Invoice model, I get the following error:
undefined method `val' for #Arel::Nodes::BindParam:0x0000000625ef08
I'm using Rails 4.2 and the stack trace is as follows:
activerecord (4.2.0) lib/active_record/relation.rb:572:in `block (2 levels) in where_values_hash'
activerecord (4.2.0) lib/active_record/relation.rb:568:in `fetch'
activerecord (4.2.0) lib/active_record/relation.rb:568:in `block in where_values_hash'
activerecord (4.2.0) lib/active_record/relation.rb:566:in `map'
activerecord (4.2.0) lib/active_record/relation.rb:566:in `where_values_hash'
activerecord (4.2.0) lib/active_record/relation.rb:579:in `scope_for_create'
activerecord (4.2.0) lib/active_record/associations/collection_association.rb:503:in `create_scope'
activerecord (4.2.0) lib/active_record/associations/association.rb:168:in `initialize_attributes'
activerecord (4.2.0) lib/active_record/associations/association.rb:248:in `block in build_record'
activerecord (4.2.0) lib/active_record/core.rb:282:in `initialize'
invoicing (1.0.1) lib/invoicing/ledger_item.rb:417:in `initialize'
activerecord (4.2.0) lib/active_record/inheritance.rb:61:in `new'
activerecord (4.2.0) lib/active_record/inheritance.rb:61:in `new'
activerecord (4.2.0) lib/active_record/reflection.rb:131:in `build_association'
activerecord (4.2.0) lib/active_record/associations/association.rb:247:in `build_record'
activerecord (4.2.0) lib/active_record/associations/collection_association.rb:136:in `build'
activerecord (4.2.0) lib/active_record/associations/collection_proxy.rb:254:in `build'
app/controllers/crud_controller.rb:82:in `build_member'
app/controllers/crud_controller.rb:16:in `index'
actionpack (4.2.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.2.0) lib/abstract_controller/base.rb:198:in `process_action'
actionpack (4.2.0) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.2.0) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
activesupport (4.2.0) lib/active_support/callbacks.rb:117:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:117:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `block in halting_and_conditional'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `block in halting_and_conditional'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:308:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:308:in `block (2 levels) in halting'
app/controllers/application_controller.rb:84:in `set_current_user'
activesupport (4.2.0) lib/active_support/callbacks.rb:427:in `block in make_lambda'
activesupport (4.2.0) lib/active_support/callbacks.rb:307:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:307:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:308:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:308:in `block (2 levels) in halting'
activesupport (4.2.0) lib/active_support/core_ext/time/zones.rb:48:in `use_zone'
app/controllers/application_controller.rb:64:in `set_time_zone'
activesupport (4.2.0) lib/active_support/callbacks.rb:427:in `block in make_lambda'
activesupport (4.2.0) lib/active_support/callbacks.rb:307:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:307:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:92:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:92:in `_run_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_process_action_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (4.2.0) lib/abstract_controller/callbacks.rb:19:in `process_action'
actionpack (4.2.0) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
activesupport (4.2.0) lib/active_support/notifications.rb:164:in `block in instrument'
activesupport (4.2.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.2.0) lib/active_support/notifications.rb:164:in `instrument'
actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (4.2.0) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
activerecord (4.2.0) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (4.2.0) lib/abstract_controller/base.rb:137:in `process'
actionview (4.2.0) lib/action_view/rendering.rb:30:in `process'
actionpack (4.2.0) lib/action_controller/metal.rb:195:in `dispatch'
actionpack (4.2.0) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.2.0) lib/action_controller/metal.rb:236:in `block in action'
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:73:in `call'
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:42:in `serve'
actionpack (4.2.0) lib/action_dispatch/journey/router.rb:43:in `block in serve'
actionpack (4.2.0) lib/action_dispatch/journey/router.rb:30:in `each'
actionpack (4.2.0) lib/action_dispatch/journey/router.rb:30:in `serve'
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:802:in `call'
bullet (4.14.4) lib/bullet/rack.rb:12:in `call'
http_accept_language (2.0.2) lib/http_accept_language/middleware.rb:13:in `call'
warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
warden (1.2.3) lib/warden/manager.rb:34:in `catch'
warden (1.2.3) lib/warden/manager.rb:34:in `call'
rack (1.6.0) lib/rack/etag.rb:24:in `call'
rack (1.6.0) lib/rack/conditionalget.rb:25:in `call'
rack (1.6.0) lib/rack/head.rb:13:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/flash.rb:260:in `call'
rack (1.6.0) lib/rack/session/abstract/id.rb:225:in `context'
rack (1.6.0) lib/rack/session/abstract/id.rb:220:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/cookies.rb:560:in `call'
activerecord (4.2.0) lib/active_record/query_cache.rb:36:in `call'
activerecord (4.2.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:647:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.2.0) lib/active_support/callbacks.rb:88:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:88:in `_run_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_call_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/reloader.rb:73:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
web-console (2.0.0) lib/action_dispatch/debug_exceptions.rb:18:in `middleware_call'
web-console (2.0.0) lib/action_dispatch/debug_exceptions.rb:13:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.2.0) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.2.0) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `block in tagged'
activesupport (4.2.0) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `tagged'
railties (4.2.0) lib/rails/rack/logger.rb:20:in `call'
quiet_assets (1.1.0) lib/quiet_assets.rb:27:in `call_with_quiet_assets'
actionpack (4.2.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.6.0) lib/rack/methodoverride.rb:22:in `call'
rack (1.6.0) lib/rack/runtime.rb:18:in `call'
activesupport (4.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
rack (1.6.0) lib/rack/lock.rb:17:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/static.rb:113:in `call'
rack (1.6.0) lib/rack/sendfile.rb:113:in `call'
railties (4.2.0) lib/rails/engine.rb:518:in `call'
railties (4.2.0) lib/rails/application.rb:164:in `call'
rack (1.6.0) lib/rack/lock.rb:17:in `call'
rack (1.6.0) lib/rack/content_length.rb:15:in `call'
rack (1.6.0) lib/rack/handler/webrick.rb:89:in `service'
/home/christiaan/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'
/home/christiaan/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run'
/home/christiaan/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'

Could you point me in the right direction?

@CUnknown thanks for this bug report. I will get back to you on this.

looks like this issue is not entirely related to this gem. @CUnknown can you post code showing how you inherited from Invoice model, and the code in CrudController#build_member ?

Thanks for your reply! The invoice classes are looking like this:
class Invoice < InvoicingLedgerItem
  acts_as_invoice
end

class ClientInvoice < Invoice
  belongs_to :organisation
  belongs_to :recipient, class_name: 'Client'
  belongs_to :author, class_name: 'User'
end

CrudController#build_member is looking like:
collection.build(member_params)

where member_params are the fetched permitted parameters and the collection is organisation.client_invoices
My Organisation model (and my Client model) has a has_many relation:
has_many :client_invoices, dependent: :destroy

I Found something interesting here.
When I open the rails console and perform ClientInvoices.all, I get the empty set [], which is correct.
When I perform Organisation.find(1).client_invoices I get the following:
[6] pry(main)> Organisation.find(1).client_invoices
  Organisation Load (1.1ms)  SELECT  "organisations".* FROM "organisations" WHERE "organisations"."id" = $1 LIMIT 1  [["id", 1]]
PG::UndefinedColumn: ERROR:  column invoicing_ledger_items.organisation_id does not exist
LINE 1: ...ing_ledger_items"."type" IN ('ClientInvoice') AND "invoicing...
                                                             ^
: SELECT "invoicing_ledger_items".* FROM "invoicing_ledger_items" WHERE "invoicing_ledger_items"."type" IN ('ClientInvoice') AND "invoicing_ledger_items"."organisation_id" = $1
=> #<ClientInvoice::ActiveRecord_Associations_CollectionProxy:0x48dc5bc>

Which is weird, because it looks for the column organisation_id in the invoicing_ledger_items table, and not in the client_invoices table (which has those references).
Kind Regards,
Christiaan

oh okie. so you dont have proper foreign key associations, try this:
class Organisation < AR::Base
  has_many :client_invoices, dependent: :destroy, foreign_key: :sender_id
end

@CUnknown can you check with this code?

It looks like I got it working. I was creating a model which handled the relations with the sender and the receiver myself, but your gem already stores these references.
I also had a question about the functionality. I want to create a invoice controller where the user can add invoice items on the fly (with a nested forms construction). Do you think that this is possible?
Another feature that I would like to have is the ability to save concept invoices. In your instructions, you mention that the invoices are immuatable, which is the desired behaviour when the created invoice has an invoice number attached to it. (Our tax authorities require the invoice numbering to be complete, so no invoice number may be missing from the administration). But if we want to be able to create concept invoices, these should not get an invoice number and those should not be immutable yet. Is it possible to create such a system with your gem?

ability to create invoices on the fly is possible. please open a new issue and explain what is required.
'invoices are immutable' is not entirely true. its afterall bunch of entries in database, and you can always change them, you have to write more code.


[rename on type] API for languages beyond HTML

Continuing #88424, which implements the Synced Region feature for HTML.
We could offer an API and I can try doing it for JSX (#85707).
I tried running this feature in real programming languages such as TypeScript, but automatic mode creates a lot of confusion. For example:
const a = { b: 1, c: 2 }
a.b|

In automatic mode, when I'm deleting b and entering c to change from a.b to a.c, b: 1 would also be changed. This is undesirable.
Nevertheless, having Cmd+Shift+F2 to live-rename in a for-loop etc would be very helpful.
This issue tracks the API proposal below:
/**
 * The rename provider interface defines the contract between extensions and
 * the live-rename feature.
 */
export interface OnTypeRenameProvider {
	/**
	 * Provide a list of ranges that can be live renamed together.
	 *
	 * @param document The document in which the command was invoked.
	 * @param position The position at which the command was invoked.
	 * @param token A cancellation token.
	 * @return A list of ranges that can be live-renamed togehter. The ranges must have
	 * identical length and contain identical text content. The ranges cannot overlap.
	 */
	provideOnTypeRenameRanges(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Range[]>;
}

namespace languages {
	/**
	 * Register a rename provider that works on type.
	 *
	 * Multiple providers can be registered for a language. In that case providers are sorted
	 * by their [score](#languages.match) and the best-matching provider is used. Failure
	 * of the selected provider will cause a failure of the whole operation.
	 *
	 * @param selector A selector that defines the documents this provider is applicable to.
	 * @param provider An on type rename provider.
	 * @param stopPattern Stop on type renaming when input text matches the regular expression. Defaults to `^\s`.
	 * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
	 */
	export function registerOnTypeRenameProvider(selector: DocumentSelector, provider: OnTypeRenameProvider, stopPattern?: RegExp): Disposable;
}

@octref Would you be able to implement this for jsx please? @mattbierner this really is a huge quality of life improvement for relatively marginal effort. It deserves to be in the Iteration for this/next month imho

I would have been very interested in this API for the XML/XSLT editor extension I’m developing. However, I’m concerned about  synced regions being ‘opt in’ and also requiring other user intervention (when the command is invoked), so for the time being at least, the extension will provide its own synced XML tag renaming. People writing XML/XSLT in other editors are used to synced tag renaming just working by default and with no intervention on their part.

Question: For stopPattern, would \S or [^\s] be a better default? Can stopPattern represent more than a single character?

This looks to have been finalized in #109923

Yes, correct. Closing as dup of #109923

This looks to have been finalized in #109923

Can you please explain how to add more supported languages to this setting?
I tried to look at the changelog you posted and at the documentation but there is no example.
The setting recently changed from "editor.renameOnType" to "editor.linkedEditing" and I looked for both with no success.
I tried several parameters with "languages.registerLinkedEditingRangeProvider" from this comment but none worked and I can't seem to find the correct syntax (I have version 1.52.1 as suggested but in the settings.json I see "Unknown Configuration Setting")

This looks to have been finalized in #109923

Can you please explain how to add more supported languages to this setting?
I tried to look at the changelog you posted and at the documentation but there is no example.
The setting recently changed from "editor.renameOnType" to "editor.linkedEditing" and I looked for both with no success.
I tried several parameters with "languages.registerLinkedEditingRangeProvider" from this comment but none worked and I can't seem to find the correct syntax (I have version 1.52.1 as suggested but in the settings.json I see "Unknown Configuration Setting")

Yes, you have to write an extension that registers a new LinkedEditingRangeProvider for a given language selector. That's done with the API registerLinkedEditingRangeProvider.
If the user settings editor.linkedEditing is enabled, the editor will ask your LinkedEditingRangeProvide for linked ranges. Changes to one linked range will be automatically applied to all linked ranges.

Yes, you have to write an extension that registers a new LinkedEditingRangeProvider for a given language selector. That's done with the API registerLinkedEditingRangeProvider.
If the user settings editor.linkedEditing is enabled, the editor will ask your LinkedEditingRangeProvide for linked ranges. Changes to one linked range will be automatically applied to all linked ranges.


Extremely slow training compared to EfficientNet

This repo is working well for me, thanks!
However the training time is very high.
Training on my dataset for one epoch takes 20min for EfficientNet and around 1.30h for EfficientNet Lite.
Is this normal or am I doing something wrong?
from efficientnet_lite import EfficientNetLiteB0

eff_net_lite = EfficientNetLiteB0(
    include_top=True,
    weights=None,
    input_shape=(64, 64, 1),
    classes=len(ls),
    pooling="max",
    classifier_activation="softmax"
)

hist = eff_net_lite.fit(
    train,
    validation_data=val,
    epochs=25,
    initial_epoch=0,
    workers=16,
    use_multiprocessing=True,
    callbacks=callbacks_list
)

I am seeing similar behavior.
Training time for EfficientNet-Lite B3 was ~77 hours. I had to lower the batch size to 16 to get feasible training time.
It would be nice to know if there is a fix for allowing larger batch sizes without increasing per-epoch time.
Thanks.

I just figured out that windows update messed up my cuda installation.
Training was slow because I was running without GPU acceleration...
@suraj-maniyar did you try EfficientNet-3 and had faster training times?
And for how many epochs did you train?

These training times are extreme. Definitely should not be like this. I will look into this in the nearest occasion.

@CaptainDario
Hi, how did you pass the one-channel input shape to both models? You wrote:
eff_net_lite = EfficientNetLiteB0(
    include_top=True,
    weights=None,
    input_shape=(64, 64, 1),
    classes=len(ls),
    pooling="max",
    classifier_activation="softmax"
)

However, I'm getting
ValueError: The input must have 3 channels; got `input_shape=(64, 64, 1)`

for both lite, and non-lite versions.

@sebastian-sz I load 64x64 grayscale images from disk.
Here is the whole model definition.
from tensorflow.keras.layers.experimental.preprocessing import Resizing, Rescaling, RandomZoom, RandomRotation, RandomTranslation

# preprocessing layer
img_augmentation = tf.keras.Sequential(
    [
        # resize images and rescale values
        Resizing(64, 64, "lanczos3"),
        Rescaling(scale=1.0/255),

        # random data augmentation
        RandomZoom(height_factor=(0.0, 1.0), width_factor=(0.0, 1.0),
            fill_mode='constant', interpolation='bilinear', fill_value=0.0
        ),
        RandomTranslation(0.2, 0.2, fill_mode="constant"),
        RandomRotation(0.1, fill_mode='constant', interpolation='bilinear'),

    ],
    name = "img_augmentation"
)

# efficientnet lite
from efficientnet_lite import EfficientNetLiteB0

eff_net_lite = EfficientNetLiteB0(
    include_top=True,
    weights=None,
    input_shape=(64, 64, 1),
    classes=len(ls),
    pooling="max",
    classifier_activation="softmax"
)

# join models
inputs = tf.keras.layers.Input(shape=(64, 64, 1))
x = img_augmentation(inputs)
outputs = eff_net_lite(x)

f16_model = tf.keras.Model(inputs, outputs, name="EfficientNet")

#path where the model should be saved
model_dir = os.path.join(os.getcwd(), "model")
print("model_dir:", model_dir)

#optimizer and loss
l_r = 0.001
opt = tf.keras.optimizers.Adam(learning_rate=l_r)

METRICS = [
    'accuracy',
    tf.keras.metrics.Precision(name='precision'),
    tf.keras.metrics.Recall(name='recall'),
]

f16_model.compile(optimizer=opt, loss="categorical_crossentropy", metrics=METRICS)

# leraning rate scheduler
def scheduler(epoch, lr):
    return l_r - ((l_r / 100 * 4) * (epoch // 3))

scheduler_callback = tf.keras.callbacks.LearningRateScheduler(scheduler, verbose=1)
callbacks_list = [scheduler_callback]

from tensorflow.keras.callbacks import ModelCheckpoint

#checkpoint setup
filepath = os.path.join(model_dir, "tf", "checkpoints", "weights-improvement-{epoch:02d}-{val_accuracy:.2f}.hdf5")
checkpoint = ModelCheckpoint(filepath, monitor='val_accuracy', verbose=1, save_best_only=True, mode='max')

callbacks_list.append(checkpoint)

print("checkpoints dir:", filepath)

# train the model
#train the model
hist = f16_model.fit(
    train,
    validation_data=val,
    epochs=25,
    initial_epoch=0,
    workers=16,
    use_multiprocessing=True,
    callbacks=callbacks_list
)

I have a jupyter notebook setup you can take a look here. However it may not work completely (I am currently retraining the network).

After reinstalling CUDA my training times are already much better. However still around 2x slower than EfficientNet.
But I am using mixed_precision for EfficientNet Lite (awesome that this is possible without the SE and swish!). However this should if at all lead to faster training.

@CaptainDario
I'm having hard time reproducing the issue. I managed to pass your input shape (it works with weights=None instead of weights="imagenet").
For a simple flower dataset I'm getting the following results (Tesla T4):

EfficientNetB0 FP32:

Epoch 1/4
92/92 [==============================] - 53s 111ms/step
Epoch 2/4
92/92 [==============================] - 8s 89ms/step
Epoch 3/4
92/92 [==============================] - 9s 90ms/step
Epoch 4/4
92/92 [==============================] - 8s 85ms/step

EfficientNetLiteB0 FP32:

Epoch 1/4
92/92 [==============================] - 13s 68ms/step
Epoch 2/4
92/92 [==============================] - 6s 61ms/step
Epoch 3/4
92/92 [==============================] - 6s 60ms/step
Epoch 4/4
92/92 [==============================] - 6s 60ms/step

EfficientNetLiteB0 FP16 (not much change here):

Epoch 1/4
92/92 [==============================] - 15s 68ms/step
Epoch 2/4
92/92 [==============================] - 6s 60ms/step
Epoch 3/4
92/92 [==============================] - 6s 60ms/step
Epoch 4/4
92/92 [==============================] - 6s 61ms/step

EfficientNetB0 FP16:
Doesn't work with mixed precision in TF 2.5.

You can find my benchmark notebook at this link.
The training times seem to be similar in the above notebook (and as expected, slightly lower for Lite variant). I don't know why you observe such performance drop. I'm still analysing your code for potential reasons why the lite models are so slow.
Are the training times comparable? Are you using the same data, the same callbacks, the same augmentations for both models?
If you have more information, please let me know!

Thank you for taking a look!
I am not sure what the problem could be. However chances are high that the problem is related to my setup. I will start training EfficientNet again an look at the training times.
I will than update here.

@suraj-maniyar Hi, could you also provide some examples of scenarios with bad performance?

@sebastian-sz thank you very much for your effort.
However this seems to be related to some issues regarding my setup.
I just retrained with EfficientNet and the time also went drastically up...
Sorry for taking you so much time. From my point of view this can now be closed.

And thank you again for this wonderful repo!

@CaptainDario Thank you for the kind words!
Can you try to train your model (with your notebook) maybe on a smaller subset of data in Google Colab, so we can check if the performance is also bad there?

Can you try to train your model (with your notebook) maybe on a smaller subset of data in Google Colab, so we can check if the performance is also bad there?

I can try to do that but my dataset is quite large (the produced cache files are ~120GB) and therefore I am not sure if it works on colab.

@CaptainDario yes, 120 GB is too much for Colab. Can you try with a smaller subset? Maybe only take 100 images per class instead of all images?

I'm closing this issue as it could not be reproduced in an isolated environment. It could be due to CUDA installation.
If you have other questions or are willing to further debug this with me, feel free to reopen!

@sebastian-sz finally had the time to setup a notebook and run the training.
Sadly it was somehow connected to my setup and after a fresh setup it is training fast again.
Thank you for your time and sorry for the issue unrelated to your repo.


Cannot find module './dialects/postgresql/index.js'

Hi,
Just re-starting a project that was put aside for about 6 month. All the dependencies, and Knex have been updated to the latest version. The app is running fine, and Knex is working.
However, when I try to run...
./node_modules/.bin/knex migrate:latest
I receive the following error:
Error: Cannot find module './dialects/postgresql/index.js'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:278:25)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Knex (/Users/tony/Projects/StoryServer/Solutions/server/api/node_modules/knex/lib/index.js:21:26)
    at initKnex (/Users/tony/Projects/StoryServer/Solutions/server/api/node_modules/knex/lib/bin/cli.js:70:10)
    at Command.<anonymous> (/Users/tony/Projects/StoryServer/Solutions/server/api/node_modules/knex/lib/bin/cli.js:125:17)
    at Command.listener (/Users/tony/Projects/StoryServer/Solutions/server/api/node_modules/knex/node_modules/commander/index.js:301:8)
    at Command.emit (events.js:110:17)
    at Command.parseArgs (/Users/tony/Projects/StoryServer/Solutions/server/api/node_modules/knex/node_modules/commander/index.js:610:12)
    at Command.parse (/Users/tony/Projects/StoryServer/Solutions/server/api/node_modules/knex/node_modules/commander/index.js:458:21)
    at Liftoff.invoke (/Users/tony/Projects/StoryServer/Solutions/server/api/node_modules/knex/lib/bin/cli.js:177:13)
    at Liftoff.<anonymous> (/Users/tony/Projects/StoryServer/Solutions/server/api/node_modules/knex/node_modules/liftoff/index.js:181:16)
    at module.exports (/Users/tony/Projects/StoryServer/Solutions/server/api/node_modules/knex/node_modules/liftoff/node_modules/flagged-respawn/index.js:17:3)
    at Liftoff.<anonymous> (/Users/tony/Projects/StoryServer/Solutions/server/api/node_modules/knex/node_modules/liftoff/index.js:174:9)
    at /Users/tony/Projects/StoryServer/Solutions/server/api/node_modules/knex/node_modules/liftoff/index.js:148:9
    at /Users/tony/Projects/StoryServer/Solutions/server/api/node_modules/knex/node_modules/v8flags/index.js:79:12
    at /Users/tony/Projects/StoryServer/Solutions/server/api/node_modules/knex/node_modules/v8flags/index.js:35:7
    at process._tickCallback (node.js:355:11)
    at Function.Module.runMain (module.js:503:11)
    at startup (node.js:129:16)
    at node.js:814:3

Is this the way I should be running the binary for Knex migrations? I have a knexfile.js in the root of the project, which I believe is correctly configured for PG.
Thoughts or suggestions greatly appreciated.

Found it - the dialect configuration options in knexfile.js have changed from 'postgresql' to just 'pg'.

Oh that's a bug though. I'll look to get that fixed

Okay thanks Tim.

It changed again to postgres.
BTW @tgriesser   In the docs, there's still pg instead of postgres. Would be nice to update those.

@capaj actually all pg, postgres and postgresql should work nowadays https://github.com/tgriesser/knex/blob/master/src/index.js#L11

No only postgres works for me. No other finds the dialect.

@capaj works here: https://runkit.com/embed/ta4vad1nhhsv
if you are getting that error from knex-db-manager I fixed that bug some time ago, I thought I released it also maybe week ago (though there the error should be different...).

@elhigu trying it out in a clean folder it works with all three of them. Thanks for your response! I probably had the older knex-db-manager installed.


docute@3 self.$config doesnt work anymore

I used to be able to set the config in a seperate file with self.$config. Somehow this doesnt work anymore since i switched to docute@3

Sorry, found the notice! :+1:


[test] use cmake to build ot-rcp

This commit switch to cmake when building ot-rcp during tests.

Depends on https://github.com/openthread/openthread/pull/7344


Package Request: InfinityGhost/OpenTabletDriver

Project description
OpenTabletDriver is an open source, cross platform, user mode tablet driver. The goal of OpenTabletDriver is to be cross platform as possible with the highest compatibility in an easily configurable graphical user interface.
It supports multiple tablets that are badly supported in Linux. Even for tablets already supported by other means (i.e.: libinput or xf86-input-wacom), OpenTabletDriver offers a graphical interface, plugins and more customization.
List of supported tablets: https://github.com/InfinityGhost/OpenTabletDriver/projects/4
Metadata

homepage URL: https://github.com/InfinityGhost/OpenTabletDriver
source URL: https://github.com/InfinityGhost/OpenTabletDriver
license: LGPLv3
platforms: Linux, Darwin

I tried to create a package but I can't wrap my head on how to build a .NET 5 application. Trying to follow https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/osu-lazer/default.nix just made me more and more confused.
If it helps, here it is the PKGBUILD from Arch Linux: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=opentabletdriver-git

I have a older OTD package in my nix overlay https://github.com/cidkidnix/nix-overlay, I just currently don't have the time to mess with it, I have a WIP .NET 5 package on my local machine that I could upload to a gist if needed

I have a WIP .NET 5 package on my local machine that I could upload to a gist if needed

@cidkidnix This would be great, since I am stuck on trying to compile thanks to some .NET 5 issue.

@cidkidnix I tested your recipe in overlay and seems to work well. Still need to figure how to fix some of the following issues, though:

Generate the opentabletdriver-deps.nix file automatically, so we can update this package without updating every dependency by hand
Wrap the launcher script so the daemon is launched automatically (as it happens in the Debian package I think?). Or as an alternative, just start this as a systemd service (as the AUR package does)
Generate the udev rules and copy it to the appropriate place. Alternatively we can just extract the udev file from the .deb package, but this involves some manual operation

Except for the first issue, for the other ones I think maybe it would be better to have a program.opentabletdriver so we could automatically enable the systemd service, set the udev rules and add the GUI to the environment.systemPrograms. This seems the cleanest way to fix those issues.

https://github.com/NixOS/nixpkgs/pull/107638 have an initial build of OpenTabletDriver 0.4.2. It almost works, but needs some manual setup:

Start the OpenTabletDriver.Daemon manually before opening OpenTabletDriver.UX.Gtk. Alternatively, you can start the daemon as an systemd user service
For now, you need to add service.udev.packages = [ opentabletdriver.udev ]; manually to your /etc/nixos/configuration.nix. This can be fixed if we add a hardware.opentabletdriver module, that once enabled do this automatically (and it may also create a systemd user service, fixing the first issue too)

Now, while it builds and kinda works, I can't seem to make it detect my tablet (Huion HS64). I thought something was wrong with the udev rules but looking at the udev logs it seems that the rules are being applied correctly. The connection between the GUI and daemon itself seems fine, since it does redirect the logs to the daemon. So now I am stuck.
@cidkidnix Do you have some idea on how to solve the issue above?

Got the package to work with the help of OpenTabletDriver's Discord. It was missing the libudev.


Prevent Jeet from breaking on next build

See: https://github.com/mojotech/jeet/issues/504
cc @danielfdsilva

@olafveerman @danielfdsilva looks like eslint-plugin-promise needs updated? Fun with packaging!

Just want to note that my intentions with the original PR were good.


hotfix docker/push makefile target

please charry pick the existing fix so we do not get conflicts when merging both PRs..
git cherry-pick 0f3f10f
and open a PR..

makes sense. Let's close this PR since the issue is fixed in 22


Events dashboard

Add a dashboard to provide event stats such as how many are attending, money raised (so far), house rankings (for house events), etc,
From #3 - checklist 4 expanded to here.
Possibly develop with the house tracker dashboard, see #5 / #6

I suggest moving this to Blyth

I suggest moving this to Blyth

Tes

Tes

*Yes. Technically it isn't on a milestone yet.

*Yes. Technically it isn't on a milestone yet.

Though I think it might be better Char/MS4, since it's quite big.
If we could build it along with the house events dashboard, that'll be great, so I'll stick it on Blyth for now,

Though I think it might be better Char/MS4, since it's quite big.
If we could build it along with the house events dashboard, that'll be great, so I'll stick it on Blyth for now,

can we treat the dashboard as a separate project with its own milestones?

can we treat the dashboard as a separate project with its own milestones?

Sure

Sure


Verify valid GPG key before release

Releases to Maven Central will fail when the GPG is expired:
[INFO] Signing 4 files with default secret key.
gpg: no default secret key: No secret key
gpg: signing failed: No secret key

To improve usability and avoid searches for the root cause, PK should generate the Maven Central deployment workflow so that it

Lists all gpg keys with gpg --list-secret-keys
and verifies that the key is valid and not expired

Example for a listing with an expired key:
/home/runner/.gnupg/pubring.kbx
-------------------------------
sec   ed25519 2023-02-01 [SC] [expired: 2024-02-01]
      E461775F5B3682EFA574E680CC67DC66670126F7
uid           [ expired] Exasol<EMAIL_ADDRESS>

The release build already prints key details incl. expiration date. So the user can easily check the validity in the log in case the build fails.


changed the name of the database

These routes from controller will be useful for backend and frontend to understand what needs to be done on one side and another

These routes from controller will be useful for backend and frontend to understand what needs to be done on one side and another


Catch all Exceptions and display Message on CLI

Prior the Installer failed silently if something went wrong in the download method. Only the \Composer\Downloader\TransportException was catched.
This PR catches all other exceptions and will display the Exception Message as an <error> in the console.
Also see #32.

Thank you for contributing :+1: