What happens when an imperative block lacks a return? Return last expr?

(Let me know if me answering these ever gets unhelpful)
The design was that it should return null.
Whilst this is a little bit annoying and slightly harms exploration, it does mean that it's less fragile to changes in the ordering of the code and makes it slightly more predictable.
It's tangled to a broader issue that I now consider a mistake that DesignScript has statements at all rather than everything being an expression.  I think valid arguments could be made for '2', 'false' and "Meow".
"Last assigned variable" might be a workable alternative, and then you only have to decide what happens with scoping etc.
This all got far too messy, so we went with null.

That sounds very reasonable. Thanks @lukechurch!


Respect property null value handling

Take into account NullValueHandling on each property:
    public class Article
    {
        public string Type { get; set; } = "articles";

        public string Id { get; set; }

        [JsonProperty(NullValueHandling = NullValueHandling.Include)]
        public string Title { get; set; }
    }

Good change. I wasnt even aware you could the null handling was configurable at a property level.
Ill write some unit tests to go along with it and release a new version

I have also simplified the if conditions down to
if (propValue == null && (prop.NullValueHandling ?? serializer.NullValueHandling) == NullValueHandling.Ignore)
                    continue;

@alarkvell I have released this as 1.0.0
Change wouldn't normally be a major version bump, but wanted to get the library out of the 0.x.x versions as it is being used elsewhere in production systems

Thank you for the improvements!
And bumping to 1.0.0 is also nice :+1:


anypoint_apim_policy_custom resource : Order of policies can't be defined

I am using anypoint_apim_policy_custom resource to create and apply standard as well as custom policies to Flex Gateway API. However , I have noticed order of policies is random when applied to API.
Event though, 'order' attribute is supposed to be Read Only as per documentation, I have tried to add 'order' attribute while creating policy resources, but I am getting following error -
Error: Value for unconfigurable attribute
│
│   with anypoint_apim_policy_custom.service-callout,
│   on main.tf line 165, in resource "anypoint_apim_policy_custom" "service-callout":
│  165:   order = 4
│
│ Can't configure a value for "order": its value will be decided automatically based on the result of applying this configuration.
I need help how the order of policies can be specified while creating them in TF template.

@soufi  - please take a look at this when you get some free time. Thanks

Hi @soufi - Thanks so much for any help you can provide on this!

Hi,
As of today, the order cannot be specified because Mulesoft's API doesn't allow it.
But normally you policies are created one by one following the order of initialization.
Terraform uses parallelism by default and execute 10 operations at the same time.
If you want an absolute order, you can use the parallelism flag to make sure policies are created one after the other.

Thanks for the information @soufi.

@rubycube this issue can be closed.


Elasticsearch 7 search backend: search() and autocomplete() produce identical queries

Issue Summary
I noticed that searches performed with queryset.autocomplete(...) got results based on matches in fields that were not defined as a index.AutocompleteField. After looking at the backend implementation it turns out that both the Elasticsearch7AutocompleteQueryCompiler and Elasticsearch7SearchQueryCompiler produce identical queries.
Steps to Reproduce

Start a new project with wagtail start myproject
install elasticsearch7 dependency
verify in that both query compilers output the same query in python manage.py shell via the following commands

>>> from wagtail.models import Page
... from wagtail.search.query import PlainText
... from wagtail.search.backends.elasticsearch7 import Elasticsearch7AutocompleteQueryCompiler, Elasticsearch7SearchQueryCompiler
...
... queryset = Page.objects.all()
... query = PlainText('test')
... compiler_autocomplete = Elasticsearch7AutocompleteQueryCompiler(queryset, query)
... compiler_search = Elasticsearch7SearchQueryCompiler(queryset, query)
...
>>> compiler_autocomplete.get_query()
{'bool': {'must': {'multi_match': {'query': 'test',
    'operator': 'and',
    'fields': ['_all_text', '_edgengrams']}},
  'filter': {'match': {'content_type': 'wagtailcore.Page'}}}}
>>> compiler_search.get_query()
{'bool': {'must': {'multi_match': {'query': 'test',
    'operator': 'and',
    'fields': ['_all_text', '_edgengrams']}},
  'filter': {'match': {'content_type': 'wagtailcore.Page'}}}}
>>> compiler_autocomplete.get_query() == compiler_search.get_query()
True

I expected the queries for both to be different, like this:
>>> from wagtail.models import Page
... from wagtail.search.query import PlainText
... from wagtail.search.backends.elasticsearch7 import Elasticsearch7AutocompleteQueryCompiler, Elasticsearch7SearchQueryCompiler
...
... queryset = Page.objects.all()
... query = PlainText('test')
... compiler_autocomplete = Elasticsearch7AutocompleteQueryCompiler(queryset, query)
... compiler_search = Elasticsearch7SearchQueryCompiler(queryset, query)
...
>>> compiler_autocomplete.get_query()
{'bool': {'must': {'match': {'_edgengrams': {'query': 'test',
     'operator': 'and'}}},
  'filter': {'match': {'content_type': 'wagtailcore.Page'}}}}
>>> compiler_search.get_query()
{'bool': {'must': {'multi_match': {'query': 'test',
    'operator': 'and',
    'fields': ['_all_text', '_edgengrams']}},
  'filter': {'match': {'content_type': 'wagtailcore.Page'}}}}
>>> compiler_autocomplete.get_query() == compiler_search.get_query()
False

Note: the "expected" output was produced by reversing the order of the inherited classes of Elasticsearch7AutocompleteQueryCompiler. Not sure it that will reliably address the issue though.

I have confirmed that this issue can be reproduced as described on a fresh Wagtail project: yes

Technical details

Python version: 3.10.6
Django version: 4.1.3
Wagtail version: 4.1.1

Not 100% sure on this, but I think it might be expected behaviour that the search and autocomplete compilers give the same results in their default configurations right now - as per https://docs.wagtail.org/en/latest/topics/search/searching.html#searching-pages:

Before the autocomplete() method was introduced, the search method also did partial matching. This behaviour is deprecated and you should either switch to the new autocomplete() method or pass partial_match=False into the search method to opt-in to the new behaviour. The partial matching in search() will be completely removed in a future release.

As things currently stand, no steps have been taken to drop the "deprecated" behaviour, and so Elasticsearch7SearchQueryCompiler still defaults to partial_match=True, which I think is expected to be functionally equivalent to Elasticsearch7AutocompleteQueryCompiler (although the docs on indexing are a bit ambiguous about where index.SearchField(partial_match=True) versus index.AutocompleteField() comes into play).
(To add further confusion, the current database search backends implement the proposed future API, which was probably a mistake - https://github.com/wagtail/wagtail/issues/7720#issuecomment-1352461491)
Having said that, the inheritance setup definitely does look suspect - as far as I can see there's no path where ElasticsearchAutocompleteQueryCompilerImpl.get_inner_query ever gets called, because it's given lower precedence than the corresponding function on the SearchQueryCompiler.

Should be fixed by #10355.

Fixed in #10355


403 on Get-Members

Great work! Thank you for the fixes and contributions you made to the original script.
Any idea why, after exporting lots of other chats without a problem, the script fails with a 403: Forbidden in Get-Members.ps1 line 13 of this specific chat? I would expected a 429 if it were throttling. Sorry I don't get much other info.
Namely "Invoke-RestMethod -Method Get -Uri $membersUri -Headers @{"
Exporting C:\Users\xxx\teams\out\XXX XXX, XXX XXX, XXX XXX (FA5E5D93).html...
Invoke-RestMethod : Der Remoteserver hat einen Fehler zurückgegeben: (403) Unzulässig.
In C:\Users\xxx\AppData\Local\Temp\export-ms-teams-chats\export-ms-teams-chats-main\functions\chat\Get-Members.ps
m1:13 Zeichen:13

        Invoke-RestMethod -Method Get -Uri $membersUri -Headers @ ...

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

Hey! Sorry to hear about the issues.
Would you be able to run the scipt in verbose mode? Instructions can be found here. That would help a lot for debugging.

Hi, thank you for the insight and quick reply.

Offtopic on -
I have meanwhile dug deeper into the issue. First tried verbose mode and also tried to switch this to use application permissions instead of delegation so that I could export all the accounts myself automatically, without user intervention.

I succeeded and excited but the problem with application permissions is that if the user has been added to a chat as a guest, the initiator is on another tenant and the contents are not reachable by API. Lots in our case so disappointment (but still thinking of a PR in the future - lots of admins without lots of contacts from other tenants can like that better than the device - delegation mode). I would very much like to hear your feedback on this.

Offtopic off -

It was a little bit offtopic but not completely irrelevant to the case as doing the conversion I have noticed that there were some strange records that are not allowed by the Graph API, even in device - delegation mode. The chats seemed pretty irrelevant to me (probably some guest chats with a tenant with strict rules, or maybe a tenant that does not exist anymore etc.) so I just modified the code to skip those chats.

Fascinating, thanks for your investigation. Regarding application vs delegation, I don't understand enough about Microsoft Graph and/or permissions (and unfortunately don't have time to dig into that) to make any useful remarks currently. It seems interesting though. About the chats you skipped, perhaps the code could be changed to continue exporting other chats if one fails. Glad it seems to have worked out to some extent for you though.

I succeeded and excited (...) so I just modified the code to skip those chats.

Hi @dogacsenol,
would you mind sharing your modifications? I'm having the same problems as you had and can't export the entire chats.
Regards from Germany! :)


feat(webpack): make it possible to add enviroment variables

fix #88 and #58
Code and specification referenced Nuxt.js (doc).
Description

Add env config to gridsome.config.js

Make it possible to access these configs in Vue

Attach environment variables start with GRIDSOME_ENV to process.env

Add process.env.NODE_ENV and process.isProduction to base env config.

If need document, I will try to create it after review.

above commit resolved conflicts

