quilt-hp-python 0.3.1__tar.gz → 0.4.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 (120) hide show
  1. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/CHANGELOG.md +9 -0
  2. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/PKG-INFO +1 -1
  3. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/reference/client.md +1 -1
  4. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/pyproject.toml +1 -1
  5. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/__init__.py +1 -1
  6. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/models/enums.py +21 -1
  7. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_cli_surfaces_extra.py +1 -1
  8. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/.github/copilot-instructions.md +0 -0
  9. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/.github/workflows/ci.yml +0 -0
  10. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/.github/workflows/docs-deploy.yml +0 -0
  11. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/.github/workflows/release.yml +0 -0
  12. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/.gitignore +0 -0
  13. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/LICENSE +0 -0
  14. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/README.md +0 -0
  15. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/explanation/architecture.md +0 -0
  16. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/explanation/authentication.md +0 -0
  17. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/explanation/grpc-and-protobuf.md +0 -0
  18. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/explanation/snapshot-and-stream.md +0 -0
  19. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/explanation/streaming-protocol.md +0 -0
  20. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/how-to/authenticate.md +0 -0
  21. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/how-to/automation-daemon.md +0 -0
  22. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/how-to/cli-scripting.md +0 -0
  23. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/how-to/configure-comfort-settings.md +0 -0
  24. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/how-to/configure-schedules.md +0 -0
  25. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/how-to/contribute.md +0 -0
  26. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/how-to/control-spaces.md +0 -0
  27. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/how-to/home-assistant.md +0 -0
  28. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/how-to/regenerate-protos.md +0 -0
  29. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/how-to/stream-updates.md +0 -0
  30. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/how-to/tui-app.md +0 -0
  31. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/index.md +0 -0
  32. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/reference/api-reference.md +0 -0
  33. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/reference/documentation-standards.md +0 -0
  34. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/reference/grpc-services-matrix.md +0 -0
  35. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/reference/hds-entities.md +0 -0
  36. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/reference/models.md +0 -0
  37. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/reference/token-management.md +0 -0
  38. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/docs/tutorial/get-started.md +0 -0
  39. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/mkdocs.yml +0 -0
  40. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/proto/cleaned/quilt_device_pairing.proto +0 -0
  41. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/proto/cleaned/quilt_hds.proto +0 -0
  42. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/proto/cleaned/quilt_notifier.proto +0 -0
  43. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/proto/cleaned/quilt_services.proto +0 -0
  44. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/proto/cleaned/quilt_system.proto +0 -0
  45. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/scripts/bump_version.py +0 -0
  46. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/scripts/check_docs_nav.py +0 -0
  47. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/scripts/generate_public_api_reference.py +0 -0
  48. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/scripts/regen_protos.sh +0 -0
  49. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_paths.py +0 -0
  50. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_proto/__init__.py +0 -0
  51. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_proto/quilt_device_pairing_pb2.py +0 -0
  52. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_proto/quilt_device_pairing_pb2.pyi +0 -0
  53. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_proto/quilt_device_pairing_pb2_grpc.py +0 -0
  54. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_proto/quilt_hds_pb2.py +0 -0
  55. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_proto/quilt_hds_pb2.pyi +0 -0
  56. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_proto/quilt_hds_pb2_grpc.py +0 -0
  57. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_proto/quilt_notifier_pb2.py +0 -0
  58. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_proto/quilt_notifier_pb2.pyi +0 -0
  59. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_proto/quilt_notifier_pb2_grpc.py +0 -0
  60. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_proto/quilt_services_pb2.py +0 -0
  61. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_proto/quilt_services_pb2.pyi +0 -0
  62. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_proto/quilt_services_pb2_grpc.py +0 -0
  63. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_proto/quilt_system_pb2.py +0 -0
  64. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_proto/quilt_system_pb2.pyi +0 -0
  65. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/_proto/quilt_system_pb2_grpc.py +0 -0
  66. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/auth.py +0 -0
  67. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/cli/__init__.py +0 -0
  68. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/cli/main.py +0 -0
  69. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/cli/settings.py +0 -0
  70. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/cli/store.py +0 -0
  71. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/cli/tui.py +0 -0
  72. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/client.py +0 -0
  73. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/const.py +0 -0
  74. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/exceptions.py +0 -0
  75. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/models/__init__.py +0 -0
  76. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/models/_helpers.py +0 -0
  77. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/models/comfort.py +0 -0
  78. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/models/controller.py +0 -0
  79. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/models/energy.py +0 -0
  80. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/models/indoor_unit.py +0 -0
  81. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/models/outdoor_unit.py +0 -0
  82. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/models/qsm.py +0 -0
  83. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/models/schedule.py +0 -0
  84. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/models/sensor.py +0 -0
  85. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/models/software_update.py +0 -0
  86. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/models/space.py +0 -0
  87. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/models/system.py +0 -0
  88. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/py.typed +0 -0
  89. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/services/__init__.py +0 -0
  90. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/services/hds.py +0 -0
  91. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/services/streaming.py +0 -0
  92. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/services/system.py +0 -0
  93. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/services/user.py +0 -0
  94. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/tokens.py +0 -0
  95. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/src/quilt_hp/transport.py +0 -0
  96. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/__init__.py +0 -0
  97. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/conftest.py +0 -0
  98. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_auth.py +0 -0
  99. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_auth_store_settings_edges.py +0 -0
  100. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_cli_feature_completion.py +0 -0
  101. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_cli_login.py +0 -0
  102. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_client_cache.py +0 -0
  103. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_client_service_error_paths.py +0 -0
  104. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_grpc_retry.py +0 -0
  105. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_hds_payloads.py +0 -0
  106. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_hds_schedule_mapping.py +0 -0
  107. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_hds_service_branches.py +0 -0
  108. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_models.py +0 -0
  109. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_models_extra.py +0 -0
  110. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_models_from_proto.py +0 -0
  111. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_settings_store.py +0 -0
  112. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_streaming.py +0 -0
  113. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_streaming_concurrency.py +0 -0
  114. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_streaming_debounce.py +0 -0
  115. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_streaming_health.py +0 -0
  116. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_streaming_reconnect_dispatch_extra.py +0 -0
  117. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_tokens.py +0 -0
  118. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_transport.py +0 -0
  119. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_transport_interceptor_extra.py +0 -0
  120. {quilt_hp_python-0.3.1 → quilt_hp_python-0.4.0}/tests/test_tui_bindings.py +0 -0
