Skip to content

Conversation

@dependabot
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Jan 29, 2026

Bumps zigpy from 0.91.2 to 0.91.3.

Release notes

Sourced from zigpy's releases.

0.91.3

What's Changed

Full Changelog: zigpy/zigpy@0.91.2...0.91.3

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

@dependabot dependabot bot added dependencies Pull requests that update a dependency file python Pull requests that update Python code labels Jan 29, 2026
@TheJulianJES
Copy link
Contributor

TheJulianJES commented Jan 29, 2026

Quirks overriding read_attributes with manufacturer=None default could be an issue as well...

In this instance, tests fail because of zhaquirks/xiaomi/aqara/thermostat_agl001.py#L97-L99 as read_attributes is explicitly called with manufacturer=None, likely from here: zha/application/helpers.py#L70, which is also explicitly called with manufacturer=None from here: zha/zigbee/cluster_handlers/init.py#L591-L594.
EDIT: Above is also an issue, but in this instance, the issue is here: zha/zigbee/cluster_handlers/init.py#L612-L615

I guess this forwarding case is a bit special..
Explicitly providing the manufacturer code makes them pass, but we also need to fix all defaults in ZHA (and likely ZHA in HA for the websocket API / Manage Zigbee UI):

index cb534052..b83fa02c 100644
--- a/zhaquirks/xiaomi/aqara/thermostat_agl001.py
+++ b/zhaquirks/xiaomi/aqara/thermostat_agl001.py
@@ -10,6 +10,8 @@ from typing import Any, Final
 from zigpy.profiles import zha
 from zigpy.quirks import CustomCluster
 import zigpy.types as t
+from zigpy.typing import UNDEFINED, UndefinedType
+from zigpy.zcl import foundation
 from zigpy.zcl.clusters.general import Basic, Identify, Ota, Time
 from zigpy.zcl.clusters.hvac import Thermostat
 from zigpy.zcl.foundation import ZCLAttributeDef
@@ -76,10 +78,13 @@ class ThermostatCluster(CustomCluster, Thermostat):
 
     async def read_attributes(
         self,
-        attributes: list[int | str],
+        attributes: list[int | str | foundation.ZCLAttributeDef],
         allow_cache: bool = False,
         only_cache: bool = False,
-        manufacturer: int | t.uint16_t | None = None,
+        manufacturer: int
+        | t.uint16_t
+        | UndefinedType
+        | None = UNDEFINED,  # Not needed to make tests pass
     ):
         """Pass reading attributes to Xiaomi cluster if applicable."""
         successful_r, failed_r = {}, {}
@@ -95,7 +100,10 @@ class ThermostatCluster(CustomCluster, Thermostat):
                 remaining_attributes.remove("system_mode")
 
             successful_r, failed_r = await self.endpoint.opple_cluster.read_attributes(
-                [SYSTEM_MODE], allow_cache, only_cache, manufacturer
+                [SYSTEM_MODE],
+                allow_cache,
+                only_cache,
+                UNDEFINED,  # This makes test pass
             )
             # convert Xiaomi system_mode to ZCL attribute
             if SYSTEM_MODE in successful_r:

@puddly
Copy link
Contributor

puddly commented Jan 29, 2026

Ah, true. I fixed command to turn manufacturer=None into UNDEFINED but I did not do the same for write_attributes.

I think we should fix quirks here for both?

@TheJulianJES
Copy link
Contributor

I'll put up a ZHA PR in a second, just to keep it separate from this bump. We need to fix that anyway (and the improved manufacturer code handling in zigpy finally fixes an issue where batch reading attributes during initialization always used a manufacturer code or not, messing up mixed reads).

But yeah, quirk defaults should also be fixed.

@codecov
Copy link

codecov bot commented Jan 29, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 97.29%. Comparing base (be4aa43) to head (cf2d90a).

Additional details and impacted files
@@           Coverage Diff           @@
##              dev     #636   +/-   ##
=======================================
  Coverage   97.29%   97.29%           
=======================================
  Files          62       62           
  Lines       10716    10716           
=======================================
  Hits        10426    10426           
  Misses        290      290           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@puddly
Copy link
Contributor

puddly commented Jan 29, 2026

I've got this one fixed up by copy/pasting the zigpy attribute reporting test helper, which better accounts for attribute names and manufacturer codes and dropping manufacturer=None in favor of **kwargs.

Reverted.

@dependabot @github
Copy link
Contributor Author

dependabot bot commented on behalf of github Jan 30, 2026

A newer version of zigpy exists, but since this PR has been edited by someone other than Dependabot I haven't updated it. You'll get a PR for the updated version as normal once this PR is merged.

@TheJulianJES
Copy link
Contributor

@dependabot recreate

So we can then merge the quirks bump.

@puddly puddly force-pushed the dependabot/pip/zigpy-0.91.3 branch from e06d104 to 49f31e8 Compare January 30, 2026 01:19
Bumps [zigpy](https://github.com/zigpy/zigpy) from 0.91.2 to 0.91.3.
- [Release notes](https://github.com/zigpy/zigpy/releases)
- [Commits](zigpy/zigpy@0.91.2...0.91.3)

---
updated-dependencies:
- dependency-name: zigpy
  dependency-version: 0.91.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot force-pushed the dependabot/pip/zigpy-0.91.3 branch from 49f31e8 to 4780f32 Compare January 30, 2026 01:20
@dependabot @github
Copy link
Contributor Author

dependabot bot commented on behalf of github Jan 30, 2026

Superseded by #640.

@dependabot dependabot bot closed this Jan 30, 2026
@dependabot dependabot bot deleted the dependabot/pip/zigpy-0.91.3 branch January 30, 2026 01:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update Python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants