Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.4k
gh-138425: Correctly partially evaluate global generics with undefined params inref.evaluate(format=Format.FORWARDREF)#138430
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
auvipy left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
looks good
Misc/NEWS.d/next/Library/2025-09-03-18-26-07.gh-issue-138425.cVE9Ho.rst OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Co-authored-by: sobolevn <mail@sobolevn.me>
python-cla-botbot commentedSep 3, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Misc/NEWS.d/next/Library/2025-09-03-18-26-07.gh-issue-138425.cVE9Ho.rst OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
…fined generic testsRemoved global overriding builtin test as it seemingly wasn't compatible with `get_annotations()`.
dr-carlos commentedSep 6, 2025
Note that this PR also inherently fixes builtins overriding globals in this particular code path. I was previously unable to come up with a test for this without using the undocumented fromannotationlibimportFormat,get_annotationsclassC:y:alias[memoryview,undef]mv=__builtins__["memoryview"]del__builtins__["memoryview"]fwdref=get_annotations(C,format=Format.FORWARDREF)["y"]__builtins__["memoryview"]=mvgeneric=fwdref.evaluate(format=Format.FORWARDREF,globals={"memoryview":int},locals={"alias":dict})self.assertNotIsInstance(generic,ForwardRef)self.assertIs(generic.__origin__,dict)self.assertEqual(len(generic.__args__),2)self.assertIs(generic.__args__[0],int)self.assertIsInstance(generic.__args__[1],ForwardRef) It feels very unlikely this would happen in real code, and I'm not sure if it's a good idea to test given that "Since this is an implementation detail, it may not be used by alternate implementations of Python." (https://docs.python.org/3/library/builtins.html), and given that |
JelleZijlstra commentedSep 6, 2025
Good point, I think it's fine to skip the test in that case. Technical issue: your two PRs#138430 and#138075 will conflict with each other, and I won't be able to backport them to 3.14 until after 3.14.0 final comes out. So I'm planning to leave them open for now and land them once 3.14.0 final is out so I can sort out the merge conflicts and merge the backports without having to disrupt the RC process. |
dr-carlos commentedNov 2, 2025
@JelleZijlstra Just a quick reminder of these PRs - any updates now that 3.14.0 final is out? |
e66f87c intopython:mainUh oh!
There was an error while loading.Please reload this page.
Thanks@dr-carlos for the PR, and@JelleZijlstra for merging it 🌮🎉.. I'm working now to backport this PR to: 3.14. |
…defined params in `ref.evaluate(format=Format.FORWARDREF)` (pythonGH-138430)(cherry picked from commite66f87c)Co-authored-by: dr-carlos <77367421+dr-carlos@users.noreply.github.com>Co-authored-by: sobolevn <mail@sobolevn.me>
GH-140927 is a backport of this pull request to the3.14 branch. |
…ndefined params in `ref.evaluate(format=Format.FORWARDREF)` (GH-138430) (#140927)gh-138425: Correctly partially evaluate global generics with undefined params in `ref.evaluate(format=Format.FORWARDREF)` (GH-138430)(cherry picked from commite66f87c)Co-authored-by: dr-carlos <77367421+dr-carlos@users.noreply.github.com>Co-authored-by: sobolevn <mail@sobolevn.me>
dr-carlos commentedNov 3, 2025
Thanks for the merges@JelleZijlstra! |
Uh oh!
There was an error while loading.Please reload this page.
ref.evaluate(format=Format.FORWARDREF)not evaluating global generics with undefined params #138425