@@ -2,6 +2,15 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.4.0] - 2026-05-16
6
+
7
+ ## [0.3.2] - 2026-05-19
8
+
9
+ ### Added
10
+ - `LouverAngle.label` property and `__str__` with human-readable position names:
11
+ `ANGLE1` → `"Horizontal"`, `ANGLE2` → `"Slightly Down"`, `ANGLE3` → `"Down"`,
12
+ `ANGLE4` → `"Mostly Down"`, `ANGLE5` → `"Straight Down"`
13
+
5
14
  ## [0.3.1] - 2026-05-14
6
15
 
7
16
  ### 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.4.0
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
@@ -69,7 +69,7 @@ Raised when a requested resource does not exist (gRPC `NOT_FOUND`).
69
69
  ### `__version__`
70
70
 
71
71
  ```python
72
- __version__: str # e.g. "0.3.1"
72
+ __version__: str # e.g. "0.4.0"
73
73
  ```
74
74
 
75
75
  ---
@@ -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.4.0"
8
8
  description = "Async Python client for Quilt mini-split HVAC systems"
9
9
  readme = "README.md"
10
10
  license = { file = "LICENSE" }
@@ -10,7 +10,7 @@ from quilt_hp.exceptions import (
10
10
  QuiltStreamError,
11
11
  )
12
12
 
13
- __version__ = "0.3.1"
13
+ __version__ = "0.4.0"
14
14
 
15
15
  __all__ = [
16
16
  "Environment",
@@ -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]
@@ -16,7 +16,7 @@ runner = CliRunner()
16
16
  def test_version_option_outputs_package_version() -> None:
17
17
  result = runner.invoke(cli_main.app, ["--version"])
18
18
  assert result.exit_code == 0
19
- assert result.stdout.strip() == "0.3.1"
19
+ assert result.stdout.strip() == "0.4.0"
20
20
 
21
21
 
22
22
  class _FakeClient:
File without changes