Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove yield from usage from asyncio tests #100113

Closed
kumaraditya303 opened this issue Dec 8, 2022 · 5 comments
Closed

Remove yield from usage from asyncio tests #100113

kumaraditya303 opened this issue Dec 8, 2022 · 5 comments

Comments

@kumaraditya303
Copy link
Contributor

kumaraditya303 commented Dec 8, 2022

Support for yield from was deprecated and removed so it should be removed.

See

# The indirection fut->child_coro is needed since otherwise the
# gathering task is done at the same time as the child future
def child_coro():
return (yield from fut)
gather_future = asyncio.gather(child_coro())
return asyncio.ensure_future(gather_future)
gather_task = loop.run_until_complete(create())

Linked PRs

@vstinner
Copy link
Member

vstinner commented Dec 8, 2022

There are a few yield from in asyncio tests (Lib/test/test_asyncio/):

test_futures.py:296:            x = yield from f
test_futures.py:298:            y = yield from f
test_futures.py:303:        self.assertEqual(next(g), f)  # First yield from f.
test_futures.py:306:        # The second "yield from f" does not yield f.
test_futures.py:408:            yield from fut
test_pep492.py:152:            yield from ()
test_sslproto.py:99:        # yield from waiter hang if lost_connection was called.
test_tasks.py:2096:                return (yield from fut)
utils.py:271:            yield from _run_test_server(address=path, use_ssl=use_ssl,
utils.py:278:    yield from _run_test_server(address=(host, port), use_ssl=use_ssl,

@kumaraditya303
Copy link
Contributor Author

There are a few yield from in asyncio tests (Lib/test/test_asyncio/):

I think those are testing the internal implementation of futures and they are not used with asyncio APIs. I don't think they should be changed to await.

@gvanrossum
Copy link
Member

There's a comment referencing yield from on line 66 of asyncio/futures.py that probably should be updated, if indeed we are dropping (or have dropped) yield from support. Similar on line 292 (seems to refer to the same thing).

Next, in asyncio/tasks.py, line 316 there's an error message complaining about yield instead of yield from. Should that be await too? Again on line 327. The same error messages also occur in _asynciomodule.c.

Then there's _wrap_awaitable(), also in tasks.py, which on line 687 has a yield from.

But maybe I'm not understanding how yield from is used here???

@kumaraditya303
Copy link
Contributor Author

Then there's _wrap_awaitable(), also in tasks.py, which on line 687 has a yield from.

This has been removed now.

Next, in asyncio/tasks.py, line 316 there's an error message complaining about yield instead of yield from. Should that be await too? Again on line 327. The same error messages also occur in _asynciomodule.c.

That's debugging aid for people who are writing their own awaitables with custom __await__ method.

@kumaraditya303
Copy link
Contributor Author

kumaraditya303 commented Mar 19, 2023

Closing this, anything left can be handled in #102748

@github-project-automation github-project-automation bot moved this from Todo to Done in asyncio Mar 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

No branches or pull requests

3 participants