On 7 July 2014 17:20, Victor Stinner <[email protected]> wrote:

> 2014-07-07 17:50 GMT+02:00 Guido van Rossum <[email protected]>:
> > I'm not sure actually. Does Task have any public methods that it doesn't
> > inherit from Future? I think the more fundamental *interface* is Future,
> > while Task (mostly) provides a specific implementation.
>
> Task has more attributes: _coro, _fut_waiter, _log_destroy_pending. It
> has more methods: get_stack(), print_stack(), _step(), _wakeup(). At
> least, get_stack() and print_stack() are public.
>
> It looks like private attributes and methods of Task are ony used in
> the Task class (as expected).
>
> Task has more features, especially in debug mode: repr(Task) and Task
> destructor are more useful in debug mode than the same methods of the
> Future class. I mean that if the Task is enhanced, projects with their
> custom class inheriting from Task will benefit of that.
>

I agree with all this, that is why pulsar Task inherits from asyncio Task.


> I don't want to make inheriting Task mandatory, but it's just "better" :-)
>
> Or do you think that we must add some "assert isinstance(task,
> asyncio.Future)"? (No duck typing)
>
>
 In my opinion yes, a task should always be a Future.

Reply via email to