I can't make it work. I add .env file in the root of a project with content GRIDSOME_API_URL=http://localhost. Then when I use it in component like process.env.GRIDSOME_API_URL it returns undefined. I also tried to add environment variables in env config in gridsome.config.js and add environment based env files like .env.development. Nothing works. It only works when I use following in gridsome.config.js:
if (process.env.NODE_ENV === 'production') {
    require('dotenv').config({ path: '.env.production' })
} else {
    require('dotenv').config({ path: '.env' })
}

module.exports = {
    chainWebpack: config => {
        config
            .plugin('env')
            .use(require.resolve('webpack/lib/EnvironmentPlugin'), ['GRIDSOME_API_URL'])
    },
}

What am I doing wrong?

@arttemiuss43
This PR was merged, but didn't released yet.
Are you using master branch of this repository directly?
If you aren't using, this PR probably will include on v0.5.
And that feature don't need config.
You put .env or .env.{mode} file only then it's should work.

Thank you for clarification. No, I don't. I just add gridsome as usual package using yarn.

@arttemiuss43
Also, I tried your code, it's worked.
steps to reproduce:

exec gridsome create xxx
add .env file to root dir

GRIDSOME_API_URL=example

yarn add dotenv
add code writing above to gridsome.config.js
add console.log(process.env.GRIDSOME_API_URL) to mounted() function

@arttemiuss43 did you maybe place by mistake the .env file in the srcfolder? This happened to me and always got undefined.
Make sure you're placing the file in the root, where for example gridsome.config.js is.

Yeah. I placed .env file in the root of a project. This feature wasn't released yet when I faced this issue. It's released for now. So I will give it another shot. Thank you:)


python310Packages.env-canada: 0.5.32 -> 0.5.33

Diff: https://github.com/michaeldavie/env_canada/compare/refs/tags/v0.5.32...v0.5.33
Changelog: https://github.com/michaeldavie/env_canada/blob/v0.5.33/CHANGELOG.md
Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 226705 run on x86_64-linux 1

5 packages built:

home-assistant-component-tests.environment_canada
python310Packages.env-canada
python310Packages.env-canada.dist
python311Packages.env-canada
python311Packages.env-canada.dist


Fix test errors in reassembly

It looks like go 1.10 added cgo support for go vet which is why this has only just started to be an issue
https://golang.org/doc/go1.10#vet

Oops, apologies.  I just fixed this in another pull.  Could you please sync from master and see if things are still working as expected for you?  Just getting back from vacation, so I'm working through a backlog :)

No problem, I'll close this pull request as you have fixed it already!


Refactor messages

End-user friendly description of the problem this fixes or functionality that this introduces

[ ] Include this change in the Release Notes. If checked, you must provide an end-user friendly description for your change below

Give a summary of what the PR does, explaining any non-trivial design decisions

To run this PR locally, use the following command:
docker run -it --rm   -p 3000:3000   -v /var/run/docker.sock:/var/run/docker.sock   --add-host host.docker.internal:host-gateway   -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:9d01654-nikolaik   --name openhands-app-9d01654   docker.all-hands.dev/all-hands-ai/openhands:9d01654

Link of any specific issues this addresses
Fix https://github.com/All-Hands-AI/OpenHands/issues/4602
Fix https://github.com/All-Hands-AI/OpenHands/issues/5154

@openhands-agent Please pull main and resolve conflicts.

OpenHands started fixing the pr! You can monitor the progress here.

OVERVIEW:
The changes were not successfully implemented. The AI failed to address the core request to resolve merge conflicts and instead discussed unrelated technical details from a previous fix.
REMAINING ISSUES:

Main branch needs to be pulled
Merge conflicts need to be resolved
Confirmation of conflict resolution is needed

STATUS: ❌ Not Resolved - Original issue remains unaddressed

The workflow to fix this issue encountered an error. Please check the workflow logs for more information.


Proctecting routes

Hi,
I started using meanjs recently, Its awesome.
But i can't find a way for protecting the routes.
If the user is logged in and is admin, then only a page should be accessible

down vote
The routes does not seem to be protected, if i create a new route like $stateProvider
.state('dashboard', {
url: '/d',
templateUrl: 'modules/core/client/views/dashboard.client.view.html'
})
even though the user is not logged in, he can successfully navigate to the link localhost:3000/d,
how do i restrict this???any ideas?

Look at the Articles client routes. There's data property that you can put roles into to restrict access. The default behavior (no roles config on your client route) is to have no restrictions.

yes, i saw that , it works perfectly for roles but  when the user is not logged in, he can still navigate to the page by writing the url.

The user should get redirected back to the signin page when they manually type in a route that is restricted to logged in users. In order to secure a route, you must have the data.roles defined in the client-side route configuration.
For example, look at the Chat Routes. If this setting is not present, then non-Authenticated user's have access to the route.

Thank you for your kind help....You are absolutely correct.

I'm stuck. I've tried this. However I'm actually trying to protect access to a specific resource. At the moment it's just an SVG however I've taken quite a lot of time and want to only allow authorised users to access it.
Although this does redirect the user to the log in pages as you said. I'm still able to type in the url of the asset directly. Do you know of a solution that would work well. I'm trying to use the acl to protect it but I'm messing up somewhere.


Added tests for quantize function - Till Saenger

I have included your suggested changes and updated the test_quantize_random to work with the uniformly generated random data.
Do I need to submit a new pull request?


⚠ ClamAV has degraded performance

In ac06642, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 67 ms

Resolved: ClamAV performance has improved in d33140a.


Bracket Spacing not respecting []

