Error summary list not read out in JAWS (2022)

Discussion in cross-gov Slack: https://ukgovernmentdigital.slack.com/archives/C6DMEH5R6/p1654079614172949
Similar issue: https://github.com/alphagov/govuk-frontend/issues/2072 (no longer applicable in my own testing)
Description of the issue
List of error messages within the error summary is not announced when using JAWS 2022 with Edge or Chrome.
NVDA, VoiceOver on iPad were also tested and they correctly recited the content.
Steps to reproduce the issue

Open this link http://govuk-frontend-review.herokuapp.com/components/error-summary/preview
Observe what JAWS reads out

Example video on JAWS on another service (https://find-a-lost-trn.education.gov.uk/), h2 is read out at 00:36, the messages are not.
https://user-images.githubusercontent.com/1650875/172218411-a408b8d9-8e03-4810-b498-dab166879537.mov
Actual vs expected behaviour
JAWS is only reading out the heading. It should read out the entire summary.
Environment (where applicable)

Operating system: Windows 11
Browser: Chrome and Edge
Browser version: Chrome 102 and Edge 101
GOV.UK Frontend Version: 4.1.0

Hi @tvararu, thanks for the bug report.
Are you able to specify which versions of Chrome and Edge you've reproduced this on? This is useful in case we end up coming back to this later, and there can be differences between browser versions over time.
Thanks!

@querkmachine updated! :+1:

Investigation and analysis
@fofr, @adamliptrot-oc, and I have been looking into this for the past couple of days. Here's what we've found so far.
Investigation
The bug can be observed by opening or refreshing a page containing the error summary, while running JAWS 2022.2204.20 (Trial) with Edge 102 on Windows 10:
https://user-images.githubusercontent.com/1650875/172676846-32a4c6b3-6f98-4b5b-8af8-76e0de5596de.mov
In the first video, JAWS is reading out the following (comments added):
Refreshing page, Loading page
GOV.UK Frontend                             // Page title
Heading level 2 There is a problem          // The first element inside the focussed error summary
Page has 1 region, 1 heading, and 2 links

The user is made aware that there is an error, but cannot determine what is wrong (WCAG 3.3.1 Error identification), without further input.
However, if you keep refreshing the page multiple times, something interesting happens (10 seconds in):
https://user-images.githubusercontent.com/1650875/172677052-58613c85-cf76-47cc-b81d-b95507e3cc24.mov
The first 10 seconds in the second video are three attempts that lead to the same output as in the first video. It's being skipped by pressing left ctrl (which silences JAWS) followed by clicking the browser refresh button with the mouse button. Nothing else is changing in the page between refreshes, and no other keys are being pressed.
On the 4th refresh, the JAWS output is:
Refreshi-                               // JAWS cuts itself off mid-word

Alert!                                  // JAWS has encountered an element with role="alert"
There is a problem                      // The content of the aria-labelledby on the alerting element,
                                        // which is targeting the h2

There is a problem                      // The content inside the alerting element,
                                        // being recited one element at a time, first the h2

The date your passport was issued       // The text of the second element, an anchor link,
must be in the past                     // followed by the full href (very tedious to listen to)
http://govuk-frontend-review.herokuapp.com/components/error-summary/preview#example-error-1
The date your passport was issued       // JAWS seems to repeat the repeat the text of an
must be in the past                     // anchor after reading the href

Enter a postcode, like AA1 1AA          // The text and href of the second link, the final element
http://govuk-frontend-review.herokuapp.com/components/error-summary/preview#example-error-2
Enter a postcode, like AA1 1AA          // JAWS repeating the content of the anchor

GOV.UK Frontend                         // Page title
Heading level 2 There is a problem      // The first element inside the focussed error summary
Page has 1 region, 1 heading, and 2 links

JAWS announced an alert, and then read the full contents of the alert element. This behaviour meets WCAG 3.3.1, but it's inconsistent, as not every refresh triggers it.
Here's what (always) happens when we run the page with JavaScript disabled:
https://user-images.githubusercontent.com/1650875/172677277-d962ab16-18c8-4ea2-ab24-2da7860f3bd5.mov
The JAWS output is:
Refreshi pa-                            // JAWS cuts itself off mid-word, slightly later
Alert!
There is a problem
There is a problem

The date your passport was issued must be in the past
http://govuk-frontend-review.herokuapp.com/components/error-summary/preview#example-error-1
The date your passport was issued must be in the past

Enter a postcode, like AA1 1AA
http://govuk-frontend-review.herokuapp.com/components/error-summary/preview#example-error-2
Enter a postcode, like AA1 1AA

GOV.UK Frontend                         // Page title
GOV.UK Frontend                         // The page title, again
Page has 1 region, 1 heading, and 2 links

With JavaScript disabled, the data-module="govuk-summary" element no longer receives focus when the page loads. JAWS reliably picks up and reads the role="alert", and doesn't read out the h2 after, as the error summary is no longer in focus. This behaviour meets WCAG 3.1.1 at the cost of leaving the user's focus at the top of the page.
Analysis
It seems that .focusing the error summary wrapper div, which has role="alert", is leading to a race condition.
The two possible outcomes of the race are:

The .focus comes first, and "cancels out" the alert behaviour (this happens most of the time in testing);
The role="alert" element is "noticed" first, which leads to the alert being read out in full, followed by the focused element.

Other oddities

When focussing an element, JAWS ignores the aria-labelledby. Instead, it outputs the first child element it finds. This was discovered by @adamliptrot-oc and an example is here https://liptrot.org/demos/error-summary-v2/ (the paragraph is read out, not the h2).
When JAWS finds a role="alert" element, it will read out the entire content, and for links it will read out "text href text." This can get quite verbose with long links and lots of error messages.

Solutions thought of so far
1. Multiple aria-labelledby targets (doesn't work)
The aria-labelledby is linking to the h2, but not to the optional description or to the list of errors. The hypothesis was that if we linked to them, JAWS might read them out when it focusses. An example of this approach is here: https://error-summary-labelledby.herokuapp.com/examples/error-summary-with-one-thing-per-page
However, this does not work: when an element gains focus, JAWS reads out the first child and ignores the aria-labelledby.
2. setTimeout (works, but really hacky)
Adding a short timeout before focus triggers does fix the issue, in limited testing:
// src/govuk/components/error-summary/error-summary.js
ErrorSummary.prototype.init = function () {
  var $module = this.$module
  if (!$module) {
    return
  }

+ setTimeout(() => {
   this.setFocus()
+ }, 300)
  $module.addEventListener('click', this.handleClick.bind(this))
}

This works by deferring the focus event to after the point where JAWS has already encountered the role="alert" element.
However, it doesn't work with a timeout of 0, or a call to requestAnimationFrame to move it to execute in next JavaScript tick. The minimum timeout that worked in testing was somewhere between 100ms to 300ms. JAWS needs a variable amount of time to "catch up" and parse the DOM to the point where it finds the alert element. Because we can't accurately determine how long that is going to take, there isn't a way to make this approach demonstrably consistent.
3. Focussing a wrapper element (seems to work!)
@fofr hypothesised that by separating the element that has role="alert" from the element that is receiving focus, that JAWS would choose deterministically:

+

- {%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %} data-module="govuk-error-summary">

    {{ params.titleHtml | safe if params.titleHtml else params.titleText }}

    {% if params.descriptionHtml or params.descriptionText %}

      {{ params.descriptionHtml | safe if params.descriptionHtml else params.descriptionText }}

    {% endif %}

    {% for item in params.errorList %}

      {% if item.href %}
        {{ item.html | safe if item.html else item.text }}
      {% else %}
        {{ item.html | safe if item.html else item.text }}
      {% endif %}

    {% endfor %}

This seems to work in JAWS, in initial testing:
https://user-images.githubusercontent.com/1650875/172677482-e9c28202-07f2-494d-8a33-a2145f36671b.mov
Here is the JAWS output:
Alert!
There is a problem
There is a problem

The date your passport was issued must be in the past
http://<IP_ADDRESS>:3000/components/error-summary/preview#example-error-1
The date your passport was issued must be in the past

Enter a postcode, like AA1 1AA
http://<IP_ADDRESS>:3000/components/error-summary/preview#example-error-2
Enter a postcode, like AA1 1AA

Blank                                   // Unsure why JAWS says "Blank", to be investigated
Page has 1 region, 1 heading, and 2 links

There are some more things to iron out with this idea:

[ ] Try fixing the "Blank" output with aria-label or aria-labelledby
[ ] Shift around the CSS to fix the yellow focus outline
[ ] Make sure data-disable-auto-focus works as expected
[ ] Test exhaustively in the recommended and other AT in the service manual and check if it introduces regressions
[ ] Try to implement any new CSS/markup/JS changes in a backwards compatible way

4. Removing the .focus JS (unexplored)
The thought here is that in a real service, focus by default should land at the top of the page, near the skip link, which when actioned can move focus to right before the error summary.
I added this in for completeness sake, but I think it would very likely break existing AT, as the .focus was added for a good reason. The role="alert" on its own likely does not work reliably across all AT.
There is also no way to use feature detection, or UA/AT sniffing to conditionally enable it.

@tvararu Thanks a lot for this incredibly thorough investigation! We're going to start experimenting with the solutions you proposed. Without investigating this thoroughly myself, I personally think that the wrapper proposal seems the most robust. Please let us know if you make any further progress.

Have you considered removing the role="alert"?
It's actually not used according to spec. (It's supposed to be used when something changes via JavaScript not when the page reloads.) That was intentional to fix a specific issue in VoiceOver on iOS and TalkBack on Android. See https://github.com/alphagov/govuk_elements/pull/511 for a further explanation.
Removing it would be the more accurate use of it. It's worth rechecking what that would do in VoiceOver on iOS and TalkBack on Android. If that fix isn't needed anymore, you should just remove it.

Initial investigation into removing role="alert"
I had a go at removing role="alert" first as per @selfthinker's suggestion above and found the following results.
Test details
Used the following screen reader/browser combos:

VoiceOver in Chrome
NVDA in Firefox (via AssistivLabs)
JAWS in Edge and Chrome (via AssistivLabs)

Page used to test: https://govuk-frontend-review.herokuapp.com/full-page-examples/passport-details
Results

On VoiceOver and NVDA the error summary behaves as expected with the error summary being focused and read out on a "bad" page submission. When tabbing via both keyboard and screen reader cursor, the first thing I reach is the first error summary link.
On JAWS it consistently doesn't announce the error summary, leading us back to the original issue. See @tvararu's first recording and readout for an example. This is consistent after multiple refreshes, as per @tvararu's method above, which makes me think this solves the race condition but the wrong way. Something I additionally found odd was that when I keyboard tab, it goes to the first link in the error summary but when I screen reader tab it goes to the first error message above the corresponding input.

Next steps

Explore wrapper option
Explore removing .focus() option
Try to understand why JAWS is moving focus to the first question
Consider if there's a way to maintain the removal of role="alert" as it's not being used to spec

I'm going a little off base from what I said I'd do next, however I had a small hypothesis that this might have been a bug in JAWS 2022 as I was surprised that it didn't respond positively to just programatically focusing without the role="alert" being present. I made a quick codepen to test this theory and in every screen reader/browser combo in the service manual, including JAWS in edge, the screen readers all successfully read out the link that we want them to focus on on load.
This makes me think that there's something else wrong with our error summary implementation, possibly to do with how we're making the containing element focusable programatically. I'm going to spend a little more time exploring this and if I don't get anywhere, I'll return to the wrapper solution.

I think I've found a solution 🎉 I can get JAWS and other screen readers to consistently read out the error summary and it's contents on page load by doing the following:

Removing role="alert"
Changing the programatically altered tabindex value on the wrapper via js to 0 instead of -1
Remove the div that contained the error links and error summary copy so that the entire error summary is wrapped in a single parent div

My hypothesis for what happened here is that JAWS 2022 firstly didn't accept us trying to focus a tabindex="-1" element and so refused to read it out, and secondly was only reading one child deep on programatic focus.
I'd like to run this past our team and also assess the consequences of removing that child div where the content of the error summary lives. Overall though I'm feeling positive about this!

Sounds sensible to me @owenatgov, and thanks for looking into this!
Looking at the VFO issue it looks like Steve Faulkner pointed out that there has been a fix merged in a recent version of JAWS. I'll try downloading the latest trial (June) now and see if it behaves differently.

Secondly, the markup change would mean this is a breaking change and therefore we'll need to wait for the next major release to launch this. I've added the v5 milestone pre-emptively and propose we keep this solution ino ur back pocket until we're ready to publish v5.

In theory, this could be shipped as a non-breaking change, by writing a bit of JavaScript in the error summary initialiser. It could identify the structure of the Error Summary and progressively enhance it to the new and better form, by removing attributes and lifting/shifting content. This could be done in a way that is compatible with both new/old HTML.
In practice, such a solution would need a lot of testing, as it could break things in an unexpected way. And regardless, it's unwarranted in this situation if the issue resolves itself in JAWS.
(However, this sounds like a technique that could be useful for other breaking govuk-frontend HTML markup changes)

Secondly, the markup change would mean this is a breaking change and therefore we'll need to wait for the next major release to launch this. I've added the v5 milestone pre-emptively and propose we keep this solution ino ur back pocket until we're ready to publish v5.
I'm very open to further thoughts on this.

If the old markup still works – as in, if users don't make the markup change then the error summary displays the same and functions at least as well as it does now – then we could consider treating it as a 'recommended change', and flagging it in the release notes for the next major version.
There is a slight risk there, as we need to remember to make sure that any changes in 4.x releases work for both the old and new markup, and we don't really have a good way of doing that in the review app at the mo.
We'd want to think it through, but my instinct is that the risk is probably manageable - we're just talking about a wrapper div that would end up doing nothing I think?

The plot thickens.
In trying to replicate this using codepen for that JAWS issue, I stumbled upon an alternative solution that I think is even simpler. By removing the aria-labelledby which currently hooks up to the h2 in the error summary and maintaining the removal of the wrapper div around the potential list items and copy, JAWS and other screen readers announce the error summary and its contents on page load consistently 🙌🏻
This solution makes more sense to me as we were applying a labelledby of just the title so my guess was that JAWS wasn't smart enough to continue looking for the other children in the focusable element once it had read out the labelledby. What I don't understand is why applying tabindex="0" would overwrite this behaviour. I was noticing a lot of repetition from JAWS in my testing, consistent with @tvararu's prior testing, so perhaps it was reading out the labelledby then feeling ok about reading out the contents of the focused element. I wonder if the bug here is something to do with how JAWS interprets children of a programatically focusable element.
To summaries, here are the changes I'm going to make to the error summary code:

Remove role="alert"
Remove the aria-labelledby and it's associated attributes
Remove the div that contained the error links and error summary copy

I'm also going to do the following:

Still prompt the JAWS issue linked above noting that we've had some odd behaviour related to tabindex="-1"
Style the child div in such a way that it accounts for old and new markup, as per @36degrees's recommendation. To this effect I've removed the v5 milestone and this can go into the next available 4.X release.

I'm conscious that there may be some deep behaviour around aria-labelledby that I'm unaware of so if this solution is troubling or confusing to anyone please speak up.

@owenatgov No worries! We've been following intently your updates on the PR :+1:

Am I right in thinking that you/your team have access to the JAWS beta?

I'll ask in wider DfE, I personally don't. I had to use the public JAWS trial in my own videos. Will get back to you on this.

Another update:
I misspoke in my previous update; it is possible to update our version of JAWS through a trick I wasn't aware of (thanks again @36degrees). After doing this, I discovered that my present solution had completely broken.
After starting again, I found that the most appropriate solution, after all, was what was suggested originally: move the role="alert" out of the error summary parent into a child container. This is a shame that we weren't able to remove role="alert" but this solution works well. I've also removed aria-labelledby as I've found this reduces unnecessary verbosity across screen readers ie: some of the multiples of announcements of the h2. My other proposed changes (changing tabindex from 0 to -1, removing the div containing the error summary content body) have made no difference from testing.
It's worth noting that my testing was consistent with problems raised in existing issues outside this one with the error summary on VoiceOver (https://github.com/alphagov/govuk-frontend/issues/2072) and NVDA (https://github.com/alphagov/govuk-frontend/issues/2055).
I've updated the PR and will re-prompt the design system team and the DfE folks for another review.


In HackedPythonVersion, patch sys.version_info

This is required to have pip/pip-tools get the right wheels according to
the project virtualenv python version.
Should completely fix #857, and the likes.
/cc @kennethreitz @erinxocon @nateprewitt @techalchemy

sigh
Note to self: Always re-run your code at least once before the push.

🛬 Landing, thanks @vphilippon!


Create sunday-evening-step-study.yaml

https://github.com/area63aa/area63aa.org/compare/master...Area63:area63aa.org:patch-4#diff-7e778f7cd9e1b88bac108955c86b88489acc23d9393accc9cae7ace3ec6f279a

Can you please add "d2-" to the start of that filename? It's not "required," but helps a lot with organization. The current lack of this across the other files is actually due to a lack of data to fill it in with.
It's also not required to add geo coordinates, and my intention is a yearly cleanup, but since your username suggests you intend to contribute frequently, can you please also take the geo coordinates for this address from any of the other meetings held at this building?
Once those two changes are made, I'll be very happy to click merge on this. :)

Oh ... the checks failed because you have two "address:" lines and the second is formatted incorrectly. If you just delete that line, the build will succeed. (This is actually a bug ...)

Thanks Mike Ill fix those things this morning!


switch statement  default clause condition keyword should be flagged as keyword token

Summary of the new feature/enhancement
In PowerShell ISE and with PSReadLine, the default clause condition keyword of the switch statement receives only 'bareword' treatment, making it hard to spot relative to other bareword conditions.
(PowerShell 7 with custom PSReadLine theme)

(Example shown here with https://github.com/PowerShell/EditorSyntax/pull/156 (which marks the bareword conditions as unquoted strings) and a custom theme in VS Code, with the keyword highlighted)

Proposed technical implementation details (optional)
I would propose a change to Parser.GetCommandArgument() that would mark the token as a keyword when it meets the criteria for being the default clause condition keyword.
I can include a commit to PR https://github.com/PowerShell/PowerShell/pull/10295 that demonstrates this change.

Conceptually, @PowerShell/powershell-committee agrees that this behavioral part of the change is fine. We defer to the Maintainers and Area Experts to review the technical and implementation aspects of the code. (And we expect that they'll mandate you include some tests in your PR as well :) )
Having looked over #10295, we'd prefer that you add your proposed commit to a separate PR.
But hey, thanks for the change. I always appreciate seeing improvements to syntax highlighting.


Login only after multiple attempts | Using Subdomains and PG

Hi,
I am rails newbie and I'm facing a weird issue. I'm using rails 3.2 and devise 3.0
I'm using subdomains and PG's multiple schemas to segregate one account from another .
Users on my system are able to login only after multiple attempts. There is nothing in the log and I'm absolutely clueless. I hope someone can point me in the right direction.
My code is as follows
Application Controller -
  before_filter :setup_schema

  def setup_schema
    if request.subdomain.blank? || request.subdomain == 'www'
      redirect_to "http://www.#{ENV['DOMAIN']}.com"
    else
      @tenant = Account.find_by_name(request.subdomain)
      if @tenant.nil?
        redirect_to "http://www.#{ENV['DOMAIN']}.com"
      else
        ActiveRecord::Base.connection.schema_search_path = "#{@tenant.schema},hstore"
        Delayed::Job.table_name = 'public.delayed_jobs'
      end
    end
  end

Session Store -
XXX::Application.config.session_store :cookie_store, key: '_XXX_session', domain: :all

routes
  devise_for :users, controllers: {registrations: "registrations"}, path_names: { sign_in: "login", sign_out: "logout"}
  as :user do
    get 'users/edit' => 'devise/registrations#edit', as: 'edit_user_registration'
    get 'users/edit_password' => 'devise/registrations#edit_password', as: 'edit_pass_user_registration'
    post "user_create" => "users#create",  as: 'user_create'
  end

  resources :dashboards, only: [:index]

  devise_scope :user do
    constraints(Subdomain) do
      authenticated :user do
        root to: 'dashboards#index'
      end
      unauthenticated :user do
        root to: 'sessions#new'
      end
      root to: 'dashboards#index'
    end
  end

Another issue that I'm facing is -
Lets say I'm logged in 1 subdomain and I'm at root path, ie, subdomain1.XXX.com and then I login with another user in another subdomain in another browser, now when I come to my first subdomain, I get logged out.
However, if I was a some other url eg, subdomain1.XXX.com/projects and then I login with another user in another subdomain in another browser, now when I come to my first subdomain, I DONT get logged out.
Can some point what is it that I'm missing?
I'm missing some key concept or this has to with devise?

Please use the mailing list or StackOverflow for questions/help, where a wider community will be able to help you. We reserve the issues tracker for issues only.


Add stats sending every second

Allows sending stats to metrics client every second.

+1 to the stats. Some of the scaffolding code is above me, though


New CDK version released: v1.78.0

A new version of CDK has been released! :tada:

Version: v1.78.0
Release: https://ift.tt/2W6ZjZb

@mrgrain Please release a new version of @mrgrain/cdk-esbuild

Published<EMAIL_ADDRESS>


Bug: Spawned child process with hardhat-tracer does not exit

What
When I'm spawning a child process to run with the HRE, eg. npx hardhat run someRandomScript.ts, and with the hardhat-tracer imported in the hardhat.config.ts, I get a different behavior than without the tracer module imported. The different behavior is that, with the tracer imported, the child process does not exit.
Steps To Reproduce

Create a file called someRandomScript.ts in a hardhat project:

// someRandomScript.ts
console.log("THIS");

Run with npx hardhat run scripts/thing.ts
Observe the script just hang.
Comment out the console.log
Run with the same command in step 2.
Observe the script exit gracefully.

Versions

<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
Platform
Macbook Pro 2021
Chip: Apple M1 Pro
OS: macOS Ventura 13.3

This is a behaviour of nodejs when async tasks are not completed or get hanged. There are quite a lot of async tasks, I'll look into this issue which one gets hanged.
But if you are blocked by this problem, as a workaround you can add to the end of someRandomScript.ts:
// .. after your code runs:
process.exit() // this will stop the process ignoring any background pending async tasks if any


Empty docs page

What is supposed to be on this page?
https://docs.rootsrated.com/Marketing/agency-access/

@wleklinski do you know anything about this page (what should be on it) or should I check with Jas?

I think the page may have been removed when we clarified our target customer, but the link remains?

That seems possible. Do you think it's reasonable for me to just nuke this page?

We no longer request agency access ... just page access. Can probably nuke. Jordan just lists out steps to a partner rather than referring to docs.


fix: 🧪 tolerate keyofStringsOnly option in TypeScript

Relates to #278

It'll take a bit to test these changes on my project since we are on a very old version of ts-essentials (I don't have AnyRecord or SafeDictionary)
(env-12.20.1) ➜  hyperbase git:(marccelani-backboneRouterRefactor) yarn why ts-essentials
├─ use-composed-ref@npm:1.0.0
│  └─ ts-essentials@npm:2.0.12 (via npm:^2.0.3)
│
└─ use-composed-ref@npm:1.0.0 [d2064]
   └─ ts-essentials@npm:2.0.12 (via npm:^2.0.3)

But what you did seems pretty similar to how I got this working.

I've confirmed that this patch will work for our project. I'd love if you could land this and bump the version.

I've confirmed that this patch will work for our project. I'd love if you could land this and bump the version.

Perfect, thank you for your check!
I will try to include it in the next release


When is the next release?

I am currently preparing freebsd port for cppformat. And have some issue with version 2.0.0, for example it does not install format.cc (what breaks header-only usage of the library), and no cmake config, as well as last fixes important for clang compiler (freebsd is clang-based system) and etc.
So I would like to know when do you plan to do next release, or can you make a new tag like 2.1.0, or 2.0.1. Because tracking hashes is a little bit messy, that is why I would like to have a tag. Thanks.

Cool, thanks for working on this. I can make a minor 2.1 release some time next week with updated CMake files and, possibly, selected fixes from master. BTW which fixes you talking about? Version 2.0 has been tested with Clang (on OS X) so unless an old version of the compiler is used no fixes should be necessary. Most of the recent clang-related commits are only to silence warnings.

Good, thank you. Yes, I meant warnings, like #281. When you have -Wall and/or -Wextra then you cannot have the code clean of warnings using cppformat. Looking forward to the new release.

I've created branch https://github.com/cppformat/cppformat/tree/2.x for the new release. The changes (mostly CMake update) are described in the changelog. AFAICS the code compiles cleanly with clang. This will be a minor release because I haven't included any changes to the main API which will have to wait till the next major one. Let me know if you want to see anything else in this release.

Seems it is working fine. Thank you. I am waiting for a tag to submit package.

Done: https://github.com/cppformat/cppformat/releases/tag/2.0.1


Re-id based on custom zones possible ?

Describe the situation you are working on
I have a use case where I want to track objects with YOLO and a tracker, the use case have a lot of occlusions. I need to add a re-identification module, a delay to not count too much items, etc...
I am currently looking at the advanced features of norfair for my usecase.
I think most of the arguments of the Tracker objects cover my need, but I have one blind spot that I don't see how to do.
I want to add some custom rules to re-id / not re-id based on the zones of the image.
Describe what is it that you need help with
My images are static, the camera is not moving.
I have 2 zones in my images, let's call them zone A and zone B.

I want objects that disappear in zone A to be able to match in zone B
I want objects that disappear in zone B and appear in zone B to never gets matched

I am unsure if this is achievable in norfair, do you have any idea how to do it easily ?

Hello @TomDarmon,
When you're setting up the Tracker, it's necessary to provide your ReID distance function. This function will receive two TrackedObjects: the object you're aiming to match and a potential candidate.
This is the place where you can implement your specific logic. Each TrackedObject contains the attribute last_detection, which holds the most recent detection instance (Detection). If you're using a past_detections_length greater than zero, you'll also have access to past_detections with past_detections_length instances of Detections.
Within these instances, there's an attribute called 'points' that contains the coordinates of each object. Leveraging this data, you can design your function to return 0 if the objects do not meet the criteria defined by your zones.

Ok ok I see thank you !


Move example sketch to an appropriately named folder

The Arduino IDE requires sketches to be located in a folder with the same name as the sketch.
This change will allow the example sketch to be accessed via the File > Examples menu

Please let me know if there's anything I need to do to get this pull request merged.


[FLINK-7393][kinesis connector] Move unit tests that should belong to KinesisConfigUtil from FlinkKinesisConsumerTest to KinesisConfigUtilTest

What is the purpose of the change
Right now, FlinkKinesisConsumerTest has lots of unit tests that actually should belong to KinesisConfigUtil, e.g. all the validateXxxConfiguration()
We need to move those tests out to a new file KinesisConfigUtilTest
Brief change log

Move unit tests that should belong to KinesisConfigUtil from FlinkKinesisConsumerTest to KinesisConfigUtilTest

Verifying this change
This change is a trivial rework / code cleanup without any test coverage.
This change is already covered by existing tests, such as (please describe tests).
Does this pull request potentially affect one of the following parts:
none
Documentation
none

cc @tzulitai

Thanks @bowenli86.
Looks like a only a migration of unit tests, correct? LGTM, will merge this.

@tzulitai yes, only unit tests migration


Error loading tslib helper library.

Occurs when running  npm run build
Error loading tslib helper library.
[!] Error: Package subpath './package.json' is not defined by "exports" in /Users/[username]/Library/Data/useeio.js/node_modules/rollup-plugin-typescript2/node_modules/tslib/package.json

Lakshit and Anubhav fixed the tslib error in the npm build Sept 15, 2024 in the modelearth/useeio.js fork. It was a compatibility issue between rollup-typescript plugin and tslib. On making a few changes to the package.json and tsconfig.json files, they were able to run the build and create dist/useeio.js using npm run build


Continue absorbing cardano-api in Direct.Tx, baby steps -- albeit big baby.

:round_pushpin: Add smart-constructors and utilities to Hydra.Ledger.Cardano

:round_pushpin: Define extra helpers for building transactions in steps.
Co-authored-by: ch1bo<EMAIL_ADDRESS>

:round_pushpin: Make use of the new transaction builder API for 'initTx'
Co-authored-by: ch1bo<EMAIL_ADDRESS>

:round_pushpin: Make use of the transaction builder API for 'commitTx'
Keeping the same strategy as for initTx and leaving the signature untouched. Note that this currently fails because 'unsafeBuildTransaction' throws with 'TxBodyEmptyTxInsCollateral'; looks like cardano-api does this extra verification and requires collateral to be set when creating the transaction... which is unfortunate as we do set the collateral only during transaction balancing.

:round_pushpin: Work around guards of 'makeTransactionBody' to keep the ball rolling :grimacing:
The proper way to fix this (and we'll get there eventually) will be to get the tiny wallet work with a 'TxBuilder' instead of a plain 'CardanoTx', so that 'unsafeBuildTransaction' is only called when the transaction is actually ready to be built. Right now, we do however return full transaction (albeit not passing phase-1 validations...) in order to test their execution. So, having 'initTx', 'commitTx', 'abortTx'... return a 'TxBuilder' is probably what we want (then bypassing the guards only in the relevant test code) but it's a bit too much of a step right now.

@abailly-iohk I'd be tempted to have an AntiCorruption module also factoring out all the fromLedger / toLedger stuff, and have it re-exposed by the Ledger.Cardano one. What do you think?


filter out unformalized names, show hash instead

Resolves #18.
Example of a rendered unformalized name;

The name field is changed but other fields (description, background_image, and URL) are not changed.
{
   "name":"[0x6f02...c08a].eth",
   "description":"Facebook.eth, an ENS name.",
   "attributes":[
      {
         "trait_type":"Created Date",
         "display_type":"date",
         "value":null
      },
      {
         "trait_type":"Registration Date",
         "display_type":"date",
         "value":1628570595000
      },
      {
         "trait_type":"Expiration Date",
         "display_type":"date",
         "value":1660128195000
      }
   ],
   "name_length":12,
   "short_name":null,
   "length":0,
   "url":"https://app.ens.domains/name/Facebook.eth",
   "version":0,
   "background_image":"https://metadata.ens.domains/mainnet/avatar/Facebook.eth",
   "image_url":"https://metadata.ens.domains/mainnet/0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85/0x6f028453ddea055c2bfd6baeffa906ae6954e0bb90083e4b76c86058e9e2c08a/image"
}```


[SPARK-45654][PYTHON] Add Python data source write API

What changes were proposed in this pull request?

This PR adds Python data source write API and DataSourceWriter class datasource.py.
Here is an overview of writer class:
class DataSourceWriter(ABC):
    @abstractmethod
    def write(self, iterator: Iterator[Row]) -> Any:
        ...

    def commit(self, messages: List[Any]) -> None:
        ...

    def abort(self, messages: List[Any]) -> None:
        ...

Why are the changes needed?

To support Python data source write.
Does this PR introduce any user-facing change?

No. This PR alone does not introduce any user-facing change.
How was this patch tested?

Unit test
Was this patch authored or co-authored using generative AI tooling?

No

Merged to master.

@allisonwang-db mind resolving conflicts please?

Merged to master.


[Serialization] Restrict loading swiftmodule files to the SDK that built them

Serialize the SDK canonical name used to build swiftmodule files and use it at deserialization to ensure that a swiftmodule file is loaded only with the same SDK used to build it.
This will report unsupported configurations like:

Installing roots between incompatible SDKs without deleting the swiftmodule files.
Having multiple targets in the same project using different SDKs.
Loading a swiftmodule created with a newer SDK (and stdlib) with an older SDK.

All of these configurations lead to hard to investigate deserialization failures and should be reported early by this new check, before reaching a deserialization failure.
rdar://78048939

@swift-ci Please smoke test

@swift-ci Please test Apple Silicon

The logic to get the SDK name in the frontend wasn't reliable. Trying a different approach where the driver passes the name down instead.
@swift-ci Please smoke test

@swift-ci Please smoke test macOS


sbt play routesImport equivalent

Expected Behavior

My generated ReverseRoutes.scala file should include the line import _root_.extensions.Binders._ but it does not.

Context

I'm looking for the gradle play equivalent of  the snippet below from sbt
...
 .settings(
    routesImport += "extensions.Binders._",
...

Is this feature available in Gradle Play? if not, is there a workaround? I am currently trying to port away from sbt and this is the last stage  🤞🏼

Further to my last comment, it looks like there is a feature in the code to support this:
https://docs.gradle.org/current/dsl/org.gradle.play.tasks.RoutesCompile.html#org.gradle.play.tasks.RoutesCompile:additionalImports
However, having spent some time away from Gradle, I'm struggling to implement this.

Ok, I was too hasty in opening this ticket - the answer is clearly provided on SO
https://stackoverflow.com/questions/44208911/gradle-compileplaybinaryplayroutes-is-not-generating-all-imports


IPFS Desktop UI: Rename weird broken behavior

Describe the bug
When try to rename a file in Files UI after doing it with another file, the UI acts like you are trying to rename the file that you have renamed just before this. The file name field holds the old name of the previous file. And if user acts like not noticing this, something breaks in MFS and later attempts to rename this file fail. If you rename file A to C and then try to rename file B to D, the file name field will be showing name A, if now you cancel and close the dialog, and try renaming again, the name field will show the correct name B and the operation will succeed.
To Reproduce
Steps to reproduce the behavior:

Go to Files UI tab
Click on "..." menu button and choose rename for any file
Type a new name for the file and click Save
Click on "..." menu button and choose Rename for any other file or even for the same file
See the old name of the file just been renamed

Expected behavior
A name of the file being renamed to be shown. Rename to be successful.
Screenshots

Desktop (please complete the following information):

OS: macOS 10.14.6
IPFSDesktop: 0.9.4
WebUI: v2.5.4 Revision 5ece7e2

Hey @rslnx! Thanks for reporting this. Will fix ASAP.


[juce] update Juce to 8.0.4

[x] Changes comply with the maintainer guide.
[x] SHA512s are updated for each updated download.
[x] The "supports" clause reflects platforms that may be fixed by this new version.
[x] Any fixed CI baseline entries are removed from that file.
[x] Any patches that are no longer applied are deleted from the port's directory.
[x] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[x] Only one version is added to each modified port's versions file.

From arm64-windows config log:
-- Configuring juceaide
-- Building juceaide
-- Exporting juceaide
-- Testing juceaide
CMake Error at extras/Build/juceaide/CMakeLists.txt:191 (message):
  Testing juceaide failed:

This port doesn't have an arm windows problem. This port has a cross-build problem.
Upstream tries to reinvoke CMake to build host tools.
The vcpkg port must make available and use the tools from the host triplet instead.

https://github.com/juce-framework/JUCE/blob/51d11a2be6d5c97ccf12b4e5e827006e19f0555a/extras/Build/juceaide/CMakeLists.txt#L33-L36

Thanks for the update!

From arm64-windows config log:
-- Configuring juceaide
-- Building juceaide
-- Exporting juceaide
-- Testing juceaide
CMake Error at extras/Build/juceaide/CMakeLists.txt:191 (message):
  Testing juceaide failed:

This port doesn't have an arm windows problem. This port has a cross-build problem. Upstream tries to reinvoke CMake to build host tools. The vcpkg port must make available and use the tools from the host triplet instead.

@dg0yt How do we fix that?

Thanks for the update!

I merged this despite the problems enumerated above because it didn't appear to be a regression vs. the status quo.

@dg0yt How do we fix that? juceaide is a tool used during plugin generation, so it should work for a full working Juce.

I think JUCE_BUILD_HELPER_TOOLS should be guarded to only run for the host triplet, and non-host triplets need to get those tools from the host triplet rather than attempting to build them.


[Silabs] Delete duplicated examples

Remove the duplicated examples since PR #26633 resolved the need for duplication.

fast-track: delete only.


sqlite in a plugin

I'm trying to get sqlite running in a rust-pdk plugin. I tried rusqlite but it fails to link. I'm assuming this is because it's trying to link the default C sqlite library.
I'm guessing what I need is something like https://github.com/ncruces/go-sqlite3 but for Rust instead of Go. Or maybe I could leverage the official sqlite3 wasm build (https://sqlite.org/wasm/doc/trunk/index.md), or eventually a native Rust implementation of sqlite.
Figured I would check here if there's any prior art before going too deep.

So that's actually what I'm currently doing. The host provides a set of KV functions to the plugins. The problem is I now need to implement KV functionality for every host (I'm targeting at least Golang/JS/Rust) and every KV backend. I'm thinking instead maybe my plugin can provide KV functionality to the host, which would reduce the number of implementations necessary significantly. Obviously storage backend support will be limited to filesystem-based solutions until wasip2 is more common, but in practice I really only need memory, sqlite, and maybe flat file for most of my use cases.

@ncruces any thoughts?

I don't think ncruces/go-sqlite3 is what you're after (it's pretty tied to wazero), and neither are the official Wasm builds (which are meant for browser use).
I dunno much about Rust, tbh, so I can't really help much. But in theory, the amalgamation should build for WASI using wasi-sdk.

Thanks, that's helpful.
Why is that dangerous? Does WASI not provide the same filesystem locking guarantees as native?

WASI does not support file locking at all. The SQLite implementation transparently uses unix-dotfile instead, which is safe, as long as you don't access the same database with some other SQLite library (like the sqlite3 CLI, sqlite3_rsync, Litestream, etc) at the same time.

Why does WASI force unix-dotfile? At the end of the day isn't the WASI host just a process that can get a lock on the file like any other process, and thus work fine with things like Litestream?

Because there's no WASI "system call" (or "host call") for file locks: WASI does not support file locking at all.

Ahh of course. I was thinking about it backwards, wondering why other processes would be able to steal the lock. The problem is WASI can't request a lock in the first place. Thanks!


Matrix type

A proposal for a simple matrix type that supports the following operations:

Construction in a few ways

From iterator of iterators
From flat vector
Using closure that initializes a matrix of MaybeUninit

Indexing by row (each row is a slice)
Mutable and non-mutable iteration (the iterators yield slices, one per row)
Transposition
Cloning

A Box will also store the length of the buffer, which is redundant information since the matrix already stores a height and a width (although you're right that it's less redundant than a Vec).
This code does already use Box for allocation and deallocation, it just stores it in a decomposed format. Like, to allocate a Matrix, we get a Box (somehow) and then extract the pointer to the first element, which we then store. In drop, we construct a Box from the pointer and the buffer size (computed from height and width), which takes care of deallocation.
I'm happy to just store a Box if that's your strong preference, but it would mean redundant information, and all the possible inconsistencies/bugs that come with it.

This is really cool, I expect it to be a big improvement over Vec<Vec<_>>. Contiguous memory FTW.

Hello!
This PR has been open for a long time, please review and update as following:

If this PR is no l longer relevant, close it.
If this PR is relevant but not read, mark it as Draft and make a comment of what else needs to be done.
Fix any issues and get it merged / reviewed by 10/27/2023.

If there's no update by 10/27/2023 this PR will be closed.

Let's close this since it's a central aspect of Plonky3, and doesn't seem worthwhile to rework a bunch of Plonky2 code also to work with matrices.


Use sy-uname instead cl_abap_syst->get_user_name

fixes #5684

and add the class name to https://github.com/abapGit/abapGit/blob/issues-5684/abaplint.json#L146, so we avoid getting any new occurrences into the codebase

one sneaky sneaky left 😄


Added support for editing more metadata in webclient

Added support for editing title, artist, album, albumArtist metadata fields in web client.

A couple notes:

You don't need to do s.get(field, None). dict.get will return None if the key doesn't exist in the dict.
The name of the parameter isn't very good nor is its description. For proper documentation and consistency, use the same as in Mobileclient.change_song_metadata.
You should return the ids of the songs changed for consistency with the previous version of Webclient.change_song_metadata and Mobileclient.change_song_metadata. See here
Your use of the accept_singleton decorator is incorrect. The type should be dict, not basestring. And, the documentation should read Changes the metadata of songs. again for consistency, but also because the accept_singleton decorator allows the method to take both a list of song dictionaries or a single song dictionary. So, saying it only changes metadata for a list of songs is also incorrect.

I also forgot, you will need to re-add any necessary tests and add the method back to the Webclient documentation. See this previous related PR.

Code cleaned up, not sure how to test for metadata changes. In my experiments, it takes time for Google backend to process the data before updated metadata becomes available when requested through the mobile API (30-60 seconds, it looks like, sometimes more). The test for existing album art upload call is still commented out, not sure why.

Code cleaned up, not sure how to test for metadata changes. In my experiments, it takes time for Google backend to process the data before updated metadata becomes available when requested through the mobile API (30-60 seconds, it looks like, sometimes more).

Did you see the tests and comments about them in the linked pull request? Never really used the Webclient much. I'd have to test your changes sometime to see if that's also the case for me.

The test for existing album art upload call is still commented out, not sure why.

All the Webclient tests are commented out because of this. But, there should still be a test for this that can be used locally to check the functionality then commented out when committed until a time when Webclient tests can again be run in CI.

I'm fine with merging this as-is. It looks reasonable enough, and there's no real expectation for the webclient to work anyways (though we should make that clearer to users).
Thanks!


Add sctpmap attribute to grammar

Thanks for this. Looks good. Will merge and publish a minor later today.

Landed in<EMAIL_ADDRESS>

Thank you!


Must specify number types in documentation comment when using StringNumber in GraphQL API responses

Background
Recently, https://github.com/aicers/review-web/issues/208 changed the totalMemory, usedMemory, totalDiskSpace, usedDiskSpace, ping to StringNumber.
The GraphQL schema in SDL format we get looks like below. This means the information of StringNumber's number type is lost. This happened even though we specified the types of totalMemory, usedMemory, totalDiskSpace, usedDiskSpace, ping as StringNumber<u64>, StringNumber<u64>, StringNumber<u64>, StringNumber<u64>, StringNumber<i64>, respectively.
type NodeStatus {
  # The hostname of the node.
  name: String!

  # The average CPU usage in percent.
  cpuUsage: Float

  # Whether review is online or not.
  review: Boolean

  # Whether piglet is online or not.
  piglet: Boolean

  # actual piglet configuration
  pigletConfig: PigletConfig

  # Whether reconverge is online or not.
  reconverge: Boolean

  # actual reconverge configuration
  reconvergeConfig: ReconvergeConfig

  # Whether hog is online or not.
  hog: Boolean

  # actual hog configuration
  hogConfig: HogConfig
  id: ID!
  totalMemory: StringNumber
  usedMemory: StringNumber
  totalDiskSpace: StringNumber
  usedDiskSpace: StringNumber
  ping: StringNumber
}

scalar StringNumber

This calls for the need to correctly specify the number types of the fields that are represented as StringNumber, so that the client side of this GraphQL API can appropriately know into which number type it can parse the fields.
Tasks

Specify the number types of above 5 fields in documentation comment.
Be aware that we should ensure we specify the number types when using StringNumber.

@sophie-cluml
Rustdoc is a tool run by cargo doc that generates HTML documentation from code comments in the target/doc directory. I believe the async-graphql library uses comments in the code to generate the GraphQL playground. Although it might use the rustdoc tool internally, I think it would be clearer to mention just "Rust comments," not "rustdoc" itself, to imply that we should provide detailed descriptions through the GraphQL playground.

@sehkone Thank you for the info. I found that it is called "Documentation comment", so let me use the term. https://doc.rust-lang.org/book/ch14-02-publishing-to-crates-io.html?highlight=rustdoc#making-useful-documentation-comments

Also, you are right about this part:

I believe the async-graphql library uses comments in the code to generate the GraphQL playground.

So, what I think we need is to specify the number type to the existing documentation comment.


Avalonia.Markup.Xaml.XamlLoadException: No precompiled XAML found after Trim enabled

Describe the bug
The program throws the exception after the trim is enabled:

Application:
LauncherX.Avalonia.exe CoreCLR Version: 7.0.923.32018 .NET Version: 7.0.9
Description: The process was terminated due to an unhandled exception. Exception
Info: Avalonia.Markup.Xaml.XamlLoadException: No precompiled XAML found for
avares://LauncherX.Avalonia/Assets/Language/zh_cn.axaml (baseUri:
avares://LauncherX.Avalonia/), make sure to specify x:Class and include your
XAML file as AvaloniaResource at
Avalonia.Markup.Xaml.AvaloniaXamlLoader.Load(IServiceProvider sp, Uri uri, Uri
baseUri) in /_/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoader.cs:line 114 at
Avalonia.Markup.Xaml.Styling.ResourceInclude.get_Loaded() in
/_/src/Markup/Avalonia.Markup.Xaml/Styling/ResourceInclude.cs:line 53 at
Avalonia.Markup.Xaml.Styling.ResourceInclude.Avalonia.Controls.IResourceProvider.AddOwner(IResourceHost
owner) in /_/src/Markup/Avalonia.Markup.Xaml/Styling/ResourceInclude.cs:line 89
at
Avalonia.Controls.ResourceDictionary.<get_MergedDictionaries>b__20_0(IResourceProvider
x) in /_/src/Avalonia.Base/Controls/ResourceDictionary.cs:line 79 at
Avalonia.Collections.AvaloniaListExtensions.<>c__DisplayClass0_0`1.<ForEachItem>b__0(Int32
_, T i) in /_/src/Avalonia.Base/Collections/AvaloniaListExtensions.cs:line 44 at
Avalonia.Collections.AvaloniaListExtensions.<>c__DisplayClass1_0`1.<ForEachItem>g__Add|0(Int32
index, IList items) in
/_/src/Avalonia.Base/Collections/AvaloniaListExtensions.cs:line 81 at
Avalonia.Collections.AvaloniaListExtensions.<>c__DisplayClass1_0`1.<ForEachItem>b__2(Object
_, NotifyCollectionChangedEventArgs e) in
/_/src/Avalonia.Base/Collections/AvaloniaListExtensions.cs:line 98 at
Avalonia.Collections.AvaloniaList`1.NotifyAdd(T item, Int32 index) in
/_/src/Avalonia.Base/Collections/AvaloniaList.cs:line 700 at
Avalonia.Collections.AvaloniaList`1.Add(T item) in
/_/src/Avalonia.Base/Collections/AvaloniaList.cs:line 205 at
LauncherX.Avalonia.UI.Theme.ThemeX.SetLanguage(LauncherLanguage) in
C:\Users\luoli\Documents\GitHub\LauncherX.Avalonia\LauncherX.Avalonia\UI\Theme\ThemeX.axaml.cs:line
107 at
LauncherX.Avalonia.Models.Managers.UIManager.SelectedLauncherLanguageOnOnValueChanged(Object
, EventArgs) in
C:\Users\luoli\Documents\GitHub\LauncherX.Avalonia\LauncherX.Avalonia\Models\Managers\UIManager.cs:line
247 at LauncherX.Avalonia.Models.Managers.UIManager..ctor() in
C:\Users\luoli\Documents\GitHub\LauncherX.Avalonia\LauncherX.Avalonia\Models\Managers\UIManager.cs:line
122 at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments,
Signature sig, Boolean isConstructor) at
System.Reflection.ConstructorInvoker.Invoke(Object obj, IntPtr* args,
BindingFlags invokeAttr) at
System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder
binder, Object[] parameters, CultureInfo culture) at
Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite
constructorCallSite, RuntimeResolverContext context) at
Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite
callSite, TArgument argument) at
Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite
callSite, RuntimeResolverContext context) at
Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite
callSite, TArgument argument) at
Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite
callSite, ServiceProviderEngineScope scope) at
Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Type
serviceType) at
System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2
valueFactory) at
Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type
serviceType, ServiceProviderEngineScope serviceProviderEngineScope) at
Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type
serviceType) at
Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider
provider, Type serviceType) at
Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider
provider) at
LauncherX.Avalonia.Class.Helper.FontHelper.get_FontFamilyFromSettings() in
C:\Users\luoli\Documents\GitHub\LauncherX.Avalonia\LauncherX.Avalonia\Class\Helper\FontHelper.cs:line
15 at LauncherX.Avalonia.App.Initialize() in
C:\Users\luoli\Documents\GitHub\LauncherX.Avalonia\LauncherX.Avalonia\App.axaml.cs:line
141 at Avalonia.AppBuilder.SetupUnsafe() in
/_/src/Avalonia.Controls/AppBuilder.cs:line 321 at Avalonia.AppBuilder.Setup()
in /_/src/Avalonia.Controls/AppBuilder.cs:line 303 at
Avalonia.AppBuilder.SetupWithLifetime(IApplicationLifetime lifetime) in
/_/src/Avalonia.Controls/AppBuilder.cs:line 187 at
Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime(AppBuilder
builder, String[] args, ShutdownMode shutdownMode) in
/_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line
219 at LauncherX.Avalonia.Program.Main(String[]) in
C:\Users\luoli\Documents\GitHub\LauncherX.Avalonia\LauncherX.Avalonia\Program.cs:line
24 at LauncherX.Avalonia.Program.<Main>(String[])

