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

typing tests: remove some unnecessary uses of exec() #119005

Merged
merged 2 commits into from
May 14, 2024

Conversation

AlexWaygood
Copy link
Member

This is a forward-port of python/typing_extensions#219

exec('async def g(): yield 0', globals(), ns)
g = ns['g']
async def g(): yield 0
g = g()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the old code here g was the function, now it's the coroutine returned from the function.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good catch. Sorry, that was sloppy.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Although on second thought... doesn't it make more sense to test the coroutine returned from the function here? I think the test might be buggy as-written.

It passes regardless, and this PR wasn't meant to make any semantic changes to the tests, so I'm happy to leave it as-is for now (I pushed 6f25644), but it looks odd to me

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, it's odd that the passes both with and without the g(). Might be worth looking into whether we can make the test more effective.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It makes sense that it passes both with and without the g(), because g is only used to check that the [coroutine-function or coroutine] is not an instance of the custom AsyncGenerator subclass here:

self.assertNotIsInstance(type(g), G)
self.assertNotIsInstance(g, G)

And of course, it is indeed true that neither a coroutine nor a coroutine function will be an instance of the custom AsyncGenerator subclass

@JelleZijlstra JelleZijlstra merged commit a9328e2 into python:main May 14, 2024
31 checks passed
@miss-islington-app
Copy link

Thanks @AlexWaygood for the PR, and @JelleZijlstra for merging it 🌮🎉.. I'm working now to backport this PR to: 3.12, 3.13.
🐍🍒⛏🤖

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request May 14, 2024
(cherry picked from commit a9328e2)

Co-authored-by: Alex Waygood <[email protected]>
miss-islington pushed a commit to miss-islington/cpython that referenced this pull request May 14, 2024
(cherry picked from commit a9328e2)

Co-authored-by: Alex Waygood <[email protected]>
@bedevere-app
Copy link

bedevere-app bot commented May 14, 2024

GH-119038 is a backport of this pull request to the 3.13 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.13 bugs and security fixes label May 14, 2024
@bedevere-app
Copy link

bedevere-app bot commented May 14, 2024

GH-119039 is a backport of this pull request to the 3.12 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.12 bug and security fixes label May 14, 2024
@AlexWaygood AlexWaygood deleted the typing-tests-exec branch May 14, 2024 14:16
JelleZijlstra pushed a commit that referenced this pull request May 14, 2024
) (#119038)


(cherry picked from commit a9328e2)

Co-authored-by: Alex Waygood <[email protected]>
JelleZijlstra pushed a commit that referenced this pull request May 14, 2024
) (#119039)


(cherry picked from commit a9328e2)

Co-authored-by: Alex Waygood <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants