zwave-js-server-python 0.67.0__tar.gz → 0.68.0__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 (81) hide show
  1. {zwave_js_server_python-0.67.0/zwave_js_server_python.egg-info → zwave_js_server_python-0.68.0}/PKG-INFO +2 -1
  2. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/pyproject.toml +1 -0
  3. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/__init__.py +1 -1
  4. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/controller/__init__.py +20 -13
  5. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/driver/__init__.py +8 -2
  6. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/node/__init__.py +11 -4
  7. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/node/event_model.py +7 -0
  8. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0/zwave_js_server_python.egg-info}/PKG-INFO +2 -1
  9. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/LICENSE +0 -0
  10. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/MANIFEST.in +0 -0
  11. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/README.md +0 -0
  12. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/setup.cfg +0 -0
  13. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/__init__.py +0 -0
  14. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/__main__.py +0 -0
  15. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/client.py +0 -0
  16. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/__init__.py +0 -0
  17. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/barrier_operator.py +0 -0
  18. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/basic.py +0 -0
  19. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/central_scene.py +0 -0
  20. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/color_switch.py +0 -0
  21. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/energy_production.py +0 -0
  22. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/entry_control.py +0 -0
  23. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/humidity_control.py +0 -0
  24. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/lock.py +0 -0
  25. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/meter.py +0 -0
  26. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/multilevel_sensor.py +0 -0
  27. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/multilevel_switch.py +0 -0
  28. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/notification.py +0 -0
  29. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/power_level.py +0 -0
  30. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/protection.py +0 -0
  31. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/scene_activation.py +0 -0
  32. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/sound_switch.py +0 -0
  33. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/thermostat.py +0 -0
  34. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/wake_up.py +0 -0
  35. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/const/command_class/window_covering.py +0 -0
  36. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/dump.py +0 -0
  37. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/event.py +0 -0
  38. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/exceptions.py +0 -0
  39. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/firmware.py +0 -0
  40. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/__init__.py +0 -0
  41. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/association.py +0 -0
  42. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/command_class.py +0 -0
  43. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/config_manager/__init__.py +0 -0
  44. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/controller/data_model.py +0 -0
  45. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/controller/event_model.py +0 -0
  46. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/controller/inclusion_and_provisioning.py +0 -0
  47. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/controller/rebuild_routes.py +0 -0
  48. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/controller/statistics.py +0 -0
  49. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/device_class.py +0 -0
  50. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/device_config.py +0 -0
  51. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/driver/firmware.py +0 -0
  52. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/duration.py +0 -0
  53. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/endpoint.py +0 -0
  54. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/firmware.py +0 -0
  55. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/log_config.py +0 -0
  56. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/log_message.py +0 -0
  57. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/node/data_model.py +0 -0
  58. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/node/firmware.py +0 -0
  59. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/node/health_check.py +0 -0
  60. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/node/statistics.py +0 -0
  61. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/notification.py +0 -0
  62. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/statistics.py +0 -0
  63. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/utils.py +0 -0
  64. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/value.py +0 -0
  65. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/model/version.py +0 -0
  66. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/py.typed +0 -0
  67. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/util/__init__.py +0 -0
  68. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/util/command_class/__init__.py +0 -0
  69. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/util/command_class/energy_production.py +0 -0
  70. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/util/command_class/meter.py +0 -0
  71. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/util/command_class/multilevel_sensor.py +0 -0
  72. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/util/helpers.py +0 -0
  73. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/util/lock.py +0 -0
  74. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/util/multicast.py +0 -0
  75. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/util/node.py +0 -0
  76. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server/version.py +0 -0
  77. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server_python.egg-info/SOURCES.txt +0 -0
  78. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server_python.egg-info/dependency_links.txt +0 -0
  79. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server_python.egg-info/entry_points.txt +0 -0
  80. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server_python.egg-info/requires.txt +0 -0
  81. {zwave_js_server_python-0.67.0 → zwave_js_server_python-0.68.0}/zwave_js_server_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zwave-js-server-python
3
- Version: 0.67.0
3
+ Version: 0.68.0
4
4
  Summary: Python wrapper for zwave-js-server
5
5
  Author-email: Home Assistant Team <hello@home-assistant.io>
6
6
  License-Expression: Apache-2.0
