Skip to content

Add quality scale for season integration#169845

Open
RogueKatoz wants to merge 2 commits intohome-assistant:devfrom
RogueKatoz:add-season-quality-scale
Open

Add quality scale for season integration#169845
RogueKatoz wants to merge 2 commits intohome-assistant:devfrom
RogueKatoz:add-season-quality-scale

Conversation

@RogueKatoz
Copy link
Copy Markdown

@RogueKatoz RogueKatoz commented May 5, 2026

Proposed change

Analysed the season integration and added a quality_scale.yaml following the proper documentation, then removed season from the hassfest quality scale scale exception list. Reasoning for each check is as follows:

Bronze

  • action-setup - done: integration has no service actions.
  • appropriate-polling - todo: integration uses local polling but no explicit polling interval given in code. Should probably be reviewed as season only needs infrequent updates.
  • brands - done: all required icons/logos exist in brands.home-assistant.io/season/.
  • common-modules - done: integration is very small, no duplicated logic.
  • config-flow-test-coverage - done: user flow coverage in test/components/season/test_config_flow.py.
  • config-flow - todo: config_flow.py exists but 'season' contains no data_description.
    • Uses data_description to give context to fields
    • Uses ConfigEntry.data and ConfigEntry.options correctly
  • dependency-transparency - done: clear dependency on ephem 4.1.6 given in manifest.json:11
  • docs-actions - done: no service actions to document.
  • docs-high-level-description - exempt: is an internal integration, and does not interact with any external devices or services.
  • docs-installation-instructions - done: automatic and manual installation instructions provided at https://www.home-assistant.io/integrations/season#configuration
  • docs-removal-instructions - done: removal instructions provided at https://www.home-assistant.io/integrations/season#removing-the-integration
  • entity-event-setup - done: no entity events to subscribe to.
  • entity-unique-id - done: season sensor entity id setup at config_flow.py:28
  • has-entity-name - done: season sensor sets _attr_has_entity_name to True at sensor.py:101
  • runtime-data - todo: integration does not currrently store runtime data.
  • test-before-configure - exempt: integration does not connect to device/service.
  • test-before-setup - done: integration does not test for any failure paths during async_setup_entry.
  • unique-config-entry - done: Handling for duplicate configurations at config_flow.py:29

Silver

  • action-exceptions - done: no service actions in integration.
  • config-entry-unloading - done: integration unloading support at init.py:15
  • docs-configuration-parameters - done: Configuration for season definition defined at https://www.home-assistant.io/integrations/season#supported-functionality.
  • docs-installation-parameters - done: season parameter defined at https://www.home-assistant.io/integrations/season#configuration
  • entity-unavailable - done: integration does not need to fetch any data.
  • integration-owner - done: integration owner specified at manifest.json:4.
  • log-when-unavailable - done: integration has no external dependencies it needs to log.
  • parallel-updates - todo: number of parallel updates is not specified.
  • reauthentication-flow - exempt: integration does not authenticate with any external devices or services.
  • test-coverage - done: 100% test coverage across all modules in integration (ran pytest ./tests/components/season/ --cov=homeassistant.components.season --cov-report term-missing).

Gold

  • devices - done: sensor properly creates device and associated info.
  • diagnostics - todo: no diagnositics.py implemented.
  • discovery-update-info - exempt: integration is not discoverable and has no discovery information.
  • discovery - exempt: integration is not discoverable and has no discovery information.
  • docs-data-update - todo: while the data update rate is given in documentation, it is non-specific and not reflected in the code. Kind of depends on the appropriate-polling rule.
  • docs-examples - done: examples of automations are specified at https://www.home-assistant.io/integrations/season#examples
  • docs-known-limitations - todo: no examples of limitations provided.
  • docs-supported-devices - exempt: integration does not connect to any external devices or services.
  • docs-supported-functions - done: supported functionalities specified at https://www.home-assistant.io/integrations/season#supported-functionality
  • docs-troubleshooting - todo: no troubleshooting information given.
  • docs-use-cases - done: use cases provided at https://www.home-assistant.io/integrations/season
  • dynamic-devices - done: no dynamic devices are created after initialisation.
  • entity-category - todo: season sensor not given appropriate category.
  • entity-device-class - done: season sensor does not fall under any relevant device class, so ENUM with options attribute is suitable.
  • entity-disabled-by-default - done: integration does not need to handle noisy entities.
  • entity-translations - done: seasons and season types have translated names.
  • exception-translations - done: no exception messages currently implemented.
  • icon-translations - done: season translation key is state-defined depending on the season (sensor.py:104, icons.json).
  • reconfiguration-flow - todo: no reconfiguration flow implemented.
  • repair-issues - done: no user-intevention failure cases to repair.
  • stale-devices - done: no dynamic devices to become stale.

