76f03a2bee
This allows a small wrapper class to be written ```py class AsyncEventQueue: def __init__(self, events): self._events = events async def __await__(self): yield asyncio.core._io_queue.queue_read(self._events) return self._events.get() def __enter__(self): return self def __exit__(self, exc_type, exc_value, traceback): pass ``` and used to just "await" the next event: ```py async def key_task(): print("waiting for keypresses") with keypad.KeyMatrix([board.D4], [board.D5]) as keys, AsyncEventQueue(keys.events) as ev: while True: print(await ev) ``` Because checking the empty status of the EventQueue does not enter CircuitPython bytecode, it's assumed (but not measured) that this is more efficient than an equivalent loop with an `await async.sleep(0)` yield and introduces less latency than any non-zero sleep value. |
||
---|---|---|
.github | ||
data | ||
devices/ble_hci | ||
docs | ||
examples | ||
extmod | ||
frozen | ||
lib | ||
LICENSES | ||
locale | ||
logo | ||
mpy-cross | ||
ports | ||
py | ||
shared | ||
shared-bindings | ||
shared-module | ||
supervisor | ||
tests | ||
tools | ||
.git-blame-ignore-revs | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.mailmap | ||
.pre-commit-config.yaml | ||
.readthedocs.yml | ||
.rosie.yml | ||
ACKNOWLEDGEMENTS | ||
ACKNOWLEDGEMENTS.license | ||
BUILDING.md | ||
CODE_OF_CONDUCT.md | ||
conf.py | ||
CONTRIBUTING.md | ||
LICENSE | ||
license.rst | ||
main.c | ||
Makefile | ||
MANIFEST.in-stubs | ||
README.rst | ||
README.rst-stubs | ||
requirements-ci.txt | ||
requirements-dev.txt | ||
requirements-doc.txt | ||
runtime.py | ||
setup.py-stubs | ||
WEBUSB_README.md |
CircuitPython ============= .. image:: https://s3.amazonaws.com/adafruit-circuit-python/CircuitPython_Repo_header_logo.png |Build Status| |Doc Status| |License| |Discord| |Weblate| `circuitpython.org <https://circuitpython.org>`__ \| `Get CircuitPython <#get-circuitpython>`__ \| `Documentation <#documentation>`__ \| `Contributing <#contributing>`__ \| `Branding <#branding>`__ \| `Differences from Micropython <#differences-from-micropython>`__ \| `Project Structure <#project-structure>`__ **CircuitPython** is a *beginner friendly*, open source version of Python for tiny, inexpensive computers called microcontrollers. This package contains the "stubs", or type definitions for CircuitPython. With some advanced editors and other tools, this information can be identify TypeErrors, AttributeErrors, and other problems before you deploy your code to a device and can even help autocomplete your code. .. |Build Status| image:: https://github.com/adafruit/circuitpython/workflows/Build%20CI/badge.svg :target: https://github.com/adafruit/circuitpython/actions?query=branch%3Amain .. |Doc Status| image:: https://readthedocs.org/projects/circuitpython/badge/?version=latest :target: http://circuitpython.readthedocs.io/ .. |Discord| image:: https://img.shields.io/discord/327254708534116352.svg :target: https://adafru.it/discord .. |License| image:: https://img.shields.io/badge/License-MIT-brightgreen.svg :target: https://choosealicense.com/licenses/mit/ .. |Weblate| image:: https://hosted.weblate.org/widgets/circuitpython/-/svg-badge.svg :target: https://hosted.weblate.org/engage/circuitpython/?utm_source=widget