python-bsblan 6.1.8__tar.gz → 6.1.10__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 (179) hide show
  1. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/renovate.json +8 -5
  2. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/workflows/codeql.yaml +2 -2
  3. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/workflows/docs.yaml +1 -1
  4. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/workflows/release-drafter.yaml +1 -1
  5. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/workflows/release.yaml +3 -3
  6. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/workflows/scorecard.yml +2 -2
  7. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/workflows/stale.yaml +1 -1
  8. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/workflows/tests.yaml +5 -5
  9. python_bsblan-6.1.10/.nvmrc +1 -0
  10. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/PKG-INFO +2 -2
  11. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/docs/getting-started.md +6 -0
  12. python_bsblan-6.1.10/examples/fake_bsblan_server.py +522 -0
  13. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/examples/profile_init.py +2 -2
  14. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/examples/ruff.toml +4 -0
  15. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/package-lock.json +4 -4
  16. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/package.json +1 -1
  17. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/pyproject.toml +12 -11
  18. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/src/bsblan/_validation.py +7 -1
  19. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/src/bsblan/bsblan.py +11 -0
  20. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/src/bsblan/constants.py +5 -0
  21. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_pps.py +68 -1
  22. python_bsblan-6.1.8/.nvmrc +0 -1
  23. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.editorconfig +0 -0
  24. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.gitattributes +0 -0
  25. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/CODE_OF_CONDUCT.md +0 -0
  26. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/CONTRIBUTING.md +0 -0
  27. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/ISSUE_TEMPLATE/PULL_REQUEST_TEMPLATE.md +0 -0
  28. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  29. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  30. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/SECURITY.md +0 -0
  31. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/agents/pr-review.agent.md +0 -0
  32. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/agents/security-reviewer.agent.md +0 -0
  33. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/agents/tdd-refactor.agent.md +0 -0
  34. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/copilot-instructions.md +0 -0
  35. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/labels.yml +0 -0
  36. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/prompts/add-parameter.prompt.md +0 -0
  37. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/prompts/code-review.prompt.md +0 -0
  38. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/prompts/opsx-apply.prompt.md +0 -0
  39. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/prompts/opsx-archive.prompt.md +0 -0
  40. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/prompts/opsx-explore.prompt.md +0 -0
  41. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/prompts/opsx-propose.prompt.md +0 -0
  42. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/prompts/opsx-sync.prompt.md +0 -0
  43. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/release-drafter.yml +0 -0
  44. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/skills/bsblan-parameters/SKILL.md +0 -0
  45. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/skills/bsblan-testing/SKILL.md +0 -0
  46. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/skills/feature-doc-updates/SKILL.md +0 -0
  47. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/skills/openspec-apply-change/SKILL.md +0 -0
  48. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/skills/openspec-archive-change/SKILL.md +0 -0
  49. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/skills/openspec-explore/SKILL.md +0 -0
  50. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/skills/openspec-propose/SKILL.md +0 -0
  51. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/skills/openspec-sync-specs/SKILL.md +0 -0
  52. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/workflows/auto-approve-renovate.yml +0 -0
  53. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/workflows/dependency-review.yaml +0 -0
  54. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/workflows/labels.yaml +0 -0
  55. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/workflows/linting.yaml +0 -0
  56. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/workflows/lock.yaml +0 -0
  57. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/workflows/pr-labels.yaml +0 -0
  58. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/workflows/typing.yaml +0 -0
  59. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.github/zizmor.yml +0 -0
  60. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.gitignore +0 -0
  61. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.pre-commit-config.yaml +0 -0
  62. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.prettierignore +0 -0
  63. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/.yamllint +0 -0
  64. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/AGENTS.md +0 -0
  65. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/CLAUDE.md +0 -0
  66. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/LICENSE.md +0 -0
  67. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/Makefile +0 -0
  68. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/README.md +0 -0
  69. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/docs/api/client.md +0 -0
  70. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/docs/api/constants.md +0 -0
  71. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/docs/api/exceptions.md +0 -0
  72. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/docs/api/models.md +0 -0
  73. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/docs/index.md +0 -0
  74. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/examples/control.py +0 -0
  75. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/examples/discovery.py +0 -0
  76. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/examples/fetch_param.py +0 -0
  77. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/examples/speed_test.py +0 -0
  78. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/mkdocs.yml +0 -0
  79. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-03-add-cooling-operating-mode/.openspec.yaml +0 -0
  80. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-03-add-cooling-operating-mode/design.md +0 -0
  81. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-03-add-cooling-operating-mode/proposal.md +0 -0
  82. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-03-add-cooling-operating-mode/specs/cooling-operating-mode/spec.md +0 -0
  83. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-03-add-cooling-operating-mode/tasks.md +0 -0
  84. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-04-harden-circuit-discovery-consistency/.openspec.yaml +0 -0
  85. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-04-harden-circuit-discovery-consistency/design.md +0 -0
  86. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-04-harden-circuit-discovery-consistency/proposal.md +0 -0
  87. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-04-harden-circuit-discovery-consistency/specs/circuit-discovery/spec.md +0 -0
  88. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-04-harden-circuit-discovery-consistency/tasks.md +0 -0
  89. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-04-improve-client-readability-domain-slices/.openspec.yaml +0 -0
  90. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-04-improve-client-readability-domain-slices/design.md +0 -0
  91. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-04-improve-client-readability-domain-slices/proposal.md +0 -0
  92. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-04-improve-client-readability-domain-slices/specs/client-retry-policy/spec.md +0 -0
  93. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-04-improve-client-readability-domain-slices/tasks.md +0 -0
  94. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-12-distinguish-schedule-error-types/.openspec.yaml +0 -0
  95. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-12-distinguish-schedule-error-types/design.md +0 -0
  96. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-12-distinguish-schedule-error-types/proposal.md +0 -0
  97. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-12-distinguish-schedule-error-types/specs/error-classification/spec.md +0 -0
  98. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-12-distinguish-schedule-error-types/tasks.md +0 -0
  99. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-16-fix-partial-validation-state/.openspec.yaml +0 -0
  100. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-16-fix-partial-validation-state/design.md +0 -0
  101. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-16-fix-partial-validation-state/proposal.md +0 -0
  102. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-16-fix-partial-validation-state/specs/lazy-validation-completeness/spec.md +0 -0
  103. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/changes/archive/2026-07-16-fix-partial-validation-state/tasks.md +0 -0
  104. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/config.yaml +0 -0
  105. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/specs/circuit-discovery/spec.md +0 -0
  106. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/specs/client-retry-policy/spec.md +0 -0
  107. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/specs/cooling-operating-mode/spec.md +0 -0
  108. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/specs/error-classification/spec.md +0 -0
  109. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/openspec/specs/lazy-validation-completeness/spec.md +0 -0
  110. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/sonar-project.properties +0 -0
  111. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/src/bsblan/__init__.py +0 -0
  112. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/src/bsblan/_hot_water.py +0 -0
  113. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/src/bsblan/_parameters.py +0 -0
  114. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/src/bsblan/_schedules.py +0 -0
  115. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/src/bsblan/_temperature.py +0 -0
  116. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/src/bsblan/_thermostat.py +0 -0
  117. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/src/bsblan/_transport.py +0 -0
  118. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/src/bsblan/_version.py +0 -0
  119. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/src/bsblan/exceptions.py +0 -0
  120. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/src/bsblan/models.py +0 -0
  121. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/src/bsblan/py.typed +0 -0
  122. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/src/bsblan/utility.py +0 -0
  123. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/__init__.py +0 -0
  124. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/conftest.py +0 -0
  125. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/fixtures/device.json +0 -0
  126. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/fixtures/dict_version.json +0 -0
  127. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/fixtures/hot_water_state.json +0 -0
  128. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/fixtures/info.json +0 -0
  129. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/fixtures/password.txt +0 -0
  130. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/fixtures/pps_device.json +0 -0
  131. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/fixtures/pps_state.json +0 -0
  132. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/fixtures/pps_static_values.json +0 -0
  133. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/fixtures/sensor.json +0 -0
  134. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/fixtures/state.json +0 -0
  135. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/fixtures/state_circuit2.json +0 -0
  136. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/fixtures/static_state.json +0 -0
  137. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/fixtures/static_state_circuit2.json +0 -0
  138. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/fixtures/thermostat_hvac.json +0 -0
  139. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/fixtures/thermostat_temp.json +0 -0
  140. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/fixtures/time.json +0 -0
  141. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/ruff.toml +0 -0
  142. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_api_initialization.py +0 -0
  143. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_api_validation.py +0 -0
  144. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_auth.py +0 -0
  145. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_backoff_retry.py +0 -0
  146. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_bsblan.py +0 -0
  147. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_bsblan_edge_cases.py +0 -0
  148. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_circuit.py +0 -0
  149. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_configuration.py +0 -0
  150. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_constants.py +0 -0
  151. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_context_manager.py +0 -0
  152. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_device.py +0 -0
  153. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_dhw_time_switch.py +0 -0
  154. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_entity_info.py +0 -0
  155. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_entity_info_ha.py +0 -0
  156. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_heating_schedule.py +0 -0
  157. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_hot_water_additional.py +0 -0
  158. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_hotwater_state.py +0 -0
  159. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_include_parameter.py +0 -0
  160. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_info.py +0 -0
  161. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_initialization.py +0 -0
  162. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_read_parameters.py +0 -0
  163. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_reset_validation.py +0 -0
  164. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_response_encoding.py +0 -0
  165. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_schedule_models.py +0 -0
  166. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_sensor.py +0 -0
  167. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_set_heating_schedule.py +0 -0
  168. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_set_hot_water_schedule.py +0 -0
  169. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_set_hotwater.py +0 -0
  170. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_state.py +0 -0
  171. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_static_state.py +0 -0
  172. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_temperature_unit.py +0 -0
  173. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_temperature_validation.py +0 -0
  174. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_thermostat.py +0 -0
  175. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_time.py +0 -0
  176. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_utility.py +0 -0
  177. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_utility_additional.py +0 -0
  178. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_utility_edge_cases.py +0 -0
  179. {python_bsblan-6.1.8 → python_bsblan-6.1.10}/tests/test_version_errors.py +0 -0
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3
3
  "schedule": ["before 2am"],
4
+ "minimumReleaseAge": "3 days",
4
5
  "rebaseWhen": "behind-base-branch",
5
6
  "dependencyDashboard": true,
6
7
  "labels": ["dependencies", "no-stale"],
@@ -11,17 +12,19 @@
11
12
  "commitMessagePrefix": "⬆️",
12
13
  "packageRules": [
13
14
  {
14
- "matchManagers": ["uv"],
15
+ "description": "UV project dependencies",
16
+ "matchFileNames": ["pyproject.toml", "uv.lock"],
15
17
  "addLabels": ["python"]
16
18
  },
17
19
  {
18
- "matchManagers": ["uv"],
19
- "matchDepTypes": ["dev"],
20
+ "description": "Pin UV development dependencies",
21
+ "matchFileNames": ["pyproject.toml", "uv.lock"],
22
+ "matchDepTypes": ["dependency-groups"],
20
23
  "rangeStrategy": "pin"
21
24
  },
22
25
  {
23
- "description": "Automerge minor/patch Python updates (after CI passes)",
24
- "matchManagers": ["uv"],
26
+ "description": "Automerge minor/patch UV dependency updates (after approval and CI)",
27
+ "matchFileNames": ["pyproject.toml", "uv.lock"],
25
28
  "matchUpdateTypes": ["minor", "patch"],
26
29
  "automerge": true
27
30
  },
@@ -27,6 +27,6 @@ jobs:
27
27
  with:
28
28
  persist-credentials: false
29
29
  - name: 🏗 Initialize CodeQL
30
- uses: github/codeql-action/init@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3
30
+ uses: github/codeql-action/init@24c54180a607b1449ed407dd24f251e4e9147c8d # v4.38.3
31
31
  - name: 🚀 Perform CodeQL Analysis
32
- uses: github/codeql-action/analyze@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3
32
+ uses: github/codeql-action/analyze@24c54180a607b1449ed407dd24f251e4e9147c8d # v4.38.3
@@ -57,4 +57,4 @@ jobs:
57
57
  steps:
58
58
  - name: 🚀 Deploy to GitHub Pages
59
59
  id: deployment
60
- uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0
60
+ uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5.0.1
@@ -36,7 +36,7 @@ jobs:
36
36
  steps:
37
37
  - name: 🚀 Run Release Drafter
38
38
  # yamllint disable-line rule:line-length
39
- uses: release-drafter/release-drafter@eada3c96a64734dd381cfbda23511034e328ddb0 # v7.6.0
39
+ uses: release-drafter/release-drafter@978bb0b30c5ee8cdd332ced253758157150d43f0 # v7.10.0
40
40
  with:
41
41
  prerelease: ${{ github.event.inputs.prerelease == 'true' }}
42
42
  prerelease-identifier: ${{ github.event.inputs.prerelease_identifier }}
@@ -50,16 +50,16 @@ jobs:
50
50
  - name: 🏗 Build package
51
51
  run: uv build
52
52
  - name: 🔏 Attest build provenance
53
- uses: actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373 # v4.1.1
53
+ uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4.2.2
54
54
  with:
55
55
  subject-path: ./dist/*
56
56
  - name: 🚀 Publish to PyPi
57
- uses: pypa/gh-action-pypi-publish@ba38be9e461d3875417946c167d0b5f3d385a247 # v1.14.1
57
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
58
58
  with:
59
59
  verbose: true
60
60
  print-hash: true
61
61
  - name: ✍️ Sign published artifacts
62
- uses: sigstore/gh-action-sigstore-python@5b79a39c381910c090341a2c9b0bf022c8b387e1 # v3.4.0
62
+ uses: sigstore/gh-action-sigstore-python@790bc6befb9d733738f18d8f895854b453640ec9 # v3.5.0
63
63
  with:
64
64
  inputs: ./dist/*.tar.gz ./dist/*.whl
65
65
  release-signing-artifacts: false
@@ -57,7 +57,7 @@ jobs:
57
57
  # Upload the results as artifacts (optional).
58
58
  - name: "Upload artifact"
59
59
  # yamllint disable-line rule:line-length
60
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
60
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
61
61
  with:
62
62
  name: SARIF file
63
63
  path: results.sarif
@@ -66,6 +66,6 @@ jobs:
66
66
  # Upload the results to GitHub's code scanning dashboard (optional).
67
67
  - name: "Upload to code-scanning"
68
68
  # yamllint disable-line rule:line-length
69
- uses: github/codeql-action/upload-sarif@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3
69
+ uses: github/codeql-action/upload-sarif@24c54180a607b1449ed407dd24f251e4e9147c8d # v4.38.3
70
70
  with:
71
71
  sarif_file: results.sarif
@@ -18,7 +18,7 @@ jobs:
18
18
  pull-requests: write
19
19
  steps:
20
20
  - name: 🚀 Run stale
21
- uses: actions/stale@1e223db275d687790206a7acac4d1a11bd6fe629 # v10.4.0
21
+ uses: actions/stale@4391f3da665fdf50b6810c1a66712fb9ba21aa93 # v11.0.0
22
22
  with:
23
23
  repo-token: ${{ secrets.GITHUB_TOKEN }}
24
24
  days-before-stale: 30
@@ -46,7 +46,7 @@ jobs:
46
46
  - name: 🚀 Run pytest
47
47
  run: uv run pytest --cov=bsblan tests
48
48
  - name: ⬆️ Upload coverage artifact
49
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
49
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
50
50
  with:
51
51
  name: coverage-${{ matrix.python }}
52
52
  include-hidden-files: true
@@ -66,7 +66,7 @@ jobs:
66
66
  fetch-depth: 0
67
67
  persist-credentials: false
68
68
  - name: ⬇️ Download coverage data
69
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
69
+ uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
70
70
  - name: 🏗 Set up uv
71
71
  uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
72
72
  with:
@@ -84,14 +84,14 @@ jobs:
84
84
  uv run python -m coverage xml -i
85
85
  - name: 🚀 Upload coverage report
86
86
  if: env.HAS_CODECOV_TOKEN == 'true'
87
- uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
87
+ uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
88
88
  with:
89
89
  fail_ci_if_error: true
90
90
  files: coverage.xml
91
91
  token: ${{ secrets.CODECOV_TOKEN }}
92
92
  - name: 🚀 Upload coverage report (tokenless)
93
93
  if: env.HAS_CODECOV_TOKEN != 'true' && github.event_name == 'pull_request'
94
- uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
94
+ uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
95
95
  with:
96
96
  fail_ci_if_error: false
97
97
  files: coverage.xml
@@ -101,7 +101,7 @@ jobs:
101
101
  - name: SonarQube Cloud Scan
102
102
  if: env.HAS_SONAR_TOKEN == 'true' && (github.event_name != 'pull_request' || !github.event.pull_request.head.repo.fork)
103
103
  # yamllint disable-line rule:line-length
104
- uses: SonarSource/sonarqube-scan-action@713881670b6b3676cda39549040e2d88c70d582e # v8.2
104
+ uses: SonarSource/sonarqube-scan-action@d209202bc7d53ff1cc128f7f907dac145c9d6ae9 # v8.3
105
105
  env:
106
106
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
107
107
  SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
@@ -0,0 +1 @@
1
+ 24.21.0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: python-bsblan
3
- Version: 6.1.8
3
+ Version: 6.1.10
4
4
  Summary: Asynchronous Python client for BSBLAN API
5
5
  Project-URL: Homepage, https://github.com/liudger/python-bsblan
6
6
  Project-URL: Repository, https://github.com/liudger/python-bsblan
@@ -157,11 +157,17 @@ Supported PPS climate operations:
157
157
 
158
158
  - `state()` for `hvac_mode`, `target_temperature`, and `current_temperature`
159
159
  - `static_values()` for `min_temp` and `max_temp`
160
+ - `sensor()` for `outside_temperature` (`15030`) and `current_temperature` (`15008`)
160
161
  - `thermostat()` for target temperature and HVAC mode
161
162
  - `get_available_circuits()`, which returns `[1]` when the single PPS
162
163
  climate circuit is available, otherwise `[]`; PPS devices only ever expose
163
164
  circuit `1`
164
165
 
166
+ PPS sensor parameters are selected only when device metadata identifies the PPS
167
+ bus. BSB/LPB devices retain their existing sensor mappings. Sensor reads remain
168
+ on demand; `sensor(include=["outside_temperature"])` requests only `15030` on PPS
169
+ and only `8700` otherwise, without probing both parameter ranges.
170
+
165
171
  PPS devices currently have these limitations:
166
172
 
167
173
  - Only circuit `1` is supported.