Sounds like an implementation issue. The Future class has a boolean flag indicating whether it's been cancelled, and everything then raises CancelledError when that flag is set. I suppose we could replace that flag with an instance of CancelledError, and when we *catch* CancelledError we set it to that. But it seems messy and I'm not sure that you should attempt this. IMO you should define an exception that does *not* derive from CancelledError and raise that -- it will properly be transmitted. What's your reason for not doing that? IOW why are you trying to pump more than a bit through the narrow "cancelled" channel?
On Sun, Dec 3, 2017 at 2:11 AM, Andrew Svetlov <andrew.svet...@gmail.com> wrote: > IIRC at very early stages Guido van Rossum decided to *freeze* > `CancelledError`: user code should not derive from the exception. Like you > never derive from StopIteration. > > On Sun, Dec 3, 2017 at 8:00 AM Chris Jerdonek <chris.jerdo...@gmail.com> > wrote: > >> Hi, I want to ask how people feel about the following. >> >> If you raise a subclass of CancelledError from within a task and then >> call task.result(), CancelledError is raised rather than the subclass. >> >> Here is some code to illustrate: >> >> class MyCancelledError(CancelledError): pass >> >> async def raise_my_cancel(): >> raise MyCancelledError() >> >> task = asyncio.ensure_future(raise_my_cancel()) >> try: >> await task >> except Exception: >> pass >> assert task.cancelled() >> # Raises CancelledError and not MyCancelledError. >> task.result() >> >> Does this seem right to people? Is there a justification for this? >> >> If it would help for the discussion, I could provide a use case. >> >> Thanks a lot, >> --Chris >> _______________________________________________ >> Async-sig mailing list >> Async-sig@python.org >> https://mail.python.org/mailman/listinfo/async-sig >> Code of Conduct: https://www.python.org/psf/codeofconduct/ >> > -- > Thanks, > Andrew Svetlov > > _______________________________________________ > Async-sig mailing list > Async-sig@python.org > https://mail.python.org/mailman/listinfo/async-sig > Code of Conduct: https://www.python.org/psf/codeofconduct/ > > -- --Guido van Rossum (python.org/~guido)
_______________________________________________ Async-sig mailing list Async-sig@python.org https://mail.python.org/mailman/listinfo/async-sig Code of Conduct: https://www.python.org/psf/codeofconduct/