summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorYury Selivanov <yselivanov@sprymix.com>2015-11-20 17:41:03 (GMT)
committerYury Selivanov <yselivanov@sprymix.com>2015-11-20 17:41:03 (GMT)
commitd59bba88e377458eae1bb3b56a0e173cfb8c9af8 (patch)
treeb62aa2070ad125f4d064786f6569bc268792c1da /Lib
parentb485bb416c4513878b899fc5a3cd6260683b1cd1 (diff)
downloadcpython-d59bba88e377458eae1bb3b56a0e173cfb8c9af8.zip
cpython-d59bba88e377458eae1bb3b56a0e173cfb8c9af8.tar.gz
cpython-d59bba88e377458eae1bb3b56a0e173cfb8c9af8.tar.bz2
asyncio: Drop "value" parameter from Task._step method.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/asyncio/tasks.py22
1 files changed, 12 insertions, 10 deletions
diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py
index 63cbcda..e6389d8 100644
--- a/Lib/asyncio/tasks.py
+++ b/Lib/asyncio/tasks.py
@@ -220,9 +220,9 @@ class Task(futures.Future):
self._must_cancel = True
return True
- def _step(self, value=None, exc=None):
+ def _step(self, exc=None):
assert not self.done(), \
- '_step(): already done: {!r}, {!r}, {!r}'.format(self, value, exc)
+ '_step(): already done: {!r}, {!r}'.format(self, exc)
if self._must_cancel:
if not isinstance(exc, futures.CancelledError):
exc = futures.CancelledError()
@@ -231,12 +231,14 @@ class Task(futures.Future):
self._fut_waiter = None
self.__class__._current_tasks[self._loop] = self
- # Call either coro.throw(exc) or coro.send(value).
+ # Call either coro.throw(exc) or coro.send(None).
try:
- if exc is not None:
- result = coro.throw(exc)
+ if exc is None:
+ # We use the `send` method directly, because coroutines
+ # don't have `__iter__` and `__next__` methods.
+ result = coro.send(None)
else:
- result = coro.send(value)
+ result = coro.throw(exc)
except StopIteration as exc:
self.set_result(exc.value)
except futures.CancelledError as exc:
@@ -258,7 +260,7 @@ class Task(futures.Future):
self._must_cancel = False
else:
self._loop.call_soon(
- self._step, None,
+ self._step,
RuntimeError(
'yield was used instead of yield from '
'in task {!r} with {!r}'.format(self, result)))
@@ -268,7 +270,7 @@ class Task(futures.Future):
elif inspect.isgenerator(result):
# Yielding a generator is just wrong.
self._loop.call_soon(
- self._step, None,
+ self._step,
RuntimeError(
'yield was used instead of yield from for '
'generator in task {!r} with {}'.format(
@@ -276,7 +278,7 @@ class Task(futures.Future):
else:
# Yielding something else is an error.
self._loop.call_soon(
- self._step, None,
+ self._step,
RuntimeError(
'Task got bad yield: {!r}'.format(result)))
finally:
@@ -288,7 +290,7 @@ class Task(futures.Future):
future.result()
except Exception as exc:
# This may also be a cancellation.
- self._step(None, exc)
+ self._step(exc)
else:
# Don't pass the value of `future.result()` explicitly,
# as `Future.__iter__` and `Future.__await__` don't need it.