Desktop (please complete the following information):

OS: Windows 11 22H2
Version: 11.0.0

that means normally that any dll you require was trimmed by the compiler. Add the needed dlls to your roots.xml file. Read about trimming issues in NET.

Not a bug, expect behavior. StyleInclude/ResourceInclude from C# code uses reflection to load xaml files. You either need to update trimming rules to ignore these assemblies, or use StyleInclude/ResourceInclude only from XAML cose.

@timunie @maxkatz6  I'm trying to update the ResourcesDictionary during the runtime. Are there any alternative ways to achieve this? If not, what info should be included in the rd.xml?

Not a bug, expect behavior. StyleInclude/ResourceInclude from C# code uses reflection to load xaml files. You either need to update trimming rules to ignore these assemblies, or use StyleInclude/ResourceInclude only from XAML cose.

@maxkatz6 can you give any more details on how to surgically target the XAML loading code? I am using Avalonia.FuncUI in F# and really only have 1 GUI DLL and ignoring the GUI library seems like its gonna make the whole trimming exercise moot.
Also I am new to the details of trimming roots and tried to target the function where the XAML is loaded (App.Initialize) but that was no good and that function isn't even dynamically executed so probably a foreseeable result. Seems I need to somehow target some code generated for the styles file?

@laolarou726

I'm trying to update the ResourcesDictionary during the runtime

You mean, trying to add dynamically resource dictionary to the MergedResources?
Aside from option above, you also can add x:Class to your XAML file. Something like it was also possible in WPF: https://stackoverflow.com/questions/92100/is-it-possible-to-set-code-behind-a-resource-dictionary-in-wpf-for-event-handling
This way you can access your resources by type name, instead of style/resource includes.

Thank you! I ended up trying both options for kicks and the result is basically the same in terms of size. I must misunderstand how trimming works. I kinda expected it to leave all referenced DLLs from a rooted DLL in tact but I guess it doesn't?

I kinda expected it to leave all referenced DLLs from a rooted DLL in tact but I guess it doesn't?

No, TrimmerRootAssembly only leave specified assembly from being trimmed, without rooting references. If you need - you can add more TrimmerRootAssembly per each reference. But normally it's not needed.


My pyserial doesn’t handle unicode strings

./pyjector_controller -d benq "/dev/ttyAMA0" power on
1452431094.313401 INFO send: '*pow=on#\r'
1452431094.315722 DEBUG _send: u'\r'
Traceback (most recent call last):
  File "./pyjector_controller", line 21, in <module>
    command(args.action)
  File "/root/pyjector/pyjector/pyjector.py", line 298, in handler
    return self._command_handler(command, action)
  File "/root/pyjector/pyjector/pyjector.py", line 252, in _command_handler
    self._do_handshake()
  File "/root/pyjector/pyjector/pyjector.py", line 227, in _do_handshake
    self._send(h['send'])
  File "/root/pyjector/pyjector/pyjector.py", line 215, in _send
    self.serial.write(data)
  File "/usr/lib/python2.7/site-packages/serial/serialposix.py", line 491, in write
    d = to_bytes(data)
  File "/usr/lib/python2.7/site-packages/serial/serialutil.py", line 76, in to_bytes
    b.append(item)  # this one handles int and str for our emulation and ints for Python 3.x
