Uh oh!
There was an error while loading. Please reload this page.
gh-104799: Default missing lists in AST to the empty list - #104834
Conversation
JelleZijlstra
commented
May 24, 2023
(This PR is on top of the changes from #104828.) |
JelleZijlstra
commented
May 25, 2023
Ideally I'd like this to go into 3.12 to fix the BC issues in #104799, but maybe it's too late. |
markshannon
commented
May 31, 2023
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. |
JelleZijlstra
commented
May 31, 2023
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. |
miss-islington
commented
Jun 2, 2023
Thanks @JelleZijlstra for the PR 🌮🎉.. I'm working now to backport this PR to: 3.12. |
…onGH-104834) (cherry picked from commit 77d2579) Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com> Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
bedevere-bot
commented
Jun 2, 2023
GH-105213 is a backport of this pull request to the 3.12 branch. |
Motivated by #104799: avoid breaking backward compatibility with the manual creation of
ast.FunctionDefnodes. 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/