python-duco-connectivity 0.7.0__tar.gz → 0.7.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. {python_duco_connectivity-0.7.0/src/python_duco_connectivity.egg-info → python_duco_connectivity-0.7.1}/PKG-INFO +1 -1
  2. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/pyproject.toml +1 -1
  3. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/src/duco_connectivity/client.py +17 -1
  4. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1/src/python_duco_connectivity.egg-info}/PKG-INFO +1 -1
  5. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/tests/test_client.py +15 -0
  6. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/LICENSE +0 -0
  7. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/README.md +0 -0
  8. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/setup.cfg +0 -0
  9. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/src/duco_connectivity/__init__.py +0 -0
  10. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/src/duco_connectivity/__main__.py +0 -0
  11. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/src/duco_connectivity/cli.py +0 -0
  12. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/src/duco_connectivity/exceptions.py +0 -0
  13. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/src/duco_connectivity/models.py +0 -0
  14. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/src/duco_connectivity/py.typed +0 -0
  15. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/src/python_duco_connectivity.egg-info/SOURCES.txt +0 -0
  16. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/src/python_duco_connectivity.egg-info/dependency_links.txt +0 -0
  17. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/src/python_duco_connectivity.egg-info/entry_points.txt +0 -0
  18. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/src/python_duco_connectivity.egg-info/requires.txt +0 -0
  19. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/src/python_duco_connectivity.egg-info/top_level.txt +0 -0
  20. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/tests/test_api_reference.py +0 -0
  21. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/tests/test_cli.py +0 -0
  22. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/tests/test_exceptions.py +0 -0
  23. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/tests/test_local_sample_validation.py +0 -0
  24. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/tests/test_models.py +0 -0
  25. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/tests/test_pytest_live_support.py +0 -0
  26. {python_duco_connectivity-0.7.0 → python_duco_connectivity-0.7.1}/tests/test_replay_helpers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-duco-connectivity
3
- Version: 0.7.0
3
+ Version: 0.7.1
4
4
  Summary: Async HTTP client for the local Duco Connectivity API
5
5
  Author: Ronald van der Meer
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "python-duco-connectivity"
7
- version = "0.7.0"
7
+ version = "0.7.1"
8
8
  description = "Async HTTP client for the local Duco Connectivity API"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -2112,7 +2112,23 @@ class DucoClient:
2112
2112
 
2113
2113
  async def async_get_time_filter_remaining(self) -> int | None:
2114
2114
  """Return the remaining heat recovery filter time when the box reports it."""
2115
- payload = await self.async_get_info(module=InfoModuleSelector.HEAT_RECOVERY)
2115
+ try:
2116
+ payload = await self.async_get_info(module=InfoModuleSelector.HEAT_RECOVERY)
2117
+ except DucoResponseError as err:
2118
+ if err.status == 400 and err.path == "/info":
2119
+ try:
2120
+ error_payload = json.loads(err.body)
2121
+ except json.JSONDecodeError:
2122
+ pass
2123
+ else:
2124
+ if (
2125
+ isinstance(error_payload, dict)
2126
+ and error_payload.get("Code") == 3
2127
+ and error_payload.get("Result") == "FAILED"
2128
+ ):
2129
+ return None
2130
+ raise
2131
+
2116
2132
  if not isinstance(payload, dict):
2117
2133
  msg = (
2118
2134
  "Expected object payload from /info?module=HeatRecovery, got "
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-duco-connectivity
3
- Version: 0.7.0
3
+ Version: 0.7.1
4
4
  Summary: Async HTTP client for the local Duco Connectivity API
5
5
  Author: Ronald van der Meer
6
6
  License-Expression: MIT
@@ -3692,6 +3692,21 @@ async def test_get_time_filter_remaining_returns_none_when_not_reported() -> Non
3692
3692
  assert remaining is None
3693
3693
 
3694
3694
 
3695
+ async def test_get_time_filter_remaining_returns_none_when_module_unsupported() -> None:
3696
+ """Heat recovery filter time should stay optional for boxes without that module."""
3697
+ mock_response = _response(
3698
+ status=400,
3699
+ text_payload='{"Code":3,"Result":"FAILED"}',
3700
+ )
3701
+
3702
+ async with aiohttp.ClientSession() as session:
3703
+ client = DucoClient(session=session, host="192.0.2.94")
3704
+ with patch.object(session, "request", _request(mock_response)):
3705
+ remaining = await client.async_get_time_filter_remaining()
3706
+
3707
+ assert remaining is None
3708
+
3709
+
3695
3710
  @pytest.mark.parametrize(
3696
3711
  ("payload", "message"),
3697
3712
  [