quilt-hp-python 0.3.1__tar.gz → 0.3.2__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 (120) hide show
  1. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/CHANGELOG.md +7 -0
  2. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/PKG-INFO +1 -1
  3. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/pyproject.toml +1 -1
  4. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/models/enums.py +21 -1
  5. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/.github/copilot-instructions.md +0 -0
  6. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/.github/workflows/ci.yml +0 -0
  7. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/.github/workflows/docs-deploy.yml +0 -0
  8. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/.github/workflows/release.yml +0 -0
  9. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/.gitignore +0 -0
  10. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/LICENSE +0 -0
  11. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/README.md +0 -0
  12. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/explanation/architecture.md +0 -0
  13. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/explanation/authentication.md +0 -0
  14. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/explanation/grpc-and-protobuf.md +0 -0
  15. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/explanation/snapshot-and-stream.md +0 -0
  16. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/explanation/streaming-protocol.md +0 -0
  17. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/how-to/authenticate.md +0 -0
  18. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/how-to/automation-daemon.md +0 -0
  19. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/how-to/cli-scripting.md +0 -0
  20. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/how-to/configure-comfort-settings.md +0 -0
  21. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/how-to/configure-schedules.md +0 -0
  22. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/how-to/contribute.md +0 -0
  23. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/how-to/control-spaces.md +0 -0
  24. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/how-to/home-assistant.md +0 -0
  25. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/how-to/regenerate-protos.md +0 -0
  26. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/how-to/stream-updates.md +0 -0
  27. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/how-to/tui-app.md +0 -0
  28. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/index.md +0 -0
  29. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/reference/api-reference.md +0 -0
  30. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/reference/client.md +0 -0
  31. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/reference/documentation-standards.md +0 -0
  32. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/reference/grpc-services-matrix.md +0 -0
  33. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/reference/hds-entities.md +0 -0
  34. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/reference/models.md +0 -0
  35. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/reference/token-management.md +0 -0
  36. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/docs/tutorial/get-started.md +0 -0
  37. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/mkdocs.yml +0 -0
  38. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/proto/cleaned/quilt_device_pairing.proto +0 -0
  39. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/proto/cleaned/quilt_hds.proto +0 -0
  40. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/proto/cleaned/quilt_notifier.proto +0 -0
  41. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/proto/cleaned/quilt_services.proto +0 -0
  42. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/proto/cleaned/quilt_system.proto +0 -0
  43. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/scripts/bump_version.py +0 -0
  44. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/scripts/check_docs_nav.py +0 -0
  45. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/scripts/generate_public_api_reference.py +0 -0
  46. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/scripts/regen_protos.sh +0 -0
  47. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/__init__.py +0 -0
  48. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_paths.py +0 -0
  49. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_proto/__init__.py +0 -0
  50. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_proto/quilt_device_pairing_pb2.py +0 -0
  51. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_proto/quilt_device_pairing_pb2.pyi +0 -0
  52. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_proto/quilt_device_pairing_pb2_grpc.py +0 -0
  53. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_proto/quilt_hds_pb2.py +0 -0
  54. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_proto/quilt_hds_pb2.pyi +0 -0
  55. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_proto/quilt_hds_pb2_grpc.py +0 -0
  56. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_proto/quilt_notifier_pb2.py +0 -0
  57. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_proto/quilt_notifier_pb2.pyi +0 -0
  58. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_proto/quilt_notifier_pb2_grpc.py +0 -0
  59. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_proto/quilt_services_pb2.py +0 -0
  60. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_proto/quilt_services_pb2.pyi +0 -0
  61. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_proto/quilt_services_pb2_grpc.py +0 -0
  62. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_proto/quilt_system_pb2.py +0 -0
  63. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_proto/quilt_system_pb2.pyi +0 -0
  64. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/_proto/quilt_system_pb2_grpc.py +0 -0
  65. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/auth.py +0 -0
  66. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/cli/__init__.py +0 -0
  67. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/cli/main.py +0 -0
  68. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/cli/settings.py +0 -0
  69. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/cli/store.py +0 -0
  70. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/cli/tui.py +0 -0
  71. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/client.py +0 -0
  72. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/const.py +0 -0
  73. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/exceptions.py +0 -0
  74. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/models/__init__.py +0 -0
  75. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/models/_helpers.py +0 -0
  76. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/models/comfort.py +0 -0
  77. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/models/controller.py +0 -0
  78. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/models/energy.py +0 -0
  79. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/models/indoor_unit.py +0 -0
  80. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/models/outdoor_unit.py +0 -0
  81. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/models/qsm.py +0 -0
  82. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/models/schedule.py +0 -0
  83. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/models/sensor.py +0 -0
  84. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/models/software_update.py +0 -0
  85. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/models/space.py +0 -0
  86. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/models/system.py +0 -0
  87. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/py.typed +0 -0
  88. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/services/__init__.py +0 -0
  89. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/services/hds.py +0 -0
  90. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/services/streaming.py +0 -0
  91. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/services/system.py +0 -0
  92. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/services/user.py +0 -0
  93. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/tokens.py +0 -0
  94. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/src/quilt_hp/transport.py +0 -0
  95. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/__init__.py +0 -0
  96. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/conftest.py +0 -0
  97. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_auth.py +0 -0
  98. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_auth_store_settings_edges.py +0 -0
  99. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_cli_feature_completion.py +0 -0
  100. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_cli_login.py +0 -0
  101. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_cli_surfaces_extra.py +0 -0
  102. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_client_cache.py +0 -0
  103. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_client_service_error_paths.py +0 -0
  104. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_grpc_retry.py +0 -0
  105. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_hds_payloads.py +0 -0
  106. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_hds_schedule_mapping.py +0 -0
  107. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_hds_service_branches.py +0 -0
  108. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_models.py +0 -0
  109. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_models_extra.py +0 -0
  110. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_models_from_proto.py +0 -0
  111. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_settings_store.py +0 -0
  112. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_streaming.py +0 -0
  113. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_streaming_concurrency.py +0 -0
  114. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_streaming_debounce.py +0 -0
  115. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_streaming_health.py +0 -0
  116. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_streaming_reconnect_dispatch_extra.py +0 -0
  117. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_tokens.py +0 -0
  118. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_transport.py +0 -0
  119. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_transport_interceptor_extra.py +0 -0
  120. {quilt_hp_python-0.3.1 → quilt_hp_python-0.3.2}/tests/test_tui_bindings.py +0 -0