Platinum

  • async-dependency - todo: asyncio not implemented.
  • inject-websession - exempt: integration does not make HTTP requests.
  • strict-typing - todo: integration added to .strict-typing but no py.typed exists for the ephem dependency.

Tests Done:

  • python3 -m script.hassfest (passed)
  • ruff format homeassistant tests (passed)
  • prek run --all-files (passed but gave unrelated error: 'Duplicate module named "homeassistant.util.signal_type"')

As I'm new to contributing to Home Assistant, any feedback on the PR is appreciated. I'm currently involved with a group of students who are contributing to Home Assistant for an open-source project, and we all look forward to contributing to the platform.

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New integration (thank you!)
  • New feature (which adds functionality to an existing integration)
  • Deprecation (breaking change to happen in the future)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Additional information

  • This PR fixes or closes issue:
  • This PR is related to issue:
  • Link to documentation pull request:
  • Link to developer documentation pull request:
  • Link to frontend pull request:

Checklist

  • I understand the code I am submitting and can explain how it works.
  • The code change is tested and works locally.
  • Local tests pass. Your PR cannot be merged unless tests pass
  • There is no commented out code in this PR.
  • I have followed the development checklist
  • I have followed the perfect PR recommendations
  • The code has been formatted using Ruff (ruff format homeassistant tests)
  • Tests have been added to verify that the new code works.
  • Any generated code has been carefully reviewed for correctness and compliance with project standards.

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

  • The manifest file has all fields filled out correctly.
    Updated and included derived files by running: python3 -m script.hassfest.
  • New or updated dependencies have been added to requirements_all.txt.
    Updated by running python3 -m script.gen_requirements_all.
  • For the updated dependencies a diff between library versions and ideally a link to the changelog/release notes is added to the PR description.

To help with the load of incoming pull requests:

Copilot AI review requested due to automatic review settings May 5, 2026 13:36
@RogueKatoz RogueKatoz requested review from a team and frenck as code owners May 5, 2026 13:36
Copy link
Copy Markdown
Contributor

@home-assistant home-assistant Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @RogueKatoz

It seems you haven't yet signed a CLA. Please do so here.

Once you do that we will be able to review and accept this pull request.

Thanks!

@home-assistant home-assistant Bot added cla-needed code-quality integration: season Top 200 Integration is ranked within the top 200 by usage labels May 5, 2026
@home-assistant home-assistant Bot marked this pull request as draft May 5, 2026 13:36
@home-assistant
Copy link
Copy Markdown
Contributor

home-assistant Bot commented May 5, 2026

Please take a look at the requested changes, and use the Ready for review button when you are done, thanks 👍

Learn more about our pull request process.

@home-assistant
Copy link
Copy Markdown
Contributor

home-assistant Bot commented May 5, 2026

Hey there @frenck, mind taking a look at this pull request as it has been labeled with an integration (season) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of season can trigger bot actions by commenting:

  • @home-assistant close Closes the pull request.
  • @home-assistant mark-draft Mark the pull request as draft.
  • @home-assistant ready-for-review Remove the draft status from the pull request.
  • @home-assistant rename Awesome new title Renames the pull request.
  • @home-assistant reopen Reopen the pull request.
  • @home-assistant unassign season Removes the current integration label and assignees on the pull request, add the integration domain after the command.
  • @home-assistant update-branch Update the pull request branch with the base branch.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information, problem in dependency, problem in custom component, problem in config, problem in device, feature-request) to the pull request.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component, problem in config, problem in device, feature-request) on the pull request.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an Integration Quality Scale (IQS) definition for the season integration and updates hassfest so the integration is no longer treated as an exception to having a quality_scale.yaml. This helps track rule compliance over time and enables hassfest validation for any rules marked as done.

Changes:

  • Remove season from INTEGRATIONS_WITHOUT_QUALITY_SCALE_FILE in hassfest.
  • Add homeassistant/components/season/quality_scale.yaml with rule statuses/comments for the season integration.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
script/hassfest/quality_scale.py Removes season from the list of integrations exempted from requiring a quality_scale.yaml.
homeassistant/components/season/quality_scale.yaml Introduces the season integration’s IQS rule status declarations and exemption comments.

@RogueKatoz RogueKatoz marked this pull request as ready for review May 5, 2026 13:47
Copilot AI review requested due to automatic review settings May 5, 2026 13:47
@home-assistant home-assistant Bot dismissed their stale review May 5, 2026 13:47

Stale

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

Comment on lines +11 to +14
docs-high-level-description:
status: exempt
comment: |
Is an internal integration, and does not interact with any external devices or services.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants