1
0
mirror of https://github.com/ARM-software/devlib.git synced 2025-04-10 11:50:04 +01:00

5 Commits

Author SHA1 Message Date
Douglas Raillard
fb4e155696 utils/asyn: Replace nest_asyncio with greenlet
Provide an implementation of re-entrant asyncio.run() that is less
brittle than what greenback provides (e.g. no use of ctypes to poke
extension types).

The general idea of the implementation consists in treating the executed
coroutine as a generator, then turning that generator into a generator
implemented using greenlet. This allows a nested function to make the
top-level parent yield values on its behalf, as if every call was
annotated with "yield from".
2024-09-12 17:59:19 -05:00
Douglas Raillard
b2e19d333b utils/asyn: Factor out the calls to asyncio.run
Prepare for providing our own implementation of asyncio.run() to work
without nest_asyncio package.
2024-09-12 17:59:19 -05:00
Douglas Raillard
796b9fc1ef utils/asyn: Fix memoized_method.__set_name__
Set the "_name" attribute rather than trying to set the "name" read-only
property.
2024-09-12 17:59:19 -05:00
Douglas Raillard
fefdf29ed8 utils/asyn: Add memoize_method() decorator
Add a memoize_method decorator that works for async methods. It will not
leak memory since the memoization cache is held in the instance
__dict__, and it does not rely on hacks to hash unhashable data.
2022-07-28 14:40:15 +01:00
Douglas Raillard
bdf8b88ac7 utils/async: Add new utils.async module
Home for async-related utilities.
2022-07-28 14:40:15 +01:00