Skip to content

Commit 460dd59

Browse files
committed
uasyncio.core: Don't pass any callback args to add_reader/add_writer.
Instead, capture all needed param in closure. Due do bug in MicroPython's handling of default args to lambdas, helper function is used.
1 parent ff27e3c commit 460dd59

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

uasyncio.core/uasyncio/core.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ def wait(self, delay):
4444
log.debug("Sleeping for: %s", delay)
4545
time.sleep(delay)
4646

47+
# Workaround bug for in uPy - default args for lambda's are not supported
48+
def lambda_helper(self, cb):
49+
def lmb(cb=cb):
50+
self.call_soon(cb)
51+
return lmb
52+
4753
def run_forever(self):
4854
while True:
4955
if self.q:
@@ -78,10 +84,12 @@ def run_forever(self):
7884
elif isinstance(ret, IORead):
7985
# self.add_reader(ret.obj.fileno(), lambda self, c, f: self.call_soon(c, f), self, cb, ret.obj)
8086
# self.add_reader(ret.obj.fileno(), lambda c, f: self.call_soon(c, f), cb, ret.obj)
81-
self.add_reader(arg.fileno(), lambda cb, f: self.call_soon(cb, f), cb, arg)
87+
# self.add_reader(arg.fileno(), lambda cb: self.call_soon(cb), cb)
88+
self.add_reader(arg.fileno(), self.lambda_helper(cb))
8289
continue
8390
elif isinstance(ret, IOWrite):
84-
self.add_writer(arg.fileno(), lambda cb, f: self.call_soon(cb, f), cb, arg)
91+
# self.add_writer(arg.fileno(), lambda cb: self.call_soon(cb), cb)
92+
self.add_writer(arg.fileno(), self.lambda_helper(cb))
8593
continue
8694
elif isinstance(ret, IOReadDone):
8795
self.remove_reader(arg.fileno())

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy