[issue33403] asyncio.tasks.wait does not allow to set custom exception when return_when=FIRST_EXCEPTION

2018-05-01 Thread pyneda

Change by pyneda :


--
components: asyncio
nosy: asvetlov, giampaolo.rodola, pyneda, yselivanov
priority: normal
severity: normal
status: open
title: asyncio.tasks.wait does not allow to set custom exception when 
return_when=FIRST_EXCEPTION
type: enhancement
versions: Python 3.8

___
Python tracker 
<https://bugs.python.org/issue33403>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue33403] asyncio.tasks.wait does not allow to set custom exception when return_when=FIRST_EXCEPTION

2018-05-01 Thread pyneda

Change by pyneda :


--
keywords: +patch
pull_requests: +6374
stage:  -> patch review

___
Python tracker 
<https://bugs.python.org/issue33403>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue33403] asyncio.tasks.wait does not allow to set custom exception when return_when=FIRST_EXCEPTION

2018-05-15 Thread pyneda

New submission from pyneda :

A possible use case (that at least I couldn't find how to solve) is the 
possibility to cancel a bunch of futures/coroutine objects which are being 
awaited using asyncio.tasks.wait() by one of the running coroutines when a task 
succeded or a specific condition happens by just raising an specific exception.

At the moment this can be done but it will cancel all the coroutines with any 
exception that is raised and at some occasions this may not be desired.

A simple example:

async def example(num):
if x == 5:
raise Exception('Exception that does not cancel')
elif x == 15:
raise CancelException()

tasks = [asyncio.ensure_future(example(x)) for x in range(20)]
done, pending = await asyncio.wait(tasks, return_when=FIRST_EXCEPTION, 
return_on=CancelException)

This wouldn't cancel everything when a normal exception is raised, instead it 
will when the exception raised is the one that the user expects to be raised in 
order to cancel everything that is pending. 

In addition, if the user does not specify the Exception type, it uses default 
Exception so it would keep working exactly as now.

--

___
Python tracker 
<https://bugs.python.org/issue33403>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com