Browse Source

Issue #24400: Remove inspect.isawaitable().

isawaitable() was added before collections.abc.Awaitable; now,
with Awaitable, it is no longer needed (we don't have ishashable()
or isiterable() methods in the inspect module either).
pull/9921/head
Yury Selivanov 11 years ago
parent
commit
a74b5e59af
  1. 10
      Doc/library/inspect.rst
  2. 5
      Doc/whatsnew/3.5.rst
  3. 4
      Lib/inspect.py
  4. 25
      Lib/test/test_inspect.py

10
Doc/library/inspect.rst

@ -303,16 +303,6 @@ attributes:
.. versionadded:: 3.5
.. function:: isawaitable(object)
Return true if the object can be used in :keyword:`await`
expression.
See also :class:`collections.abc.Awaitable`.
.. versionadded:: 3.5
.. function:: istraceback(object)
Return true if the object is a traceback.

5
Doc/whatsnew/3.5.rst

@ -527,9 +527,8 @@ inspect
* New argument ``follow_wrapped`` for :func:`inspect.signature`.
(Contributed by Yury Selivanov in :issue:`20691`.)
* New :func:`~inspect.iscoroutine`, :func:`~inspect.iscoroutinefunction`,
and :func:`~inspect.isawaitable` functions. (Contributed by Yury Selivanov
in :issue:`24017`.)
* New :func:`~inspect.iscoroutine` and :func:`~inspect.iscoroutinefunction`
functions. (Contributed by Yury Selivanov in :issue:`24017`.)
* New :func:`~inspect.getcoroutinelocals` and :func:`~inspect.getcoroutinestate`
functions. (Contributed by Yury Selivanov in :issue:`24400`.)

4
Lib/inspect.py

@ -186,10 +186,6 @@ def iscoroutinefunction(object):
return bool((isfunction(object) or ismethod(object)) and
object.__code__.co_flags & CO_COROUTINE)
def isawaitable(object):
"""Return true if the object can be used in "await" expression."""
return isinstance(object, collections.abc.Awaitable)
def isgenerator(object):
"""Return true if the object is a generator.

25
Lib/test/test_inspect.py

@ -159,31 +159,6 @@ class TestPredicates(IsTestBase):
coro.close(); gen_coro.close() # silence warnings
def test_isawaitable(self):
def gen(): yield
self.assertFalse(inspect.isawaitable(gen()))
coro = coroutine_function_example(1)
gen_coro = gen_coroutine_function_example(1)
self.assertTrue(
inspect.isawaitable(coro))
self.assertTrue(
inspect.isawaitable(gen_coro))
class Future:
def __await__():
pass
self.assertTrue(inspect.isawaitable(Future()))
self.assertFalse(inspect.isawaitable(Future))
class NotFuture: pass
not_fut = NotFuture()
not_fut.__await__ = lambda: None
self.assertFalse(inspect.isawaitable(not_fut))
coro.close(); gen_coro.close() # silence warnings
def test_isroutine(self):
self.assertTrue(inspect.isroutine(mod.spam))
self.assertTrue(inspect.isroutine([].count))

Loading…
Cancel
Save