Closed as not planned
Closed as not planned
Description
import asyncio
import threading
import concurrent.futures
async def main():
f = concurrent.futures.Future()
def timer_called():
print("timer called")
f.set_result(None)
t = threading.Timer(1, timer_called)
t.start()
await asyncio.wait({f})
asyncio.run(main())
on python3.10
Traceback (most recent call last):
File "/home/graingert/projects/cpython/bad_future.py", line 16, in <module>
asyncio.run(main())
File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/usr/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete
return future.result()
File "/home/graingert/projects/cpython/bad_future.py", line 14, in main
await asyncio.wait({f})
File "/usr/lib/python3.10/asyncio/tasks.py", line 382, in wait
fs = {ensure_future(f, loop=loop) for f in fs}
File "/usr/lib/python3.10/asyncio/tasks.py", line 382, in <setcomp>
fs = {ensure_future(f, loop=loop) for f in fs}
File "/usr/lib/python3.10/asyncio/tasks.py", line 615, in ensure_future
return _ensure_future(coro_or_future, loop=loop)
File "/usr/lib/python3.10/asyncio/tasks.py", line 630, in _ensure_future
raise TypeError('An asyncio.Future, a coroutine or an awaitable '
TypeError: An asyncio.Future, a coroutine or an awaitable is required
timer called
python3.11 does this (I hit ctrl+c after it prints timer called)
timer called
^CTraceback (most recent call last):
File "/usr/lib/python3.11/asyncio/tasks.py", line 534, in _wait
await waiter
asyncio.exceptions.CancelledError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/graingert/projects/cpython/bad_future.py", line 16, in <module>
asyncio.run(main())
File "/usr/lib/python3.11/asyncio/runners.py", line 187, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/runners.py", line 120, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/base_events.py", line 650, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/home/graingert/projects/cpython/bad_future.py", line 14, in main
await asyncio.wait({f})
File "/usr/lib/python3.11/asyncio/tasks.py", line 427, in wait
return await _wait(fs, timeout, return_when, loop)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/tasks.py", line 539, in _wait
f.remove_done_callback(_on_completion)
^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Future' object has no attribute 'remove_done_callback'. Did you mean: 'add_done_callback'?
Metadata
Metadata
Assignees
Projects
Status
Done