PyPlumIO 0.5.24__tar.gz → 0.5.25__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 (142) hide show
  1. {pyplumio-0.5.24 → pyplumio-0.5.25}/PKG-INFO +1 -1
  2. {pyplumio-0.5.24 → pyplumio-0.5.25}/PyPlumIO.egg-info/PKG-INFO +1 -1
  3. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/_version.py +2 -2
  4. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/helpers/data_types.py +1 -1
  5. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/helpers/parameter.py +7 -0
  6. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/helpers/test_data_types.py +6 -0
  7. {pyplumio-0.5.24 → pyplumio-0.5.25}/.gitattributes +0 -0
  8. {pyplumio-0.5.24 → pyplumio-0.5.25}/.github/CODE_OF_CONDUCT.md +0 -0
  9. {pyplumio-0.5.24 → pyplumio-0.5.25}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  10. {pyplumio-0.5.24 → pyplumio-0.5.25}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  11. {pyplumio-0.5.24 → pyplumio-0.5.25}/.github/dependabot.yml +0 -0
  12. {pyplumio-0.5.24 → pyplumio-0.5.25}/.github/workflows/ci.yml +0 -0
  13. {pyplumio-0.5.24 → pyplumio-0.5.25}/.github/workflows/codeql-analysis.yml +0 -0
  14. {pyplumio-0.5.24 → pyplumio-0.5.25}/.github/workflows/deploy.yml +0 -0
  15. {pyplumio-0.5.24 → pyplumio-0.5.25}/.github/workflows/documentation.yml +0 -0
  16. {pyplumio-0.5.24 → pyplumio-0.5.25}/.gitignore +0 -0
  17. {pyplumio-0.5.24 → pyplumio-0.5.25}/.pre-commit-config.yaml +0 -0
  18. {pyplumio-0.5.24 → pyplumio-0.5.25}/.vscode/settings.json +0 -0
  19. {pyplumio-0.5.24 → pyplumio-0.5.25}/LICENSE +0 -0
  20. {pyplumio-0.5.24 → pyplumio-0.5.25}/MANIFEST.in +0 -0
  21. {pyplumio-0.5.24 → pyplumio-0.5.25}/PyPlumIO.egg-info/SOURCES.txt +0 -0
  22. {pyplumio-0.5.24 → pyplumio-0.5.25}/PyPlumIO.egg-info/dependency_links.txt +0 -0
  23. {pyplumio-0.5.24 → pyplumio-0.5.25}/PyPlumIO.egg-info/requires.txt +0 -0
  24. {pyplumio-0.5.24 → pyplumio-0.5.25}/PyPlumIO.egg-info/top_level.txt +0 -0
  25. {pyplumio-0.5.24 → pyplumio-0.5.25}/README.md +0 -0
  26. {pyplumio-0.5.24 → pyplumio-0.5.25}/docs/Makefile +0 -0
  27. {pyplumio-0.5.24 → pyplumio-0.5.25}/docs/make.bat +0 -0
  28. {pyplumio-0.5.24 → pyplumio-0.5.25}/docs/source/callbacks.rst +0 -0
  29. {pyplumio-0.5.24 → pyplumio-0.5.25}/docs/source/conf.py +0 -0
  30. {pyplumio-0.5.24 → pyplumio-0.5.25}/docs/source/connecting.rst +0 -0
  31. {pyplumio-0.5.24 → pyplumio-0.5.25}/docs/source/frames.rst +0 -0
  32. {pyplumio-0.5.24 → pyplumio-0.5.25}/docs/source/index.rst +0 -0
  33. {pyplumio-0.5.24 → pyplumio-0.5.25}/docs/source/mixers_thermostats.rst +0 -0
  34. {pyplumio-0.5.24 → pyplumio-0.5.25}/docs/source/protocol.rst +0 -0
  35. {pyplumio-0.5.24 → pyplumio-0.5.25}/docs/source/reading.rst +0 -0
  36. {pyplumio-0.5.24 → pyplumio-0.5.25}/docs/source/schedules.rst +0 -0
  37. {pyplumio-0.5.24 → pyplumio-0.5.25}/docs/source/writing.rst +0 -0
  38. {pyplumio-0.5.24 → pyplumio-0.5.25}/images/ecomax.png +0 -0
  39. {pyplumio-0.5.24 → pyplumio-0.5.25}/images/rs485.png +0 -0
  40. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/__init__.py +0 -0
  41. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/__main__.py +0 -0
  42. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/connection.py +0 -0
  43. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/const.py +0 -0
  44. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/devices/__init__.py +0 -0
  45. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/devices/ecomax.py +0 -0
  46. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/devices/ecoster.py +0 -0
  47. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/devices/mixer.py +0 -0
  48. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/devices/thermostat.py +0 -0
  49. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/exceptions.py +0 -0
  50. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/filters.py +0 -0
  51. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/frames/__init__.py +0 -0
  52. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/frames/messages.py +0 -0
  53. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/frames/requests.py +0 -0
  54. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/frames/responses.py +0 -0
  55. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/helpers/__init__.py +0 -0
  56. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/helpers/event_manager.py +0 -0
  57. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/helpers/factory.py +0 -0
  58. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/helpers/schedule.py +0 -0
  59. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/helpers/task_manager.py +0 -0
  60. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/helpers/timeout.py +0 -0
  61. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/helpers/uid.py +0 -0
  62. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/protocol.py +0 -0
  63. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/py.typed +0 -0
  64. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/stream.py +0 -0
  65. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/__init__.py +0 -0
  66. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/alerts.py +0 -0
  67. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/boiler_load.py +0 -0
  68. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/boiler_power.py +0 -0
  69. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/ecomax_parameters.py +0 -0
  70. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/fan_power.py +0 -0
  71. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/frame_versions.py +0 -0
  72. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/fuel_consumption.py +0 -0
  73. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/fuel_level.py +0 -0
  74. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/lambda_sensor.py +0 -0
  75. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/mixer_parameters.py +0 -0
  76. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/mixer_sensors.py +0 -0
  77. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/modules.py +0 -0
  78. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/network_info.py +0 -0
  79. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/output_flags.py +0 -0
  80. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/outputs.py +0 -0
  81. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/pending_alerts.py +0 -0
  82. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/product_info.py +0 -0
  83. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/program_version.py +0 -0
  84. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/regulator_data.py +0 -0
  85. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/regulator_data_schema.py +0 -0
  86. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/schedules.py +0 -0
  87. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/statuses.py +0 -0
  88. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/temperatures.py +0 -0
  89. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/thermostat_parameters.py +0 -0
  90. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/structures/thermostat_sensors.py +0 -0
  91. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyplumio/utils.py +0 -0
  92. {pyplumio-0.5.24 → pyplumio-0.5.25}/pyproject.toml +0 -0
  93. {pyplumio-0.5.24 → pyplumio-0.5.25}/requirements.txt +0 -0
  94. {pyplumio-0.5.24 → pyplumio-0.5.25}/requirements_docs.txt +0 -0
  95. {pyplumio-0.5.24 → pyplumio-0.5.25}/requirements_test.txt +0 -0
  96. {pyplumio-0.5.24 → pyplumio-0.5.25}/setup.cfg +0 -0
  97. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/__init__.py +0 -0
  98. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/conftest.py +0 -0
  99. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/frames/test_init.py +0 -0
  100. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/frames/test_messages.py +0 -0
  101. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/frames/test_requests.py +0 -0
  102. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/frames/test_responses.py +0 -0
  103. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/helpers/__init__.py +0 -0
  104. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/helpers/test_event_manager.py +0 -0
  105. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/helpers/test_factory.py +0 -0
  106. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/helpers/test_parameter.py +0 -0
  107. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/helpers/test_schedule.py +0 -0
  108. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/helpers/test_task_manager.py +0 -0
  109. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/helpers/test_timeout.py +0 -0
  110. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/helpers/test_uid.py +0 -0
  111. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/ruff.toml +0 -0
  112. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/test_connection.py +0 -0
  113. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/test_devices.py +0 -0
  114. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/test_filters.py +0 -0
  115. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/test_init.py +0 -0
  116. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/test_main.py +0 -0
  117. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/test_protocol.py +0 -0
  118. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/test_stream.py +0 -0
  119. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/test_utils.py +0 -0
  120. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/messages/regulator_data.json +0 -0
  121. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/messages/sensor_data.json +0 -0
  122. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/requests/alerts.json +0 -0
  123. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/requests/ecomax_control.json +0 -0
  124. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/requests/ecomax_parameters.json +0 -0
  125. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/requests/mixer_parameters.json +0 -0
  126. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/requests/set_ecomax_parameter.json +0 -0
  127. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/requests/set_mixer_parameter.json +0 -0
  128. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/requests/set_schedule.json +0 -0
  129. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/requests/set_thermostat_parameter.json +0 -0
  130. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/requests/thermostat_parameters.json +0 -0
  131. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/responses/alerts.json +0 -0
  132. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/responses/device_available.json +0 -0
  133. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/responses/ecomax_parameters.json +0 -0
  134. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/responses/mixer_parameters.json +0 -0
  135. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/responses/password.json +0 -0
  136. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/responses/program_version.json +0 -0
  137. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/responses/regulator_data_schema.json +0 -0
  138. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/responses/schedules.json +0 -0
  139. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/responses/thermostat_parameters.json +0 -0
  140. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/responses/uid.json +0 -0
  141. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/unknown/unknown_ecomax_parameter.json +0 -0
  142. {pyplumio-0.5.24 → pyplumio-0.5.25}/tests/testdata/unknown/unknown_mixer_parameter.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyPlumIO
