quilt-hp-python 0.1.3__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.3 → quilt_hp_python-0.1.4}/CHANGELOG.md +9 -0
  2. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/PKG-INFO +1 -1
  3. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/pyproject.toml +1 -1
  4. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/auth.py +2 -2
  5. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/.github/workflows/ci.yml +0 -0
  6. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/.github/workflows/docs-deploy.yml +0 -0
  7. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/.github/workflows/release.yml +0 -0
  8. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/.gitignore +0 -0
  9. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/LICENSE +0 -0
  10. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/README.md +0 -0
  11. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/explanation/architecture.md +0 -0
  12. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/explanation/authentication.md +0 -0
  13. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/explanation/grpc-and-protobuf.md +0 -0
  14. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/explanation/snapshot-and-stream.md +0 -0
  15. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/explanation/streaming-protocol.md +0 -0
  16. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/how-to/authenticate.md +0 -0
  17. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/how-to/automation-daemon.md +0 -0
  18. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/how-to/cli-scripting.md +0 -0
  19. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/how-to/configure-comfort-settings.md +0 -0
  20. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/how-to/configure-schedules.md +0 -0
  21. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/how-to/contribute.md +0 -0
  22. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/how-to/control-spaces.md +0 -0
  23. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/how-to/home-assistant.md +0 -0
  24. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/how-to/regenerate-protos.md +0 -0
  25. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/how-to/stream-updates.md +0 -0
  26. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/how-to/tui-app.md +0 -0
  27. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/index.md +0 -0
  28. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/reference/api-reference.md +0 -0
  29. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/reference/client.md +0 -0
  30. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/reference/documentation-standards.md +0 -0
  31. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/reference/grpc-services-matrix.md +0 -0
  32. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/reference/hds-entities.md +0 -0
  33. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/reference/models.md +0 -0
  34. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/reference/token-management.md +0 -0
  35. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/docs/tutorial/get-started.md +0 -0
  36. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/mkdocs.yml +0 -0
  37. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/proto/cleaned/quilt_device_pairing.proto +0 -0
  38. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/proto/cleaned/quilt_hds.proto +0 -0
  39. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/proto/cleaned/quilt_notifier.proto +0 -0
  40. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/proto/cleaned/quilt_services.proto +0 -0
  41. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/proto/cleaned/quilt_system.proto +0 -0
  42. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/scripts/bump_version.py +0 -0
  43. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/scripts/check_docs_nav.py +0 -0
  44. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/scripts/generate_public_api_reference.py +0 -0
  45. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/scripts/regen_protos.sh +0 -0
  46. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/__init__.py +0 -0
  47. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_paths.py +0 -0
  48. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/__init__.py +0 -0
  49. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_device_pairing_pb2.py +0 -0
  50. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_device_pairing_pb2.pyi +0 -0
  51. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_device_pairing_pb2_grpc.py +0 -0
  52. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_hds_pb2.py +0 -0
  53. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_hds_pb2.pyi +0 -0
  54. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_hds_pb2_grpc.py +0 -0
  55. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_notifier_pb2.py +0 -0
  56. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_notifier_pb2.pyi +0 -0
  57. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_notifier_pb2_grpc.py +0 -0
  58. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_services_pb2.py +0 -0
  59. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_services_pb2.pyi +0 -0
  60. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_services_pb2_grpc.py +0 -0
  61. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_system_pb2.py +0 -0
  62. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_system_pb2.pyi +0 -0
  63. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/_proto/quilt_system_pb2_grpc.py +0 -0
  64. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/cli/__init__.py +0 -0
  65. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/cli/main.py +0 -0
  66. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/cli/settings.py +0 -0
  67. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/cli/store.py +0 -0
  68. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/cli/tui.py +0 -0
  69. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/client.py +0 -0
  70. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/const.py +0 -0
  71. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/exceptions.py +0 -0
  72. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/models/__init__.py +0 -0
  73. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/models/comfort.py +0 -0
  74. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/models/controller.py +0 -0
  75. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/models/energy.py +0 -0
  76. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/models/enums.py +0 -0
  77. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/models/indoor_unit.py +0 -0
  78. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/models/outdoor_unit.py +0 -0
  79. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/models/qsm.py +0 -0
  80. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/models/schedule.py +0 -0
  81. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/models/sensor.py +0 -0
  82. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/models/software_update.py +0 -0
  83. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/models/space.py +0 -0
  84. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/models/system.py +0 -0
  85. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/py.typed +0 -0
  86. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/services/__init__.py +0 -0
  87. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/services/hds.py +0 -0
  88. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/services/streaming.py +0 -0
  89. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/services/system.py +0 -0
  90. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/services/user.py +0 -0
  91. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/tokens.py +0 -0
  92. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/src/quilt_hp/transport.py +0 -0
  93. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/__init__.py +0 -0
  94. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/conftest.py +0 -0
  95. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_auth.py +0 -0
  96. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_auth_store_settings_edges.py +0 -0
  97. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_cli_feature_completion.py +0 -0
  98. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_cli_login.py +0 -0
  99. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_cli_surfaces_extra.py +0 -0
  100. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_client_cache.py +0 -0
  101. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_client_service_error_paths.py +0 -0
  102. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_hds_schedule_mapping.py +0 -0
  103. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_hds_service_branches.py +0 -0
  104. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_models.py +0 -0
  105. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_models_from_proto.py +0 -0
  106. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_settings_store.py +0 -0
  107. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_streaming.py +0 -0
  108. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_streaming_reconnect_dispatch_extra.py +0 -0
  109. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_tokens.py +0 -0
  110. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_transport.py +0 -0
  111. {quilt_hp_python-0.1.3 → quilt_hp_python-0.1.4}/tests/test_transport_interceptor_extra.py +0 -0
@@ -7,6 +7,15 @@ 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
+
10
19
  ## [0.1.3] - 2026-05-08
11
20
 
12
21
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quilt-hp-python
3
- Version: 0.1.3
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.3"
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