quilt-hp-python 0.1.2__tar.gz → 0.1.4__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 (111) hide show
  1. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/CHANGELOG.md +17 -0
  2. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/PKG-INFO +1 -1
  3. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/pyproject.toml +1 -1
  4. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/auth.py +2 -2
  5. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/.github/workflows/ci.yml +0 -0
  6. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/.github/workflows/docs-deploy.yml +0 -0
  7. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/.github/workflows/release.yml +0 -0
  8. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/.gitignore +0 -0
  9. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/LICENSE +0 -0
  10. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/README.md +0 -0
  11. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/explanation/architecture.md +0 -0
  12. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/explanation/authentication.md +0 -0
  13. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/explanation/grpc-and-protobuf.md +0 -0
  14. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/explanation/snapshot-and-stream.md +0 -0
  15. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/explanation/streaming-protocol.md +0 -0
  16. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/how-to/authenticate.md +0 -0
  17. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/how-to/automation-daemon.md +0 -0
  18. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/how-to/cli-scripting.md +0 -0
  19. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/how-to/configure-comfort-settings.md +0 -0
  20. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/how-to/configure-schedules.md +0 -0
  21. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/how-to/contribute.md +0 -0
  22. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/how-to/control-spaces.md +0 -0
  23. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/how-to/home-assistant.md +0 -0
  24. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/how-to/regenerate-protos.md +0 -0
  25. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/how-to/stream-updates.md +0 -0
  26. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/how-to/tui-app.md +0 -0
  27. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/index.md +0 -0
  28. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/reference/api-reference.md +0 -0
  29. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/reference/client.md +0 -0
  30. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/reference/documentation-standards.md +0 -0
  31. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/reference/grpc-services-matrix.md +0 -0
  32. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/reference/hds-entities.md +0 -0
  33. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/reference/models.md +0 -0
  34. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/reference/token-management.md +0 -0
  35. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/docs/tutorial/get-started.md +0 -0
  36. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/mkdocs.yml +0 -0
  37. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/proto/cleaned/quilt_device_pairing.proto +0 -0
  38. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/proto/cleaned/quilt_hds.proto +0 -0
  39. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/proto/cleaned/quilt_notifier.proto +0 -0
  40. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/proto/cleaned/quilt_services.proto +0 -0
  41. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/proto/cleaned/quilt_system.proto +0 -0
  42. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/scripts/bump_version.py +0 -0
  43. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/scripts/check_docs_nav.py +0 -0
  44. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/scripts/generate_public_api_reference.py +0 -0
  45. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/scripts/regen_protos.sh +0 -0
  46. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/__init__.py +0 -0
  47. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_paths.py +0 -0
  48. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/__init__.py +0 -0
  49. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_device_pairing_pb2.py +0 -0
  50. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_device_pairing_pb2.pyi +0 -0
  51. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_device_pairing_pb2_grpc.py +0 -0
  52. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_hds_pb2.py +0 -0
  53. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_hds_pb2.pyi +0 -0
  54. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_hds_pb2_grpc.py +0 -0
  55. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_notifier_pb2.py +0 -0
  56. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_notifier_pb2.pyi +0 -0
  57. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_notifier_pb2_grpc.py +0 -0
  58. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_services_pb2.py +0 -0
  59. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_services_pb2.pyi +0 -0
  60. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_services_pb2_grpc.py +0 -0
  61. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_system_pb2.py +0 -0
  62. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_system_pb2.pyi +0 -0
  63. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_system_pb2_grpc.py +0 -0
  64. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/cli/__init__.py +0 -0
  65. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/cli/main.py +0 -0
  66. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/cli/settings.py +0 -0
  67. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/cli/store.py +0 -0
  68. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/cli/tui.py +0 -0
  69. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/client.py +0 -0
  70. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/const.py +0 -0
  71. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/exceptions.py +0 -0
  72. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/models/__init__.py +0 -0
  73. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/models/comfort.py +0 -0
  74. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/models/controller.py +0 -0
  75. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/models/energy.py +0 -0
  76. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/models/enums.py +0 -0
  77. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/models/indoor_unit.py +0 -0
  78. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/models/outdoor_unit.py +0 -0
  79. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/models/qsm.py +0 -0
  80. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/models/schedule.py +0 -0
  81. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/models/sensor.py +0 -0
  82. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/models/software_update.py +0 -0
  83. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/models/space.py +0 -0
  84. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/models/system.py +0 -0
  85. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/py.typed +0 -0
  86. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/services/__init__.py +0 -0
  87. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/services/hds.py +0 -0
  88. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/services/streaming.py +0 -0
  89. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/services/system.py +0 -0
  90. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/services/user.py +0 -0
  91. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/tokens.py +0 -0
  92. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/src/quilt_hp/transport.py +0 -0
  93. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/__init__.py +0 -0
  94. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/conftest.py +0 -0
  95. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_auth.py +0 -0
  96. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_auth_store_settings_edges.py +0 -0
  97. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_cli_feature_completion.py +0 -0
  98. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_cli_login.py +0 -0
  99. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_cli_surfaces_extra.py +0 -0
  100. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_client_cache.py +0 -0
  101. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_client_service_error_paths.py +0 -0
  102. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_hds_schedule_mapping.py +0 -0
  103. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_hds_service_branches.py +0 -0
  104. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_models.py +0 -0
  105. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_models_from_proto.py +0 -0
  106. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_settings_store.py +0 -0
  107. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_streaming.py +0 -0
  108. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_streaming_reconnect_dispatch_extra.py +0 -0
  109. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_tokens.py +0 -0
  110. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_transport.py +0 -0
  111. {quilt_hp_python-0.1.2 → quilt_hp_python-0.1.4}/tests/test_transport_interceptor_extra.py +0 -0
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.1.4] - 2026-05-08
11
+
12
+ ### Fixed
13
+ - `boto3.client()` was called synchronously inside async functions, causing a
14
+ blocking HTTP request to the EC2 instance metadata service (IMDS) at
15
+ `169.254.169.254` during credential resolution. This manifested as an
16
+ `HTTPClientError` in Home Assistant's async event loop. The client is now
17
+ created via `loop.run_in_executor()` like the subsequent API calls.
18
+
19
+ ## [0.1.3] - 2026-05-08
20
+
21
+ ### Fixed
22
+ - Regenerated gRPC stubs with `grpcio-tools==1.78.0` so the library works
23
+ inside Home Assistant, which hard-pins `grpcio==1.78.0` in its package
24
+ constraints. Previously the stubs were generated with 1.80.0 and raised
25
+ `RuntimeError` at import time on older grpcio versions.
26
+
10
27
  ## [0.1.2] - 2026-05-08
11
28
 
12
29
  ## [0.1.1] - 2026-05-08
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quilt-hp-python
3
- Version: 0.1.2
3
+ Version: 0.1.4
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.1.2"
7
+ version = "0.1.4"
8
8
  description = "Async Python client for Quilt mini-split HVAC systems"
9
9
  readme = "README.md"
10
10
  license = { file = "LICENSE" }
@@ -70,7 +70,7 @@ def _make_cognito_client() -> _CognitoClient:
70
70
  async def _do_otp_login(email: str, otp_callback: OtpCallback) -> CognitoAuthResult:
71
71
  """Full OTP flow. Returns Cognito AuthenticationResult dict."""
72
72
  loop = asyncio.get_running_loop()
73
- cognito = _make_cognito_client()
73
+ cognito = await loop.run_in_executor(None, _make_cognito_client)
74
74
 
75
75
  # Step 1: Initiate CUSTOM_AUTH
76
76
  try:
@@ -126,7 +126,7 @@ async def _do_otp_login(email: str, otp_callback: OtpCallback) -> CognitoAuthRes
126
126
  async def _do_refresh(refresh_token: str) -> CognitoAuthResult:
127
127
  """Use a refresh token to get a new IdToken."""
128
128
  loop = asyncio.get_running_loop()
129
- cognito = _make_cognito_client()
129
+ cognito = await loop.run_in_executor(None, _make_cognito_client)
130
130
  try:
131
131
  resp = await loop.run_in_executor(
132
132
  None,
File without changes