Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
16d09d9
Add quality scale for airnow integration
HoffmanEl May 4, 2026
14b7417
Potential fix for pull request finding
HoffmanEl May 4, 2026
0131325
Add quality_scale to airnow manifest
HoffmanEl May 4, 2026
aef1aa9
Fix missing newline at end of manifest.json
HoffmanEl May 4, 2026
9f83309
Remove airnow from hassfest exception lists and clean up manifest
HoffmanEl May 4, 2026
719163b
Declare airnow quality scale as bronze
HoffmanEl May 4, 2026
c759b9d
Add data_description to airnow strings.json for bronze compliance
HoffmanEl May 4, 2026
cd0aee8
Fix missing newline at end of strings.json
HoffmanEl May 4, 2026
de95ddb
Potential fix for pull request finding
HoffmanEl May 4, 2026
294d216
Add data_description for all config flow fields in airnow strings.json
HoffmanEl May 4, 2026
e1c753b
Add Silver/Gold/Platinum sections to airnow quality_scale.yaml
HoffmanEl May 5, 2026
d58b5fc
Fix indentation and missing newline in quality_scale.yaml
HoffmanEl May 5, 2026
5136b20
Fix trailing whitespace and newline at end of quality_scale.yaml
HoffmanEl May 5, 2026
06e2f68
Remove invalid system-health rule from quality_scale.yaml
HoffmanEl May 5, 2026
b9f96d3
Potential fix for pull request finding
HoffmanEl May 5, 2026
ab7549f
Complete quality_scale.yaml with all Silver/Gold/Platinum rules
HoffmanEl May 5, 2026
c924241
Revert strings.json changes - will submit as separate PR
HoffmanEl May 5, 2026
9cc287e
Re-add data_description strings required by existing tests
HoffmanEl May 5, 2026
6dc214e
Add data_description to airnow options flow strings
HoffmanEl May 5, 2026
d2ea1ac
Fix missing newline at end of strings.json
HoffmanEl May 5, 2026
c61aaa3
Potential fix for pull request finding
HoffmanEl May 5, 2026
e9138cf
Update quality scale rules based on code review
HoffmanEl May 5, 2026
87773a0
Fix quality scale rules and revert strings per reviewer feedback
HoffmanEl May 11, 2026
3461349
Merge branch 'dev' of https://github.com/home-assistant/core into add…
HoffmanEl May 11, 2026
48c82cd
Add data_description to airnow options flow strings
HoffmanEl May 11, 2026
4ec3d88
Add comment to entity-device-class about ozone sensor
HoffmanEl May 11, 2026
ed8690b
Trigger CI rerun
HoffmanEl May 11, 2026
66397b4
Remove quality_scale from manifest - not yet at bronze tier
HoffmanEl May 11, 2026
0f459c9
Add airnow back to INTEGRATIONS_WITHOUT_SCALE
HoffmanEl May 11, 2026
b55ea18
Fix missing comma in INTEGRATIONS_WITHOUT_SCALE
HoffmanEl May 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions homeassistant/components/airnow/quality_scale.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
rules:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

As a sidenote, maybe it'd make sense to migrate it to use subentries, like for example waqi. But this is optional, just wanted to put it out there

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Another sidenote, a lot of the variables defined in async_setup_entry in the __init__.py are put into the coordinator, but they all originate from entry, which is also passed in. I think you could make that cleaner by just fetching all you need in the coordinator itself

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we can consider removing that entity/device removal

# Bronze
action-setup:
status: exempt
comment: Integration does not register custom actions.
appropriate-polling:
status: done
comment: Reports are polled every 30 minutes so newly published hourly AirNow reports are picked up promptly.
brands: done
common-modules: done
config-flow-test-coverage: todo
config-flow: done
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Please revert the strings from this PR and set this to todo

dependency-transparency: done
docs-actions:
status: exempt
comment: Integration does not register custom actions.
docs-high-level-description: done
docs-installation-instructions: done
docs-removal-instructions: done
entity-event-setup:
status: exempt
comment: Integration does not subscribe to events.
entity-unique-id: done
has-entity-name: done
runtime-data: done
test-before-configure: done
test-before-setup: done
unique-config-entry: done
# Silver
action-exceptions: todo
config-entry-unloading: done
docs-configuration-parameters: todo
docs-installation-parameters: todo
entity-unavailable: todo
integration-owner: todo
log-when-unavailable: todo
parallel-updates: done
reauthentication-flow: todo
test-coverage: todo
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sidenote, we should try and patch the library where we use it, instead of patching internals like _get

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why do we fake the timezone in the diagnostic test?

# Gold
devices: todo
Comment on lines +38 to +41
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

you have devices

diagnostics: done
discovery: todo
discovery-update-info: todo
docs-data-update: todo
docs-examples: todo
docs-known-limitations: todo
docs-supported-devices: todo
docs-supported-functions: todo
docs-troubleshooting: todo
docs-use-cases: todo
dynamic-devices: todo
entity-category: todo
entity-device-class:
status: todo
comment: The ozone sensor can still use the ozone device class.
entity-disabled-by-default: todo
entity-translations: todo
exception-translations: todo
icon-translations: todo
reconfiguration-flow: todo
stale-devices: todo
repair-issues: todo
# Platinum
async-dependency: done
inject-websession: done
strict-typing: todo
3 changes: 3 additions & 0 deletions homeassistant/components/airnow/strings.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@
"init": {
"data": {
"radius": "Station radius (miles)"
},
"data_description": {
"radius": "The radius in miles around your location to search for reporting stations."
Comment on lines 48 to +51
}
}
}
Expand Down
1 change: 0 additions & 1 deletion script/hassfest/quality_scale.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,6 @@ class Rule:
"aftership",
"agent_dvr",
"airly",
"airnow",
"airq",
"airthings",
"airthings_ble",
Expand Down
Loading