The esp32 port has the machine Counter and Encoder classes implemented in Python, requiring a `machine.py` that extends the built-in machine module. That previously used `__getattr__()` to delegate lookups to the built-in, but that means any failed lookup raises an `AttributeError` instead of an `ImportError`. This means (among other things) that certain tests like CAN and I2CTarget would fail because they couldn't skip the test correctly. This commit improves the situation by using `from machine import *` instead of `__getattr__()`, which puts all the built-in functions/classes/constants directly in the `machine.py` global namespace. That means an `ImportError` is now correctly raised for attributes that don't exist. Although this takes up a bit more RAM, it's now a lot faster to import from the machine module: what used to take around 100us to lookup a name now takes only 5us. Signed-off-by: Damien George <damien@micropython.org> |
||
|---|---|---|
| .. | ||
| _boot.py | ||
| apa106.py | ||
| espnow.py | ||
| flashbdev.py | ||
| inisetup.py | ||
| machine.py | ||