TypeError: an integer or string of size 1 is required

When I inserted .encode('ascii') it started working.

looks like
"send": "\r",
from benq.json is not parsed correctly?
does json really support escaped ascii?

I converted the Unicode coming from json.loads to string. Then it works.

If someone wants to contribute a fix for this, it looks like we'll need to deal with Python 2 and 3 support...  I just moved so I won't be able to get to it for a while.


Automated cherry pick of #10492

Cherry pick of #10492 on release-7.0.
/cc  @julmondragon
NONE

Will try to auto merge this PR once all tests and checks are passing. This might take up to an hour.

Trying to auto merge this PR.


[FR] Xgboost training run out of memory in some cases, can we add memory threshold config to prevent OOM ?

One of our customer is facing a issue of Xgboost training run out of memory :
The customer trains xgboost model in distributed way, and when setting xgboost "max_depth" to a high value, the training routine easily runs out of memory.
The issue is, they found, for some of their dataset, using a specific "max_depth" value it works fine, but for some other dataset, using the same  "max_depth"  but OOM occurs,
we hope to set a larger "max_depth" in most cases for better model accuracy, but, we also need to ensure preventing OOM happening, then this is a pain point,
Can we add a param like "xgboost_train_worker_cpu_memory_usage_threshold" and "xgboost_train_worker_GPU_memory_usage_threshold", and xgboost training worker tracks its memory usage, when it finds it exceeds the threshold, then it stop increasing the model depth and finalize the model and then stop training ?
Related ticket: https://github.com/dmlc/xgboost/issues/9342

