Fix blocking code in AirNow sensor #117615
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Proposed change
Fixed warning of blocking in AirNow sensor creation (because of a ZoneInfo call). This was actually not doing anything because AirNow returns timezones as three-letter abbreviations (i.e. CST), but ZoneInfo only works with IANA strings (i.e. "America/Chicago") because the three-letter abbreviations are non-unique. AirNow is a US based service, so the three-letter works for it, but there isn't a good way of parsing the three-letter ones, I don't think.
So, my solution is just to treat the time of observation as a string with the three-letter zone, and not bother with actually parsing the time into an actual datetime object.
I also added the state to the reporting station sensor.
In a future PR, should we think about moving more things to sensors? Dev docs say to avoid using extra_attributes for things that change (like the category and category level in this case, perhaps even observation time).
Type of change
Additional information
Checklist
ruff format homeassistant tests
)If user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
Updated and included derived files by running:
python3 -m script.hassfest
.requirements_all.txt
.Updated by running
python3 -m script.gen_requirements_all
..coveragerc
.To help with the load of incoming pull requests: