aiohomematic 2025.10.6__tar.gz → 2025.10.7__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.

Potentially problematic release.


This version of aiohomematic might be problematic. Click here for more details.

Files changed (113) hide show
  1. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/PKG-INFO +1 -1
  2. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/central/rpc_server.py +7 -5
  3. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/const.py +1 -1
  4. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic.egg-info/PKG-INFO +1 -1
  5. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/LICENSE +0 -0
  6. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/README.md +0 -0
  7. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/__init__.py +0 -0
  8. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/async_support.py +0 -0
  9. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/caches/__init__.py +0 -0
  10. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/caches/dynamic.py +0 -0
  11. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/caches/persistent.py +0 -0
  12. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/caches/visibility.py +0 -0
  13. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/central/__init__.py +0 -0
  14. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/central/decorators.py +0 -0
  15. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/client/__init__.py +0 -0
  16. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/client/_rpc_errors.py +0 -0
  17. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/client/json_rpc.py +0 -0
  18. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/client/rpc_proxy.py +0 -0
  19. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/context.py +0 -0
  20. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/converter.py +0 -0
  21. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/decorators.py +0 -0
  22. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/exceptions.py +0 -0
  23. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/hmcli.py +0 -0
  24. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/__init__.py +0 -0
  25. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/calculated/__init__.py +0 -0
  26. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/calculated/climate.py +0 -0
  27. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/calculated/data_point.py +0 -0
  28. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/calculated/operating_voltage_level.py +0 -0
  29. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/calculated/support.py +0 -0
  30. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/custom/__init__.py +0 -0
  31. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/custom/climate.py +0 -0
  32. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/custom/const.py +0 -0
  33. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/custom/cover.py +0 -0
  34. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/custom/data_point.py +0 -0
  35. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/custom/definition.py +0 -0
  36. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/custom/light.py +0 -0
  37. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/custom/lock.py +0 -0
  38. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/custom/siren.py +0 -0
  39. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/custom/support.py +0 -0
  40. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/custom/switch.py +0 -0
  41. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/custom/valve.py +0 -0
  42. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/data_point.py +0 -0
  43. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/device.py +0 -0
  44. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/event.py +0 -0
  45. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/generic/__init__.py +0 -0
  46. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/generic/action.py +0 -0
  47. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/generic/binary_sensor.py +0 -0
  48. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/generic/button.py +0 -0
  49. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/generic/data_point.py +0 -0
  50. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/generic/number.py +0 -0
  51. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/generic/select.py +0 -0
  52. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/generic/sensor.py +0 -0
  53. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/generic/switch.py +0 -0
  54. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/generic/text.py +0 -0
  55. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/hub/__init__.py +0 -0
  56. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/hub/binary_sensor.py +0 -0
  57. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/hub/button.py +0 -0
  58. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/hub/data_point.py +0 -0
  59. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/hub/number.py +0 -0
  60. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/hub/select.py +0 -0
  61. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/hub/sensor.py +0 -0
  62. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/hub/switch.py +0 -0
  63. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/hub/text.py +0 -0
  64. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/support.py +0 -0
  65. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/model/update.py +0 -0
  66. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/property_decorators.py +0 -0
  67. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/py.typed +0 -0
  68. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/rega_scripts/fetch_all_device_data.fn +0 -0
  69. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/rega_scripts/get_program_descriptions.fn +0 -0
  70. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/rega_scripts/get_serial.fn +0 -0
  71. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/rega_scripts/get_system_variable_descriptions.fn +0 -0
  72. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/rega_scripts/set_program_state.fn +0 -0
  73. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/rega_scripts/set_system_variable.fn +0 -0
  74. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/support.py +0 -0
  75. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic/validator.py +0 -0
  76. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic.egg-info/SOURCES.txt +0 -0
  77. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic.egg-info/dependency_links.txt +0 -0
  78. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic.egg-info/requires.txt +0 -0
  79. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic.egg-info/top_level.txt +0 -0
  80. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic_support/__init__.py +0 -0
  81. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/aiohomematic_support/client_local.py +0 -0
  82. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/pyproject.toml +0 -0
  83. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/setup.cfg +0 -0
  84. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_action.py +0 -0
  85. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_async_support.py +0 -0
  86. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_binary_sensor.py +0 -0
  87. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_button.py +0 -0
  88. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_calculated_support.py +0 -0
  89. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_central.py +0 -0
  90. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_central_pydevccu.py +0 -0
  91. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_climate.py +0 -0
  92. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_cover.py +0 -0
  93. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_decorator.py +0 -0
  94. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_device.py +0 -0
  95. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_dynamic_caches.py +0 -0
  96. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_entity.py +0 -0
  97. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_event.py +0 -0
  98. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_json_rpc.py +0 -0
  99. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_json_rpc_client_integration.py +0 -0
  100. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_kwonly_lint.py +0 -0
  101. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_light.py +0 -0
  102. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_lock.py +0 -0
  103. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_logging_support.py +0 -0
  104. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_number.py +0 -0
  105. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_select.py +0 -0
  106. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_sensor.py +0 -0
  107. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_siren.py +0 -0
  108. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_support.py +0 -0
  109. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_support_extra.py +0 -0
  110. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_switch.py +0 -0
  111. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_text.py +0 -0
  112. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_valve.py +0 -0
  113. {aiohomematic-2025.10.6 → aiohomematic-2025.10.7}/tests/test_xml_rpc_proxy_integration.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aiohomematic