Same issue with https://github.com/dmlc/xgboost/issues/9342 I'm looking into it, might take some time.


Properly handle (and test) exists for tombstones

Coverage remained the same at 100.0% when pulling 0e87818400fa06f0db9f6a756c73640932bd365f on fix-tombstones into ba0587c1a0699280f5819a2a104921ac58e41145 on master.


YARN-10693. Add document for YARN-10623 auto refresh queue conf in CS…

…. Contributed by Qi Zhu.
NOTICE
Please create an issue in ASF JIRA before opening a pull request,
and you need to set the title of the pull request which starts with
the corresponding JIRA issue number. (e.g. HADOOP-XXXXX. Fix a typo in YYY.)
For more details, please see https://cwiki.apache.org/confluence/display/HADOOP/How+To+Contribute

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Logfile
Comment

+0 :ok:
reexec
0m 59s

Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s

No case conflicting files found.

+0 :ok:
codespell
0m  0s

codespell was not available.

+0 :ok:
markdownlint
0m  0s

markdownlint was not available.

+1 :green_heart:
@author
0m  0s

The patch does not contain any @author tags.

_ trunk Compile Tests _

+1 :green_heart:
mvninstall
33m 55s

trunk passed

+1 :green_heart:
mvnsite
0m 27s

trunk passed