@@ -2,6 +2,13 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.3.2] - 2026-05-19
6
+
7
+ ### Added
8
+ - `LouverAngle.label` property and `__str__` with human-readable position names:
9
+ `ANGLE1` → `"Horizontal"`, `ANGLE2` → `"Slightly Down"`, `ANGLE3` → `"Down"`,
10
+ `ANGLE4` → `"Mostly Down"`, `ANGLE5` → `"Straight Down"`
11
+
5
12
  ## [0.3.1] - 2026-05-14
6
13
 
7
14
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quilt-hp-python
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Async Python client for Quilt mini-split HVAC systems
5
5
  Project-URL: Repository, https://github.com/eman/quilt-hp-python
6
6
  Project-URL: Issues, https://github.com/eman/quilt-hp-python/issues
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "quilt-hp-python"
7
- version = "0.3.1"
7
+ version = "0.3.2"
8
8
  description = "Async Python client for Quilt mini-split HVAC systems"
9
9
  readme = "README.md"
10
10
  license = { file = "LICENSE" }
@@ -94,8 +94,20 @@ class LouverMode(IntEnum):
94
94
  return self.name
95
95
 
96
96
 
97
+ _LOUVER_ANGLE_LABELS: dict[int, str] = {
98
+ 1: "Horizontal",
99
+ 2: "Slightly Down",
100
+ 3: "Down",
101
+ 4: "Mostly Down",
102
+ 5: "Straight Down",
103
+ }
104
+
105
+
97
106
  class LouverAngle(IntEnum):
98
- """Discrete louver angle positions (when mode=FIXED)."""
107
+ """Discrete louver angle positions (when mode=FIXED).
108
+
109
+ Positions run from most horizontal (ANGLE1) to most downward (ANGLE5).
110
+ """
99
111
 
100
112
  ANGLE1 = 1
101
113
  ANGLE2 = 2
@@ -103,6 +115,14 @@ class LouverAngle(IntEnum):
103
115
  ANGLE4 = 4
104
116
  ANGLE5 = 5
105
117
 
118
+ @property
119
+ def label(self) -> str:
120
+ """Human-readable position name."""
121
+ return _LOUVER_ANGLE_LABELS[self.value]
122
+
123
+ def __str__(self) -> str:
124
+ return self.label
125
+
106
126
  def to_wire(self) -> float:
107
127
  """Return the louver_fixed_position float for the wire."""
108
128
  return {1: 0.20, 2: 0.40, 3: 0.60, 4: 0.80, 5: 1.00}[self.value]
File without changes