From 731d1ab796f4749975af3057456b303dbb6cdd38 Mon Sep 17 00:00:00 2001 From: Allen Porter Date: Wed, 23 Apr 2025 07:32:20 -0700 Subject: [PATCH] Add quality scale for google calendar integration (#131328) * Add quality scale for google calendar integration * Update status and comments for the quality scale * Update based on pr feedback * Update quality_scale.yaml * Update quality_scale.yaml * Update quality_scale.yaml * Update quality_scale.yaml * Update quality_scale.yaml * Update quality_scale.yaml for dependency-transparency * Score silver, gold, and platinum levels * Update quality scale * Update quality scale --- .../components/google/quality_scale.yaml | 119 ++++++++++++++++++ script/hassfest/quality_scale.py | 1 - 2 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 homeassistant/components/google/quality_scale.yaml diff --git a/homeassistant/components/google/quality_scale.yaml b/homeassistant/components/google/quality_scale.yaml new file mode 100644 index 00000000000..9ef6abdba90 --- /dev/null +++ b/homeassistant/components/google/quality_scale.yaml @@ -0,0 +1,119 @@ +rules: + # Bronze + config-flow: + status: todo + comment: Some fields missing data_description in the option flow. + brands: done + dependency-transparency: + status: todo + comment: | + This depends on the legacy (deprecated) oauth libraries for device + auth (no longer recommended auth). Google publishes to pypi using + an internal build system. We need to either revisit approach or + revisit our stance on this. + common-modules: done + has-entity-name: done + action-setup: + status: todo + comment: | + Actions are current setup in `async_setup_entry` and need to be moved + to `async_setup`. + appropriate-polling: done + test-before-configure: done + entity-event-setup: + status: exempt + comment: Integration does not subscribe to events. + unique-config-entry: done + entity-unique-id: done + docs-installation-instructions: done + docs-removal-instructions: todo + test-before-setup: + status: todo + comment: | + The integration does not test the connection in `async_setup_entry` but + instead does this in the calendar platform only, which can be improved. + docs-high-level-description: done + config-flow-test-coverage: + status: todo + comment: | + The config flow has 100% test coverage, however there are opportunities + to increase functionality such as checking for the specific contents + of a unique id assigned to a config entry. + docs-actions: done + runtime-data: + status: todo + comment: | + The integration stores config entry data in `hass.data` and should be + updated to use `runtime_data`. + + # Silver + log-when-unavailable: done + config-entry-unloading: done + reauthentication-flow: + status: todo + comment: | + The integration supports reauthentication, however the config flow test + coverage can be improved on reauth corner cases. + action-exceptions: done + docs-installation-parameters: todo + integration-owner: done + parallel-updates: todo + test-coverage: + status: todo + comment: One module needs an additional line of coverage to be above the bar + docs-configuration-parameters: todo + entity-unavailable: done + + # Gold + docs-examples: done + discovery-update-info: + status: exempt + comment: Google calendar does not support discovery + entity-device-class: todo + entity-translations: todo + docs-data-update: todo + entity-disabled-by-default: done + discovery: + status: exempt + comment: Google calendar does not support discovery + exception-translations: todo + devices: todo + docs-supported-devices: done + icon-translations: + status: exempt + comment: Google calendar does not have any icons + docs-known-limitations: todo + stale-devices: + status: exempt + comment: Google calendar does not have devices + docs-supported-functions: done + repair-issues: + status: todo + comment: There are some warnings/deprecations that should be repair issues + reconfiguration-flow: + status: exempt + comment: There is nothing to configure in the configuration flow + entity-category: + status: exempt + comment: The entities in google calendar do not support categories + dynamic-devices: + status: exempt + comment: Google calendar does not have devices + docs-troubleshooting: todo + diagnostics: todo + docs-use-cases: todo + + # Platinum + async-dependency: + status: done + comment: | + The main client `gcal_sync` library is async. The primary authentication + used in config flow is handled by built in async OAuth code. The + integration still supports legacy OAuth credentials setup in the + configuration flow, which is no longer recommended or described in the + documentation for new users. This legacy config flow uses oauth2client + which is not natively async. + strict-typing: + status: todo + comment: Dependency oauth2client does not confirm to PEP 561 + inject-websession: done diff --git a/script/hassfest/quality_scale.py b/script/hassfest/quality_scale.py index 7e059662423..2215be04840 100644 --- a/script/hassfest/quality_scale.py +++ b/script/hassfest/quality_scale.py @@ -439,7 +439,6 @@ INTEGRATIONS_WITHOUT_QUALITY_SCALE_FILE = [ "goalzero", "gogogate2", "goodwe", - "google", "google_assistant", "google_assistant_sdk", "google_cloud",