quilt-hp-python 0.5.1__tar.gz → 0.5.3__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.
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/CHANGELOG.md +12 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/PKG-INFO +1 -1
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/reference/client.md +1 -1
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/pyproject.toml +1 -1
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/__init__.py +1 -1
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/auth.py +18 -2
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_cli_surfaces_extra.py +1 -1
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/.github/copilot-instructions.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/.github/workflows/ci.yml +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/.github/workflows/docs-deploy.yml +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/.github/workflows/release.yml +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/.gitignore +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/LICENSE +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/README.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/explanation/architecture.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/explanation/authentication.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/explanation/grpc-and-protobuf.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/explanation/snapshot-and-stream.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/explanation/streaming-protocol.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/how-to/authenticate.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/how-to/automation-daemon.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/how-to/cli-scripting.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/how-to/configure-comfort-settings.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/how-to/configure-schedules.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/how-to/contribute.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/how-to/control-spaces.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/how-to/home-assistant.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/how-to/regenerate-protos.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/how-to/stream-updates.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/how-to/tui-app.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/index.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/reference/api-reference.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/reference/documentation-standards.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/reference/grpc-services-matrix.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/reference/hds-entities.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/reference/models.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/reference/token-management.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/docs/tutorial/get-started.md +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/mkdocs.yml +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/proto/cleaned/quilt_device_pairing.proto +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/proto/cleaned/quilt_hds.proto +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/proto/cleaned/quilt_notifier.proto +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/proto/cleaned/quilt_services.proto +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/proto/cleaned/quilt_system.proto +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/scripts/bump_version.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/scripts/check_docs_nav.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/scripts/generate_public_api_reference.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/scripts/regen_protos.sh +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_paths.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/__init__.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_device_pairing_pb2.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_device_pairing_pb2.pyi +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_device_pairing_pb2_grpc.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_hds_pb2.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_hds_pb2.pyi +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_hds_pb2_grpc.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_notifier_pb2.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_notifier_pb2.pyi +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_notifier_pb2_grpc.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_services_pb2.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_services_pb2.pyi +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_services_pb2_grpc.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_system_pb2.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_system_pb2.pyi +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_system_pb2_grpc.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/cli/__init__.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/cli/main.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/cli/settings.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/cli/store.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/cli/tui.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/client.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/const.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/exceptions.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/models/__init__.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/models/_helpers.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/models/comfort.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/models/controller.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/models/energy.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/models/enums.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/models/indoor_unit.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/models/outdoor_unit.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/models/qsm.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/models/schedule.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/models/sensor.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/models/software_update.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/models/space.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/models/system.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/py.typed +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/services/__init__.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/services/hds.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/services/streaming.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/services/system.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/services/user.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/tokens.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/transport.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/__init__.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/conftest.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_auth.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_auth_store_settings_edges.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_cli_feature_completion.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_cli_login.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_client_cache.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_client_service_error_paths.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_grpc_retry.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_hds_payloads.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_hds_schedule_mapping.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_hds_service_branches.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_models.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_models_extra.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_models_from_proto.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_settings_store.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_streaming.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_streaming_concurrency.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_streaming_debounce.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_streaming_health.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_streaming_reconnect_dispatch_extra.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_tokens.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_transport.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_transport_interceptor_extra.py +0 -0
- {quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_tui_bindings.py +0 -0
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.5.3] - 2026-06-30
|
|
6
|
+
|
|
7
|
+
## [0.5.2] - 2026-06-30
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
- `_make_cognito_client()` now creates the boto3 client with EC2 instance
|
|
11
|
+
metadata (IMDS) credential discovery disabled and explicit connect/read
|
|
12
|
+
timeouts. On non-EC2 hosts (e.g., Home Assistant Yellow) the IMDS endpoint
|
|
13
|
+
at 169.254.169.254 may accept TCP connections but never respond, causing the
|
|
14
|
+
calling thread to block for the full OS-level TCP timeout — well beyond the
|
|
15
|
+
20-second setup window — and triggering a spurious `ConfigEntryNotReady`.
|
|
16
|
+
|
|
5
17
|
## [0.5.1] - 2026-06-30
|
|
6
18
|
|
|
7
19
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: quilt-hp-python
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.3
|
|
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
|
|
@@ -15,6 +15,8 @@ from functools import partial
|
|
|
15
15
|
from typing import Protocol, cast
|
|
16
16
|
|
|
17
17
|
import boto3
|
|
18
|
+
import botocore.session
|
|
19
|
+
from botocore.config import Config
|
|
18
20
|
from botocore.exceptions import ClientError
|
|
19
21
|
|
|
20
22
|
from quilt_hp.const import COGNITO_CLIENT_ID, COGNITO_REGION
|
|
@@ -66,10 +68,24 @@ def _expires_in_s(result: CognitoAuthResult) -> int:
|
|
|
66
68
|
|
|
67
69
|
|
|
68
70
|
def _make_cognito_client() -> _CognitoClient:
|
|
69
|
-
"""Create a boto3 Cognito Identity Provider client.
|
|
71
|
+
"""Create a boto3 Cognito Identity Provider client.
|
|
72
|
+
|
|
73
|
+
Creates a botocore session with IMDS credential discovery disabled.
|
|
74
|
+
The EC2 instance metadata service (169.254.169.254) can hang on
|
|
75
|
+
non-EC2 hosts that accept the TCP connection but never respond,
|
|
76
|
+
blocking the thread for the full OS-level TCP timeout. Cognito
|
|
77
|
+
user-pool auth flows (CUSTOM_AUTH, REFRESH_TOKEN_AUTH) don't
|
|
78
|
+
require AWS IAM credentials, so skipping IMDS is safe here.
|
|
79
|
+
"""
|
|
80
|
+
session = botocore.session.get_session()
|
|
81
|
+
session.set_config_variable("metadata_service_num_attempts", 0)
|
|
70
82
|
return cast(
|
|
71
83
|
"_CognitoClient",
|
|
72
|
-
boto3.
|
|
84
|
+
boto3.Session(botocore_session=session).client(
|
|
85
|
+
"cognito-idp",
|
|
86
|
+
region_name=COGNITO_REGION,
|
|
87
|
+
config=Config(connect_timeout=5, read_timeout=15),
|
|
88
|
+
),
|
|
73
89
|
)
|
|
74
90
|
|
|
75
91
|
|
|
@@ -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.5.
|
|
19
|
+
assert result.stdout.strip() == "0.5.3"
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class _FakeClient:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_device_pairing_pb2.py
RENAMED
|
File without changes
|
{quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_device_pairing_pb2.pyi
RENAMED
|
File without changes
|
{quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_device_pairing_pb2_grpc.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_notifier_pb2_grpc.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_services_pb2_grpc.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/src/quilt_hp/_proto/quilt_system_pb2_grpc.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quilt_hp_python-0.5.1 → quilt_hp_python-0.5.3}/tests/test_streaming_reconnect_dispatch_extra.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|