This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author onerandomusername
Recipients asvetlov, onerandomusername, yselivanov
Date 2022-02-07.05:24:45
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1644211485.82.0.488303396987.issue46672@roundup.psfhosted.org>
In-reply-to
Content
It is possible to cause a NameError in asyncio.gather if the second presumed coroutine fails the internal type check.


Sample code:

import asyncio
async def main():
    coros = (asyncio.sleep(1), {1: 1})
    await asyncio.gather(*coros)
asyncio.run(main())



Exception in callback gather.<locals>._done_callback(<Task cancell...tasks.py:593>>) at /usr/local/lib/python3.10/asyncio/tasks.py:714
handle: <Handle gather.<locals>._done_callback(<Task cancell...tasks.py:593>>) at /usr/local/lib/python3.10/asyncio/tasks.py:714>
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 641, in run_until_complete
    return future.result()
  File "<string>", line 4, in main
  File "/usr/local/lib/python3.10/asyncio/tasks.py", line 775, in gather
    if arg not in arg_to_fut:
TypeError: unhashable type: 'dict'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/asyncio/events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "/usr/local/lib/python3.10/asyncio/tasks.py", line 718, in _done_callback
    if outer.done():
NameError: free variable 'outer' referenced before assignment in enclosing scope
Traceback (most recent call last):
  File "<string>", line 5, in <module>
  File "/usr/local/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 641, in run_until_complete
    return future.result()
  File "<string>", line 4, in main
  File "/usr/local/lib/python3.10/asyncio/tasks.py", line 775, in gather
    if arg not in arg_to_fut:
TypeError: unhashable type: 'dict'
History
Date User Action Args
2022-02-07 05:24:45onerandomusernamesetrecipients: + onerandomusername, asvetlov, yselivanov
2022-02-07 05:24:45onerandomusernamesetmessageid: <1644211485.82.0.488303396987.issue46672@roundup.psfhosted.org>
2022-02-07 05:24:45onerandomusernamelinkissue46672 messages
2022-02-07 05:24:45onerandomusernamecreate