Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.4k
gh-104799: Default missing lists in AST to the empty list#104834
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
(This PR is on top of the changes from#104828.) |
Ideally I'd like this to go into 3.12 to fix the BC issues in#104799, but maybe it's too late. |
So I understand correctly, this changes the representation of a missing list from I am a little concerned (just a little) about the performance implications. |
No, it changes from raising a TypeError to PyList_New(0). This is easier to see in the generated code than in the code generator: @@ -9306,10 +9404,12 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* return 1; } if (tmp == NULL) {- PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from DictComp");- return 1;+ tmp = PyList_New(0);+ if (tmp == NULL) {+ return 1;+ } }- else {+ { int res; Py_ssize_t len; Py_ssize_t i; So this shouldn't affect performance for code that was already working. |
Thanks@JelleZijlstra for the PR 🌮🎉.. I'm working now to backport this PR to: 3.12. |
…onGH-104834)(cherry picked from commit77d2579)Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
bedevere-bot commentedJun 2, 2023
GH-105213 is a backport of this pull request to the3.12 branch. |
Uh oh!
There was an error while loading.Please reload this page.
Motivated by#104799: avoid breaking backward compatibility with the manual creation of
ast.FunctionDef
nodes. Now, if a list-type field is missing, we simply default to the empty list.This affects all AST nodes though, not just the new ones.
__match_args__
attributes of AST nodes #104799📚 Documentation preview 📚:https://cpython-previews--104834.org.readthedocs.build/