Fixes the test framework to handle fixtures with incomplete lists better by checking for completeness and overriding the sum. Also adds a pytest-timeout dev dependency with timeout set to 10 seconds. Finally fixes smartprotocol to prevent an infinite loop if incomplete lists ever happens in the real world.
Co-authored-by: Teemu R. <tpr@iki.fi>
When devices have lists greater than 10 for child devices only the first
10 are returned. This retrieves the rest of the items (currently with
single requests rather than multiple requests)
When smart devices encounter an error during a multipleRequest they
return the previous successes and the current error and stop processing
subsequent requests. This checks the responses returned and
re-queries individually for any missing responses so that individual
errors do not break other components.
* Fix for P100 on fw 1.1.3 login_version none
* Fix coverage
* Add delay before trying default login
* Move devtools and fixture out
* Change logging string
Co-authored-by: Teemu R. <tpr@iki.fi>
* Fix test
---------
Co-authored-by: Teemu R. <tpr@iki.fi>
* Add ChildDevice and ChildProtocolWrapper
* Initialize & update children
* Fix circular imports
* Add dummy_protocol fixture and tests for unwrapping responseData
* Use dummy_protocol for existing smartprotocol tests
* Move _ChildProtocolWrapper to smartprotocol.py
* Use dummy_protocol for test multiple requests
* Use device_id instead of position for selecting the child
* Fix wrapping for regular requests
* Remove unused imports
* tweak
* rename child_device to childdevice
* Fix import
* Enable batching of multiple requests
* Test for debug enabled outside of loop
* tweaks
* tweaks
* tweaks
* Update kasa/smartprotocol.py
Co-authored-by: Teemu R. <tpr@iki.fi>
* revert
* Update pyproject.toml
* Add batch test and make batch_size configurable
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Teemu R. <tpr@iki.fi>
* Do login entirely within AesTransport
* Remove login and handshake attributes from BaseTransport
* Add AesTransport tests
* Synchronise transport and protocol __init__ signatures and rename internal variables
* Update after review
* Add support for TAPO/SMART KLAP and seperate transports from protocols
* Add tests and some review changes
* Update following review
* Updates following review