@@ -13,6 +13,7 @@ Classifier: Natural Language :: English
13
13
  Classifier: Programming Language :: Python :: 3
14
14
  Classifier: Programming Language :: Python :: 3.12
15
15
  Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
16
17
  Classifier: Topic :: Home Automation
17
18
  Requires-Python: >=3.12
18
19
  Description-Content-Type: text/markdown
@@ -17,6 +17,7 @@ classifiers = [
17
17
  "Programming Language :: Python :: 3",
18
18
  "Programming Language :: Python :: 3.12",
19
19
  "Programming Language :: Python :: 3.13",
20
+ "Programming Language :: Python :: 3.14",
20
21
  "Topic :: Home Automation",
21
22
  ]
22
23
  dependencies = [
@@ -8,7 +8,7 @@ import logging
8
8
  from typing import TypedDict
9
9
 
10
10
  PACKAGE_NAME = "zwave-js-server-python"
11
- __version__ = "0.67.0"
11
+ __version__ = "0.68.0"
12
12
 
13
13
  # minimal server schema version we can handle
14
14
  MIN_SERVER_SCHEMA_VERSION = 44
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from dataclasses import dataclass
6
+ import logging
6
7
  from typing import TYPE_CHECKING, Any, Literal, cast
7
8
 
8
9
  from zwave_js_server.model.node.firmware import NodeFirmwareUpdateInfo
@@ -46,17 +47,20 @@ from .statistics import (
46
47
  if TYPE_CHECKING:
47
48
  from ...client import Client
48
49
 
49
-
50
- DEFAULT_CONTROLLER_STATISTICS = ControllerStatisticsDataType(
51
- messagesTX=0,
52
- messagesRX=0,
53
- messagesDroppedTX=0,
54
- messagesDroppedRX=0,
55
- NAK=0,
56
- CAN=0,
57
- timeoutACK=0,
58
- timeoutResponse=0,
59
- timeoutCallback=0,
50
+ _LOGGER = logging.getLogger(__package__)
51
+
52
+ DEFAULT_CONTROLLER_STATISTICS = ( # pylint: disable=invalid-name
53
+ ControllerStatisticsDataType(
54
+ messagesTX=0,
55
+ messagesRX=0,
56
+ messagesDroppedTX=0,
57
+ messagesDroppedRX=0,
58
+ NAK=0,
59
+ CAN=0,
60
+ timeoutACK=0,
61
+ timeoutResponse=0,
62
+ timeoutCallback=0,
63
+ )
60
64
  )
61
65
 
62
66
 
@@ -901,12 +905,15 @@ class Controller(EventBase):
901
905
  f"{event.data}"
902
906
  )
903
907
 
904
- CONTROLLER_EVENT_MODEL_MAP[event.type].from_dict(event.data)
908
+ if (event_type := event.type) not in CONTROLLER_EVENT_MODEL_MAP:
909
+ _LOGGER.info("Unhandled controller event: %s", event_type)
910
+ return
905
911
 
912
+ CONTROLLER_EVENT_MODEL_MAP[event_type].from_dict(event.data)
906
913
  self._handle_event_protocol(event)
907
914
 
908
915
  event.data["controller"] = self
909
- self.emit(event.type, event.data)
916
+ self.emit(event_type, event.data)
910
917
 
911
918
  def handle_inclusion_failed(self, event: Event) -> None:
912
919
  """Process an inclusion failed event."""
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import logging
5
6
  from typing import TYPE_CHECKING, Any, Literal, cast
6
7
 
7
8
  from zwave_js_server.model.firmware import (
@@ -26,6 +27,8 @@ from .firmware import (
26
27
  if TYPE_CHECKING:
27
28
  from ...client import Client
28
29
 
30
+ _LOGGER = logging.getLogger(__package__)
31
+
29
32
 
30
33
  class BaseDriverEventModel(BaseEventModel):
31
34
  """Base model for a driver event."""
@@ -184,11 +187,14 @@ class Driver(EventBase):
184
187
  self.controller.receive_event(event)
185
188
  return
186
189
 
187
- DRIVER_EVENT_MODEL_MAP[event.type].from_dict(event.data)
190
+ if (event_type := event.type) not in DRIVER_EVENT_MODEL_MAP:
191
+ _LOGGER.info("Unhandled driver event: %s", event_type)
192
+ return
188
193
 
194
+ DRIVER_EVENT_MODEL_MAP[event_type].from_dict(event.data)
189
195
  self._handle_event_protocol(event)
190
196
 
191
- self.emit(event.type, event.data)
197
+ self.emit(event_type, event.data)
192
198
 
193
199
  async def _async_send_command(
194
200
  self, command: str, require_schema: int | None = None, **kwargs: Any
@@ -73,7 +73,7 @@ if TYPE_CHECKING:
73
73
  # pylint: disable=too-many-lines
74
74
  _LOGGER = logging.getLogger(__package__)
75
75
 
76
- DEFAULT_NODE_STATISTICS = NodeStatisticsDataType(
76
+ DEFAULT_NODE_STATISTICS = NodeStatisticsDataType( # pylint: disable=invalid-name
77
77
  commandsTX=0,
78
78
  commandsRX=0,
79
79
  commandsDroppedTX=0,
@@ -395,7 +395,7 @@ class Node(EventBase):
395
395
  values = {
396
396
  value_id: value
397
397
  for value_id, value in self.values.items()
398
- if self.index == value.endpoint
398
+ if endpoint_idx == value.endpoint
399
399
  }
400
400
  if endpoint_idx in self.endpoints:
401
401
  self.endpoints[endpoint_idx].update(endpoint, values)
@@ -475,12 +475,15 @@ class Node(EventBase):
475
475
 
476
476
  def receive_event(self, event: Event) -> None:
477
477
  """Receive an event."""
478
- NODE_EVENT_MODEL_MAP[event.type].from_dict(event.data)
478
+ if (event_type := event.type) not in NODE_EVENT_MODEL_MAP:
479
+ _LOGGER.info("Unhandled node event: %s", event_type)
480
+ return
479
481
 
482
+ NODE_EVENT_MODEL_MAP[event_type].from_dict(event.data)
480
483
  self._handle_event_protocol(event)
481
484
  event.data["node"] = self
482
485
 
483
- self.emit(event.type, event.data)
486
+ self.emit(event_type, event.data)
484
487
 
485
488
  async def async_send_command(
486
489
  self,
@@ -1123,6 +1126,10 @@ class Node(EventBase):
1123
1126
  "Unhandled notification command class: %s", command_class.name
1124
1127
  )
1125
1128
 
1129
+ def handle_node_info_received(self, event: Event) -> None:
1130
+ """Process a node info received event."""
1131
+ # Nothing to do for now
1132
+
1126
1133
  def handle_firmware_update_progress(self, event: Event) -> None:
1127
1134
  """Process a node firmware update progress event."""
1128
1135
  self._firmware_update_progress = event.data["firmware_update_progress"] = (
@@ -87,6 +87,12 @@ class DeadEventModel(BaseNodeEventModel):
87
87
  event: Literal["dead"]
88
88
 
89
89
 
90
+ class NodeInfoReceivedEventModel(BaseNodeEventModel):
91
+ """Model for `node info received` event data."""
92
+
93
+ event: Literal["node info received"]
94
+
95
+
90
96
  class InterviewCompletedEventModel(BaseNodeEventModel):
91
97
  """Model for `interview completed` event data."""
92
98
 
@@ -344,6 +350,7 @@ NODE_EVENT_MODEL_MAP: dict[str, type[BaseNodeEventModel]] = {
344
350
  "interview stage completed": InterviewStageCompletedEventModel,
345
351
  "interview started": InterviewStartedEventModel,
346
352
  "metadata updated": MetadataUpdatedEventModel,
353
+ "node info received": NodeInfoReceivedEventModel,
347
354
  "notification": NotificationEventModel,
348
355
  "ready": ReadyEventModel,
349
356
  "sleep": SleepEventModel,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zwave-js-server-python
3
- Version: 0.67.0
3
+ Version: 0.68.0
4
4
  Summary: Python wrapper for zwave-js-server
5
5
  Author-email: Home Assistant Team <hello@home-assistant.io>
6
6
  License-Expression: Apache-2.0
@@ -13,6 +13,7 @@ Classifier: Natural Language :: English
13
13
  Classifier: Programming Language :: Python :: 3
14
14
  Classifier: Programming Language :: Python :: 3.12
15
15
  Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
16
17
  Classifier: Topic :: Home Automation
17
18
  Requires-Python: >=3.12
18
19
  Description-Content-Type: text/markdown