3
- Version: 2025.10.6
3
+ Version: 2025.10.7
4
4
  Summary: Homematic interface for Home Assistant running on Python 3.
5
5
  Home-page: https://github.com/sukramj/aiohomematic
6
6
  Author-email: SukramJ <sukramj@icloud.com>, Daniel Perna <danielperna84@gmail.com>
@@ -12,7 +12,7 @@ from __future__ import annotations
12
12
  import contextlib
13
13
  import logging
14
14
  import threading
15
- from typing import Any, Final
15
+ from typing import Any, Final, cast
16
16
  from xmlrpc.server import SimpleXMLRPCRequestHandler, SimpleXMLRPCServer
17
17
 
18
18
  from aiohomematic import central as hmcu
@@ -175,7 +175,7 @@ class RpcServer(threading.Thread):
175
175
  """RPC server thread to handle messages from the backend."""
176
176
 
177
177
  _initialized: bool = False
178
- _instances: Final[dict[tuple[str, int], XmlRpcServer]] = {}
178
+ _instances: Final[dict[tuple[str, int], RpcServer]] = {}
179
179
 
180
180
  def __init__(
181
181
  self,
@@ -190,9 +190,10 @@ class RpcServer(threading.Thread):
190
190
  self._listen_ip_addr: Final = ip_addr
191
191
  self._listen_port: Final[int] = find_free_port() if port == PORT_ANY else port
192
192
  self._address: Final[tuple[str, int]] = (ip_addr, self._listen_port)
193
- threading.Thread.__init__(self, name=f"RpcServer {ip_addr}:{self._listen_port}")
194
193
  self._centrals: Final[dict[str, hmcu.CentralUnit]] = {}
195
194
  self._simple_rpc_server: SimpleXMLRPCServer
195
+ self._instances[self._address] = self
196
+ threading.Thread.__init__(self, name=f"RpcServer {ip_addr}:{self._listen_port}")
196
197
 
197
198
  def run(self) -> None:
198
199
  """Run the RPC-Server thread."""
@@ -266,8 +267,9 @@ class XmlRpcServer(RpcServer):
266
267
  ) -> None:
267
268
  """Init XmlRPC server."""
268
269
 
270
+ if self._initialized:
271
+ return
269
272
  super().__init__(ip_addr=ip_addr, port=port)
270
- self._instances[self._address] = self
271
273
  self._simple_rpc_server = HomematicXMLRPCServer(
272
274
  addr=self._address,
273
275
  requestHandler=RequestHandler,
@@ -283,7 +285,7 @@ class XmlRpcServer(RpcServer):
283
285
  if (rpc := cls._instances.get((ip_addr, port))) is None:
284
286
  _LOGGER.debug("Creating XmlRpc server")
285
287
  return super().__new__(cls)
286
- return rpc
288
+ return cast(XmlRpcServer, rpc)
287
289
 
288
290
 
289
291
  def create_xml_rpc_server(*, ip_addr: str = IP_ANY_V4, port: int = PORT_ANY) -> XmlRpcServer:
@@ -19,7 +19,7 @@ import sys
19
19
  from types import MappingProxyType
20
20
  from typing import Any, Final, NamedTuple, Required, TypeAlias, TypedDict
21
21
 
22
- VERSION: Final = "2025.10.6"
22
+ VERSION: Final = "2025.10.7"
23
23
 
24
24
  # Detect test speedup mode via environment
25
25
  _TEST_SPEEDUP: Final = (
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aiohomematic
3
- Version: 2025.10.6
3
+ Version: 2025.10.7
4
4
  Summary: Homematic interface for Home Assistant running on Python 3.
5
5
  Home-page: https://github.com/sukramj/aiohomematic
6
6
  Author-email: SukramJ <sukramj@icloud.com>, Daniel Perna <danielperna84@gmail.com>