3
- Version: 0.5.24
3
+ Version: 0.5.25
4
4
  Summary: PyPlumIO is a native ecoNET library for Plum ecoMAX controllers.
5
5
  Author-email: Denis Paavilainen <denpa@denpa.pro>
6
6
  License: MIT License
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyPlumIO
3
- Version: 0.5.24
3
+ Version: 0.5.25
4
4
  Summary: PyPlumIO is a native ecoNET library for Plum ecoMAX controllers.
5
5
  Author-email: Denis Paavilainen <denpa@denpa.pro>
6
6
  License: MIT License
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.5.24'
16
- __version_tuple__ = version_tuple = (0, 5, 24)
15
+ __version__ = version = '0.5.25'
16
+ __version_tuple__ = version_tuple = (0, 5, 25)
@@ -181,7 +181,7 @@ class String(DataType):
181
181
 
182
182
  def unpack(self, data: bytes) -> None:
183
183
  """Unpack the data."""
184
- self._value = data.split(b"\0", 1)[0].decode()
184
+ self._value = data.split(b"\0", 1)[0].decode("utf-8", "replace")
185
185
  self._size = len(self.value) + 1
186
186
 
187
187
 
@@ -170,6 +170,13 @@ class Parameter(ABC):
170
170
  """Compare if parameter value is less that other."""
171
171
  return self._call_relational_method("__lt__", other)
172
172
 
173
+ def __copy__(self) -> Parameter:
174
+ """Create a copy of parameter."""
175
+ values = type(self.values)(
176
+ self.values.value, self.values.min_value, self.values.max_value
177
+ )
178
+ return type(self)(self.device, self.description, values)
179
+
173
180
  async def set(self, value: Any, retries: int = SET_RETRIES) -> bool:
174
181
  """Set a parameter value."""
175
182
  if (value := _normalize_parameter_value(value)) == self.values.value:
@@ -229,6 +229,12 @@ def test_string() -> None:
229
229
  assert data_type == data_types.String.from_bytes(buffer)
230
230
  assert data_type == "test"
231
231
 
232
+ # Test with unknown unicode char.
233
+ buffer = b"test\xd8\x00"
234
+ data_type = data_types.String.from_bytes(buffer)
235
+ assert data_type.value == "test�"
236
+ assert data_type.size == 6
237
+
232
238
 
233
239
  def test_var_bytes() -> None:
234
240
  """Test a variable bytes data type."""
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes