Add a tutorial module with examples that can be tested with `doctest`.
In order to simplify the examples they can be run with doctest allowing
top level await statements by adding a fixture to patch the builtins
that xdoctest uses to test code.
---------
Co-authored-by: Teemu R. <tpr@iki.fi>
* Add a note about socket sharing
* Show inherited members for apidocs
* Remove outdated note of emeters not being supported on smartstrips
* Describe emeter and usage modules, add note about NTP for time sync
* Describe lib design and modules
* Bump sphinx version, ignore d001 (line-length) for doc8
* demote energy & usage to 3rd level, promote api for 2nd
* Add doctests to SmartBulb
* Add SmartDevice doctests, cleanup README.md
* add doctests for smartplug and smartstrip
* add discover doctests
* Fix bulb mock
* add smartdimmer doctests
* add sphinx-generated docs, cleanup readme a bit
* remove sphinx-click as it does not work with asyncclick
* in preparation for rtd hooking, move doc deps to be separate from dev deps
* pytestmark needs to be applied separately for each and every file, this fixes the tests
* use pathlib for resolving relative paths
* Skip discovery doctest on python3.7
The code is just fine, but some reason the mocking behaves differently between 3.7 and 3.8.
The latter seems to accept a discrete object for asyncio.run where the former expects a coroutine..