extmod/uasyncio: Add asyncio.current_task().

Matches CPython behavior.

Fixes #6686
This commit is contained in:
Jim Mussared 2021-02-12 14:11:18 +11:00 committed by Damien George
parent d128999938
commit 7ed99544e4
4 changed files with 34 additions and 0 deletions

View File

@ -40,6 +40,10 @@ Core functions
Returns the corresponding `Task` object.
.. function:: current_task()
Return the `Task` object associated with the currently running task.
.. function:: run(coro)
Create a new task from the given coroutine and run it until it completes.

View File

@ -264,6 +264,10 @@ def get_event_loop(runq_len=0, waitq_len=0):
return Loop
def current_task():
return cur_task
def new_event_loop():
global _task_queue, _io_queue
# TaskQueue of Task instances

View File

@ -0,0 +1,25 @@
# Test current_task() function
try:
import uasyncio as asyncio
except ImportError:
try:
import asyncio
except ImportError:
print("SKIP")
raise SystemExit
async def task(result):
result[0] = asyncio.current_task()
async def main():
result = [None]
t = asyncio.create_task(task(result))
await asyncio.sleep(0)
await asyncio.sleep(0)
print(t is result[0])
asyncio.run(main())

View File

@ -0,0 +1 @@
True