+1 :green_heart:
shadedclient
49m 27s

branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
0m 14s

the patch passed

+1 :green_heart:
blanks
0m  0s

The patch has no blanks issues.

+1 :green_heart:
mvnsite
0m 18s

the patch passed

+1 :green_heart:
shadedclient
16m 12s

patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
asflicense
0m 35s

The patch does not generate ASF License warnings.

69m 12s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3279/1/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/3279

Optional Tests
dupname asflicense mvnsite codespell markdownlint

uname
Linux 5d579bc7992c 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/bin/hadoop.sh

git revision
trunk / 5db46366c8f8e125341db8e5cc6084c3432e906a

Max. process+thread count
544 (vs. ulimit of 5500)

modules
C: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site U: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site

Console output
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3279/1/console

versions
git=2.25.1 maven=3.6.3

Powered by
Apache Yetus 0.14.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.

Thanks @szilard-nemeth for review, address your suggestions in latest PR.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Logfile
Comment

+0 :ok:
reexec
0m 39s

Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s

No case conflicting files found.

+0 :ok:
codespell
0m  0s

codespell was not available.

+0 :ok:
markdownlint
0m  0s

markdownlint was not available.

+1 :green_heart:
@author
0m  0s

The patch does not contain any @author tags.

_ trunk Compile Tests _

+1 :green_heart:
mvninstall
31m 46s

trunk passed

+1 :green_heart:
mvnsite
0m 30s

trunk passed

+1 :green_heart:
shadedclient
46m 44s

branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
0m 12s

the patch passed

+1 :green_heart:
blanks
0m  0s

The patch has no blanks issues.

+1 :green_heart:
mvnsite
0m 19s

the patch passed

+1 :green_heart:
shadedclient
13m 41s

patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
asflicense
0m 33s

The patch does not generate ASF License warnings.

63m 33s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3279/2/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/3279

Optional Tests
dupname asflicense mvnsite codespell markdownlint

uname
Linux 9ab4659e6d98 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/bin/hadoop.sh

git revision
trunk / 4e1fec3ab995b3ee385f33d3df0d170206d2a727

Max. process+thread count
555 (vs. ulimit of 5500)

modules
C: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site U: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site

Console output
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3279/2/console

versions
git=2.25.1 maven=3.6.3

Powered by
Apache Yetus 0.14.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Logfile
Comment

+0 :ok:
reexec
0m 46s

Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s

No case conflicting files found.

+0 :ok:
codespell
0m  0s

codespell was not available.

+0 :ok:
markdownlint
0m  0s

markdownlint was not available.

+1 :green_heart:
@author
0m  0s

The patch does not contain any @author tags.

_ trunk Compile Tests _

+1 :green_heart:
mvninstall
31m 45s

trunk passed

+1 :green_heart:
mvnsite
0m 30s

trunk passed

+1 :green_heart:
shadedclient
45m 50s

branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
0m 14s

the patch passed

+1 :green_heart:
blanks
0m  0s

The patch has no blanks issues.

+1 :green_heart:
mvnsite
0m 19s

the patch passed

+1 :green_heart:
shadedclient
13m 25s

patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
asflicense
0m 34s

The patch does not generate ASF License warnings.

63m  4s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3279/3/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/3279

Optional Tests
dupname asflicense mvnsite codespell markdownlint

uname
Linux e743abf8985f 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/bin/hadoop.sh

git revision
trunk / c665fb98d2bb0d6d04a3499ec7fc2aff0a651233

Max. process+thread count
719 (vs. ulimit of 5500)

modules
C: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site U: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site

Console output
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3279/3/console

versions
git=2.25.1 maven=3.6.3

Powered by
Apache Yetus 0.14.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Logfile
Comment

+0 :ok:
reexec
0m 59s

Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s

No case conflicting files found.

+0 :ok:
codespell
0m  0s

codespell was not available.

+0 :ok:
markdownlint
0m  1s

markdownlint was not available.

+1 :green_heart:
@author
0m  0s

The patch does not contain any @author tags.

_ trunk Compile Tests _

+1 :green_heart:
mvninstall
31m  2s

trunk passed

+1 :green_heart:
mvnsite
0m 30s

trunk passed

+1 :green_heart:
shadedclient
45m 28s

branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
0m 13s

the patch passed

+1 :green_heart:
blanks
0m  0s

The patch has no blanks issues.

+1 :green_heart:
mvnsite
0m 19s

the patch passed

+1 :green_heart:
shadedclient
13m 39s

patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
asflicense
0m 35s

The patch does not generate ASF License warnings.

62m 33s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3279/4/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/3279

Optional Tests
dupname asflicense mvnsite codespell markdownlint

uname
Linux c6454e013f25 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/bin/hadoop.sh

git revision
trunk / c665fb98d2bb0d6d04a3499ec7fc2aff0a651233

Max. process+thread count
607 (vs. ulimit of 5500)

modules
C: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site U: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site

Console output
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3279/4/console

versions
git=2.25.1 maven=3.6.3

Powered by
Apache Yetus 0.14.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.

Thanks @zhuqi-lucas for working on this.
Latest state looks good to me, committed to trunk.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Logfile
Comment

+0 :ok:
reexec
0m 42s

Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s

No case conflicting files found.

+0 :ok:
codespell
0m  0s

codespell was not available.

+0 :ok:
markdownlint
0m  0s

markdownlint was not available.

+1 :green_heart:
@author
0m  0s

The patch does not contain any @author tags.

_ trunk Compile Tests _

+1 :green_heart:
mvninstall
29m 50s

trunk passed

+1 :green_heart:
mvnsite
0m 29s

trunk passed

+1 :green_heart:
shadedclient
43m 53s

branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
0m 15s

the patch passed

+1 :green_heart:
blanks
0m  0s

The patch has no blanks issues.

+1 :green_heart:
mvnsite
0m 19s

the patch passed

+1 :green_heart:
shadedclient
13m 20s

patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
asflicense
0m 35s

The patch does not generate ASF License warnings.

60m 26s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3279/5/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/3279

Optional Tests
dupname asflicense mvnsite codespell markdownlint

uname
Linux f9cf75970ee2 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/bin/hadoop.sh

git revision
trunk / f205f58a8b91b2637831863dd756015eb9d4994d

Max. process+thread count
726 (vs. ulimit of 5500)

modules
C: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site U: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site

Console output
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3279/5/console

versions
git=2.25.1 maven=3.6.3

Powered by
Apache Yetus 0.14.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.


Bump to v4.0.1

What

Why

Test Plan

✅ | ❌ I've added unit tests for this change.
✅ | ❌ The reviewer should manually test the changes in this PR.

Demo

How

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#280  👈
#279
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @devinmorgan and the rest of your teammates on  Graphite

Merge activity

Jun 20, 4:28 PM EDT: Graphite rebased this pull request as part of a merge.


