PetKit Error 97: App is out of date, please upgrade

Hi, i’ve encountered an error recently without changing anything in HomeAssistant. Is it just me or the Petkit app has been upgraded and now isn’t working for everyone?
Logger: custom_components.petkit
Source: custom_components/petkit/util.py:48
integration: PetKit (documentation, issues)
First occurred: 09:21:23 (1 occurrences)
Last logged: 09:21:23
Unknown PetKit Error: PetKit Error 97: App is out of date, please upgrade

Same issue here

Same here

Same here

Yes unfortunatelly i'm facing the same problem

same here

Indeed, the same issue

Same issue

Same

Hi everyone, got the very same error myself as well, since this morning
This error originated from a custom integration.
Logger: custom_components.petkit
Source: helpers/update_coordinator.py:386
integration: PetKit (documentation, issues)
First occurred: 08:49:59 (1 occurrences)
Last logged: 08:49:59
Error fetching petkit data: PetKit Error 97: App is out of date, please upgrade

Same error here

I also have this issue since today…

Same here

Yes, same error this morning

Same since 04/11/2024 12:22 UTC

Same here This morning it started at 8am UTC

Hhmm it doesn’t seem to fix for me, do others have the same issue?

Hhmm it doesn’t seem to fix for me, do others have the same issue?

It does work for me. Are you sure you installed .12 with the hotfix? I had to manually reload HACS to find the newest version.

Hhmm it doesn’t seem to fix for me, do others have the same issue?

It does work for me. Are you sure you installed .12 with the hotfix? I had to manually reload HACS to find the newest version.
And many thanks Robert for your lightning fast response!

Yeah got .12 running, indeed needed to refresh HACS manually.

Same here, no device under my account.

Same here:
Logger: custom_components.petkit
Source: custom_components/petkit/util.py:57
integration: petkit ([documentation](https://github.com/RobertD502/home-assistant-petkit/blob/main/README.md), [issues](https://github.com/RobertD502/home-assistant-petkit/issues))
First occurred: 4:53:30 PM (5 occurrences)
Last logged: 5:09:18 PM

Could not retrieve any devices from PetKit servers

Are you using the main account for the integration? One of the API changes requires sending a group id in the devices requests which is by default the user ID. This is likely where the issue is.

I have the same Problem.

I've a main account for HomeAssistant that owns all the devices and have a private account that is invited for administration via the App

I've a main account for HomeAssistant that owns all the devices and have a private account that is invited for administration via the App

I got exactly the same

Will be fixed. It's a groupId issue.

FYI i updated to v0.1.12. integration was always connected via a secondary account and the Petkit Freshelements Mini Pro started working again after update and restart

Are you using the main account for the integration? One of the API changes requires sending a group id in the devices requests which is by default the user ID. This is likely where the issue is.

I only have one main account (I don't use Petkit app on the phone, after adding it to HA).

Unfortunately It doesn't fix it for me.
I deleted the integration out of desperation and now when i try to add it it always shows 'No devices found on account'
I only use a single account and i have previously logged out of the Petkit app before trying to add it.
I also have deleted and installed the hot fix version of the integration and still displays the  same message when trying to add it

Ive still problems... it says the account doesnt have any devices. But i tried it with the main (which i used before) and with the secondary account which i use to look into the app.
My login is at Germany

Same situation as @lasry1 and @ITElite22 — "No devices found on account" when trying to add the integration. My country is also Germany.

Origin of the issue is identified, @RobertD502 will provide a fix soon, nothing related to Germany ;-)

I deleted the integration out of desperation and now when i try to add it it always shows 'No devices found on account'

I am having the same issue.  The latest update doesn't resolve my issue.  I am using the primary account by the way.

Origin of the issue is identified, @RobertD502 will provide a fix soon, nothing related to Germany ;-)

I am not sure I understand your response.  Are you saying that the current issues not resolved by the fix 3 hours ago, is a regional issue?  As I am in the United States, and I am still having issues.

I had the same issue, and all resolved with the hotfix.

Origin of the issue is identified, @RobertD502 will provide a fix soon, nothing related to Germany ;-)

I am not sure I understand your response. Are you saying that the current issues not resolved by the fix 3 hours ago, is a regional issue? As I am in the United States, and I am still having issues.

The fix fixed the original issue linked to the App version, which was "out of date"
The one you are referring to is that the device list is empty, but this is being fixed, just stay tuned

<IP_ADDRESS> has been released and should end today's saga

For posterity's sake, here's some logging...
2024-11-04 14:03:31.602 DEBUG (MainThread) [custom_components.petkit] Found the following PetKit devices/pets: PetKitData(user_id='REDACTED', feeders={}, litter_boxes={}, water_fountains={}, pets={}, purifiers={})
2024-11-04 14:03:31.602 DEBUG (MainThread) [custom_components.petkit] Finished fetching petkit data in 0.602 seconds (success: True)

My cats didn't get fed this morning, my bad. I'm sitting down right now to setup some unavailable entity notifications. Seems like a good thing to do while the kind and dapper @RobertD502 volunteers their own personal time to figure out a fix.
Thanks Dr. Drinovac!
PS, if you're handy with a soldering iron there is an ESPHome config for the Solo to get the device off of the cloud service and accessible locally.

Sadly with <IP_ADDRESS> I'm getting this fresh new error...
2024-11-04 14:41:51.122 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 477, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_app.py", line 559, in _handle
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_middlewares.py", line 117, in impl
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 92, in security_filter_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 83, in forwarded_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 26, in request_context_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 85, in ban_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 242, in auth_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/headers.py", line 32, in headers_middleware
    response = await handler(request)
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/http.py", line 73, in handle
    result = await handler(request, **request.match_info)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/decorators.py", line 81, in with_admin
    return await func(self, request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 222, in post
    return await super().post(request, flow_id)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 74, in wrapper
    return await method(view, request, data, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 122, in post
    result = await self._flow_mgr.async_configure(flow_id, data)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 370, in async_configure
    result = await self._async_configure(flow_id, user_input)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 417, in _async_configure
    result = await self._async_handle_step(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 520, in _async_handle_step
    result: _FlowResultT = await getattr(flow, method)(user_input)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/petkit/config_flow.py", line 127, in async_step_user
    await async_validate_api(self.hass, email, password, region, timezone)
  File "/config/custom_components/petkit/util.py", line 33, in async_validate_api
    devices_query = await client.get_device_roster()
                          ^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'PetKitClient' object has no attribute 'get_device_roster'. Did you mean: 'get_device_rosters'?

Making that change leads me to...
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 520, in _async_handle_step
    result: _FlowResultT = await getattr(flow, method)(user_input)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/petkit/config_flow.py", line 127, in async_step_user
    await async_validate_api(self.hass, email, password, region, timezone)
  File "/config/custom_components/petkit/util.py", line 54, in async_validate_api
    devices: dict[str] Any] = devices_query['result']['devices]
                              ~~~~~~~~~~~~~^^^^^^^^^^
KeyError: 'result'

On <IP_ADDRESS> I'm getting Unknown error occurred when trying to set up integration. Same output as @rubin110

For posterity's sake, here's some logging...
2024-11-04 14:03:31.602 DEBUG (MainThread) [custom_components.petkit] Found the following PetKit devices/pets: PetKitData(user_id='REDACTED', feeders={}, litter_boxes={}, water_fountains={}, pets={}, purifiers={})
2024-11-04 14:03:31.602 DEBUG (MainThread) [custom_components.petkit] Finished fetching petkit data in 0.602 seconds (success: True)

My cats didn't get fed this morning, my bad. I'm sitting down right now to setup some unavailable entity notifications. Seems like a good thing to do while the kind and dapper @RobertD502 volunteers their own personal time to figure out a fix.
Thanks Dr. Drinovac!
PS, if you're handy with a soldering iron there is an ESPHome config for the Solo to get the device off of the cloud service and accessible locally.
Edit: Lol I typed all of that up right when the next fix got posted. :D

Highly recommend NOT using Home Assistant automations as a way of creating a feeding schedule. Set up feeding schedules through the petkit app as this gets stored locally on the device - in the event the feeder can't reach PetKit's servers (API is down or you're experiencing an internet outage), feedings will continue to dispense according to the schedule.

@adriannow @rubin110
That's my bad. Didn't realize one of the functions I use in the config flow is the exact one I had changed the name of in the backend - didn't come across this error since my account was already set up in HA. One moment. Will throw out another release.

@RobertD502 No problem, thank you for quickly addressing the update in API.

For posterity's sake, here's some logging...
2024-11-04 14:03:31.602 DEBUG (MainThread) [custom_components.petkit] Found the following PetKit devices/pets: PetKitData(user_id='REDACTED', feeders={}, litter_boxes={}, water_fountains={}, pets={}, purifiers={})
2024-11-04 14:03:31.602 DEBUG (MainThread) [custom_components.petkit] Finished fetching petkit data in 0.602 seconds (success: True)

My cats didn't get fed this morning, my bad. I'm sitting down right now to setup some unavailable entity notifications. Seems like a good thing to do while the kind and dapper @RobertD502 volunteers their own personal time to figure out a fix.
Thanks Dr. Drinovac!
PS, if you're handy with a soldering iron there is an ESPHome config for the Solo to get the device off of the cloud service and accessible locally.
Edit: Lol I typed all of that up right when the next fix got posted. :D

Highly recommend NOT using Home Assistant automations as a way of creating a feeding schedule. Set up feeding schedules through the petkit app as this gets stored locally on the device - in the event the feeder can't reach PetKit's servers (API is down or you're experiencing an internet outage), feedings will continue to dispense according to the schedule.

100% agree.
Luckily i only use home assistant for statistics and not for feeding. I use the petkit schedule and my 2 separated cats are being fed while i’m away on holidays although i still panic! 😅

For the ones in urgent need, a fix for the util.py until Robert releases: https://gist.github.com/geertmeersman/daeb56fc9a997b16ecf2bbd309c7f01e

<IP_ADDRESS> includes the fix by @geertmeersman

Perfect, it works

Sadly with <IP_ADDRESS> I'm getting this fresh new error...
2024-11-04 14:41:51.122 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 477, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_app.py", line 559, in _handle
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_middlewares.py", line 117, in impl
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 92, in security_filter_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 83, in forwarded_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 26, in request_context_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 85, in ban_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 242, in auth_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/headers.py", line 32, in headers_middleware
    response = await handler(request)
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/http.py", line 73, in handle
    result = await handler(request, **request.match_info)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/decorators.py", line 81, in with_admin
    return await func(self, request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 222, in post
    return await super().post(request, flow_id)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 74, in wrapper
    return await method(view, request, data, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 122, in post
    result = await self._flow_mgr.async_configure(flow_id, data)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 370, in async_configure
    result = await self._async_configure(flow_id, user_input)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 417, in _async_configure
    result = await self._async_handle_step(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 520, in _async_handle_step
    result: _FlowResultT = await getattr(flow, method)(user_input)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/petkit/config_flow.py", line 127, in async_step_user
    await async_validate_api(self.hass, email, password, region, timezone)
  File "/config/custom_components/petkit/util.py", line 33, in async_validate_api
    devices_query = await client.get_device_roster()
                          ^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'PetKitClient' object has no attribute 'get_device_roster'. Did you mean: 'get_device_rosters'?

Making that change leads me to...
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 520, in _async_handle_step
    result: _FlowResultT = await getattr(flow, method)(user_input)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/petkit/config_flow.py", line 127, in async_step_user
    await async_validate_api(self.hass, email, password, region, timezone)
  File "/config/custom_components/petkit/util.py", line 54, in async_validate_api
    devices: dict[str] Any] = devices_query['result']['devices]
                              ~~~~~~~~~~~~~^^^^^^^^^^
KeyError: 'result'

Interesting, with <IP_ADDRESS> I get the opposite error:
Registrador: aiohttp.server
Fuente: /usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py:448
Ocurrió por primera vez: 22:36:38 (3 ocurrencias)
Última vez registrado: 22:36:44

Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 477, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_app.py", line 559, in _handle
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_middlewares.py", line 117, in impl
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 92, in security_filter_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 210, in forwarded_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 26, in request_context_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 242, in auth_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/headers.py", line 32, in headers_middleware
    response = await handler(request)
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/http.py", line 73, in handle
    result = await handler(request, **request.match_info)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/decorators.py", line 81, in with_admin
    return await func(self, request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 222, in post
    return await super().post(request, flow_id)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 74, in wrapper
    return await method(view, request, data, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 122, in post
    result = await self._flow_mgr.async_configure(flow_id, data)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 370, in async_configure
    result = await self._async_configure(flow_id, user_input)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 417, in _async_configure
    result = await self._async_handle_step(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 520, in _async_handle_step
    result: _FlowResultT = await getattr(flow, method)(user_input)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/petkit/config_flow.py", line 127, in async_step_user
    await async_validate_api(self.hass, email, password, region, timezone)
  File "/config/custom_components/petkit/util.py", line 33, in async_validate_api
    devices_query = await client.get_device_rosters()
                          ^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'PetKitClient' object has no attribute 'get_device_rosters'. Did you mean: 'get_device_roster'?

Maybe Petkit os doing some kind of A/B release of this new api?
I will try and report tomorrow.

Got the same error
File "/config/custom_components/petkit/config_flow.py", line 127, in async_step_user
    await async_validate_api(self.hass, email, password, region, timezone)
  File "/config/custom_components/petkit/util.py", line 33, in async_validate_api
    devices_query = await client.get_device_rosters()
                          ^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'PetKitClient' object has no attribute 'get_device_rosters'. Did you mean: 'get_device_roster'?

To me it let me add the integration however it never adds entities and enters in a loop of error with:
Failed setup, will retry: 400027921

<IP_ADDRESS> of the integration lists the backend library petkitaio version <IP_ADDRESS> as a requirement. The get_device_rosters method is a method I created myself within the petkitaio library, so, it definitely exists and isn't an API issue - if home assistant is saying that the method doesn't exist, it likely stems from a bugged install where home assistant didn't download the latest petkitaio library as is listed in the integration's manifest file. Best thing to do is to force a re-download via HACS to re-install version <IP_ADDRESS> of the integration.

Highly recommend NOT using Home Assistant automations as a way of creating a feeding schedule. Set up feeding schedules through the petkit app as this gets stored locally on the device - in the event the feeder can't reach PetKit's servers (API is down or you're experiencing an internet outage), feedings will continue to dispense according to the schedule.

 They woke us up early today to let me know my reliance on technology is silly. No blame on you or your integration for my laziness. :)

<IP_ADDRESS> of the integration lists the backend library petkitaio version <IP_ADDRESS> as a requirement. The get_device_rosters method is a method I created myself within the petkitaio library, so, it definitely exists and isn't an API issue - if home assistant is saying that the method doesn't exist, it likely stems from a bugged install where home assistant didn't download the latest petkitaio library as is listed in the integration's manifest file. Best thing to do is to force a re-download via HACS to re-install version <IP_ADDRESS> of the integration.

Re-download didn’t solve the issue for me

<IP_ADDRESS> of the integration lists the backend library petkitaio version <IP_ADDRESS> as a requirement. The get_device_rosters method is a method I created myself within the petkitaio library, so, it definitely exists and isn't an API issue - if home assistant is saying that the method doesn't exist, it likely stems from a bugged install where home assistant didn't download the latest petkitaio library as is listed in the integration's manifest file. Best thing to do is to force a re-download via HACS to re-install version <IP_ADDRESS> of the integration.

Re-download didn’t solve the issue for me

I did reinstsll a couple of times even forcing the latest version 🤷♂

<IP_ADDRESS> of the integration lists the backend library petkitaio version <IP_ADDRESS> as a requirement. The get_device_rosters method is a method I created myself within the petkitaio library, so, it definitely exists and isn't an API issue - if home assistant is saying that the method doesn't exist, it likely stems from a bugged install where home assistant didn't download the latest petkitaio library as is listed in the integration's manifest file. Best thing to do is to force a re-download via HACS to re-install version <IP_ADDRESS> of the integration.

Re-download didn’t solve the issue for me

I did reinstall it a couple of times, even forcing it to install the latest version 🤷♂

That was in response to a different issue. I'm not sure what the root cause of your issue is - anything in the logs when the setup fails (not what pops up on the screen when setting up. Rather anything within the Home Assistant logs section)?

<IP_ADDRESS> of the integration lists the backend library petkitaio version <IP_ADDRESS> as a requirement. The get_device_rosters method is a method I created myself within the petkitaio library, so, it definitely exists and isn't an API issue - if home assistant is saying that the method doesn't exist, it likely stems from a bugged install where home assistant didn't download the latest petkitaio library as is listed in the integration's manifest file. Best thing to do is to force a re-download via HACS to re-install version <IP_ADDRESS> of the integration.

Re-download didn’t solve the issue for me

If you can, connect to Home Assistant and run the command pip show petkitaio. Report back the result.

I’m on my phone so i may miss some info and i don’t think i can do ‘pip’ on its terminal (or at leas it doesn’t work. I’m using hassos) but on the logs i can read:
Unexpected error fetching petkit data
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 354, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/petkit/coordinator.py", line 55, in _async_update_data
data = await self.client.get_petkit_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/petkitaio/petkit_client.py", line 237, in get_petkit_data
wf_instance, wf_id = await self._handle_water_fountain(device=device, has_relay=group_has_relay, header=header)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/petkitaio/petkit_client.py", line 287, in _handle_water_fountain
if (current_dt-self.last_ble_poll[device['id']]).total_seconds() >= 420:
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
KeyError: 400027921

@lasry1 turn on debug logging for the integration, restart home assistant, and then let home assistant run for a few minutes. Then turn off debug logging for the integration and share the debug log file with me - you can send it to me in a direct message on discord.

I’ve done what you said. And while having 2 attempts of integrations with main account and secondary after the restart i’ve found my 4 devices on the main account. Then i’ve turned off the debug of the integration and delete the secondary account.
Where do i find that debug file? I don’t really know what’s going on but it wasn’t my first restart or re-install 🤔

https://www.home-assistant.io/docs/configuration/troubleshooting/#enabling-debug-logging

if you did it via the UI, the file should have automatically downloaded to the device you were using (don't know if it works when doing it on a mobile device).

Thank you! ios didn’t allow me to download the file but accessing my desktop through anydesk did the trick.
Now my question is about how to find your discord username to send you the file 🙈

Thank you! ios didn’t allow me to download the file but accessing my desktop through anydesk did the trick.
Now my question is about how to find your discord username to send you the file 🙈

same as the one here.

<IP_ADDRESS> of the integration lists the backend library petkitaio version <IP_ADDRESS> as a requirement. The get_device_rosters method is a method I created myself within the petkitaio library, so, it definitely exists and isn't an API issue - if home assistant is saying that the method doesn't exist, it likely stems from a bugged install where home assistant didn't download the latest petkitaio library as is listed in the integration's manifest file. Best thing to do is to force a re-download via HACS to re-install version <IP_ADDRESS> of the integration.

Re-download didn’t solve the issue for me

If you can, connect to Home Assistant and run the command pip show petkitaio. Report back the result.

Tried re-downloading and also did not help. pip show petkitaio return no results:

Should I try it in a specific folder?

<IP_ADDRESS> of the integration lists the backend library petkitaio version <IP_ADDRESS> as a requirement. The get_device_rosters method is a method I created myself within the petkitaio library, so, it definitely exists and isn't an API issue - if home assistant is saying that the method doesn't exist, it likely stems from a bugged install where home assistant didn't download the latest petkitaio library as is listed in the integration's manifest file. Best thing to do is to force a re-download via HACS to re-install version <IP_ADDRESS> of the integration.

Re-download didn’t solve the issue for me

If you can, connect to Home Assistant and run the command pip show petkitaio. Report back the result.

I’m not sure if what i did was related to the solution but i got it working somehow.
i deleted the integration, then found i had an update for the Petkit app (ios) … somehow i managed to lost in the process the 2 water fountains in the petkit app, that i’ll add when i arrive home, but the 2 feeders are now connected again 🥳
Thank you for your great work!

I don't know if anyone else is still experiencing this but even after updating the integration to <IP_ADDRESS> and rebooting the whole HAOS machine, I still got the Error 97.
I tried removing the integration completely and reinstall it, but the setup step failed with the get_device_rosters method not being found int the petkitaio library.
What finally did the trick was:

Removing the integration completely using HACS
Restarting HASS
Open the homeassistant/deps/lib/python3.12/site-packages directory and delete 2 folders named petkitaio one with a version suffix, other without.
Reinstall the integration using HACS
Restart HASS
Setup my account again

Everything is working as usual now.

I don't know if anyone else is still experiencing this but even after updating the integration to <IP_ADDRESS> and rebooting the whole HAOS machine, I still got the Error 97.
I tried removing the integration completely and reinstall it, but the setup step failed with the get_device_rosters method not being found int the petkitaio library.
What finally did the trick was:
1. Removing the integration completely using HACS

2. Restarting HASS

3. Open the `homeassistant/deps/lib/python3.12/site-packages` directory and delete 2 folders named `petkitaio` one with a version suffix, other without.

4. Reinstall the integration using HACS

5. Restart HASS

6. Setup my account again

Everything is working as usual now.

I tried this and it did not work for me as apparently hacs is ignoring requirements, so I ended up globally installing petkitaio with pip.

I don't know if anyone else is still experiencing this but even after updating the integration to <IP_ADDRESS> and rebooting the whole HAOS machine, I still got the Error 97.
I tried removing the integration completely and reinstall it, but the setup step failed with the get_device_rosters method not being found int the petkitaio library.
What finally did the trick was:

Removing the integration completely using HACS
Restarting HASS
Open the homeassistant/deps/lib/python3.12/site-packages directory and delete 2 folders named petkitaio one with a version suffix, other without.
Reinstall the integration using HACS
Restart HASS
Setup my account again

Everything is working as usual now.

That did the trick for me as well, weird though, I had this same kind of issue with a transition from a custom roborock integration to the integrated one.
Also needed to manually remove dependencies, maybe a deeper HA or HACS issue.

I don't know if anyone else is still experiencing this but even after updating the integration to <IP_ADDRESS> and rebooting the whole HAOS machine, I still got the Error 97.
I tried removing the integration completely and reinstall it, but the setup step failed with the get_device_rosters method not being found int the petkitaio library.
What finally did the trick was:
1. Removing the integration completely using HACS

2. Restarting HASS

3. Open the `homeassistant/deps/lib/python3.12/site-packages` directory and delete 2 folders named `petkitaio` one with a version suffix, other without.

4. Reinstall the integration using HACS

5. Restart HASS

6. Setup my account again

Everything is working as usual now.

I tried this and it did not work for me as apparently hacs is ignoring requirements, so I ended up globally installing petkitaio with pip.

OTOH, this did not work for me. Still getting the get_device_rosters error.

Some amount of deleting the integration, restarting the HA container, reinstalling the integration, and restarting again, got it all to work. Thanks!

I had to add the 2 water fountains i deleted by mistake and then i lost connection after re-enabling the integration… after many deletes, installs, reboots… i’m still unable to add it showing:
Failed setup, will retry: 400030358

After Update i still get Error 400005185 (Unexpected error fetching petkit data). Hmm :-/
KeyError: 400005185
2024-11-06 05:29:40.332 DEBUG (MainThread) [custom_components.petkit] Finished fetching petkit data in 4.776 seconds (success: False)
2024-11-06 05:29:55.189 ERROR (MainThread) [custom_components.petkit] Unexpected error fetching petkit data
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 354, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/petkit/coordinator.py", line 55, in _async_update_data
data = await self.client.get_petkit_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/petkitaio/petkit_client.py", line 237, in get_petkit_data
wf_instance, wf_id = await self._handle_water_fountain(device=device, has_relay=group_has_relay, header=header)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/petkitaio/petkit_client.py", line 287, in _handle_water_fountain
if (current_dt-self.last_ble_poll[device['id']]).total_seconds() >= 420:

For whatever reason when reinstalling via HACS, my core install was unable to download petkitaio leaving things in a broken state post re-install. I had to manually go in and pip install the package and everything just started working. I'm surprised that HACS would install the add-on even though it didn't fully complete setup.
2024-11-05 23:23:28.816 INFO (SyncWorker_19) [homeassistant.util.package] Attempting install of petkitaio==<IP_ADDRESS>
2024-11-05 23:23:33.204 ERROR (MainThread) [homeassistant.config_entries] Error occurred loading flow for integration petkit: No module named 'petkitaio'

For those experiencing the KeyError exception:

I just released version <IP_ADDRESS>, which should fix the issue

For those having attribute issues related to the get_device_rosters method:

This is a dependency issue on the Home Assistant side and not something I can fix - it can be related to Home Assistant not properly installing the petkitaio package, the path the library is looked for not being correct, etc. That is to say, the cause may not be the same for everyone and you will have to track down why it isn't working for you - maybe updating to the version of the integration I just released will fix the issue for you as Home Assistant will be instructed to download a new version of the petkitaio library.

For those experiencing the KeyError exception:

I just released version <IP_ADDRESS>, which should fix the issue

For those having attribute issues related to the get_device_rosters method:

This is a dependency issue on the Home Assistant side and not something I can fix - it can be related to Home Assistant not properly installing the petkitaio package, the path the library is looked for not being correct, etc. That is to say, the cause may not be the same for everyone and you will have to track down why it isn't working for you - maybe updating to the version of the integration I just released will fix the issue for you as Home Assistant will be instructed to download a new version of the petkitaio library.

It worked for me straight away at first attempt as before this error appeared!! Thank you!

Do others see this kind of change since the net API as well ?
It is at the moment horrible to get a real good statistic.

It works fine for me:

What kind of polling interval are you using when you look in CONFIGURE?

default 120 secs

For those having attribute issues related to the get_device_rosters method:

This is a dependency issue on the Home Assistant side and not something I can fix - it can be related to Home Assistant not properly installing the petkitaio package, the path the library is looked for not being correct, etc. That is to say, the cause may not be the same for everyone and you will have to track down why it isn't working for you - maybe updating to the version of the integration I just released will fix the issue for you as Home Assistant will be instructed to download a new version of the petkitaio library.

# pip show petkitaio
Name: petkitaio
Version: <IP_ADDRESS>
Summary: Asynchronous Python library for PetKit's API
Home-page: https://github.com/RobertD502/petkitaio
Author: Robert Drinovac
Author-email<EMAIL_ADDRESS>License:
Location: /usr/local/lib/python3.12/site-packages
Requires: aiohttp, tzlocal
Required-by:

Still not working :/ Any idea?

@andreclemente
You can try pip uninstall petkitaio and then restart Home Assistant. That should force Home Assistant to redownload the petkitaio backend.
Aside from that, how are you running Home Assistant? - as part of Home Assistant OS, docker container, etc.

Still getting the "get_device_rosters" error. :/
I'm running a docker container.

Still getting the "get_device_rosters" error. :/
I'm running a docker container.

Aside from redownloading the integration, there isn't much more assistance that I can offer. Something is up with your Home Assistant install causing a mismatch between the integration and the backend library that it thinks it should use.

Thank you for all the help and for the awesome work you've been doing. Unfortunately it didn't work. Perhaps someone will come up with a solution soon.

Thank you for all the help and for the awesome work you've been doing. Unfortunately it didn't work. Perhaps someone will come up with a solution soon.

The only other solution I can think of is to nuke it - delete the integration, restart home assistant, reinstall the integration, restart home assistant, and then set it up again.

I was still having a lot of issues with this even after applying all the fixes recommended in this issue. What finally got it working for me was to remove the integration, exec into the home assistant container, run find / -name petkitaio and remove all the directories referencing this module (I had three different locations where this was found). After this, I recreated the container, and added the integration again, at which point I was able to successfully complete the setup flow.

Thank you @clintkev251! That did the trick for me.
# find / -name petkitaio
/config/deps/lib/python3.11/site-packages/petkitaio
/config/deps/lib/python3.12/site-packages/petkitaio


UNFINISHED: saved cards

I’m working on an addition to the silverstripe-omnipay (and eventually shop) module that allows one to utilise omnipay’s credit card tokenising features if present (https://github.com/omnipay/omnipay#token-billing). This is just a temporary PR to discuss. There will be a corresponding PR to ss-shop to utilize this functionality. I'm currently using this on a beta site and it's working well using PayPal's vault API (https://github.com/omnipay/paypal/pull/21).
Jeremy mentioned that @halkyon and @chillu might have some thoughts or input on the architecture.

@markguinn what are your thoughts on the status of this? Did you ever get it to production?

Yes, we're launching a site that uses this code next month. I hadn't pushed it any further because I realized I was using omnipay 2.0 and haven't had time to test further. The code is working though. Ideally it would need tests and it would probably need to be tested against Stripe instead of Paypal REST which is what we're using.

I would ultimately like to have all gateways mock tested through the silverstripe-omnipay module.

@bummzack Do we want to pull this into 2.0 branch and review the tests again?

This looks like a really useful addition to the module, although it would require some refactoring and should go into the 2.x branch instead.
@markguinn Is this PR the most updated version of what you did? Is the functionality complete?


Allow more required line breaks

Currently, when respectsExistingLineBreaks is set to false, swift-format squishes most of code onto single lines when it will fit under the line length limit. I'd like to use respectsExistingLineBreaks so that output is fully deterministic based on the source code structure, but I've found readability is negative impacted by formatting like this:
func foo(bar: Bool) { if bar { print("Bar!") } }

Instead, I'd prefer more line breaks:
func foo(bar: Bool) {
    if bar {
        print("Bar!")
    }
}

So, I want to add more options to force the addition of line breaks. Specifically, the ones that I'm currently looking at are:

lineBreakBeforeEachFuncBody: after the opening { of a func, always use a line break.
lineBreakBeforeEachIfElseBody: after the { following if or else, always use a line break.
lineBreakBeforeEachLoopBody: same, but for loops.

This could be configurable per-loop-type, but would anyone want that?

lineBreakBeforeEachSwitchCaseOrDefaultBody: after case ...: or default:, always use a line break.

The other constructs I can think of are guard and var. I don't need these, as I think the squished style is more typical for simple, short cases of these, but they could be added as well for the sake of completeness.
I think that this is basically https://bugs.swift.org/browse/SR-13458, though these changes won't add more flexibility, only more required line breaks.
I'm putting this up with just lineBreakBeforeEachSwitchCaseOrDefaultBody so that the idea and the implementation can be discussed, if moving forward, I'll stack the other commits and also add tests (testing locally by formatting my Swift code, it appears to work).
I'm also currently targeting the swift-5.3-branch because I'm using Xcode 12 locally, but I expect later on I'll need to rebase to target the main branch?
I also noticed that running the compiled swift-format, like this:
find Sources -name '*.swift' | xargs ./.build/debug/swift-format -i

...against all of the Swift files made a lot of changes, so I manually formatted the code (just the now-long after call). Is swift-format being used on the repo, and if so, how should I run it?

So, the main thing that I'd want is deterministic output based on the code structure (thus no respectsExistingLineBreaks), but without the "squishing" that comes with a line limit of 120 (pretty typical for iOS) for simple classes, extensions, etc.
But, I don't know that nested braces alone get exactly my ideal formatting. It's pretty subjective, but single-line functions:
func example(arg: Int) -> Int { return arg }

and single line if:
if something { print("something!") }

Don't feel "normal" (whereas single-line computed var and guard/else do... can't explain it!). Maybe the former is different with implicit single-expression returns from func being allowed now though!
But, it's less important than avoiding the excessive squishing. I think overall I prefer the result of this, but:

If the complexity of special-casing so many constructs is too much, a simpler approach is definitely valid, and will get most of the way there.
I made them all separate settings, just going off everything existing being a pretty small config option. But, to reduce complexity somewhat (in config, not so much in the implementation), they could just be one "more line breaks!" option to reduce the number of variations in outputs. Depends whether you value consistency or flexibility in swift-format (e.g. black is very inflexible, clang-format is very flexible).

Since there's no "blessed" style at this time, I'm open to some degree of configurability, but I also want to avoid having so much that it becomes difficult to maintain, since the current architecture of the pretty printer is such that some options can interact with each other and that causes a combinatorial explosion of edge cases that we'd need to test thoroughly.
The only real constraints (at this time) are that new features do not affect the behavior of the formatter under the default configuration, so that people using it without a configuration don't have their formatter change suddenly.
It's not exactly what you had in mind, but I think I'd be more inclined to partition curly brace behavior based on whether the braces define the body of a type declaration, the body of a non-type declaration (computed property, function), or the body of a statement (if, while, etc.) and allow customization of those categories. That seems better from the point of view of users defining a configuration, so they don't have to audit each individual structure.

For what it's worth, I've just tried swift-format and that was my very first frustration as well after trying various options for 2 minutes :  I'd like go-fmt style determinism, but settings "respectsExistingLineBreaks" to false squishes too many statements on the same line.
I went looking at this PR straight away hoping to find a fix to what i first thought was a bug :
My 2 cents about the tradeofs on fine-grained settings: I'm ready to have as many manual settings as it takes, since it's something you probably only do once after every release of swift (at most).

I want to add tuples to this discussion. I would love to see long unnamed and named tuple arguments break into several lines just as functions do. Why? There's a big movement away from protocols over to structs. Our codebase uses this a lot and many of the tuples are hard to read.
❌ Current result
struct PeopleSearchService {
  var query:
    (
      _ query: String?, _ orderBy: String?, _ ascending: Bool?, _ limit: Int?,
      _ offset: Int?
    ) -> [String]
}

struct CarSearchService {
  var query:
    (
      _ args: (
        query: String?, orderBy: String?, ascending: Bool?,
        limit: Int?, offset: Int?
      )
    ) -> [String]
}

✅ Wanted result
struct PeopleSearchService {
  var query:
    (
      _ query: String?,
      _ orderBy: String?,
      _ ascending: Bool?,
      _ limit: Int?,
      _ offset: Int?
    ) -> [String]
}

struct CarSearchService {
  var query:
    (
      _ args: (
        query: String?,
        orderBy: String?,
        ascending: Bool?,
        limit: Int?,
        offset: Int?
      )
    ) -> [String]
}

See full example here
{
  "respectsExistingLineBreaks": false,
  "lineBreakBeforeControlFlowKeywords": true,
  "lineBreakBeforeEachArgument": true,
  "lineLength": 80,
  "maximumBlankLines": 1,
  "respectsExistingLineBreaks": false,
  "prioritizeKeepingFunctionOutputTogether": false,
  "lineBreakAroundMultilineExpressionChainComponents": true,
  "rules": {
    "BlankLineBetweenMembers": false,
    "MultiLineTrailingCommas": true,
    "OneCasePerLine": true,
    "OneVariableDeclarationPerLine": true,
    "OnlyOneTrailingClosureArgument": true,
    "UseSingleLinePropertyGetter": true,
  },
  "tabWidth": 4,
  "version": 1
}

protocol CompanySearchService {
  func query(
    query: String?,
    orderBy: String?,
    ascending: Bool?,
    limit: Int?,
    offset: Int?
  ) -> [String]
}

struct MyCompanySearchService: CompanySearchService {
  func query(
    query: String?,
    orderBy: String?,
    ascending: Bool?,
    limit: Int?,
    offset: Int?
  ) -> [String] { return ["a", "b", "c"] }
}

struct PeopleSearchService {
  var query:
    (
      _ query: String?, _ orderBy: String?, _ ascending: Bool?, _ limit: Int?,
      _ offset: Int?
    ) -> [String]
}

let myPeopleSearchService = PeopleSearchService(query: {
  (query, orderBy, ascending, limit, offset) in return ["a", "b", "c"]
})

struct CarSearchService {
  var query:
    (
      _ args: (
        query: String?, orderBy: String?, ascending: Bool?,
        limit: Int?, offset: Int?
      )
    ) -> [String]
}

let myCarSearchService = CarSearchService(query: { params in
  let (query, orderBy, direction, limit, offset) = params
  return ["a", "b", "c"]
})


Cleanup BlockStore

What changes are proposed in this pull request?
Removing some unnecessary APIs in BlockStore.

alluxio-bot, merge this please.


swap reheat for js-data + js-data-rethinkdb

I no longer maintain reheat, but my js-data-rethinkdb is maintained and well-supported, therefore I suggest the docs be updated accordingly.
Can you please change
- [reheat](https://github.com/jmdobry/reheat) by [@jmdobry](https://github.com/jmdobry)
  JavaScript ORM for RethinkDB with promises.

to this
- [js-data-rethinkdb](https://github.com/js-data/js-data-rethinkdb) by [@jmdobry](https://github.com/jmdobry)
  A RethinkDB adapter for [js-data](https://github.com/js-data/js-data), a database-agnostic ORM for Node.js and the Browser.

I'd submit a PR, but this is much faster than going through my company's OSS patching process. Thanks!

Thanks for the update @jmdobry .
@chipotle could you put that in please?

I'll make the change later this week. Thanks for the update!


home-manager: unstable-2024-03-22 -> unstable-2024-03-31

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for home-manager is: A Nix-based user environment configurator
meta.homepage for home-manager is: https://nix-community.github.io/home-manager/
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found unstable-2024-03-31 in filename of file in /nix/store/3s89b05qnvqyjplpq6afzk3laq3320bd-home-manager-unstable-2024-03-31

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
home-manager

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/3s89b05qnvqyjplpq6afzk3laq3320bd-home-manager-unstable-2024-03-31 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A home-manager https://github.com/r-ryantm/nixpkgs/archive/52542d5a3705446bc8122bc7d5a7840346c337cb.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/52542d5a3705446bc8122bc7d5a7840346c337cb#home-manager

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/3s89b05qnvqyjplpq6afzk3laq3320bd-home-manager-unstable-2024-03-31
ls -la /nix/store/3s89b05qnvqyjplpq6afzk3laq3320bd-home-manager-unstable-2024-03-31/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review --extra-nixpkgs-config '{ allowInsecurePredicate = x: true; }' run on x86_64-linux 1

1 package built:

home-manager

Maintainer pings
cc @AndersonTorres for testing.

@NixOS/nixpkgs-merge-bot

@NixOS/nixpkgs-merge-bot merge


Yocto u-boot

Hi,
I know this meta is not for Yocto Project, but may be you can help me anyway.
I try to build a personal OS image for IOT2050 with Yocto Project.
I want to modify my personal existing meta developed for an IoT ARM V7.
So, I try to set it for IOT2050 hardware : ARM TI AM6548 HS
So far, I added a new conf file "iot2050.conf" as follow and a u-boot-iot2050.bb file.
My u-boot-iot2050.bb is base on u-boot-ti-mainline_git.bb (http://git.yoctoproject.org/cgit/cgit.cgi/meta-ti/tree/recipes-bsp/u-boot/u-boot-ti-mainline_git.bb)
iot2050.conf
include conf/machine/include/tune-cortexa5.inc
include conf/machine/include/am65xx.inc
include conf/machine/opwee-common.inc

SOC_FAMILY = "am65xx:iot2050"

DISTRO_ARCH ?= "arm64"
TARGET_ARCH="arm"

PREFERRED_PROVIDER_virtual/bootloader = "u-boot-iot2050"
PREFERRED_PROVIDER_u-boot = "u-boot-iot2050"

EXTRA_IMAGEDEPENDS="u-boot dosfstools-native mtools-native"
# UBOOT_MAKE_TARGET = "u-boot-ti.inc"
UBOOT_CONFIG ??= "spi"
UBOOT_CONFIG[spi] = "am65x_evm_a53_defconfig"

KERNEL_NAME ?= "iot2050"

IMAGE_TYPE ?= "wic-img"
WKS_FILE ?= "sdimage-iot2050"

But I would like to know, which value can be set for UBOOT_MAKE_TARGET ?
Can you help me in this issue ?
Best regards,

That should be empty (if that works) or flash.bin.

At least with the U-Boot version just merged into master today...

Yes, sorry I mix up myself
When I left it empty, I got an error for checkgcc6 during the makefile. and I thought it was related to UBOOT_MAKE_TARGET according to old research. Anyway, I got lost in my issues.
Now I'm stuck because I'm using OpenSUSE 42.3, for cross-compilation, and it doesn't support gcc6

Why gcc6? We are building with gcc10 by now, without issues.

Well, I think is because I use diectly https://source.denx.de/u-boot/u-boot/ and note meta-iot2050/recipes-bsp/u-boot/u-boot-iot2050_2021.04.bb

We are working on upstreaming everything but we are not yet there. The staging branch for U-Boot master is https://github.com/siemens/u-boot/commits/jan/iot2050. Following https://github.com/siemens/u-boot/blob/jan/iot2050/doc/board/siemens/iot2050.rst, you should be able to rebuild things independently of Yocto or our recipes, and then migrating those steps over might be simpler.
Before trying anything out on the device, make sure to have a flash programmer with you! Too many pieces, and one is always wrong on first try - that's at least my experience.

TI has an arago project which is a yocto based project and used by TI to build their own Linux SDK, that could be a useful reference for you I think.


[RC0] tab.popToRoot causes black page

In RC0, tab.popToRoot()
can be called only when there is at least one page pushed on the nav stack.
In beta 11 it was possible to call it even without having page pushed on the nav stack.
When tab.popToRoot() is called and there is no page pushed on nav stack, page is black.

What behavior are you expecting?
tab.popToRoot() can be called in code below without IF statement
public ionChange(tab: Tab) {
    console.debug('ionChange tab:', tab.tabTitle, tab);
    if (tab._views.length > 1) {
      tab.popToRoot({ animate: false });  // it's OK to call popToRoot is there is some pushed page on the nav stack
    } else {
      // uncomment the below line to reproduce error
      // tab.popToRoot({ animate: false });
      // page is black when popToRoot is called here
      // taping on tab About and then to Home results into the following error in console
    }
  }

Steps to reproduce:

git clone https://github.com/miloslavskacel/tabs-nav.git
npm install
ionic serve
app works, Home page is displayed

uncomment tabs.ts:28
app does not work, Home page is black

Other information:
https://github.com/driftyco/ionic/issues/8508
Which Ionic Version?
2.RC0
Cordova CLI: 6.3.1
Ionic Framework Version: 2.0.0-rc.0
Ionic CLI Version: 2.1.0
Ionic App Lib Version: 2.1.0-beta.1
ios-deploy version: 1.9.0
ios-sim version: 5.0.8
OS: Mac OS X El Capitan
Node Version: v4.6.0
Xcode version: Xcode 8.0 Build version 8A218a

Hello, thanks for opening an issue with us! I am going to close this issue as a duplicate of https://github.com/driftyco/ionic/issues/8508 as it seems to be caused by the same issue. Thanks!


Improve TDVT log organization

Make changes to the log zip file organization as follows:
tabquery_logs.zip/test_type_suite_name/all_logs.zip
tdvt_actuals_combined/test_type_suite_name/*actuals

Hi, @lukewrites! Thanks for opening this PR!

In the file tdvt/tdvt/tdvt.py:

Line 143:121: E501 line too long (123 > 120 characters)
Line 17:1: E402 module level import not at top of file

For reference: Error Code Reference, PEP8, Python code style


Add support for external names to Kubernetes Controller

Issue

@microsoft-github-policy-service agree company="AVEVA"


The PEEP layout seems to have got confused.

I think this resolves it.
The issue
There are 6 PEEPs, but one is named PEEP-0004.md unlike the others PEEP-000.md to PEEP-005.md. That means it appears out of order.
Also, inside the file it was called PEEP-003 but there is another PEEP-003.
The fix
Renamed the file to PEEP-004.md and changed the title inside the file to PEEP-004.

It's already addressed in #3846 , thanks anyway

I guess you mean #3845.


posix/arch.h: implement ARCH_EXCEPT() with abort() for debug convenience

Flush all messages and invoke abort() when a k_panic() or k_oops() is
hit in native_posix mode.
One of the main purposes of native_posix is to provide debug
convenience. When running in a debugger, abort() stops execution which
provides a backtrace and the ability to inspect all variables.
A good, sample use case is fuzzing failures in SOF, see an example in:
https://github.com/thesofproject/sof/pull/8632
In such a case, this commit adds value even before using a
debugger. Without this commit, confusingly meaningless stack trace:
INFO: seed corpus: files: 1097 min: 1b max: 428b total: 90853b rss: 58Mb
Exiting due to fatal error
==314134== ERROR: libFuzzer: fuzz target exited
    #0 0x81d9637 in __sanitizer_print_stack_trace (zephyr.exe+0x81d9637)
    #1 0x80cc42b in fuzzer::PrintStackTrace() (zephyr.exe+0x80cc42b)
    #2 0x80ab79e in fuzzer::Fuzzer::ExitCallback() FuzzerLoop.cpp.o
    #3 0x80ab864 in fuzzer::Fuzzer::StaticExitCallback() (zephyr.exe+
    #4 0xf783dfe8  (/usr/lib32/libc.so.6+0x3dfe8)
    #5 0xf783e1e6 in exit (/usr/lib32/libc.so.6+0x3e1e6)
    #6 0x82a5488 in posix_exit boards/posix/native_posix/main.c:51:2

SUMMARY: libFuzzer: fuzz target exited

Thanks to this commit the k_panic() location is now immediately
available in test logs without even running anything locally:
INFO: seed corpus: files: 1097 min: 1b max: 428b total: 90853b rss: 58Mb
@ WEST_TOPDIR/sof/src/ipc/ipc3/handler.c:1623
ZEPHYR FATAL ERROR: 3
==315176== ERROR: libFuzzer: deadly signal
LLVMSymbolizer: error reading file: No such file or directory
    #0 0x81d9647 in __sanitizer_print_stack_trace (zephyr.exe+0x81d9647)
    #1 0x80cc43b in fuzzer::PrintStackTrace() (zephyr.exe+0x80cc43b)
    #2 0x80ab6be in fuzzer::Fuzzer::CrashCallback() FuzzerLoop.cpp.o
    #3 0x80ab77b in fuzzer::Fuzzer::StaticCrashSignalCallback()
    #4 0xf7f3159f  (linux-gate.so.1+0x59f)
    #5 0xf7f31578  (linux-gate.so.1+0x578)
    #6 0xf788ea16  (/usr/lib32/libc.so.6+0x8ea16)
    #7 0xf783b316 in raise (/usr/lib32/libc.so.6+0x3b316)
    #8 0xf7822120 in abort (/usr/lib32/libc.so.6+0x22120)
    #9 0x82afbde in ipc_cmd src/ipc/ipc3/handler.c:1623:2

NOTE: libFuzzer has rudimentary signal handlers.
      Combine libFuzzer with AddressSanitizer or similar for better
    crash reports.
SUMMARY: libFuzzer: deadly signal

The full stack trace is now immediately available when running
zephyr.exe in gdb:
./scripts/fuzz.sh  -- -DEXTRA_CFLAGS="-O0 -g3"

gdb build-fuzz/zephyr/zephyr.exe

run
backtrace

 #2  0xf783b317 in raise () from /usr/lib32/libc.so.6
 #3  0xf7822121 in abort () from /usr/lib32/libc.so.6
 #4  0x082afbdf in ipc_cmd (_hdr=0x8b...) at src/ipc/ipc3/handler.c:1623
 #5  0x082fbf4b in ipc_platform_do_cmd (ipc=0x8b161c0)
                                    at src/platform/posix/ipc.c:162
 #6  0x082e1e07 in ipc_do_cmd (data=0x8b161c0 <heapmem+1472>)
                                    at src/ipc/ipc-common.c:328
 #7  0x083696aa in task_run (task=0x8b161e8 <heapmem+1512>)
                                    at zephyr/include/rtos/task.h:94
 #8  0x083682dc in edf_work_handler (work=0x8b1621c <heapmem+1564>)
                                    at zephyr/edf_schedule.c:32
 #9  0x085245af in work_queue_main (workq_ptr=0x8b15b00 <edf_workq>,...)
                                         at zephyr/kernel/work.c:688
 #10 0x0823a6bc in z_thread_entry (entry=0x8523be0 <work_queue_main>,..
                                    at zephyr/lib/os/thread_entry.c:48
 #11 0x0829a6a1 in posix_arch_thread_entry (pa_thread_status=0x8630648 ..
                                  at zephyr/arch/posix/core/thread.c:56
 #12 0x0829c043 in posix_thread_starter (arg=0x4)
                              at zephyr/arch/posix/core/posix_core.c:293
 #13 0x080f6041 in asan_thread_start(void*) ()
 #14 0xf788c73c in ?? () from /usr/lib32/libc.so.6

Signed-off-by: Marc Herbert<EMAIL_ADDRESS>

Thanks a lot for the expert and prompt feedback! Much appreciated.

There is quite many combinations here,

Tell me about it! I didn't have any "concern", only one  specific goal when I naively and ignorantly started to do this but I'm afraid I'm getting there :-)

to be sure we are in the same page.

I suspect we started on different... planets. Thanks again for trying to bring me closer.
One "concerning" thing I just realized:
https://docs.zephyrproject.org/latest/kernel/services/other/fatal.html#kernel-oops

A kernel error is a software triggered fatal error invoked by k_panic(). This should be used to indicate that the Zephyr kernel is in an unrecoverable state. Implementations of k_sys_fatal_error_handler() should not return if the kernel encounters a panic condition ...

This documentation does not seem to match the current code.  k_panic() invokes k_sys_fatal_error_handler() ONLY when ARCH_EXCEPT() is missing. Pretty much every architecture outside POSIX defines ARCH_EXCEPT()! So this  page is valid only for POSIX? Does not really make sense...

Is your concern only when k_panic/ops() is called? (or also when abort() is called directly by somebody?)

The former, see example in the commit message. I think k_panic() should not exit() but abort() by default on POSIX - no matter what LIBC is used. This is my only goal (for now).
Except when testing k_panic() itself, when you have a k_panic() then you want to debug that panic. On POSIX, exit() is useless for debugging and abort() is very useful. Q.E.D.

For the debugger stopping on these cases, does CONFIG_ARCH_POSIX_TRAP_ON_FATAL do what you need
already?

I didn't know about CONFIG_ARCH_POSIX_TRAP_ON_FATAL, thanks. It does solve the problem when running in a debugger BUT:

it's not enabled by default (why not?) and most people won't know this even exists. I sure didn't.
Unlike this PR, CONFIG_ARCH_POSIX_TRAP_ON_FATAL does not print anything useful, which makes it useless outside a debugger (e.g.: in CI)

Are you concerned about a case in which CONFIG_COMMON_LIBC_ABORT is ...

My abort.c change was only to break the infinite loop that this PR introduces. Let's not worry about that yet, I suspect much bigger changes to this PR are coming...

This documentation does not seem to match the current code

Maybe @andyross wants to handle that sidetrack :)

? This looks very relevant to me. There's an entire page about some "Fatal Errors" API but it seems ignored by practically every architecture except POSIX?! I don't see how we can discuss much before having clarified this very high-level design question.
Also, why is this @andyross ' problem more specifically?

This documentation does not seem to match the current code

Maybe @andyross wants to handle that sidetrack :)

? This looks very relevant to me...
Also, why is this @andyross ' problem more specifically?

Apologies, I did not intend to say it was not a relevant issue. The reason why I poked Andy is because I presume he may be much more aware of the original thought process and choices around this area, as he is and was one of the kernel maintainers at the time when this was written, and therefore he may have much more relevant input.

I tested libFuzzer in more configurations and I confirmed these two observations:
(1) libFuzzer invokes llvm-symbolizer and prints a stack trace on SIGABRT but not on SIGTRAP
(2) when there is one, the stack trace printed by LibFuzzer never goes beyond the first zephyr.exe frame?! That's why the ARCH_EXCEPT() solution is more useful: because it's macro-based.
I unfortunately could not find in the libFuzzer documentation any reason for these behaviors. @andyross maybe?
There is none of these limitations when running libFuzzer inside gdb; this always provides a complete stack trace with either SIGABRT and SIGTRAP (but not on exit())
Obviously, the error handling design in Zephyr should not be completely based on libFuzzer's behavior. On the other hand, the difference between SIGBART and SIGTRAP may not be accidental and could reflect some standard practice?

I'm no libfuzzer expert either.  My guess is that libfuzzer doesn't trap on SIGTRAP because it wants to permit users to debug a fuzz-enabled binary (it might very well be using it internally too).  Fuzzing is supposed to detect errors, and SIGTRAP isn't really an error, even though it can be handled.
I don't know that this needs to that complicated.  Just augmenting TRAP_ON_FATAL to set the signal delivered would be IMHO acceptable (maybe rename it to "RAISE_ON_FATAL" then I guess).  Alternatively we could impelment a sys_fatal_error_handler() in the fuzzing rig, but that then gets fragile if some future layer wants to handle fatal errors out of a different context.
Really what fuzzing wants is exactly what @marc-hb has here: we want the error to be immediate, synchronous, fatal to the Linux process, and trappable by libfuzzer. And we want it expanded as a macro and not part of the Zephyr API framework that might lose info about the location of the error.

This documentation does not seem to match the current code. k_panic() invokes k_sys_fatal_error_handler() ONLY when ARCH_EXCEPT() is missing. Pretty much every architecture outside POSIX defines ARCH_EXCEPT()! So this page is valid only for POSIX? Does not really make sense...

Answering myself:   on hardware ARCH_EXCEPT triggers a hardware fault which invokes some registered z_${arch}_fatal_error() handler which invokes k_sys_fatal_error_handler(). That's the connection I was missing.
Zephyr's error handling seems to have quite a few layers and but fatal.rst is very high-level and barely ever mentions the relationship between software exceptions, APIs and hardware exceptions.


Uncaught Error: ENOENT: no such file or directory, lstat '/js'

[Enter steps to reproduce:]

...
...

Atom: 1.44.0 x64
Electron: 4.2.7
OS: Mac OS X 10.15.2
Thrown From: Atom Core
Stack Trace
Uncaught Error: ENOENT: no such file or directory, lstat '/js'
At fs.js:115

Error: ENOENT: no such file or directory, lstat '/js'
    at Proxy.realpathSync (fs.js:1435:7)
    at Proxy.fs.realpathSync (ELECTRON_ASAR.js:306:40)
    at TreeView.moveEntry (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:14:1005042)
    at TreeView.onDrop (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:14:1011971)
    at HTMLDivElement.<anonymous> (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:14:985602)

Commands
     -2:07.0 core:save (input.hidden-input)
     -2:06.5.0 core:close (input.hidden-input)
     -1:59.9.0 grammar-selector:show (atom-text-editor.editor.is-focused)
     -1:56.9.0 core:confirm (input.hidden-input)
     -1:49.3.0 core:backspace (input.hidden-input)
     -1:48.8.0 core:move-down (input.hidden-input)
  3x -1:48.3.0 core:move-right (input.hidden-input)
  2x -1:47 editor:delete-to-end-of-line (input.hidden-input)
     -1:39.8.0 core:move-left (input.hidden-input)
     -1:39.2.0 editor:delete-to-end-of-line (input.hidden-input)
     -1:37.1.0 core:save (input.hidden-input)
     -1:16.4.0 tree-view:add-file (div.tool-panel.tree-view)
     -1:15 core:paste (input.hidden-input)
     -1:14.5.0 core:confirm (input.hidden-input)
     -1:11.8.0 core:close (input.hidden-input)
     -0:09.4.0 tree-view:remove (div.tool-panel.tree-view)

Non-Core Packages
atom-beautify 0.33.4
atom-material-ui 2.1.3
atom-time-tracker 0.1.0
busy-signal 2.0.1
intentions 1.1.5
linter 2.3.1
linter-eslint 8.5.5
linter-ui-default 1.8.1
nv-dark-ui 3.0.8
react 0.18.0
react-snippets 1.2.0
vsc-dark-syntax 0.0.3
wakatime 9.0.1

Thanks for reaching out!
We require the template to be filled out on all new issues and pull requests. We do this so that we can be certain we have all the information we need to address your submission efficiently. This allows the maintainers to spend more time fixing bugs, implementing enhancements, and reviewing and merging pull requests.
Thanks for understanding and meeting us half way :grinning:


Commands receiving NAK should throw

This would be a breaking change so I thought I throw it up here for discussion before starting to make any changes.
Today there is somewhat inconsistent behavior when receiving NAK responses:

Commands that return a reply (e.g. IdReport) don't handle NAK and instead will throw an exception when trying to parse the NAK as a valid response.
Commands that don't expect a reply (e.g. ReaderLedControl) will check for NAK reply and return true/false to indicate success.

The problems with this is:

Inconsistent behavior between different commands. Sometimes an exception is thrown, sometimes false is returned.
The exception thrown in case 1 is misleading, since it is just a byproduct of not handling NAK. E.g. instead of something informative like "NAK (0x06) Encrypted communication is required to process this command.", one receives something like "Invalid size for the data".
In case 2, the NAK error code is not propagated to the client, which only receives a true/false.

I propose that:

all commands check the received response and throw an informative exception in case of NAK.
commands that today return a Task<bool> is changed to return only Task.

The original idea was that the client would listen to the NakReplyReceived event for NAK responses. It became clear that this was not a good decision for certain commands. A response object was created for these commands that included a Nak property.
I completely agree with proposal 1. I'm only hesitant with 2, since it causes a breaking change. Let me ponder 2 for a few more days. I wonder if there is a way we can transition to a unified method while keeping backward compatibility. Even deprecating those Task methods for a few releases would be acceptable.

Sorry if I give you headaches! :)
Even today, the commands returning Task<bool> can throw (e.g. com problems), so clients must already have exception handling in place. Maybe it's not such a big deal to also get the NAK as an exception?
An alternative could be to use something like ReturnReplyData<T> everywhere. But that would also be a breaking change. And bad for other reasons. I think it would be cleaner to always return the expected reply from the command methods. Any errors (NAK, parse errors, com errors, etc) are thrown as exceptions.

I'd also like to add that this is not something I'm in dire need of right now. It's more of a future enhancement request.


[CXF-7640] Create a form to set the use of Spring in the classHelper …

…on a per client way

The build was successful in my machine. My config is:

Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T05:58:13-02:00)

Java version: 1.8.0_72, vendor: Oracle Corporation

OS name: "mac os x", version: "10.12.6", arch: "x86_64", family: "mac"

What is the jenkins build environment so I can try to reproduce it locally and fix the build problem?

Don't worry about the Jenkins build, the failure is caused by a flapping test not related to your changes.

@osvaldopina Could you please add at least one (better, a few) test case to make sure things are working as expected? Thanks.

all suggested changes were done

retest this please


changed the footer

I have changed the footer and add my link to "Contributors" and my project to "Helpful Material", it's fun. Thanks!

Like the footer thing! If you could fix the merge conflicts i would happily merge this!


Setup Github Pages documentation similar to the Java MQTT Client

🚀 Feature Request
https://hivemq.github.io/hivemq-mqtt-client/

🔈 Motivation

🛰 Alternatives

📎 Additional context

New documentation is live: https://hivemq.github.io/hivemq-mqtt-client-dotnet/docs/


Add more training data

Currently there are limited training data available.
Need to add more faqs, related to covid awareness. etc

I will begin implementing the Covid dataset from here tomorrow morning. I have already added significantly more data to the general (affirm, deny, greet etc.) intents and a large number of chitchat intents.
I will also begin migrating the FAQ's to rules.yml (and maybe chitchat too) and make use of the the new ResponseSelector and RulePolicy features in Rasa 2.0.
Although maybe some of the FAQ's would benefit from remaining in stories...


Feature/remove typography options

Removes some of the typography controls in the block editor, at the request of the client, as per the first section of this document: https://docs.google.com/spreadsheets/d/1QYsxRZlHZs7iQWjc8VS3Esj7zgUjAJ5jtBZ6TDypXhw/edit?gid=0#gid=0
To test, add a new page and some content in any text block. It should not be possible to change the text colour, background, font size or add margin or padding.

Changes here work as expected 👍
There's also a redundant reference to one of the font-size variables. This will need replacing with a govuk helper e.g. govuk-font() function. The CSS will need recompiling as a result.

Good point - have swapped


Implement writing of types to disk

A key question is what format to use. Probably HDF5 using a simple subset of its features is best. I just tried installing HDF5.jl on Mac and it was quite fast and easy–in the past I gather the installation would take a long time and fail often so it seems they've improved it!
Another alternative format is BSON. Finally we could offer a straight binary format and/or Julia serialize, which would not require installing any libraries.  Perhaps we can make a simple wrapper that allows us to offer whichever one a user prefers without us needing to code each one for every type in ITensors.jl.

HDF5.jl is nice because the output files can be used from C++ ITensor. JLD2.jl is another option.

Yes and Olivier is working on a HDF5 library for C++ (the existing one is quite bad!) so that's another reason to want to go HDF5. I could see a good use of this feature where people with existing code in C++ do their calculations there but then switch to Julia to do measurements, say.


Jekyll config change to give a new permalink structure to blog entrie…

…s. Make titles unique or there will be unintended consequences.
Signed-off-by: Nathan Boot<EMAIL_ADDRESS>Description
We define a post's permalink in Jekyll's config frontmatter. A quick change, but it will permanently change blog url structures going forward as well as retroactively. Please consider thoroughly. It's better to do it now. We can add redirects later.
Issues Resolved
#1052
Check List

[X] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the BSD-3-Clause License.

Will submit new PR with redirects included.


What can I do by using this?

?

Maybe it's easier for me, if you tell me what you are looking for, then I can tell, if this is something you can use, and if so, how.

Hi @renevaessen
Is it like selenium?


Update Dockerfile Based on Font Requirements

We can try this new dockerfile to see if it fixes the build

Thanks! So, should I make changes to the data again and then try to merge a new pull request to see if it works?
Sunny

On Oct 18, 2024, at 2:37 PM, Connor Lewis-Smith @.***> wrote:
We can try this new dockerfile to see if it fixes the build
You can view, comment on, or merge this pull request online at:
https://github.com/sljardine/upstream/pull/74 https://urldefense.com/v3/__https://github.com/sljardine/upstream/pull/74__;!!K-Hz7m0Vt54!mdbfLnaE6pkHf8n3zi8V6UqIyEviVU1ECe11fteXKrxEtJJ3zPc_HFTHZsq6D1Rhq2aKhoeGL78DzTnSV5Lwm0A$
Commit Summary
4728a6d https://urldefense.com/v3/__https://github.com/sljardine/upstream/pull/74/commits/4728a6de7b63e9f12c9b489c084c9443a93a8a53__;!!K-Hz7m0Vt54!mdbfLnaE6pkHf8n3zi8V6UqIyEviVU1ECe11fteXKrxEtJJ3zPc_HFTHZsq6D1Rhq2aKhoeGL78DzTnSz5wdtSw$ Update Dockerfile Based on Font Requirements
File Changes (1 file https://urldefense.com/v3/__https://github.com/sljardine/upstream/pull/74/files__;!!K-Hz7m0Vt54!mdbfLnaE6pkHf8n3zi8V6UqIyEviVU1ECe11fteXKrxEtJJ3zPc_HFTHZsq6D1Rhq2aKhoeGL78DzTnS4IIjbTo$)
M upstream/Dockerfile https://urldefense.com/v3/__https://github.com/sljardine/upstream/pull/74/files*diff-f8393a32df183159a1af913257416b0bbe42a462c3d21800a997b9b14fc60f9c__;Iw!!K-Hz7m0Vt54!mdbfLnaE6pkHf8n3zi8V6UqIyEviVU1ECe11fteXKrxEtJJ3zPc_HFTHZsq6D1Rhq2aKhoeGL78DzTnSTJZNr7I$ (29)
Patch Links:
https://github.com/sljardine/upstream/pull/74.patch https://urldefense.com/v3/__https://github.com/sljardine/upstream/pull/74.patch__;!!K-Hz7m0Vt54!mdbfLnaE6pkHf8n3zi8V6UqIyEviVU1ECe11fteXKrxEtJJ3zPc_HFTHZsq6D1Rhq2aKhoeGL78DzTnSjNjZ-Vk$
https://github.com/sljardine/upstream/pull/74.diff https://urldefense.com/v3/__https://github.com/sljardine/upstream/pull/74.diff__;!!K-Hz7m0Vt54!mdbfLnaE6pkHf8n3zi8V6UqIyEviVU1ECe11fteXKrxEtJJ3zPc_HFTHZsq6D1Rhq2aKhoeGL78DzTnSp2dJ2H0$
—
Reply to this email directly, view it on GitHub https://urldefense.com/v3/__https://github.com/sljardine/upstream/pull/74__;!!K-Hz7m0Vt54!mdbfLnaE6pkHf8n3zi8V6UqIyEviVU1ECe11fteXKrxEtJJ3zPc_HFTHZsq6D1Rhq2aKhoeGL78DzTnSV5Lwm0A$, or unsubscribe https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/ALUZDCEBKCNJX4QN2MOU553Z4F5RHAVCNFSM6AAAAABQGXZZSWVHI2DSMVQWIX3LMV43ASLTON2WKOZSGU4TQNBSGU4TCMY__;!!K-Hz7m0Vt54!mdbfLnaE6pkHf8n3zi8V6UqIyEviVU1ECe11fteXKrxEtJJ3zPc_HFTHZsq6D1Rhq2aKhoeGL78DzTnSZ80L_SQ$.
You are receiving this because you are subscribed to this thread.


SAK-43697 Library - standardize colors for lessons checklist, questio…

…n, and comments
https://jira.sakaiproject.org/browse/SAK-43697?filter=-1

Pulled this background color our of simplepagetool as Shawn suggested.


NOt being able to run my commands on VS code

Environment data

VS Code version: XXX
Extension version (available under the Extensions sidebar): XXX
OS and version: XXX
Python version (& distribution if applicable, e.g. Anaconda): XXX
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): XXX
Relevant/affected Python packages and their versions: XXX
Relevant/affected Python-related VS Code extensions and their versions: XXX
Value of the python.languageServer setting: XXX

[NOTE: If you suspect that your issue is related to the Microsoft Python Language Server (python.languageServer: 'Microsoft'), please download our new language server Pylance from the VS Code marketplace to see if that fixes your issue]
Expected behaviour
XXX
Actual behaviour
XXX
Steps to reproduce:
[NOTE: Self-contained, minimal reproducing code samples are extremely helpful and will expedite addressing your issue]

XXX

Logs

Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)

XXX

🚫  Closing this, please fill the issue template describing the error as well as your environment and steps to replicate the issue.
Thank you!


[cli] Do better than thinking...

I was seeing a lot of 'Thinking...' printing. Realised it was a perfect opportunity to insert some random goose-ness to keep things interesting.

Do you want to insert some Top GUN references in there too?
Here’s a list of Top Gun-inspired phrases that can replace standard "thinking" or "performing action" blurbs for your AI agent. These phrases will add a flair of confidence and urgency to its operations:
Thinking/Processing
"Engaging the radar lock..."
"Switching to targeting mode..."
"Scanning the horizon..."
"Running a systems check..."
"Eyes on the bogey..."
"Plotting the flight path..."
"Pulling up intel from the tower..."
"Looking for a clear shot..."
"Calibrating instruments..."
"Goose, what do you see?"
Performing Action
"Engines roaring, going supersonic..."
"Locked and loaded, firing away..."
"Engaging afterburners..."
"Target acquired, executing maneuver..."
"Deploying countermeasures..."
"Rolling inverted to get the shot..."
"Entering the danger zone..."
"Cutting through turbulence, stay sharp..."
"Cleared for landing—initiating sequence..."
"The sky’s clear—mission underway!"
These blurbs can be tailored to your AI agent's functionality for different operations, keeping things high-energy and thematic.


:reset is not documented

The REPL becomes quickly messy, I miss a 'clean' function

If you did mean cleaning the output, then this is usually the responsibility of the terminal application itself (e.g. by pressing Ctrl-L in most Mac or Linux terminal applications).

In addition to that, there is :reset to clean up the environment, i.e. remove all imports and previous declarations.

:help lists this and other operations. Perhaps the description of the :help command is lacking, though.

xD
If I like to clean the screen, I try clean, since thats the command I know.
If this does not work, will I try to google "Elm REPL clean screen/content/log/output"
It will lead to nothing useful.


stale feed

If I go here: https://tags.break-19.com/feed
last post was 18 hours ago, but if i click on individual tags I get recent results.
Did I misconfigure something?

Thanks for reporting this issue. @trycatchkamal  and I have been seeing that the posts are not sorted in reverse chronological order.  This is more visible in the "My feed" section than the individual hashtags.
Your configuration is correct. Just that the posts are not sorted in reverse time order.  You can observe this bug in individual hashtags feed too i guess (though less manifested).
We will investigate and push a fix sooner than later.
Thanks again 🙏

https://github.com/vivganes/zapddit/pull/35 fixes this


Review suggestions for https://github.com/twitter/scalding/pull/1921

PR containing some comment / formatting / style suggestions for https://github.com/twitter/scalding/pull/1921
In a couple of cases I took constructs like if (condition) { x } implicitElseCase and rewrote as explicit if { } else {} to make it easier to add comments.

Thanks Josh for the comments! Will merge this in :)


Content For FAQ

Hello!
Currently the the most basic version of the FAQ section contains only boiler plate code - nothing useful right now, sadly.
Suggestions and ideas are appreciated.
The current FAQ can be viewed here.
Thanks!

FAQ is finalized for release, here is the final version.
If you wish to add, edit, or remove, please make a new issue.
Thanks.


AzureResourceGroupDeployment does not support deallocating VMs

AzureResourceGroupDeployment does not support deallocating a VM.
It would be very nice to add a check box to the stop virtual machine action to deallocate the VM. The box should default to false so it will remain backwards compatible when scripts update.

I never explicitly mentioned here, PR #3869 solves this issue


Merge improved fork

Merge improved fork (fixes #125)
Add Github Actions (fixes #128)
Add ObjectPool as connection pool
Add unit tests
Add integration tests

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

:exclamation: No coverage uploaded for pull request base (master@a6056cc). Click here to learn what that means.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff            @@
##             master     #132   +/-   ##
=========================================
  Coverage          ?   81.86%
=========================================
  Files             ?        9
  Lines             ?      353
  Branches          ?       64
=========================================
  Hits              ?      289
  Misses            ?       34
  Partials          ?       30

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Add 100% Special Attack Bar Option to Idle Notifier

I'd like to be notified when my special attack bar is full so that I can return from AFK to use my 4 DDS attacks before switching back to DScim

Duplicate of  #1727


fix: use stripAccents in stripAccents test

Summary of PR
brief_summary_plz
Tests for unexpected behavior

none_whatsoever

Time spent on PR
nine_thousand_years
Linked issues
Fix #
Reviewers
@

I did not commit the other files, no clue how they got there

They're autogenerated on commit btw @bhajneet


Deployment

In this PR implemented following features:

Created unit and integration tests for all the most important components

Deployed on render

Splash screen

[ ] A simple page with the name of your app (yes, you need to choose one), and links to the sign up and log in pages.

Sign up and log in pages

[ ] The user should be able to register in the app with full name, email and password (all mandatory).

[ ] The user can log into the app using email and password.

[ ] If the user is not logged in, they can't access pages that require the user to be logged in (all the pages described below).

Home page (categories page)

[ ] When the user logs in, they are presented with the categories page.

[ ] For each category, the user can see their name, icon and the total amount of all the transactions that belongs to that category.

[ ] When the user clicks (or taps) on a category item, the application navigates to the transactions page for that category.

[ ] There is a button "add a new category" at the bottom that brings the user to the page to create a new category.

Transactions page

[ ] For a given category, the list of transactions is presented, ordered by the most recent.

[ ] At the top of the page the user could see the total amount for the category (sum of all of the amounts of the transactions in that category).

[ ] There is a button "add a new transaction" at the bottom that brings the user to the page to create a new transaction.

[ ] When the user clicks on the "Back" button (<), the user navigates to the home page.

"Add a new category" page

[ ] The user fills out a form to create a new category, indicating their name and icon (both mandatory).

[ ] The user clicks (or taps) the "Save" button to create the new category, and is taken to the home page on success.

[ ] When the user clicks on the "Back" button (<), the user navigates to the home page.

"Add a new transaction" page

[ ] The user fills out a form to create a new transaction with:

[ ] name (mandatory)

[ ] amount (mandatory)

[ ] categories (mandatory at least one)

[ ] The user click (or taps) the "Save" button to create the new transaction, and is taken to the transactions page for that category.

[ ] When the user clicks on the "Back" button (<), the user navigates to the transactions page for that category

@addod19  What u mean? its not clear its a Microverse Readme what u want more?


Full width

Hello,
Maybe I'm missing something, but can the slider be initiated in full width?
Let me know :)

Answer found here:
https://github.com/bqworks/slider-pro/issues/20


Improve liftover procedure using large hail table

Background
Currently we are using the liftover function in hail to convert GRCh37 coordinates to GRCh38.
This can be done using:
gs://gcp-public-data--gnomad/release/2.1.1/liftover_grch38/ht/genomes/gnomad.genomes.r2.1.1.sites.liftover_grch38.ht
Which is a ~700GiB hail table containing all GRCh37 variants and their GRCh38 mapping.
Tasks

[ ] Update the way we move between genome builds

@Daniel-Considine is this still planned?


Fluor not functional after plugging Mac keyboard in

Hi, amazing app, works perfectly for my Pro Tools needs.
When I add my official Apple wired keyboard (has all the relevant F keys up top), the F-keys don't function either way till I flip the default mode switch in the app and then it's all fine again. Wondered if you might be able to squish this little bug.
Many thanks for your work.

Could you please be more specific ? Describe what you do exactly, what you expect it to do and what it actually does. (No need to write a lot, don't worry).

So I've just solved it but I'll keep my explanation of what the issue was in case it would be useful for an FAQ or anything.

I've got one of these for my Macbook Pro, and in the Fluor settings I ask for the Apple function, not function key behaviour.
Without the USB keyboard plugged in, Fluor functions as normal.
However, if I connect the USB keyboard, this functionality flips so that the default setting for both laptop keyboard and USB keyboard is function key. This change of setting is not reflected in the GUI.
As a side note, if I have function key as the default, inserting the keyboard does not flip this setting, it remains as programmed.

The solution was to go into keyboard system preferences and untick 'use all F1, F2 etc. key as standard function keys'. I think because I ticked this when the USB keyboard was plugged in it didn't affect the laptop's function keys, which then Fluor overrode anyway, but when the keyboard was plugged in again, the system preferences one-upped it.
Either way problem solved!


Custom AAMatrix from C API?

Hi,
I was wondering if it is possible to define a custom AAMatrix from C API?
Thanks,

Unfortunately that API does not exist right now. The C API only includes core features right now. Do you need this feature?

I would not say strictly "need", but I would like to benchmark your awesome library (speed/accuracy) using a Match/Mismatch penalty model.

This feature exists on the Rust side. I can probably easily expose some sort of API for match/mismatch penalties.

Added a basic interface for this for now: https://github.com/Daniel-Liu-c0deb0t/block-aligner/blob/main/src/ffi.rs#L32
Note that match scores must be positive and mismatch scores must be negative.

Awesome, thanks. Now, I need to solve how to properly use it. From the C interface perspective, AAMatrix is an incomplete type. For example:
AAMatrix m_matrix = block_new_simple_aamatrix(1,-4);
Gives a error: storage size of ‘m_matrix’ isn’t known
How can I resolve this without hacking into your lib?
Thank you very much,

Ah the binding generator library was not correctly generating the full struct declaration. I worked around this by allocating the struct on the heap. The same function can be used to create a pointer to an AAMatrix, but it needs to be freed later: https://github.com/Daniel-Liu-c0deb0t/block-aligner/blob/main/src/ffi.rs#L32

Sorry for the delay in answering.
I got to test it properly today and it works flawlessly.
Thank you very much.


mmap() failed: Cannot allocate memory size

Goals

I developed an iOS application which contain one Personal Framework and two Today Extension. In order to access/modify data from app and extensions, I used AppGroup and all data will be accessible from shared storage.
I have access to data, wherever I need, by a Singleton in my Framework; in Main Application and Today Extensions, and there was no problem in accessing/modifying data. I also modify data from AppDelegate background fetch method (application(_, performFetchWithCompletionHandler:)) .
But, in SOME cases (for SOME users/testers), it is crashing with this error message:
Thread 1: Fatal error: 'try!' expression unexpectedly raised an error:
Error Domain=io.realm Code=9 "mmap() failed: Cannot allocate memory size:<PHONE_NUMBER>
offset: 0" UserInfo={NSLocalizedDescription=mmap() failed: Cannot allocate memory
size:<PHONE_NUMBER> offset: 0, Error Code=9}

I read other issues related to this error messages, and now, I have some note to tell, and some question to ask:

[Note] In some issues, there is suggestions for putting Realm transaction codes in autoreleasepool { }. I really don't know what autoreleasepool { } is and what does it do!! I'm almost sure, that this autoreleasepool { } was NOT in the official documentation! I know it is in documentation NOW, but at the time of developing first version of my application (near 18 months ago) with Realm 2.4.4, there was NO word about avoiding pinning or autoreleasepool.

[Question] If it is wrong to perform Realm transactions, out of DispatchQueue(label: "background").async { } and without autoreleasepool { }, why the crash/error occurred for SOME of users/tester? (and not occurred for ALL of them, including me!!) I did not have any problem with Realm in my usage of the app.

[Question] Is my approach (using a Singleton App.shared.realmObject) right? Is it right to use this in all targets (Main Application and Today Extensions) in order to access/modify data?

[Question] Does using autoreleasepool { } and performing all actions in DispatchQueue(label: "background").async { } solve my (our!) problem?

Expected Results

Initialize Realm object, and access/modify data from multiple targets.
Actual Results

At first access to shared App object (Singleton), Realm object starting to initialize and I will get the error and app will crash.
Steps to Reproduce

As I mentioned above, this error/crash is occurred for SOME of our testers/users. And I really don't know how to reproduce this.
Code Sample

In my personal framework, I use Singleton (so there will be only one instance of RealmObject) to use Realm object.
public final class App {
	public static var shared = App()

	public var realmObject: Realm!
	...

	public init() {
		...
		setupRealm()
		...
	}

	private func setupRealm() {
		var config = Realm.Configuration()
		config.schemaVersion = 11
		config.fileURL = FileManager
			.default
			.containerURL(forSecurityApplicationGroupIdentifier: "...")!
			.appendingPathComponent("db.realm")
		config.migrationBlock = { migration, oldSchemaVersion in }

		Realm.Configuration.defaultConfiguration = config
		realmObject = try! Realm()
	}
	...
}

Now, whenever I have read/write transactions, I use this:
//Read
let objects = App.shared.realmObject.objects(Model.self)
...

//Write
try! App.shared.realmObject.write {
	App.shared.realmContextObject.add(modelObject, update: true)
}

At first access to App.shared (in AppDelegate), initialize method is called, and app crashs at realmObject = try! Realm().
Version of Realm and Tooling

Realm framework version: 3.1.0
Xcode version: 9.2
Swift Version: 4.0
Dependency manager + version: Cocoapod 1.4.0

Hello again my friends,
I changed my codes, and did these:

Using shouldCompactOnLaunch:

var config = Realm.Configuration()
config.fileURL = FileManager
    .default
    .containerURL(forSecurityApplicationGroupIdentifier: App.UserDefaultsConfig.SuiteName)!
    .appendingPathComponent("db.realm")
config.migrationBlock = { migration, oldSchemaVersion in
    ...
}
config.shouldCompactOnLaunch = { totalBytes, usedBytes in
    let oneHundredMB = 100 * 1024 * 1024
    let result = (totalBytes > oneHundredMB) && (Double(usedBytes) / Double(totalBytes)) < 0.5
    return result
}

Realm.Configuration.defaultConfiguration = config
realmContextObject = try! Realm()

Using autoreleasepool { ... }:
All write actions are in autoreleasepool { ... }

Even after these changes, unfortunately, the error is occurred again.
👉 NOTE:
I'm using Background Fetch in my app (using application(_, performFetchWithCompletionHandler) and interval for this is setting based on user's choice. (5, 10, 30 or 60 minutes; Default is 10 minutes)
I think when we have  Background Fetch, the app will remain in memory, and it will not close, terminate, or suspend (Unless users manually terminate app, or etc.); In other word, app state is background.
So, whenever app performs Background Fetch (or even works with new data while app is in foreground), and new data stored in Realm, the function that creates and configures Realm object, WILL NOT call again, because I call it in AppDelegate (once), consequently, shouldCompactOnLaunch closure WILL NOT call, and size of the Realm file starts to grow; without ANY control.
If I am right, and you have any suggestion, tell me to give it a try.

The problem is your database file is growing too much. That's why you don't see it with little testing but others do after a while.
I suggest you:

Use Google to understand what autoreleasepool means
Read the docs about Threading: https://realm.io/docs/swift/latest/#threading
From 2. ensure you create a Realm instance specific for each thread you are using. You can't use the same instance across threads.
Use SO for these questions as you get much faster and better response there and we try to use this repo only for bugs and feature requests - as mentioned in the issue template ;-)

Thanks!


Allow multiple args in path.join()

https://nodejs.org/api/path.html#path_path_join_path
https://github.com/monterey-framework/monterey-pal-electron/blob/master/src/fs.js#L56 should allow for more than 2 arguments

did this