GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||
GeezerVison is showing github.com — Raise UnsupportedDeviceError instead of crashing on unknown device types by GhostCoder6969 · Pull Request #1781 · python-kasa/python-kasa Conversation
Contributor
I hit the same KeyError on my network, my EC60 shows up as IOT.IPCAMERA and the whole discovery run dies. I changed get_device_class_from_sys_info so an unknown type raises UnsupportedDeviceError, which discovery already catches and reports as unsupported. I added a regression test for the legacy camera sysinfo and it realy fails without the fix. Tests, uv run pytest tests/test_device_factory.py tests/test_discovery.py, 3568 passed. ruff check and ruff format clean. Fixes #1753
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. All reactions
rytilahti
reviewed
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Interesting, that this has not caused issues earlier... Thanks for the PR @GhostCoder6969, I added a small nit on how I would personally make the check to keep it simpler. Take a look and let me know what you think!
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. All reactions
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Instead of try-catching, you could do something like:
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. All reactions
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good call, much cleaner. I switched it to the get with None check and the tests still pass. Thanks for looking at it.
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. All reactions
|
There was an error while loading. Please reload this page.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@ ## master #1781 +/- ## ========================================== + Coverage 93.42% 93.43% +0.01% ========================================== Files 159 159 Lines 10113 10116 +3 Branches 1043 1044 +1 ========================================== + Hits 9448 9452 +4 + Misses 472 471 -1 Partials 193 193 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Switched to the get with None check like you suggested, tests still green on my end. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
LGTM, great to see changes making the discovery path more robust, thanks @GhostCoder6969!
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
## [0.12.0](https://github.com/python-kasa/python-kasa/tree/0.12.0) (2026-10-25) This release include several compatibility fixes (updated accepted SSL ciphers, removal of Homekit from the default update cycle). The new API `Device.supports_module()` provide a way to find out if the device supports some specific module, e.g., HomeKit, without including it in the default update cycle. [Full Changelog](0.11.0.1...0.12.0) **Fixed bugs:** - Keep hub children when the child component list is missing [\#1797](#1797) (@Richardtristan) - Strip multi-word rich tags when rich is not installed [\#1807](#1807) (@wolfgang-aura) - Add Device.supports_module() and stop querying HomeKit for iot devices [\#1808](#1808) (@rytilahti) - Keep multi requests for smartcam devices after a timeout [\#1802](#1802) (@hugaraujo) - Consolidate SSL ciphers and use them in SslTransport [\#1798](#1798) (@rytilahti) - Raise UnsupportedDeviceError instead of crashing on unknown device types [\#1781](#1781) (@GhostCoder6969) **Added support for devices:** - Add TD21(EU) device fixture [\#1786](#1786) (@Smugaski) - Add P116M(IN) fixture [\#1795](#1795) (@Partha-dev01) **Project maintenance:** - Add Python 3.15 to supported versions and update pins [\#1793](#1793) (@rytilahti) - Generate the changelog with git-cliff and draft releases in CI [\#1809](#1809) (@rytilahti) - Build and check packages in CI and publish workflows [\#1782](#1782) (@rytilahti) **Other changes:** - Use the real discovery reply in the TD21 fixture [\#1800](#1800) (@Smugaski)
…pes (python-kasa#1781) Use get() instead of index accessor to avoid crashing on unknown devices. --------- Co-authored-by: GhostCoder6969 <[email protected]>
## [0.12.0](https://github.com/python-kasa/python-kasa/tree/0.12.0) (2026-10-25) This release include several compatibility fixes (updated accepted SSL ciphers, removal of Homekit from the default update cycle). The new API `Device.supports_module()` provide a way to find out if the device supports some specific module, e.g., HomeKit, without including it in the default update cycle. [Full Changelog](python-kasa/python-kasa@0.11.0.1...0.12.0) **Fixed bugs:** - Keep hub children when the child component list is missing [\python-kasa#1797](python-kasa#1797) (@Richardtristan) - Strip multi-word rich tags when rich is not installed [\python-kasa#1807](python-kasa#1807) (@wolfgang-aura) - Add Device.supports_module() and stop querying HomeKit for iot devices [\python-kasa#1808](python-kasa#1808) (@rytilahti) - Keep multi requests for smartcam devices after a timeout [\python-kasa#1802](python-kasa#1802) (@hugaraujo) - Consolidate SSL ciphers and use them in SslTransport [\python-kasa#1798](python-kasa#1798) (@rytilahti) - Raise UnsupportedDeviceError instead of crashing on unknown device types [\python-kasa#1781](python-kasa#1781) (@GhostCoder6969) **Added support for devices:** - Add TD21(EU) device fixture [\python-kasa#1786](python-kasa#1786) (@Smugaski) - Add P116M(IN) fixture [\python-kasa#1795](python-kasa#1795) (@Partha-dev01) **Project maintenance:** - Add Python 3.15 to supported versions and update pins [\python-kasa#1793](python-kasa#1793) (@rytilahti) - Generate the changelog with git-cliff and draft releases in CI [\python-kasa#1809](python-kasa#1809) (@rytilahti) - Build and check packages in CI and publish workflows [\python-kasa#1782](python-kasa#1782) (@rytilahti) **Other changes:** - Use the real discovery reply in the TD21 fixture [\python-kasa#1800](python-kasa#1800) (@Smugaski)
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
Unsupported IOT.IPCAMERA devices raise a bare KeyError from get_device_class_from_sys_info during discovery (fix written in #1571, closed by stale bot)
There was an error while loading. Please reload this page.