Before upgrade to 0.7.0, brackets would be spaced: [ 'value' ] now they do not allow spacing: ['value'].
It still respects {}, but not square brackets :(

Are you sure this issue is not related to prettier itself? 0.7.1 bumped Prettier from 0.11.0 to 0.15.0

It was changed in jlongster/prettier#446

Thanks @CiGit

Thank you.


NO-JIRA: fix selftest, need to use gmake on macOS

Description

How Has This Been Tested?

Merge criteria:

[x] The commits are squashed in a cohesive manner and have meaningful messages.
[ ] Testing instructions have been added in the PR body (for PRs involving changes that are not immediately obvious).
[x] The developer has manually tested the changes and verified that the changes work

/approve

normal infra fails, nothing special, overriding

8/113 Tests Failed.
expand_less

: Build image cuda-jupyter-tensorflow-ubi9-python-3.11 from the repository expand_more33m13s
: Build image cuda-jupyter-tensorflow-ubi9-python-3.11 from the repository expand_more

: Build image cuda-jupyter-tensorflow-ubi9-python-3.11 from the repository expand_more
33m13s

: Build image cuda-rstudio-c9s-python-3.11 from the repository expand_more2h14m17s
: Build image cuda-rstudio-c9s-python-3.11 from the repository expand_more

: Build image cuda-rstudio-c9s-python-3.11 from the repository expand_more
2h14m17s

: Build image cuda-rstudio-c9s-python-3.9 from the repository expand_more2h16m40s
: Build image cuda-rstudio-c9s-python-3.9 from the repository expand_more

: Build image cuda-rstudio-c9s-python-3.9 from the repository expand_more
2h16m40s

: Build image intel-runtime-tensorflow-ubi9-python-3.9 from the repository expand_more3h19m41s
: Build image intel-runtime-tensorflow-ubi9-python-3.9 from the repository expand_more

: Build image intel-runtime-tensorflow-ubi9-python-3.9 from the repository expand_more
3h19m41s

: Build image jupyter-pytorch-ubi9-python-3.11 from the repository expand_more33m13s
: Build image jupyter-pytorch-ubi9-python-3.11 from the repository expand_more

: Build image jupyter-pytorch-ubi9-python-3.11 from the repository expand_more
33m13s

: Build image rocm-jupyter-datascience-ubi9-python-3.9 from the repository expand_more1h9m24s
: Build image rocm-jupyter-datascience-ubi9-python-3.9 from the repository expand_more

: Build image rocm-jupyter-datascience-ubi9-python-3.9 from the repository expand_more
1h9m24s

: Build image rocm-jupyter-minimal-ubi9-python-3.11 from the repository expand_more1h59m44s
: Build image rocm-jupyter-minimal-ubi9-python-3.11 from the repository expand_more

: Build image rocm-jupyter-minimal-ubi9-python-3.11 from the repository expand_more
1h59m44s

: Build image runtime-rocm-pytorch-ubi9-python-3.9 from the repository expand_more
: Build image runtime-rocm-pytorch-ubi9-python-3.9 from the repository expand_more

: Build image runtime-rocm-pytorch-ubi9-python-3.9 from the repository expand_more

/override ci/prow/images


[IMPROVEMENT] Add spot instance support

Hello, thanks for this.
Can you add the possibility to use spot instance instead of on demand ?

Wouldn't this potentially cause the server to shut down while you are in the middle of playing?

It is a possibility yes (but if you play 2 hours a day, you really have no luck), and aws provide us 2min delay to decide to terminate it or pay more if we want to continue playing. The only thing to know is you have to backup the save on separate volume.
But, spot instance can be 90% discount, that a choice

Got it -- I'm not really actively developing this right now, but I'm happy to take a look at an MR if anyone wants to take a shot at this.


[TEP-0135] Validate multiple PVC-based Workspaces in TaskRuns

Prior to this commit, we only validate that 1 PVC is allowed to be binded to a TaskRun in AffinityAssistantPerWorkspace coschedule mode. The validation was skipped when there is no affinity assistant presents in the TaskRun (i.e. in standalone TaskRun or in AffinityAssistantDisabled coschedule mode). This commit adds the missing validation.
This commit also updates workspace related documentation.
/kind bug

Changes

Submitter Checklist
As the author of this PR, please check off the items in this checklist:

[ ] Has Docs if any changes are user facing, including updates to minimum requirements e.g. Kubernetes version bumps
[ ] Has Tests included if any functionality added or changed
[ ] Follows the commit message standard
[ ] Meets the Tekton contributor standards (including functionality, content, code)
[ ] Has a kind label. You can add one by adding a comment on this PR that contains /kind <type>. Valid types are bug, cleanup, design, documentation, feature, flake, misc, question, tep
[ ] Release notes block below has been updated with any user facing changes (API changes, bug fixes, changes requiring upgrade notices or deprecation warnings). See some examples of good release notes.
[ ] Release notes contains the string "action required" if the change requires additional action from users switching to the new release

Release Notes
NONE

Previously, with affinity assistant disabled, we let taskrun pods get scheduled by the kube scheduler, and they could non deterministically fail if a taskrun was bound to multiple pvcs, depending on how the pods ended up being scheduled. It sounds like this commit is preventing this from happening at all by rejecting these taskruns when the affinity assistant is disabled? Is this what you intended? I think a validation failure may be the better choice here, although this isn't backwards compatible; curious what others think

Yeah, you are right. I think ideally the validation should fail a standalone TaskRun with multiple PVCs due to potential AZ conflict.
And I missed that prior to TEP-0135, we do allow standalone TaskRun with multiple PVC here, so this change is backward incompatible. Making this change probably needs some discussion across OSS.
I would suggest that we do not merge this PR for now and leave it open to discussion.  I will create a separate one just to adding documentation. WDYT?

/hold

I would suggest that we do not merge this PR for now and leave it open to discussion. I will create a separate one just to adding documentation. WDYT?

SGTM!

@QuanZhang-William are you still working on this?
(cleaning up old pull requests)

@jerop. Thanks for the reminder. This PR introduces backward incompatible changes; and we don't have user request to add validation for >1 PVCs binded to a TaskRun. We can close this PR for now.
/close


Too Many Snapshots In Data Folder

System information
Osmosis version: Osmosis version: v8.0.0
OS & Version: Windows/Linux/OSX: Linux
Commit hash: 16e3b51f19a58f815a4eabcbcee11886eb33e026
Expected behaviour
For there to be 2  snapshots folders under ~/.osmosisd/data to correspond with the state_sync setting in app.toml.  The default is to retain 2 of these images.
Actual behaviour
Osmosis has 4 despite having the same settings. (My other chains all have 2 )
Steps to reproduce the behaviour
I was spot checking with osmosisd du -h . in the ~/.osmosisd/data folder
Maybe this is why Osmosis nodes are so huge?  I have custom pruning at 60K in app.toml
Backtrace
[backtrace]

When submitting logs: please submit them as text and not screenshots.

Could it be possible that 2 are from the previous version of Osmosis and 2 are from the current? Where the current version will not prune or remove snapshots it doesn't understand or know about (i.e. v7)...? Thoughts @p0mvn?

This was a fresh setup that I noted this on.

Hi @lightiv . Has this been a problem on your end? Is this still needing investigation?

@p0mvn come to think of it I have actually noticed this too

Did anything change with regards to that? AFAIU, this is managed by the snapshot manager, right @p0mvn? Where there any changes in that for v8?

Looking at czarcas7ic response above it appear he is having the issue.  I have disable snapshots on my boxes so I am not sure if it is resolved or not.  It has been a while but i think the problem did resolve on my end.  So please close as you see fit.  Thanks

@lightiv We will be keeping this issue open since it does still exist, however are giving it a lower priority at the moment. Thanks for reporting!

We are also experiencing this same issue. Even with snapshot-keep-recent = 2 defined in app.toml snapshots keep piling up.
Disabling them completely works, but this is not good for the network.

I believe this has been fixed, please comment re-open if it has not been


Removed broken links and fixed python script

[x] My submission is formatted according to the guidelines in the contributing guide
[x] My addition is ordered alphabetically
[x] My submission has a useful description
[x] The description does not end with punctuation
[x] Each table column is padded with one space on either side
[x] I have searched the repository for any relevant issues or pull requests
[x] Any category I am creating has the minimum requirement of 3 items
[x] All changes have been squashed into a single commit

This PR resolves #1417
I changed the regex expression used in extracting the links from the README.md file to one that worked better. The regex was tested in https://regex101.com/ against the old one and to make sure that no links were missed.
The HTTP request HEAD was not supported by some links so I changed it to a regular GET method. I increased timeout from 5s to 10s because I was getting a few false positive timeout errors.
All links reported with error 404 which were not working were removed from the README.md file.

I still get 2 errors when running the script but the links works. Any suggestions on what to do with then?
404: https://www.petfinder.com/developers/v2/docs/
ERR: Content purported to be compressed with gzip but failed to decompress. : https://www.block.io/docs/basic

Hey, let's merge this one first. Thanks again

Here's the errors I have now:

Can you paste the code not the picture so I can check them from my phone?
For most of these links I don't understand why we get errors. Whar do you want to do with them?

https://github.com/public-apis/public-apis/runs/1260844756?check_suite_focus=true

Validating 641 links...
404: https://www.petfinder.com/developers/v2/docs/
ERR: Content purported to be compressed with gzip but failed to decompress. : https://www.block.io/docs/basic
404: http://www.amiiboapi.com/
ERR: Redirected but the response is missing a Location: header. : https://sv443.net/jokeapi
SOC: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852) : http://www.flutrack.org/
SOC: _ssl.c:835: The handshake operation timed out : https://currentsapi.services/
SOC: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852) : https://developer.nytimes.com/

I can't work on it these days but we have to find out if that's related to public apis script or the pages themselves

404: https://www.petfinder.com/developers/v2/docs/
ERR: Content purported to be compressed with gzip but failed to decompress. : https://www.block.io/docs/basic
404: http://www.amiiboapi.com/
ERR: Redirected but the response is missing a Location: header. : https://sv443.net/jokeapi
SOC: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852) : http://www.flutrack.org/
SOC: _ssl.c:835: The handshake operation timed out : https://currentsapi.services/
SOC: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852) : https://developer.nytimes.com/
I already saw the log from last run of the action but I get fewer errors then in your picture. Can you check again if you see the same errors as the ones I copied above?


Support excluding files from black formatting

While usort is relatively harmless, formatting files with black can introduce a lot of vertical space that is not always wanted. Especially in the documentation such as usage examples, directives to disable it locally (# fmt: off / # fmt: on) are undesirable.
black has an --exclude option that can also be given through its configuration in the config file. Maybe we can add a flag to ufmt_string that disables black formatting. With #11 merged, this flag could be set in ufmt_file after parsing the black configuration file.

I gave it a short try and hit a roadblock. My initial plan to let ufmt_file determine if a file should be skipped or not does not work, because the the black exclude pattern is defined relative to a root directory, but ufmt_file has no notion of that. Thus, this would actually need to happen in ufmt_paths.

Yes, I think that would be sufficient (checking with @NicolasHug). This would mean we cannot invoke usort or black directly, because they would not pick up on any configuration, but I don't think this is an issue.
On that note, is there a reason to put the configuration in pyproject.toml and not for example in ufmt.ini? Just having a pyproject.toml in a repository changes the build behavior which can have unintended side effects.

Having multiple sources of configuration makes everything more complicated. It invokes questions of precedence/priority and conflicting vs supplemental options, let alone dealing with different formats for each file. Both black and µsort only look for their configurations in pyproject.toml, so having a separate location for configuration also opens the door to needing either duplicated configuration options for black/usort in this special file, and the possibility of getting different behavior if running usort or black on their own.
Beyond that, pyproject.toml is the only well-defined location for project configuration, and proliferation of bespoke configuration files for each tool is not something I want to encourage. pip's support has greatly improved since 2019, and most of the concerns listed were already addressed back then. By this point, I'm not aware of any setuptools-incompatible behaviors in pip that would prevent a project from having a pyproject.toml.

Yes, I think that would be sufficient (checking with @NicolasHug).

I agree

@jreese if you want I can send a PR here, as soon as omnilib/trailrunner#1 lands and is included in a release.

I started working on it last night, and I'll try to get it finished up and available tomorrow to test and validate.

I'm not personally fond of the idea of trying micromanage which files get formatting vs sorting vs both.

I thought a little more about this and, although it is sufficient for our use case, just wanted to give my two cents about this: As stated above there are files where sorting the imports is fine, but formatting the code is not. The reverse case is also common: in __init__.py files the order of the imports might be important to avoid cyclic imports, but the code can be formatted without issue. In this case we can get around that by using the # usort:skip directive, but IMO this already falls into the "micro-managing" category.
So maybe give another thought to the idea of using the configuration files of both programs as source for what should happen to each file. Since you have control over usort it might be the easiest way to adopt black's format to not need to recreate the logic for both individually.


[5] As a front-end developer, I should be able to do an API call to update points in the user profile so that user's ranking can be set.

add_points(user_id: str, new_points: int)
reset_points(user_id: str)

Moving the developer story to the backlog to wait for the database implementation that will happen next sprint.


Sunodo SDK for emulator SDK 0.15.0

This adds a sunodo/toolchain version with emulator SDK 0.15.0
ps: version is still unreleased, so there is a temporary commit that have to be delete before merge

I feel we still have to improve how we are versioning this thing, but I created #48 for that discussion.
IMO we can move forward as is now, and do a breaking change later.


Add a Bitdeli Badge to README

Pull request made by @xbgmsharp at https://bitdeli.com

Useless
http://blog.bitdeli.com/post/77717727361/on-githubs-image-proxy


Toast notifications are being shown in front of the bottom navigation tabbar

Short description of the problem:
If there is a bottom navigation in the app, bottom toast notifications are being displayed directly in front of the navigation.
What behavior are you expecting?
First, the toast notification has to move upwards behind the tabbar. Second, its final position has to be directly above the navigation (bottom: 70px for material design).
Other information: (e.g. stacktraces, related issues, suggestions how to fix, stackoverflow links, forum links, etc)
https://material.google.com/components/bottom-navigation.html#bottom-navigation-specs
Which Ionic Version?
2.0 RC2

Hello! Thanks for the feature request. I'm going to move this issue over to our internal list of feature requests for evaluation. We are continually prioritizing all requests that we receive with outstanding issues. We are extremely grateful for your feedback, but it may not always be our next priority. I'll copy the issue back to this repository when we have begun implementation. Thanks!

This issue was moved to driftyco/ionic-feature-requests#175


Populating buffer for accessing received symbols in real-time.

Hi Joseph,
attached are some minor changes that I made in order to debug my radio configuration. I needed a way to access the received symbols and plot them in real-time rather than over the provided debug methods. This may be useful to others as well.
Thanks
Andre

Andre, I looked at your edits and noticed that you're passing a pointer to the header symbols in the callback function, rather than the payload symbols. The intent was to only pass a pointer to the payload symbols when the header was properly decoded. For display/debug purposes I can see why you'd want these, but I'd prefer not to use the header symbols in the callback to avoid confusion.

Joseph, I am not quite sure what you mean. Could you please have a second look at the code? I am allocating the buffer inside the header receive function only because this is the first time we know how many payload symbols we gonna expect. Note that the code doesn't use the buffer until calling rxpayload. Thanks

Andre,
You're absolutely right. I misread your edits. Yes, this is fine. I merged the changes.


Add workload to french glossary

@bcheronn please considering retitling
eg /retitle add volume and workload to French glossary

Suggestions applied

/retitle Add volume and workload to French glossary

It's all good to me. I'll leave approval to the French localization team.

/lgtm
/approve


Score evaluation

I need a way to specify the score result if it fit a minimum, I found that thresh_include not convenient in general, where it depends input length. I think I need to compare the score and its  relativity to input length ?

Can you expand your idea of "if it fit a minimum" ?

Sorry for being late,
I have a contact records( name, phone and birthday), I am trying to figure a way to check if a contact is highly possible duplicate through these inputs against persisted contact records.
I am grateful for you!

is there a way to calculate Similarity Score relative to 1.
Example : if searching for a name like "forda", I expect to get result as the image below

I have written a section on why I score the way I do.
https://github.com/jeancroy/FuzzySearch#scoring-a-token-in-a-auto-complete-friendly-manner

Basically I found basic string similarity measure (like your example) unreliable when comparing result of very different size. I do use such measure, just add another layer of relative size.
In a auto complete scenario, I also want to match end of words for a very low cost.
There's also another layer to handle multiple words and multiple field which is really implemented as more is better, and max score among competing options.
Finally there's some amount of products / help page recommendation assumptions, so I really prefers to show something vaguely related over nothing.

I understand some of those assumptions are different from what you would want in a auto-de-duplication scenario.
You could score the query against itself and divide all the score by this maximal(?) one.
See how far that takes you. If you want more basic LCS score, there's plenty of library that'll do that.
var sz = (m + n) / ( 2.0 * m * n);
scores[k] = sz * lcs_len * lcs_len + bonus_prefix * prefix;


materialdomain.h no such file or directory

fail to compile with ue 5.1

Samw

same, but after deleting this line the compiling succeed


Added padding to Pesto logotype.

The padding's role is to make sure that the logotype does not run
below the actual symbol.
@mpcomplete PTAL.

IMO this makes the pesto logo look weird in its expanded state (compare to the reference impl https://material-adaptive.firebaseapp.com/pesto/app/#/home ). Can we instead play with the curves so that either:
a. the text fades out before touching the leaf icon, or
b. the icon shrinks fast enough that the text never reaches it?

Variant a looks weird since I tried that first. I'll try to implement b and then push.

@mpcomplete Done.


rustfmt strips all param attrs

To reproduce: get this repo, https://github.com/bbqsrc/params-attribute-example, run cargo fmt, then git diff.
diff --git a/proc-macro-tests/rename_params.rs b/proc-macro-tests/rename_params.rs
index 23f3e59..b70730c 100644
--- a/proc-macro-tests/rename_params.rs
+++ b/proc-macro-tests/rename_params.rs
@@ -2,11 +2,11 @@
 use params_attribute_example::rename_params;

 #[rename_params(send_help)]
-fn hello(#[angery(true)] a: i32, #[a2] b: i32, #[what = "how"] c: u32) {}
+fn hello(a: i32, b: i32, c: u32) {}

 #[rename_params(send_help)]
 impl Foo {
-  fn hello(#[angery(true)] a: i32, #[a2] b: i32, #[what = "how"] c: u32) {}
-  fn hello2(#[a1] #[a2] a: i32, #[what = "how"] b: i32, #[angery(true)] c: u32) {}
-  fn hello_self(#[a1] #[a2] &self, #[a1] #[a2] a: i32, #[what = "how"] b: i32, #[angery(true)]c: u32) {}
-}
\ No newline at end of file
+    fn hello(a: i32, b: i32, c: u32) {}
+    fn hello2(a: i32, b: i32, c: u32) {}
+    fn hello_self(&self, a: i32, b: i32, c: u32) {}
+}

It consumes all. :)
$ cargo fmt --version
rustfmt 1.4.8-nightly (afb1ee1c 2019-09-08)

This may be related to: https://github.com/rust-lang/rust/issues/64682, but may simply be that rustfmt hasn't caught up with https://github.com/rust-lang/rust/pull/64010 yet.

Correct, Rustfmt 1.4.9 will include support for function parameter attributes


Updating old package dependencies

LGTM

Coverage remained the same at 72.998% when pulling 7eb9914710a3932720aa7da3172417bb936f6966 on lirantal:fix/update-dependencies into 1a274d26750a7caf7a80431b5df83aa989533af2 on meanjs:master.

FYI - I had to disable css failing for now as it error'ed out on many issues related to alphabetical orders.
Open to suggestions.


Failed to initialize.

When trying to adopt device this is the error that I get. Using a nodemcu 1.0 (12-e) on the latest version of the website.

logs.txt
logs

Adopt device?


Revisit tests for skip pattern

Tests for skip pattern are supposed to verify that endpoints exposed by metrics, openapi and health are not traced.
However our test app deploys servlets (or in the future jax-rs app) mapped to endpoints defined by these specs under /opentracing context. The problem is that for example health check spec defines /health endpoint mapped to the root path. So we do not test it correctly. I am not sure how we can map a jax-rs app to root endpoint with arqullian.
The proper test should include all these specs instead of simulating them via additional servlets.

The servlets are not jax-rs and will not be traced, so the tests that use servlets will pass even without the skip pattern.

It depends how the tracing is implemented. If it's done at the lower level then servlets would be traced.

done in #127


Typo for 13.16. vfmv.v.f unmasked description

In section 13.16. there is description "This instruction is encoded as a masked instruction". Should it be "... as a unmasked instruction" ?

Thanks for pointing this out.  The English description was wrong (copy-paste?) but the specific encoding, vm=1, was correct.


Updated sys-dm-os-wait-stats-transact-sql.md

Added in more of a description from the old SQL Server Service Broker Team for BROKER_TRANSMITTER. This is more intuitive than the current description.

@dacpac : Thanks for your contribution! The author, @MashaMSFT, has been notified to review your proposed change.

Hi @dacpac , thank you so much for your contribution! Your addition helps add clarity to this wait state. Thanks again! #sign-off


Token payments. Detect cart size over $500

When the cart is over $500 the UI throws the following stack trace to the buyer. We need a cleaner message.
exception 'OffAmazonPaymentsService_Exception' with message 'BillingAgreement C01-2024747-3887696 has already been authorized for amount 0.00 in time period i.e. Thu Jan 01 00:00:00 UTC 2015 - Sun Feb 01 00:00:00 UTC 2015. A new authorization with amount 20005.00 cannot be accepted as the total authorization amount cannot exceed 500.00.' in /opt/bitnami/apps/magento/htdocs/lib/OffAmazonPaymentsService/Client.php:914
Stack trace:
#0 /opt/bitnami/apps/magento/htdocs/lib/OffAmazonPaymentsService/Client.php(862): OffAmazonPaymentsService_Client->_reportAnyErrors('<ErrorResponse ...', 400, Object(OffAmazonPaymentsService_Model_ResponseHeaderMetadata))
#1 /opt/bitnami/apps/magento/htdocs/lib/OffAmazonPaymentsService/Client.php(717): OffAmazonPaymentsService_Client->_invoke(Array)
#2 /opt/bitnami/apps/magento/htdocs/app/code/community/Amazon/Payments/Model/Api.php(98): OffAmazonPaymentsService_Client->authorizeOnBillingAgreement(Object(OffAmazonPaymentsService_Model_AuthorizeOnBillingAgreementRequest))
#3 /opt/bitnami/apps/magento/htdocs/app/code/community/Amazon/Payments/Model/Api.php(475): Amazon_Payments_Model_Api->request('authorizeOnBill...', Array)
#4 /opt/bitnami/apps/magento/htdocs/app/code/community/Amazon/Payments/Model/PaymentMethod.php(135): Amazon_Payments_Model_Api->authorizeOnBillingAgreement('C01-2024747-388...', '100000001-14217...', 20005, 'USD', true, 'Default Store V...', NULL)
#5 /opt/bitnami/apps/magento/htdocs/app/code/community/Amazon/Payments/Model/PaymentM...p/code/core/Mage/Core/Model/Resource/Transaction.php(159): Mage_Core_Model_Resource_Transaction-…

To make this the best integration possible, it would be nice if the plugin could check the remaining amount available in the Billing Agreement, as opposed to using the $500 amount. The GetBillingAgreementDetails call will return the remaining balance allowed:
<BillingAgreementLimits>
  <CurrentRemainingBalance>
    <CurrencyCode>USD</CurrencyCode>
    <Amount>94.50</Amount>
  </CurrentRemainingBalance>
</BillingAgreementLimits>

http://docs.developer.amazonservices.com/en_US/off_amazon_payments/OffAmazonPayments_GetBillingAgreementDetails.html
If the cart total is above the currentRemainingBalance, perhaps it could fall back to a regular ORO transaction.

Let's add a message in the admin console under Enable Tokenized Payments that Buyers can only spend $500 / token.  If they need more, please contact an Amazon account manager.


Chained ray() methods are not always followed.

I have a call that looks like ray().toJson(jsonValue).color(componentColor).label(componentName) that gets called fairly often while on a page. The problem is that the snippet of code will initiate 3 requests to the ray server instead of 1. This causes some sort of race condition which means that the label or color may not apply to the initial payload. It does seem to work about 80% of the time, but when I am issuing this call quickly back to back for different components, it will likely fail.
The solution I have implemented is to tap into the sending_payload_callback setting and attach a new ColorPayload and a LabelPayload to the initial payload. As far as I can tell this works, but it is a painful work around. Perhaps there could be a new method called chain() which would allow me to do something like ray().chain( (ray) => ray.toJson(jsonValue).color(componentColor).label(componentName) ).
Another issue was that the Payload objects were not exported, so I couldn't import them inside vite. I ended up copying the code from the esm module to create the Payload classes.

@TWithers Thanks for the bug report! I implemented your suggestion for chain() in version 2.1.0.


[go_router] Support pushAndRemoveUntil

Use case
There are currently four pages A, B, C, and D. How can I return directly from page D to page A with routing? Is there any way? I didn't find the implementation of pushAndRemoveUntil, which is very frustrating. Looking forward to your answer.
Proposal
Navigator.of(context).pushNamedAndRemoveUntil('/LoginScreen', (Route route) => false);

I can see this has been raised at https://github.com/flutter/flutter/issues/99112 but it's closed. Keeping this open as a new issue.

@Jay-57blocks In your case, if you need to replace the entire configuration, using a .go should work no?
GoRouter.of(context).go('/LoginScreen');

Also, if you want to preserve some routes, would a popUntil() works in your case?
If your history is something like ['/a', '/b', '/c', '/d'] and you want to pop until '/b', maybe something like below would work?
GoRouter.of(context).popUntil((route) => route.location == '/b');

Thanks, I only found GoRouter.of(context).pop(), not the popUntil you mentioned

pop and go are already implemented. popUntil is not implemented yet. I made a PR to propose a possible implementation
https://github.com/flutter/flutter/issues/144924

@ValentinVignal Per the last comment https://github.com/flutter/flutter/issues/99112#issuecomment-1658974503, popUntil is a separate issue at https://github.com/flutter/flutter/issues/131625. So you can link your PR to that one.
@Jay-57blocks Will popUntil fit your case or is pushNamedAndRemoveUntil still in your needs?

@huycozy thank you, I'll link my PR to the other issue. I think we can keep this issue as pushNamedAndRemoveUntil will ultimately be needed ?

@ValentinVignal Thanks for the contribution. Yes, this is still open.

@ValentinVignal Per the last comment #99112 (comment), popUntil is a separate issue at #131625. So you can link your PR to that one.
@Jay-57blocks Will popUntil fit your case or is pushNamedAndRemoveUntil still in your needs?

Yes, pushNamedAndRemoveUntil still needs.

Hi am facing same problem with "go_router" about pushNamedAndRemoveUntil.
there is any solution ?
thanks!


ocfl repository

Refactor of weedcoco.repo to use ocfl versioning
Todo:

[x] update thumbnail generation to use the ocfl repo
[x] test thumbnail generation (at least that the thumbnail files are created)
[x] clean up and standardise object design (getters and setters etc)
[x] get ocfl-versioned server working locally
[ ] fix indexing
[x] fix redeposit_dataset
[x] fix remove_entity_local_record
[ ] script to migrate an existing repository to ocfl
[x] zipfile generation by extracting and zipping repo/upload_id.vN
[ ] better handling of zipfiles for datasets with versions - are they created for releases only? Or do we only save the latest zipfile and generate older releases on request? (This would need a celery task / polling)
[ ] versioning tests: get logical paths, resolve to content paths, create a dataset, add an update, confirm that the HEAD has latest changes, extract earlier version of a dataset
[ ] test rollback after an error, make sure that the resulting ocfl is valid

Superseded by another branch


Failed test 'Form CSS code (nothing, without init).'

On a few of my smokers the test suite fails:
#   Failed test 'Form CSS code (nothing, without init).'
#   at t/Tags-HTML-Element-Form/07-process_css.t line 52.
#     Structures begin differing at:
#          $got = undef
#     $expected = ARRAY(0x803a77ab0)
# Looks like you failed 1 test of 4.
t/Tags-HTML-Element-Form/07-process_css.t ......
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/4 subtests

Statistical analysis suggests that in the fail cases the version of CSS::Struct::Output::Structure is too low. 0.03 and greater is fine:
****************************************************************
Regression 'mod:CSS::Struct::Output::Structure'
****************************************************************
Name                   Theta          StdErr     T-stat
[0='const']          -0.0000          0.0000      -1.83
[1='eq_0.03']         1.0000          0.0000<PHONE_NUMBER>741879.00
[2='eq_0.04']         1.0000          0.0000<PHONE_NUMBER>6130588.00

R^2= 1.000, N= 71, K= 3
****************************************************************

Thanks, fixed in 0.06 version


New doc: Add a Guide for clarinet testing. Ensure all the keywords, functions are explained with their purpose.

The main resource that provide information in this direction is https://deno.land/x/clarinet@v0.31.1/index.ts?code.
A guide that would provide directions for implementing tests for different use cases would be great. That would ease the testing development for all devs especially newcomers.
eg. how to take from a map response a given key and compare it with expected uint value
block.receipts[0].result.expectOk().expectSome().expectTuple()["head-id"].expectUint(1);

Reference docs: #226 #209.
@mefrem can help with more info.

Looks like this is being addressed in the PR: #226.

@mefrem Per our discussion, we will be coming up with a new document to include a detailed explanation of all the keywords used to implement tests. I am moving this to our Ice box/To-do list to implement soon! Thanks, @BowTiedDeployer.

Relates to https://github.com/hirosystems/docs/issues/209

With new clarinet-sdk efforts, this might be worth a look from @hugocaillard to give comment on state of a proper guide or documentation to writing unit tests with Clarinet, including simnet objects and actions (mining blocks, calling methods, calling contracts, etc.).

@mefrem Yep, https://github.com/hirosystems/docs/issues/412#issuecomment-1739830692 will take over this one


Feat: types

An attempt at fixing types.
There's a weird TS issue of Declaration emit for this file requires using private name 'name' from module 'file'. An explicit type annotation may unblock declaration emit. kind, that I'm not sure how to tackle rn.
Maybe someone would have a better idea.
Also SVGDocument is not defined on globalThis or anywhere.

One thing though, I'd love to be a squashed single commit, so it's easier to review/check/revert, etc ... I hope that's not a big issue (ask me more if it is, squashing is relatively easy).
I also would like to know when/who/how this is a WIP, and why it wouldn't be a WIP anymore at some point ... as everything looks good to me, mind expanding on why this couldn't be not a WIP?
the thing about WIP is that coverage and builds don't run, but for what I can see/tell nothing in here should bother tests.
Thanks again for this, I love it in general, willing to move it forward ASAP 🥳

@qwelias any answer to my comment?

This is huge thanks to JSDoc that was already in place thanks to your work :)
Sure I'll squash it np.
DoD: tsc -p . compiles type declarations without any problems, and is a part of build/test script.
I'll pick it up sometime during the week, hopefully will find a nice solution.

Current type coverage is not perfect -- still a lot of any, but should be enough for basic usage.
With this if someone would want to improve types on some part of the project they could just JSDoc it or write a TS type declaration and it should pop up in compiled declarations

Thanks @qwelias , this still looks great! Just please squash it as single commit, so I can review all at once, thanks!

@WebReflection squashed 👍

@qwelias released 🎆
thank you again for the help 👍


NSwag Studio 13.7.1 generating FileResponse return types

When launching NSwag Studio a bit ago, I was prompted to upgrade from 13.7.0 to 13.7.1.  I went ahead and did this, then generated CSharp Client code from OpenAPI/Swagger Specification.  This changes return types  from something like this:
/// <returns>Success</returns>
/// <exception cref="SwaggerException">A server side error occurred.</exception>
System.Threading.Tasks.Task<System.Collections.Generic.ICollection<ProductFavorite>> GetProductFavoriteAllAsync();

to
/// <returns>Success</returns>
/// <exception cref="SwaggerException">A server side error occurred.</exception>
System.Threading.Tasks.Task<FileResponse> GetProductFavoriteAllAsync();

I have since uninstalled 13.7.1 and reinstalled 13.7.0 to resolve the issue.  Let me know if you need any more information.

I ran into the same issue but while generating a TypeScript client. All return types were changed to FileResponse.

I think we need to revert that.. the idea was that if the response is not only json then we return fileresult for max flexibility. Bad idea probably.. will be reverted on monday

v13.7.2


Ssh data transport

Note: this depends on https://github.com/aptible/broadwayjoe/pull/37 on the backend to work.
This changes two things:

It uses the SSH tunnel as the data transport, instead of relying on port forwarding. The main benefit of this approach is that it eliminates a race condition in db:dump (where pg_dump might be run before the tunnel is listening on the remote end).
It passes a database / app URL for APTIBLE_DATABASE and APTIBLE_APP, which allows the backend to skip enumerating databases / apps to find a match (it also ensures the backend will always choose the right db / app even if multiple have the same handle).

--
cc @fancyremarker

Note that performance-wise this is sometimes faster and sometimes slower than the old implementation.
Theoretically, this is faster if we're opening 1 or 2 tunnels (the old implementation opens 2 SSH sessions to first claim a port and then enable port forwarding), but slower otherwise (the old implementation can reuse the same SSH session, this one can't).
In practice, it's a little difficult to say, because the performance of the old implementation largely depends on how long we sleep to let the tunnel come up.
In my testing, with a 10 seconds wait, both implementations are about as fast to backup a little PG database (but the old one usually hits the race condition and simply fails).
The overhead of juggling data in Ruby appears low (I carried out some tests locally, and there's a test as part of the test suite). It'd be great if someone else would test this from somewhere else to compare results.

@fancyremarker: I'm a little concerned some customers might be using tunnels to connect their local development apps to their DBs on Aptible. While this might not necessarily be the main use case, it definitely won't work as well with this change (unless they do some sort of connection pooling).
Do we have a rough idea if this is a common use case? If not, perhaps we can try to find out from the backend.
Thoughts?

@krallin FWIW, we frequently use tunnels to connect local apps (kibana and jupyter notebooks, primarily, but occasionally our main app) to our DBs on Aptible. Just an n of 1, and I haven't dug any deeper to see how much this would actually impact us, but figured I'd pipe in about that use case.

Thanks for the heads-up @mjacksonw!
Unless your client does connection pooling (which I doubt Kibana does..), this change will have a substantial impact on performance for you. I've seen another customer in support that was doing the same thing, so that's already 2 since I started looking.
At this point, I think it's best to re-think this a little bit. It's not very difficult to have the server signal to the client that the tunnel is ready (rather than sidestep the issue entirely, which this change was trying to do), so I think I'll go down this route instead!


age groups should be configurable via frontend

Age groups used by Treberhilfe Dresden are different from our predefined age groups.
These age groups constitute a changing requirement depending on the association which uses the app.
Thus the age groups need to be configurable.
We should also make sure to preserve exiting age group data while migrating to a new database schema.

user can configure teams

configure age groups per team

set age group data per waypoint


Laravel 11

Just migrated to Laravel 11 and this package is not compatible.
Any chance to have a L11 compatible version ?
Many thanks in advance

Just published, v1.3.0, see if that works for you.

nvm broke it, gimme 4 mins

there, v1.3.1, try that one.

Thanks it works !


Improve website-stalker config

Description

I like seeing my website-stalker being used!
With the upcoming changes I searched GitHub for usages of website-stalker and adapt the config to reduce the friction of the update.

website-stalker check is also done on run and is being deprecated
notification_template is unused and is being removed
create pull request even when some site failed
no need for git push as its done as PR
combine css_remove selectors

Related Issue

no issue
Type of Change

[x] 📚 Examples / docs / tutorials / dependencies update
[ ] 🔧 Bug fix (non-breaking change which fixes an issue)
[ ] 🥂 Improvement (non-breaking change which improves an existing feature)
[ ] 🚀 New feature (non-breaking change which adds functionality)
[ ] 💥 Breaking change (fix or feature that would cause existing functionality to change)
[ ] 🔐 Security fix

Checklist

[x] I've read the CODE_OF_CONDUCT.md document.
[x] I've read the CONTRIBUTING.md guide.
[ ] I've updated the code style using make codestyle.
[ ] I've written tests for all new methods and classes that I created.
[ ] I've written the docstring in Google format for all the methods and classes that I used.

Just as a heads-up: I just released website-stalker v0.23.0 which now errors on the (here unused) notification_template.

@EdJoPaTo Thank you for PR, great package to track these kind of stuff :)
(Only downside, I can see too many changes on Paddle side :D )

Only downside, I can see too many changes on Paddle side :D

Maybe you could use more filters to filter out things that are less relevant?


Strings

I've noticed in the javascript example that you take a pretty routed step to make sure everything is correct, and was wondering why not use 'JSON.stringify'.
For example, something like this works as well (is  self contained, try it in the online editor):
StringLiteral "string"
  = '"' chars:DoubleStringCharacter* '"' {
      return { type: "DoubleString", value: JSON.stringify(chars.join("")) };
    }
  / "'" chars:SingleStringCharacter* "'" {
      return { type: "SingleString", value: JSON.stringify(chars.join("")) };
    }

DoubleStringCharacter
  = '\\' '"' { return '"'; }
  / !'"' SourceCharacter { return text(); }

SingleStringCharacter
  = '\\' "'" { return "'"; }
  / !"'" SourceCharacter { return text(); }

SourceCharacter
  = .

I use the above in my own project (slightly modified), and I haven't had any problems

Yes, @andreineculau is right, the JavaScript example grammar tries to stick pretty closely to the official ECMAScript grammar, which includes low-level rules such as those called by DoubleStringCharacter. It leads to somewhat suboptimal parser with the current code generator, but in my view, the right solution is to optimize the generated code, not the grammar. As a grammar author, you (ideally) should’t be worried about the performance too much.
As for the suggested alternative approach, the JSON.stringify function is used wrongly — it escapes a string possibly containing escape sequences even more instead of unescaping it. You may have meant to use JSON.parse but that doesn’t parse single-quoted strings and even all valid double-quoted JavaScript strings (as can be easily seen by comparing JavaScript’s and JSON’s lexical grammar).


Run SonarCloud only on pull requests to masterSecurity scan

Run SonarCloud less often to reduce build times for normal CI builds

 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.:x: jmsnavarro sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


Add support for changing object's position

Currently, the viewer renders the object in the center of the canvas. Add support to set object's position in component props. It should behave like when you hold right click on the mouse and move the object.

did u solve it


.tower_cli.cfg permissions set to read/write for current user only

Previously, the configuration file was created and edited with the default umask. This commit changes that behavior so that it attempts to set the file permissions to "-rw-------" every time. That is, read/write permissions for current user, no permissions for group, and no permissions for others. The octal numeric notation is 0600 for this permission.
This is desirable when the configuration file is stored in ~/.tower_cli.cfg, which is in the user's directory, as pointed out in Issue #48. If the flag --scope=global --scope=local is set, this will attempt to do the same thing, but the ideal behavior for those cases is less clear. Tests were added for the default scope setting and for scope=local.
One other test using warn.assert_called_once was edited to include the warning's arguments with warn.assert_called_once_with, since official documentation for the former can't be found anywhere.

Those properties mentioned as line items above ^^ can be applied throughout this patch to make it a bit more pythonic.

@AlanCoding looks good to me.  @matburt any objections or concerns before merging?

Looks good!

Merging, thanks for the contribution!


Integration Unavailable

Traeger Integration has been running rock solid until recently updating to HAOS  core-2022.7.3
Here is what is shown in the logs:
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 353, in async_setup
    result = await component.async_setup_entry(hass, self)
  File "/config/custom_components/traeger/__init__.py", line 57, in async_setup_entry
    await client.start(30)
  File "/config/custom_components/traeger/traeger.py", line 314, in start
    await self.update_grills()
  File "/config/custom_components/traeger/traeger.py", line 121, in update_grills
    json = await self.get_user_data()
  File "/config/custom_components/traeger/traeger.py", line 84, in get_user_data
    await self.refresh_token()
  File "/config/custom_components/traeger/traeger.py", line 80, in refresh_token
    self.token_expires = response["AuthenticationResult"]["ExpiresIn"] + request_time
TypeError: 'NoneType' object is not subscriptable ```

Also seeing an issue when trying to access AWS:

```Timeout error fetching information from https://cognito-idp.us-west-2.amazonaws.com/ -```

I've had this same issue for awhile now and unfortunately have been unable to use this integration because of it.


P100 plugs won't reconnect "Failed to connect" message

Version of the integration
v1.6.0
Also tried rolling back to previous versions
Configuration
Model: P100
HW Ver: 1.0
Firmware: 1.3.6
Model: P100
HW Ver: 1.20.0
Firmware: 1.4.10
yaml
Describe the bug
Plugs stopped responding to control via home assistant, so were removed to attempt reconnection
When attempting to reconnect them I receive an error stating "Failed to connect"
Debug log
2023-02-24 16:51:36.849 ERROR (MainThread) [custom_components.tapo.config_flow] Tapo exception 9999
2023-02-24 16:51:36.850 ERROR (MainThread) [custom_components.tapo.config_flow] Failed to setup cannot connect

This can be closed.
I resolved the issue by:

Removing the custom integration via HACS
Rebooting the home assistant host (restarting HA alone didn't seem sufficient)
Reinstalling the Tapo Controller integration via HACS
Restart HA
Add the plugs in the usual way


Fix for older browsers

Site now works on older versions of Chrome and Firefox
Also added another fix for the histogram page occasionally not fully loading

How critical it is to support older browsers? Why are you getting rid of a more standard placeholder attribute in favor of a rather hacky approach of using values and clearing it then repopulating on focus and blur?
By the way if I can understand it correctly, you current logic will wipe the value off if someone intentionally filled the default value and the blur the focus out of the field.

It is to fix issue #52. If the user clicks the data field to type their own input, the field clears so that they don't have to erase it. If the user clicks out of the data field, the default value refills so they can still see the example input. This fix is working on current versions of Chrome and Firefox, as well as the versions mentioned in issue #52.

I have commented in #52 about it.

Let me know when you feel it is ready to be merged.

It is ready, it's working on old and new versions of browsers. Thank you!

I am merging this, but in a separate PR you might want to remove alert dialogue and add inline validation for a better user experience.


Empty TextSpan breaks WidgetSpan gestures

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce

Run the sample code
Attempt to click the left half of the purple container
Observe that the counter does not increment

Expected results
WidgetSpans following a TextSpan containing an empty string recognize gestures accross their entire surface.
Actual results
WidgetSpans following a TextSpan containing an empty string recognize gestures only on the right side of their surface.
Code sample
Code sample
import 'package:flutter/material.dart';

void main() => runApp(const App());

class App extends StatelessWidget {
  const App({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(
          brightness: Brightness.dark,
          seedColor: Colors.deepPurple,
        ),
        useMaterial3: true,
      ),
      home: const Home(),
    );
  }
}

class Home extends StatefulWidget {
  const Home({super.key});

  @override
  State<Home> createState() => _HomeState();
}

class _HomeState extends State<Home> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("broken spans"),
      ),
      body: Center(
        child: Text.rich(
          TextSpan(
            children: [
              const TextSpan(
                text:
                    "The following WidgetSpan does not recognize Gestures on the left side:\n",
              ),
              // This empty TextSpan breaks the WidgetSpan.
              // If we add any content, even a space, it works.
              const TextSpan(text: ''),
              WidgetSpan(
                child: InkWell(
                  onTap: _incrementCounter,
                  child: Container(
                    color: Colors.deepPurple,
                    height: 50,
                    width: 50,
                  ),
                ),
              ),
              TextSpan(
                text: "\nCounter: $_counter",
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Screenshots or Video

Screenshots / Video demonstration
https://github.com/flutter/flutter/assets/11785085/928cb9ad-9de6-4294-9780-e74c1329a504

Flutter Doctor output
Doctor output
[√] Flutter (Channel stable, 3.13.0, on Microsoft Windows [Version 10.0.22621.2134], locale de-CH)
    • Flutter version 3.13.0 on channel stable at C:\Users\dragon\AppData\Roaming\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision efbf63d9c6 (8 days ago), 2023-08-15 21:05:06 -0500
    • Engine revision 1ac611c64e
    • Dart version 3.1.0
    • DevTools version 2.25.0

[√] Windows Version (Installed version of Windows is version 10 or higher)

[√] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at C:\Users\dragon\AppData\Local\Android\sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: C:\Program Files\Android\Android Studio\jbr\bin\java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-b2043.56-10027231)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.6.2)
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.6.33723.286
    • Windows 10 SDK version 10.0.19041.0

[√] Android Studio (version 2022.3)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-b2043.56-10027231)

[√] VS Code (version 1.81.1)
    • VS Code at C:\Users\dragon\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.70.0

[√] Connected device (3 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.22621.2134]
    • Chrome (web)      • chrome  • web-javascript • Google Chrome 116.0.5845.97
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 115.0.1901.203

[√] Network resources
    • All expected network resources are available.

• No issues found!

Reproducible using the code sample provided above.

flutter doctor -v
[!] Flutter (Channel stable, 3.13.1, on macOS 13.4.1 22F770820d darwin-arm64, locale en-GB)
    • Flutter version 3.13.1 on channel stable at /Users/nexus/dev/sdks/flutter
    ! Warning: `flutter` on your path resolves to /Users/nexus/dev/sdks/flutters/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutter. Consider adding /Users/nexus/dev/sdks/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/nexus/dev/sdks/flutters/bin/dart, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutter. Consider adding /Users/nexus/dev/sdks/flutter/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision e1e47221e8 (28 hours ago), 2023-08-22 21:43:18 -0700
    • Engine revision b20183e040
    • Dart version 3.1.0
    • DevTools version 2.25.0
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-33, build-tools 33.0.1
    • Java binary at: /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/223.8836.35.2231.10406996/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
    • Xcode at /Applications/Xcode-14.3.0.app/Contents/Developer
    • Build 14E222b
    • CocoaPods version 1.12.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.2)
    • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/222.4459.24.2221.10121639/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

[✓] Android Studio (version 2022.3)
    • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/223.8836.35.2231.10406996/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2)
    • IntelliJ at /Users/nexus/Applications/JetBrains Toolbox/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 75.1.4
    • Dart plugin version 232.8660.129

[✓] IntelliJ IDEA Ultimate Edition (version 2023.1.4)
    • IntelliJ at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/231.9225.16/IntelliJ IDEA.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2)
    • IntelliJ at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/232.8660.185/IntelliJ IDEA.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code (version 1.81.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.70.0

[✓] Connected device (4 available)
    • Pixel 7 (mobile) • 28291FDH2001SA            • android-arm64  • Android 13 (API 33)
    • Nexus (mobile)   • 00008020-001875E83A38002E • ios            • iOS 16.6 20G75
    • macOS (desktop)  • macos                     • darwin-arm64   • macOS 13.4.1 22F770820d darwin-arm64
    • Chrome (web)     • chrome                    • web-javascript • Google Chrome 116.0.5845.110
    ! Error: Nexus is busy: Fetching debug symbols for Nexus. Xcode will continue when Nexus is finished. (code -10)

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

[✓] Flutter (Channel master, 3.14.0-9.0.pre.70, on macOS 13.4.1 22F770820d darwin-arm64, locale en-GB)
    • Flutter version 3.14.0-9.0.pre.70 on channel master at /Users/nexus/dev/sdks/flutters
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision bede50cba2 (3 hours ago), 2023-08-24 00:49:29 -0400
    • Engine revision 3b92bb6eda
    • Dart version 3.2.0 (build 3.2.0-97.0.dev)
    • DevTools version 2.26.2

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-33, build-tools 33.0.1
    • Java binary at: /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/223.8836.35.2231.10406996/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
    • Xcode at /Applications/Xcode-14.3.0.app/Contents/Developer
    • Build 14E222b
    • CocoaPods version 1.12.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.2)
    • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/222.4459.24.2221.10121639/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

[✓] Android Studio (version 2022.3)
    • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/223.8836.35.2231.10406996/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.1.4)
    • IntelliJ at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/231.9225.16/IntelliJ IDEA.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2)
    • IntelliJ at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/232.8660.185/IntelliJ IDEA.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code (version 1.81.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.70.0

[✓] Connected device (4 available)
    • Pixel 7 (mobile) • 28291FDH2001SA            • android-arm64  • Android 13 (API 33)
    • Nexus (mobile)   • 00008020-001875E83A38002E • ios            • iOS 16.6 20G75
    • macOS (desktop)  • macos                     • darwin-arm64   • macOS 13.4.1 22F770820d darwin-arm64
    • Chrome (web)     • chrome                    • web-javascript • Google Chrome 116.0.5845.110
    ! Error: Nexus is busy: Waiting to connect and unlock the device. Xcode will continue when Nexus is finished. (code -10)

[✓] Network resources
    • All expected network resources are available.

• No issues found!

i just got navigated from flutter discord to this exact issue. the empty text works as a workaround, but i dont think its realiable


<EMAIL_ADDRESS>decompress error

PS C:\Users\Otaku> scoop install twilio
Installing '7zip' (22.01) [64bit] from main bucket
7z2201-x64.msi (1.8 MB) [=====================================================================================] 100%
Checking hash of 7z2201-x64.msi ... ok.
Extracting 7z2201-x64.msi ... done.
Linking ~\scoop\apps\7zip\current => ~\scoop\apps\7zip\22.01
Creating shim for '7z'.
Creating shim for '7zFM'.
Creating shim for '7zG'.
Creating shortcut for 7-Zip (7zFM.exe)
Persisting Codecs
Persisting Formats
Running post_install script...
'7zip' (22.01) was installed successfully!
Notes
Add 7-Zip as a context menu option by running: "C:\Users\Otaku\scoop\apps\7zip\current\install-context.reg"
Installing 'twilio' (5.3.3) [64bit] from twilio-scoop bucket
twilio-win32-x64.tar.xz (32.8 MB) [===========================================================================] 100%
Checking hash of twilio-win32-x64.tar.xz ... ok.
Extracting twilio-win32-x64.tar.xz ... ERROR Exit code was 2!
Failed to extract files from C:\Users\Otaku\scoop\apps\twilio\5.3.3\twilio-win32-x64.tar.
Log file:
~\scoop\apps\twilio\5.3.3\7zip.log
Please try again or create a new issue by using the following link and paste your console output:

Hi @sameer355u, thanks for reaching out.  This looks like a duplicate issue. Can you please try running this command in Powershell as an admin. Its mentioned in the doc here


Privacy risk: fingerprint updates

@ehsan mentioned in https://twitter.com/ehsanakhgari/status/1202982676531159040 that a tracking site might use the periodic execution enabled by a background sync to keep up with gradual fingerprint changes. That is, it's generally easier to build a short-term fingerprint than one that stays stable for a long time. If a user clears a tracking site's cookies, the site wants to have measured a fingerprint as close as possible to the cookie clearing event in order to maximize the chance that the fingerprint is still the same when the user next visits the site. Background Sync events allow the site to re-measure the fingerprint closer to the 'clear' than the last intentional visit to the site.
This is mitigated by several considerations:

If the user clears a single site's cookies, the easiest UI to get there is by actually visiting the site, which allows it to measure a fingerprint just before and just after the clear, with no need to take advantage of a background sync. So let's assume the user is clearing the whole browser's cookies.
Some discussion of location tracking mitigations has suggested that periodic syncs might be discarded after the user hasn't engaged with the site for a certain amount of time. I don't see this mentioned in the spec, but it would also decrease the effectiveness of fingerprint updates.
As we work to reduce fingerprintability in general, it may be more feasible to remove access to a fingerprinting vector within a background sync than it would be across the whole web platform. The spec should suggest doing this.

Hmm, I believe this issue is misrepresenting the actual attack that I had in mind.  This isn't about users clearing cookies at all (which is an activity that the majority of browser users probably never engage in, even though a subset of users may do so regularly).  It is however about fingerprint evolution as a result of software updates.    This mean that mitigation 1 mentioned above isn't necessarily going to address this issue.

3. As we work to reduce fingerprintability in general, it may be more feasible to remove access to a fingerprinting vector within a background sync than it would be across the whole web platform. The spec should suggest doing this.

And the flip side of it is also that as browsers keep exposing more APIs to service workers, the practical chances of this keeps going down.

It's possible I'm misunderstanding the goal of fingerprinting here. The FP-STALKER paper you linked says "websites use browser fingerprinting as a way to regenerate deleted cookies", which is the primary use I imagined in the OP. And, of course, in a first-party context with a consistent cookie, there's no point in using fingerprinting to identify the user--you just use the cookie.
But sites might also record a first-party fingerprint in order to match it against a fingerprint they can measure in a third-party context, which is more important as we move to partitioned cookie stores. In that case, I think we'd want to look at how those third-party contexts can link fingerprints as they evolve and whether adding a periodic first-party sync improves that linkability. Background Sync would cause the largest problem if the average fingerprint evolution between uses of the site in any context are too big to link, but the site is used in a first-party context enough to refresh the BG Sync timeout so that the last BG sync gets enough closer to the next third-party use that it can link fingerprints again. (Sorry, that was probably confusing.)
Re (3), it's true that as we expose more APIs to service workers, they're likely to become as good at fingerprinting as foreground tabs. I was imagining that we might restrict the APIs available within the periodicsync event to a subset of everything available to service workers in general.

It's possible I'm misunderstanding the goal of fingerprinting here. The FP-STALKER paper you linked says "websites use browser fingerprinting as a way to regenerate deleted cookies", which is the primary use I imagined in the OP.

Yes, that paper is written assuming that the use case of fingerprint evolution is to handle cookie resurrection.  I linked to it because it had investigated the concept and its relationship with updates, in the hopes that it would help clarify my point.

And, of course, in a first-party context with a consistent cookie, there's no point in using fingerprinting to identify the user--you just use the cookie.

There are many other possibilities, for example if you're looking to identify for example the user's device (not their browser), so that you can identify their traffic from other browsers/apps on the same device possibly not sharing the same cookie store.  Or if you're a surveillance actor who has switched to using first-party cookies for cross-site tracking instead of third-party cookies, and you need a fingerprint in order to join the first-party cookies together.  And so on.

But sites might also record a first-party fingerprint in order to match it against a fingerprint they can measure in a third-party context, which is more important as we move to partitioned cookie stores.

Yes, that is another case as well (a special case of the general issue I mentioned above which is a prevalent problem on the Web today; no need to wait for more browsers to move to partitioned cookie stores.)

The threat of noticing a gradual change over time does seem quite relevant to any effort to combat fingerprinting.  Sites that a user visits frequently have more of a chance to notice this than sites the user visits only rarely, and from that point of view, Background Sync is a privilege escalation.
I see the explainer already says "Syncing may be less frequent depending on heuristics such as visit frequency & device status", and the draft spec says "The user agent SHOULD limit tracking by capping the number of retries and duration of sync events."  There's also a blink-dev discussion about this point of view here.
Those seem like the sorts of mitigations that would cap the privilege escalation.  Ehsan, would making those suggestions concrete address the concern, or is there another angle you're after?

The threat of noticing a gradual change over time does seem quite relevant to any effort to combat fingerprinting. Sites that a user visits frequently have more of a chance to notice this than sites the user visits only rarely, and from that point of view, Background Sync is a privilege escalation.

It took me a while to see how you're considering this a privilege escalation, I think I may see it.  I think the assumption is that the user visits the app frequently, then the app gets installed, and then it gets to use background sync.  Then as the user keeps using the app more (in the installed context) it will become able to run more and more code in the background invisibly.
But I was under the impression that Chrome allows apps to get installed even after the first time that the user visits them based on some heuristics that determine whether they can be displayed offline?  That's at least what happens on my device, I can install apps on first visit.  Would such apps running code in the background also count as privilege escalation in your opinion?

I see the explainer already says "Syncing may be less frequent depending on heuristics such as visit frequency & device status", and the draft spec says "The user agent SHOULD limit tracking by capping the number of retries and duration of sync events." There's also a blink-dev discussion about this point of view here.

The blink-dev link seems to be broken unfortunately.  I have seen that part in the spec and the explainer.  I can't really understand what they mean concretely and it seems that even following that you can still be in a situations where user data is reported to invisible third-parties.

Those seem like the sorts of mitigations that would cap the privilege escalation. Ehsan, would making those suggestions concrete address the concern, or is there another angle you're after?

I'm not after any angles here.  I'll allow @jyasskin to decide what he wants to keep track of in his issue.

Sorry, proper blink-dev link.
I don't know the heuristics for either installation or BackgroundSync frequency.  They certainly seem relevant to this discussion, and like something that could be adjusted to mitigate risk, so I hope someone knowledgeable will chime in.    Similarly, letting a site you visit every day perform BS every few hours seems plausibly reasonable.

I think your weather app example is a great one to dig into.
I go to some weather site every day.  I go through an install flow, so it's on the home screen of my phone.  I give it location permission, because of course weather depends on knowing location.
One way it could use the Background Sync capability is to download the weather just before I typically open the app, so all the info is right there waiting for me.  That seems like exactly what I would want an installed weather app to do.  I have news and weather apps on my phone that I look at every morning, they behave that way, and it's great UX.
Another way it could use the Background Sync capability, as you point out, is to run in the background, sometime when I'm not about to open it, request my location, and learn where I spend my time.  That means that when I look at the weather every morning, it can tell me what weather to expect for where I just woke up — and also it could tell me about the weather at work, where it's noticed I spend a lot of time.  That again feels like just what I would want an app to do, once I had installed it and given it location access.
(You bring up the threat of a later data breach.  Sure, maybe I'm worried about that and try to find weather apps whose data retention policy says "We delete your exact locations after a week; beyond that we only retain the general areas you're in frequently, so we can show you the weather there."  But that seems beside the point if I'm already willing to grant them permission to see my location.)


Specify component with JIRA integration for crash reporting

The JIRA component value is not supplied by AppCenter when recording crashes.  This means your JIRA project must have component optional as discovered in issue #302.  It also makes automatic assigment difficult.  It would be better if the component could be set within AppCenter in the JIRA integration settings.

@tharlinsmith thanks for filing this! I can definitely see the value in this. This isn't currently on our roadmap but I will monitor this thread and post if I have any updates.

This is an issue for us. We need to change our complete JIRA setup to make sure AppCenter's reports actually appear in our instance. Very annoying


Using Inputs.GetHash and Transaction.GetHash in the same contract

I was having quite a difficult time using Input.GetHash and Transaction.GetHash in the same contract. I ended up doing the following trick to get the compiler to allow me to.
@@ -697,6 +697,9 @@ class VMTokenizer(object):
             if fname == m.name:
                 full_name = m.full_name

+        if fname == 'InputGetHash':
+            full_name = 'boa.blockchain.vm.Neo.Input.GetHash'
+
         # operational call like len(items) or abs(value)
         if self.is_op_call(fname):
             vmtoken = self.convert_op_call(fname, pytoken)

Then in my contract I have a dummy function called InputGetHash.
Before doing this I tried everything including separating the calls into separate files. Any clues or is this a bug?

BTW, if anybody wants to confirm this is a bug and point me in the right direction to fixing it, I'm happy to take a look. I'm still pretty new to the codebase so just want to make sure I'm not missing something.

@slipo can you post the entire contract file for more context?

Sure.
Here's example 1 which works:
from boa.blockchain.vm.Neo.Runtime import GetTrigger
from boa.blockchain.vm.Neo.TriggerType import Application, Verification
from boa.blockchain.vm.System.ExecutionEngine import GetScriptContainer
from boa.blockchain.vm.Neo.Storage import GetContext
from boa.blockchain.vm.Neo.Transaction import GetUnspentCoins, GetHash

def Main(operation, args):
    trigger = GetTrigger()

    if trigger == Application():
        if operation == 'deposit':
            tx = GetScriptContainer()
            tx_hash = tx.Hash
            print(tx_hash)

    return False

Here's example 2 which adds a call to Input.GetHash thereby breaking tx.Hash:
from boa.blockchain.vm.Neo.Runtime import GetTrigger
from boa.blockchain.vm.Neo.TriggerType import Application, Verification
from boa.blockchain.vm.System.ExecutionEngine import GetScriptContainer
from boa.blockchain.vm.Neo.Storage import GetContext
from boa.blockchain.vm.Neo.Transaction import GetInputs, GetUnspentCoins
from boa.blockchain.vm.Neo.Input import GetIndex, GetHash

def Main(operation, args):
    trigger = GetTrigger()

    if trigger == Verification():
        tx = GetScriptContainer()

        valid = True

        for input in tx.Inputs:
            hash = GetHash(input)
            print(hash)

        return valid

    elif trigger == Application():
        if operation == 'deposit':
            tx = GetScriptContainer()
            tx_hash = tx.Hash
            print(tx_hash)

    return False

Note: I don't even need to import Transaction.GetHash in this. And I haven't found a way to import it so it doesn't conflict with Input.GetHash.
When I run testinvoke EXAMPLE_2_SCRIPT_HASH deposit [] --attach-gas=1 I get errors like:
[E 180208 03:24:18 ExecutionEngine:852] COULD NOT EXECUTE OP: Invalid list operation b'\x9c' NUMEQUAL
[E 180208 03:24:18 ExecutionEngine:853] Invalid list operation

Originally somehow I think I saw an error related to Input's PrevHash not existing in tx which was my original clue of this issue.


Playlist loading really slow

I have a bunch of playlist around 500-1200 songs in a single text file, and I must say the bot does take a while to start playing the first song. Like 5-15minutes. Anyway to slow down the waiting time?

Same here. And it's not that the cpu maxes out or something or if I'm already playing music and queue a playlist it stutters.

It might be related to how the bot checks all the songs first before playing the playlist? Would be nice if it checks one at a time rather than all of them, so I don't have to wait a long time for it to work.

I think its checking if they are all valid. And then downloads the first song

869 songs takes about 8 minutes to load.

Yes, this is a known issue. The reason this happens is because it loads all songs before playing any. I have a couple ideas that I've been theory-crafting about a good solution (all related to internal things).

Nice. Well if anything reply it here I guess. I love the bot, and it does everything that I need, just the playlist is taking a while to load which is a bit of an issue, besides that good work dude. I love it

Can you see if this issue is resolved as of the latest release (0.0.7)?

Almost instant WOW

Just like loading songs one-by-one, it takes time to load music. However, the recent change made it so that it begins playing from the playlist immediately instead of waiting for the entire list to load before playing.


Bad EER using SpeechBrain pretrained models

I tried to check the EER of the pretrained models from HuggingFace:
Ecapa-TDNN
X-Vectors
I run the verification task on VoxCeleb1 data with the Test Clean split.
I used the inference code, with the  verify_files() method.
I used EER from speechbrain/utils/metric_stats.py with:
from speechbrain.utils.metric_stats import EER
I got around 44% EER, and not 0.69% EER as you published.
I know that others had the same issue, I think that maybe the models you uploaded are not the trained models.

What happens if you use the official script here for the evaluation? It uses the models we have on HuggingFace and I can see an EER=0.69 with that.

I ran speechbrain/recipes/VoxCeleb/SpeakerRec/speaker_verification_cosine.py script, and it worked well.
I guess the reason is that in this script, you are doing a lot more than just computing embeddings and using EER on them:

Convert WAV to features
Normalize features
Convert features to embeddings
Normalize embeddings

After the end of the cycle, you do the same again (the normalization is more stable the second time).
In my approach (which didn't work), I only generated embeddings and then calculated EER.