fix(chat): fix share accepting (Issue #1281)

Description:
Fix share accepting
Issues:

#1281

Checklist:

[x] the pull request name complies with Conventional Commits
[x] the pull request name starts with fix(<scope>):, feat(<scope>):, feature(<scope>):, chore(<scope>):, hotfix(<scope>): or e2e(<scope>):. If contains breaking changes then the pull request name must start with fix(<scope>)!:, feat(<scope>)!:, feature(<scope>)!:, chore(<scope>)!:, hotfix(<scope>)!: or e2e(<scope>)!: where <scope> is name of affected project: chat, chat-e2e, overlay, shared, sandbox-overlay, etc.
[x] the pull request name ends with (Issue #<TICKET_ID>) (comma-separated list of issues)
[x] I confirm that do not share any confidential information like API keys or any other secrets and private URLs

/deploy-review


Netbox UI status and LLDP pages are not showing up, the API works fine

Issue type
[ ] Bug report
Environment

Python version:  3.5.2
NetBox version:  v2.3.3

Description
I am able to query the device status details via the API call:
http://sc-netbox-test-01/api/dcim/devices/402/napalm/?method=get_facts
But on the UI:
http://sc-netbox-test-01/dcim/devices/402/status/
I get the error:
{"detail":"Error connecting to the device at *****: "}
I checked this on a Cisco Nexus device (napalm driver: nxos_ssh)
Here is my napalm config:
NAPALM_USERNAME = ''
NAPALM_PASSWORD = ''
NAPALM_TIMEOUT = 60
NAPALM_ARGS = {
'secret': NAPALM_PASSWORD,
}
Similarly, for LLDP Neighbors, there is no error, but it does not show up any data. But the API call works fine: http://sc-netbox-test-01/api/dcim/devices/402/napalm/?method=get_lldp_neighbours
The configuration tab opens up fine though.

I get the error:
{"detail":"Error connecting to the device at *****: "}

This indicates that either NetBox cannot reach the device, or there is an issue with the NAPALM driver. (Neither of these can be addressed in NetBox.)

Similarly, for LLDP Neighbors, there is no error, but it does not show up any data.

LLDP neighbors will only display if your device's interfaces are correctly named. You'll need to post the list of configured interfaces as well as the full API response (not a link).

I think I understood the problem about the LLDP neighbors:
when I do a "show lldp neighbors", the interfaces are listed as like: "Eth1/50", but in the "show interface" command the interface name is like "Ethernet1/50".
Is there anything netbox can do to fix this?
Coming to the netbox status page, if there was an issue with connectivity to the device or the NAPALM driver, even the api page should not work, right?

when I do a "show lldp neighbors", the interfaces are listed as like: "Eth1/50", but in the "show interface" command the interface name is like "Ethernet1/50".

You'll need to rename the interfaces as you have them defined in NetBox so that they match what the device is reporting. This can be scripted out in the shell to rename everything automatically.

For some reason mine is trying to browse to the device and not ssh.


Bugs/nathan/206

fixes #206 by refreshing after registering a patient
also removes the extra chevron that appeared in the patient visit dropdown in create consultation

I would say that both methods are fine. I think the chevron button icon looks better but should prob encapsulate the dropdown into a styled component then

The dropdowns across the webapp all seem to be different so i'm just gonna leave it hor


Enable native support + ADB authentication for Fire TV

Description:
Related issue (if applicable): fixes #13482
Pull request in home-assistant.io with documentation (if applicable): home-assistant/home-assistant.io#7062
Forum thread: https://community.home-assistant.io/t/native-support-for-fire-tv/64448
Example entry for configuration.yaml (if applicable):
# Example configuration.yaml entry
media_player:
  # a device that does not require ADB authentication
  - platform: firetv
    name: Fire TV 1
    host: <IP_ADDRESS>

  # a device that does require ADB authentication
  - platform: firetv
    name: Fire TV 2
    host: <IP_ADDRESS>
    adbkey: "/config/android/adbkey"

  # a device for which getting the current app (source) and the running apps (sources) cause issues
  - platform: firetv
    name: Fire TV 3
    host: <IP_ADDRESS>
    get_source: false
    get_sources: false

If user exposed functionality or configuration variables are added/changed:

[x] Documentation added/updated in home-assistant.io

If the code communicates with devices, web services, or third-party tools:

[x] New dependencies have been added to the REQUIREMENTS variable ([example][ex-requir]).
[x] New dependencies are only imported inside functions that use them ([example][ex-import]).
[x] New or updated dependencies have been added to requirements_all.txt by running script/gen_requirements_all.py.
[ ] New files were added to .coveragerc.

Breaking Changes (short version)
The host and port configuration variables now refer to the Fire TV device itself, whereas before they referred to the firetv server running in a Python 2 environment.
Breaking Changes (longer version)
Previously, the Fire TV component required the user to run a firetv server in a Python 2 environment, and Home Assistant would poll that server for information about the Fire TV device(s).  In this setup, the host and port configuration variables referred to the firetv server.
Recent updates to the firetv and adb libraries have enabled the firetv package to run in a Python 3 environment.  In this update, Fire TV devices are monitored and controlled directly by Home Assistant itself -- no third party Python 2 firetv server required!  Accordingly, the host and port configuration variables now refer to the Fire TV device itself.
Furthermore, this update provides support for ADB authentication, which nearly all Fire TV devices now require.  To enable ADB authentication, the user must follow the instructions in https://github.com/home-assistant/home-assistant.io/pull/7062 and add the adbkey configuration variable.

I believe this needs a "breaking-change" label, since the user's configuration will need to be updated.

So I guess this PR is just waiting for packages to be published on pypi.  Aside from that, are there any other changes that need to be made?

OK, so the lint and pylint tests aren't passing.  Here is what I saw in the test logs that looks important.  Advice on how to pass these tests would be appreciated.
lint
******* ERROR
requirements_all.txt is not up to date
Please run script/gen_requirements_all.py
ERROR: InvocationError for command '/home/travis/build/home-assistant/home-assistant/.tox/lint/bin/python script/gen_requirements_all.py validate' (exited with code 1)

When I ran python script/gen_requirements_all.py on my machine it made a bunch of changes to the requirements_all.txt and requirements_test.txt files, but it didn't add anything about the adb-homeassistant or firetv packages.  I'm not sure what the problem is here...
pylint
************* Module homeassistant.components.media_player.firetv
homeassistant/components/media_player/firetv.py:64:11: W0212: Access to a protected member _adb of a client class (protected-access)
homeassistant/components/media_player/firetv.py:64:11: W0212: Access to a protected member _firetv of a client class (protected-access)
homeassistant/components/media_player/firetv.py:115:8: E0611: No name 'FireTV' in module 'firetv' (no-name-in-module)
homeassistant/components/media_player/firetv.py:224:8: W0702: No exception type(s) specified (bare-except)
homeassistant/components/media_player/firetv.py:162:19: W0212: Access to a protected member _adb of a client class (protected-access)
homeassistant/components/media_player/firetv.py:171:21: W0212: Access to a protected member _screen_on of a client class (protected-access)
homeassistant/components/media_player/firetv.py:177:21: W0212: Access to a protected member _awake of a client class (protected-access)
homeassistant/components/media_player/firetv.py:209:25: W0212: Access to a protected member _wake_lock of a client class (protected-access)
homeassistant/components/media_player/firetv.py:217:21: W0212: Access to a protected member _wake_lock of a client class (protected-access)
homeassistant/components/media_player/firetv.py:225:12: W1201: Specify string format arguments as logging function parameters (logging-not-lazy)
homeassistant/components/media_player/firetv.py:227:12: W0212: Access to a protected member _adb of a client class (protected-access)
------------------------------------
Your code has been rated at 10.00/10

The errors are:

W0212: Access to a protected member _adb of a client class (protected-access)

I could have pylint ignore this error

E0611: No name 'FireTV' in module 'firetv' (no-name-in-module)

It thinks it's importing itself...

W0702: No exception type(s) specified (bare-except)

I did this as a catch-all

W1201: Specify string format arguments as logging function parameters (logging-not-lazy)

I think that's a false positive

@rytilahti, please let me know what you'd like me to change so that I can get this PR approved.

Looking at the requirements.txt diff, there are lots of unwanted changes there, so that's why it is complaining.

Looking at the requirements.txt diff, there are lots of unwanted changes there, so that's why it is complaining.

@rytilahti, I don't know what I'm doing wrong, but whenever I run python script/gen_requirements_all.py from the root folder of the repo, it produces files that have tons of differences from those in the dev branch.  I ended up overwriting these files with the current versions from the dev branch.

@MartinHjelmare I'm not sure how to make async work, so I simply removed the time.sleep command.  Are there any further changes you'd like me to make?

Any updates? Changes to be made?

If firetv 1.0.7 becomes available on pypi, the build will pass.  Would you then be willing to merge this PR?

I switched from using a boolean to using threading.Lock().  If everything looks good now, then I'll request that my PR for firetv 1.0.7 gets merged.  Does anything else need to be changed?

Is it ready to be merged once firetv 1.0.7 is released?

@MartinHjelmare is this ready to be merged once firetv 1.0.7 gets released on pypi?

I think so. :+1:

I've restarted the failed job.

The build passed! Can we merge this PR?

Hi - sorry if this is the wrong place to put this, but I can't quite get this component to work with my setup. I've installed adb by running apt-get install android-tools-adb on my HASS server. Then, I connected using adb connect [ip] to the FireTV, which worked flawlessly. Then, after configuring the component (and setting the adbkey path), I get the following errors:
16:27 components/media_player/firetv.py (ERROR)

Couldn't connect to host: [ip]:5555, error: Connection reset by peer
16:27 components/media_player/firetv.py (WARNING)

I'm running version 0.83.3. I've already checked the permissions on the key file and tried starting/stopping the adb server manually by running adb kill-server or adb connecting again. Interestingly, if I'm not mistaken, it sometimes, for a brief moment, seems to work:

Thanks for your help, and again, sorry if this isn't the right place.


Implement caching between adapter and 3scale backend

We need to be able to reduce request/response time between Mixer and our adapter.
The adapter currently calls out to 3scale backend to authenticate each request. We should be able to fetch limits from 3scale initial and make authorisation decisions within the adapter to reduce a network hop and load on 3scale platform.
We need to create a caching implementation that makes this possible. We should make the cache configurable so that it can support additional use cases (eg remote shared cache) going forward.

[x] Bring in 3scale backend client which supports rate limit extensions as a dependency
[x] Abstract out any istio dependencies from the current backend integration to make the component reusable
[x] Benchmark some candidates that we can use as data structure #66
[x] Implement cache as required (add a simple design doc for this) #59
[x] Split out auth and reporting functionality to allow us to report in batches

The bulk of the work here (implementation) is being done in #59
Benchmarking is a WIP and lives on #66

Closed by #134


[BUG] non abstract class BottomNavigationBarBase doesnt implement members

Before start:

Make sure to check the demo app(s) for sample usage
Make sure to check the existing issues in this repository
If the demo apps cannot help and there is no issue for your problem, tell us about it

Which platform(s) does your issue occur on?

Android

What type of device?

Emulator
[ ] Device

Please, provide the following version numbers that your issue occurs with:

CLI: 6
Cross-platform modules:
"@types/node": "~7.0.5",   "tns-platform-declarations": "next"
Runtime(s):  tns run android and tns build android
Plugin(s): "@angular/animations": "~8.0.0",
"@angular/common": "~8.0.0",
"@angular/compiler": "~8.0.0",
"@angular/core": "~8.0.0",
"@angular/forms": "~8.0.0",
"@angular/http": "~8.0.0-beta.10",
"@angular/platform-browser": "~8.0.0",
"@angular/platform-browser-dynamic": "~8.0.0",
"@angular/router": "~8.0.0",
"@types/node": "^12.6.8",
"cheerio-without-node-native": "^0.20.2",
"htmlparser2-without-node-native": "^3.9.2",
"nativescript-advanced-webview": "^3.0.2",
"nativescript-angular": "~8.0.0",
"nativescript-bottom-navigation": "^2.0.2",
"nativescript-linearprogressbar": "^1.0.4",
"nativescript-local-notifications": "^4.0.1",
"nativescript-permissions": "^1.3.6",
"nativescript-theme-core": "~1.0.4",
"reflect-metadata": "~0.1.12",
"rxjs": "~6.5.0",
"tns-core-modules": "^6.0.6",
"zone.js": "~0.9.1"

Please, tell us how to recreate the issue in as much detail as possible.
Describe the steps to reproduce the behavior:
Followed instructions in demo where i tried to change tabs in order to navigate between different pages
Is there any code involved?
`@ViewChild('bottomNavigationBar', { read: ElementRef, static: false })
private _bottomNavigationBar: ElementRef;
onbottomNavigationBarLoaded(): void {
const bottomNavigationBar = this._bottomNavigationBar.nativeElement;
bottomNavigationBar.showBadge(1);
bottomNavigationBar.showBadge(2, 4);
}
onBottomNavigationTabSelected(args:TabSelectedEventData):void{
switch (args.newIndex){
case 0:
this.router.navigate(["home"],{
transition:{
name:"slideRight",
duration:100,
curve:"linear"
},
queryParams: {
searchQuery:this.searchQuery
}});
break;
case 1:
this.routerExtensions.backToPreviousPage();
break;
default:
break;
}
}
onBottomNavigationTabPressed(args: TabPressedEventData): void {
switch (args.index){
case 0:
this.router.navigate(["home"],{
transition:{
name:"slideRight",
duration:100,
curve:"linear"
},
queryParams: {
searchQuery:this.searchQuery
}});
break;
case 1:
this.routerExtensions.backToPreviousPage();
break;
default:
break;
}
}
onBottomNavigationTabReselected(args: TabReselectedEventData): void {
switch (args.index){
case 0:
this.router.navigate(["home"],{
transition:{
name:"slideRight",
duration:100,
curve:"linear"
},
queryParams: {
searchQuery:this.searchQuery
}});
break;
case 1:
this.routerExtensions.backToPreviousPage();
break;
default:
break;
}
}`
The cause of errors:
ERROR in node_modules/nativescript-bottom-navigation/index.d.ts(14,22): errorember 'createTabs' from class 'BottomNavigationBarBase'. node_modules/nativescript-bottom-navigation/index.d.ts(14,22): error TS2515: lectTabNative' from class 'BottomNavigationBarBase'. node_modules/nativescript-bottom-navigation/index.d.ts(53,22): error TS2515: tNativeIcon' from class 'BottomNavigationTabBase'.
https://github.com/johnny-stevie/ytDownloader

Thanks for reporting this issue was a typings error, the fix is in the version 2.0.3 that will be available in a couple of minutes 👍

Hello @henrychavez i updated the plugin and I get two main errors, however they dont stop the app weidly:
1.whenever i go to a page with two bottom tabs
ERROR TypeError: Cannot read property 'nativeElement' of undefined JS: ERROR CONTEXT { JS:   "view": { JS:     "def": { JS:       "nodeFlags": 704823297, JS:       "rootNodeFlags": 704643073, JS:       "nodeMatchedQueries": 0, JS:       "flags": 0, JS:       "nodes": [ JS:         { JS:           "nodeIndex": 0, JS:           "parent": null, JS:           "renderParent": null, JS:           "bindingIndex": 0, JS:           "outputIndex": 0, JS:           "checkIndex": -1, JS:           "flags": 671088640, JS:           "childFlags": 0, JS:           "directChildFlags": 0, JS:           "childMatchedQueries": 0, JS:           "ngContentIndex": -1, JS:           "matchedQueries": {}, JS:           "matchedQueryIds": 0, JS:           "references": {}, JS:           "childCount": 0, JS:           "bindings": [], JS:           "bindingFlags": 0, JS:           "outputs": [], JS:           "element": null, JS:           "provider": null, JS:           "text": null, JS:           "query": { JS:             "id": 1, JS:             "filterId": 2, JS:             "bindings": [ JS:               { JS:                 "propName": "_bottomNavigationBar", JS:                 "bindingType": 0 JS:               } JS:             ] JS:           },...
2.whenever I start the app
ERROR in node_modules/nativescript-bottom-navigation/index.d.ts(21,3): error TS2416: Property 'activeColor' in type 'BottomNavigationBar' is not assignable to the same property in base type 'BottomNavigationBarBase'.   Type 'string' is not assignable to type 'Color'. node_modules/nativescript-bottom-navigation/index.d.ts(22,3): error TS2416: Property 'inactiveColor' in type 'BottomNavigationBar' is not assignable to the same property in base type 'BottomNavigationBarBase'.   Type 'string' is not assignable to type 'Color'. node_modules/nativescript-bottom-navigation/index.d.ts(23,20): error TS2304: Cannot find name 'Color'. node_modules/nativescript-bottom-navigation/index.d.ts(46,22): error TS2304: Cannot find name 'EventData'
I think this is easily fixed because you forgot to import the Color and Event Data libs, but I don't know about the active and inactive Color error. Any advice?


Add ichunked function

Please review. Maybe this function will be helpful

Unfortunately, this implementation has an issue with chunk sizes that evenly divide the iterable:
>>> list(list(c) for c in ichunked(range(4), 4))
2: [[0, 1, 2, 3], []]

So I think I'll probably close out this PR. However, I'm pretty convinced that splitting an iterator into smaller iterators (not lists) is a nice thing to have, so I'll open an issue about this.


fix: replace axios with fetch

Changes

replace axios with fetch after upgrading broke the extension

#288  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @jsalaber and the rest of your teammates on  Graphite