From: Dino Viehland Date: Wed, 11 Sep 2019 17:16:34 +0000 (-0700) Subject: bpo-38113: Update the Python-ast.c generator to PEP384 (gh-15957) X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ac46eb4ad6662cf6d771b20d8963658b2186c48c;p=python bpo-38113: Update the Python-ast.c generator to PEP384 (gh-15957) Summary: This mostly migrates Python-ast.c to PEP384 and removes all statics from the whole file. This modifies the generator itself that generates the Python-ast.c. It leaves in the usage of _PyObject_LookupAttr even though it's not fully PEP384 compatible (this could always be shimmed in by anyone who needs it). --- diff --git a/Misc/NEWS.d/next/Core and Builtins/2019-09-11-14-10-02.bpo-38113.yZXC3P.rst b/Misc/NEWS.d/next/Core and Builtins/2019-09-11-14-10-02.bpo-38113.yZXC3P.rst new file mode 100644 index 0000000000..af1210de42 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2019-09-11-14-10-02.bpo-38113.yZXC3P.rst @@ -0,0 +1 @@ +ast module updated to PEP-384 and all statics removed \ No newline at end of file diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py index 9b18bb4e1b..85d96a33f3 100755 --- a/Parser/asdl_c.py +++ b/Parser/asdl_c.py @@ -78,14 +78,18 @@ class EmitVisitor(asdl.VisitorBase): def __init__(self, file): self.file = file self.identifiers = set() + self.singletons = set() + self.types = set() super(EmitVisitor, self).__init__() def emit_identifier(self, name): - name = str(name) - if name in self.identifiers: - return - self.emit("_Py_IDENTIFIER(%s);" % name, 0) - self.identifiers.add(name) + self.identifiers.add(str(name)) + + def emit_singleton(self, name): + self.singletons.add(str(name)) + + def emit_type(self, name): + self.types.add(str(name)) def emit(self, s, depth, reflow=True): # XXX reflow long lines? @@ -392,7 +396,7 @@ class Obj2ModVisitor(PickleVisitor): self.funcHeader(name) for t in sum.types: line = ("isinstance = PyObject_IsInstance(obj, " - "(PyObject *)%s_type);") + "astmodulestate_global->%s_type);") self.emit(line % (t.name,), 1) self.emit("if (isinstance == -1) {", 1) self.emit("return 1;", 2) @@ -409,6 +413,7 @@ class Obj2ModVisitor(PickleVisitor): def complexSum(self, sum, name): self.funcHeader(name) self.emit("PyObject *tmp = NULL;", 1) + self.emit("PyObject *tp;", 1) for a in sum.attributes: self.visitAttributeDeclaration(a, name, sum=sum) self.emit("", 0) @@ -420,8 +425,8 @@ class Obj2ModVisitor(PickleVisitor): for a in sum.attributes: self.visitField(a, name, sum=sum, depth=1) for t in sum.types: - line = "isinstance = PyObject_IsInstance(obj, (PyObject*)%s_type);" - self.emit(line % (t.name,), 1) + self.emit("tp = astmodulestate_global->%s_type;" % (t.name,), 1) + self.emit("isinstance = PyObject_IsInstance(obj, tp);", 1) self.emit("if (isinstance == -1) {", 1) self.emit("return 1;", 2) self.emit("}", 1) @@ -497,7 +502,8 @@ class Obj2ModVisitor(PickleVisitor): def visitField(self, field, name, sum=None, prod=None, depth=0): ctype = get_c_type(field.type) - self.emit("if (_PyObject_LookupAttrId(obj, &PyId_%s, &tmp) < 0) {" % field.name, depth) + line = "if (_PyObject_LookupAttr(obj, astmodulestate_global->%s, &tmp) < 0) {" + self.emit(line % field.name, depth) self.emit("return 1;", depth+1) self.emit("}", depth) if not field.opt: @@ -524,7 +530,7 @@ class Obj2ModVisitor(PickleVisitor): self.emit("Py_ssize_t i;", depth+1) self.emit("if (!PyList_Check(tmp)) {", depth+1) self.emit("PyErr_Format(PyExc_TypeError, \"%s field \\\"%s\\\" must " - "be a list, not a %%.200s\", tmp->ob_type->tp_name);" % + "be a list, not a %%.200s\", _PyType_Name(Py_TYPE(tmp)));" % (name, field.name), depth+2, reflow=False) self.emit("goto failed;", depth+2) @@ -574,7 +580,7 @@ class MarshalPrototypeVisitor(PickleVisitor): class PyTypesDeclareVisitor(PickleVisitor): def visitProduct(self, prod, name): - self.emit("static PyTypeObject *%s_type;" % name, 0) + self.emit_type("%s_type" % name) self.emit("static PyObject* ast2obj_%s(void*);" % name, 0) if prod.attributes: for a in prod.attributes: @@ -592,7 +598,7 @@ class PyTypesDeclareVisitor(PickleVisitor): self.emit("};", 0) def visitSum(self, sum, name): - self.emit("static PyTypeObject *%s_type;" % name, 0) + self.emit_type("%s_type" % name) if sum.attributes: for a in sum.attributes: self.emit_identifier(a.name) @@ -603,17 +609,13 @@ class PyTypesDeclareVisitor(PickleVisitor): ptype = "void*" if is_simple(sum): ptype = get_c_type(name) - tnames = [] for t in sum.types: - tnames.append(str(t.name)+"_singleton") - tnames = ", *".join(tnames) - self.emit("static PyObject *%s;" % tnames, 0) + self.emit_singleton("%s_singleton" % t.name) self.emit("static PyObject* ast2obj_%s(%s);" % (name, ptype), 0) for t in sum.types: self.visitConstructor(t, name) def visitConstructor(self, cons, name): - self.emit("static PyTypeObject *%s_type;" % cons.name, 0) if cons.fields: for t in cons.fields: self.emit_identifier(t.name) @@ -626,8 +628,6 @@ class PyTypesVisitor(PickleVisitor): def visitModule(self, mod): self.emit(""" -_Py_IDENTIFIER(_fields); -_Py_IDENTIFIER(_attributes); typedef struct { PyObject_HEAD @@ -663,7 +663,7 @@ ast_type_init(PyObject *self, PyObject *args, PyObject *kw) Py_ssize_t i, numfields = 0; int res = -1; PyObject *key, *value, *fields; - if (_PyObject_LookupAttrId((PyObject*)Py_TYPE(self), &PyId__fields, &fields) < 0) { + if (_PyObject_LookupAttr((PyObject*)Py_TYPE(self), astmodulestate_global->_fields, &fields) < 0) { goto cleanup; } if (fields) { @@ -676,7 +676,7 @@ ast_type_init(PyObject *self, PyObject *args, PyObject *kw) if (numfields < PyTuple_GET_SIZE(args)) { PyErr_Format(PyExc_TypeError, "%.400s constructor takes at most " "%zd positional argument%s", - Py_TYPE(self)->tp_name, + _PyType_Name(Py_TYPE(self)), numfields, numfields == 1 ? "" : "s"); res = -1; goto cleanup; @@ -710,9 +710,8 @@ ast_type_init(PyObject *self, PyObject *args, PyObject *kw) static PyObject * ast_type_reduce(PyObject *self, PyObject *unused) { - _Py_IDENTIFIER(__dict__); PyObject *dict; - if (_PyObject_LookupAttrId(self, &PyId___dict__, &dict) < 0) { + if (_PyObject_LookupAttr(self, astmodulestate_global->__dict__, &dict) < 0) { return NULL; } if (dict) { @@ -731,54 +730,33 @@ static PyGetSetDef ast_type_getsets[] = { {NULL} }; -static PyTypeObject AST_type = { - PyVarObject_HEAD_INIT(&PyType_Type, 0) +static PyType_Slot AST_type_slots[] = { + {Py_tp_dealloc, ast_dealloc}, + {Py_tp_getattro, PyObject_GenericGetAttr}, + {Py_tp_setattro, PyObject_GenericSetAttr}, + {Py_tp_traverse, ast_traverse}, + {Py_tp_clear, ast_clear}, + {Py_tp_methods, ast_type_methods}, + {Py_tp_getset, ast_type_getsets}, + {Py_tp_init, ast_type_init}, + {Py_tp_alloc, PyType_GenericAlloc}, + {Py_tp_new, PyType_GenericNew}, + {Py_tp_free, PyType_GenericNew}, + {Py_tp_free, PyObject_GC_Del}, + {0, 0}, +}; + +static PyType_Spec AST_type_spec = { "_ast.AST", sizeof(AST_object), 0, - (destructor)ast_dealloc, /* tp_dealloc */ - 0, /* tp_vectorcall_offset */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_as_async */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - 0, /* tp_call */ - 0, /* tp_str */ - PyObject_GenericGetAttr, /* tp_getattro */ - PyObject_GenericSetAttr, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, /* tp_flags */ - 0, /* tp_doc */ - (traverseproc)ast_traverse, /* tp_traverse */ - (inquiry)ast_clear, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - ast_type_methods, /* tp_methods */ - 0, /* tp_members */ - ast_type_getsets, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - offsetof(AST_object, dict),/* tp_dictoffset */ - (initproc)ast_type_init, /* tp_init */ - PyType_GenericAlloc, /* tp_alloc */ - PyType_GenericNew, /* tp_new */ - PyObject_GC_Del, /* tp_free */ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + AST_type_slots }; - -static PyTypeObject * -make_type(const char *type, PyTypeObject *base, const char * const *fields, int num_fields) +static PyObject * +make_type(const char *type, PyObject* base, const char* const* fields, int num_fields) { - _Py_IDENTIFIER(__module__); - _Py_IDENTIFIER(_ast); PyObject *fnames, *result; int i; fnames = PyTuple_New(num_fields); @@ -793,15 +771,15 @@ make_type(const char *type, PyTypeObject *base, const char * const *fields, int } result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){OOOO}", type, base, - _PyUnicode_FromId(&PyId__fields), fnames, - _PyUnicode_FromId(&PyId___module__), - _PyUnicode_FromId(&PyId__ast)); + astmodulestate_global->_fields, fnames, + astmodulestate_global->__module__, + astmodulestate_global->_ast); Py_DECREF(fnames); - return (PyTypeObject*)result; + return result; } static int -add_attributes(PyTypeObject *type, const char * const *attrs, int num_fields) +add_attributes(PyObject *type, const char * const *attrs, int num_fields) { int i, result; PyObject *s, *l = PyTuple_New(num_fields); @@ -815,7 +793,7 @@ add_attributes(PyTypeObject *type, const char * const *attrs, int num_fields) } PyTuple_SET_ITEM(l, i, s); } - result = _PyObject_SetAttrId((PyObject*)type, &PyId__attributes, l) >= 0; + result = PyObject_SetAttr(type, astmodulestate_global->_attributes, l) >= 0; Py_DECREF(l); return result; } @@ -921,14 +899,11 @@ static int obj2ast_int(PyObject* obj, int* out, PyArena* arena) static int add_ast_fields(void) { - PyObject *empty_tuple, *d; - if (PyType_Ready(&AST_type) < 0) - return -1; - d = AST_type.tp_dict; + PyObject *empty_tuple; empty_tuple = PyTuple_New(0); if (!empty_tuple || - _PyDict_SetItemId(d, &PyId__fields, empty_tuple) < 0 || - _PyDict_SetItemId(d, &PyId__attributes, empty_tuple) < 0) { + PyObject_SetAttrString(astmodulestate_global->AST_type, "_fields", empty_tuple) < 0 || + PyObject_SetAttrString(astmodulestate_global->AST_type, "_attributes", empty_tuple) < 0) { Py_XDECREF(empty_tuple); return -1; } @@ -940,12 +915,22 @@ static int add_ast_fields(void) self.emit("static int init_types(void)",0) self.emit("{", 0) - self.emit("static int initialized;", 1) - self.emit("if (initialized) return 1;", 1) + self.emit("PyObject *m;", 1) + self.emit("if (PyState_FindModule(&_astmodule) == NULL) {", 1) + self.emit("m = PyModule_Create(&_astmodule);", 2) + self.emit("if (!m) return 0;", 2) + self.emit("PyState_AddModule(m, &_astmodule);", 2) + self.emit("}", 1) + self.emit("astmodulestate *state = astmodulestate_global;", 1) + self.emit("if (state->initialized) return 1;", 1) + self.emit("if (init_identifiers() < 0) return 0;", 1) + self.emit("state->AST_type = PyType_FromSpec(&AST_type_spec);", 1) + self.emit("if (!state->AST_type) return 0;", 1) + self.emit("((PyTypeObject*)state->AST_type)->tp_dictoffset = offsetof(AST_object, dict);", 1) self.emit("if (add_ast_fields() < 0) return 0;", 1) for dfn in mod.dfns: self.visit(dfn) - self.emit("initialized = 1;", 1) + self.emit("state->initialized = 1;", 1) self.emit("return 1;", 1); self.emit("}", 0) @@ -954,24 +939,27 @@ static int add_ast_fields(void) fields = name+"_fields" else: fields = "NULL" - self.emit('%s_type = make_type("%s", &AST_type, %s, %d);' % + self.emit('state->%s_type = make_type("%s", state->AST_type, %s, %d);' % (name, name, fields, len(prod.fields)), 1) - self.emit("if (!%s_type) return 0;" % name, 1) + self.emit("if (!state->%s_type) return 0;" % name, 1) + self.emit_type("AST_type") + self.emit_type("%s_type" % name) if prod.attributes: - self.emit("if (!add_attributes(%s_type, %s_attributes, %d)) return 0;" % + self.emit("if (!add_attributes(state->%s_type, %s_attributes, %d)) return 0;" % (name, name, len(prod.attributes)), 1) else: - self.emit("if (!add_attributes(%s_type, NULL, 0)) return 0;" % name, 1) + self.emit("if (!add_attributes(state->%s_type, NULL, 0)) return 0;" % name, 1) def visitSum(self, sum, name): - self.emit('%s_type = make_type("%s", &AST_type, NULL, 0);' % + self.emit('state->%s_type = make_type("%s", state->AST_type, NULL, 0);' % (name, name), 1) - self.emit("if (!%s_type) return 0;" % name, 1) + self.emit_type("%s_type" % name) + self.emit("if (!state->%s_type) return 0;" % name, 1) if sum.attributes: - self.emit("if (!add_attributes(%s_type, %s_attributes, %d)) return 0;" % + self.emit("if (!add_attributes(state->%s_type, %s_attributes, %d)) return 0;" % (name, name, len(sum.attributes)), 1) else: - self.emit("if (!add_attributes(%s_type, NULL, 0)) return 0;" % name, 1) + self.emit("if (!add_attributes(state->%s_type, NULL, 0)) return 0;" % name, 1) simple = is_simple(sum) for t in sum.types: self.visitConstructor(t, name, simple) @@ -981,30 +969,29 @@ static int add_ast_fields(void) fields = cons.name+"_fields" else: fields = "NULL" - self.emit('%s_type = make_type("%s", %s_type, %s, %d);' % + self.emit('state->%s_type = make_type("%s", state->%s_type, %s, %d);' % (cons.name, cons.name, name, fields, len(cons.fields)), 1) - self.emit("if (!%s_type) return 0;" % cons.name, 1) + self.emit("if (!state->%s_type) return 0;" % cons.name, 1) + self.emit_type("%s_type" % cons.name) if simple: - self.emit("%s_singleton = PyType_GenericNew(%s_type, NULL, NULL);" % + self.emit("state->%s_singleton = PyType_GenericNew((PyTypeObject *)" + "state->%s_type, NULL, NULL);" % (cons.name, cons.name), 1) - self.emit("if (!%s_singleton) return 0;" % cons.name, 1) + self.emit("if (!state->%s_singleton) return 0;" % cons.name, 1) class ASTModuleVisitor(PickleVisitor): def visitModule(self, mod): - self.emit("static struct PyModuleDef _astmodule = {", 0) - self.emit(' PyModuleDef_HEAD_INIT, "_ast"', 0) - self.emit("};", 0) self.emit("PyMODINIT_FUNC", 0) self.emit("PyInit__ast(void)", 0) self.emit("{", 0) - self.emit("PyObject *m, *d;", 1) + self.emit("PyObject *m;", 1) self.emit("if (!init_types()) return NULL;", 1) - self.emit('m = PyModule_Create(&_astmodule);', 1) + self.emit('m = PyState_FindModule(&_astmodule);', 1) self.emit("if (!m) return NULL;", 1) - self.emit("d = PyModule_GetDict(m);", 1) - self.emit('if (PyDict_SetItemString(d, "AST", (PyObject*)&AST_type) < 0) return NULL;', 1) + self.emit('Py_INCREF(astmodulestate(m)->AST_type);', 1) + self.emit('if (PyModule_AddObject(m, "AST", astmodulestate_global->AST_type) < 0) return NULL;', 1) self.emit('if (PyModule_AddIntMacro(m, PyCF_ALLOW_TOP_LEVEL_AWAIT) < 0)', 1) self.emit("return NULL;", 2) self.emit('if (PyModule_AddIntMacro(m, PyCF_ONLY_AST) < 0)', 1) @@ -1028,7 +1015,9 @@ class ASTModuleVisitor(PickleVisitor): self.addObj(cons.name) def addObj(self, name): - self.emit('if (PyDict_SetItemString(d, "%s", (PyObject*)%s_type) < 0) return NULL;' % (name, name), 1) + self.emit("if (PyModule_AddObject(m, \"%s\", " + "astmodulestate_global->%s_type) < 0) return NULL;" % (name, name), 1) + self.emit("Py_INCREF(astmodulestate(m)->%s_type);" % name, 1) _SPECIALIZED_SEQUENCES = ('stmt', 'expr') @@ -1066,6 +1055,7 @@ class ObjVisitor(PickleVisitor): self.emit("{", 0) self.emit("%s o = (%s)_o;" % (ctype, ctype), 1) self.emit("PyObject *result = NULL, *value = NULL;", 1) + self.emit("PyTypeObject *tp;", 1) self.emit('if (!o) {', 1) self.emit("Py_RETURN_NONE;", 2) self.emit("}", 1) @@ -1093,7 +1083,7 @@ class ObjVisitor(PickleVisitor): for a in sum.attributes: self.emit("value = ast2obj_%s(o->%s);" % (a.type, a.name), 1) self.emit("if (!value) goto failed;", 1) - self.emit('if (_PyObject_SetAttrId(result, &PyId_%s, value) < 0)' % a.name, 1) + self.emit('if (PyObject_SetAttr(result, astmodulestate_global->%s, value) < 0)' % a.name, 1) self.emit('goto failed;', 2) self.emit('Py_DECREF(value);', 1) self.func_end() @@ -1104,8 +1094,8 @@ class ObjVisitor(PickleVisitor): self.emit("switch(o) {", 1) for t in sum.types: self.emit("case %s:" % t.name, 2) - self.emit("Py_INCREF(%s_singleton);" % t.name, 3) - self.emit("return %s_singleton;" % t.name, 3) + self.emit("Py_INCREF(astmodulestate_global->%s_singleton);" % t.name, 3) + self.emit("return astmodulestate_global->%s_singleton;" % t.name, 3) self.emit("default:", 2) self.emit('/* should never happen, but just in case ... */', 3) code = "PyErr_Format(PyExc_SystemError, \"unknown %s found\");" % name @@ -1116,21 +1106,23 @@ class ObjVisitor(PickleVisitor): def visitProduct(self, prod, name): self.func_begin(name) - self.emit("result = PyType_GenericNew(%s_type, NULL, NULL);" % name, 1); + self.emit("tp = (PyTypeObject *)astmodulestate_global->%s_type;" % name, 1) + self.emit("result = PyType_GenericNew(tp, NULL, NULL);", 1); self.emit("if (!result) return NULL;", 1) for field in prod.fields: self.visitField(field, name, 1, True) for a in prod.attributes: self.emit("value = ast2obj_%s(o->%s);" % (a.type, a.name), 1) self.emit("if (!value) goto failed;", 1) - self.emit('if (_PyObject_SetAttrId(result, &PyId_%s, value) < 0)' % a.name, 1) + self.emit("if (PyObject_SetAttr(result, astmodulestate_global->%s, value) < 0)" % a.name, 1) self.emit('goto failed;', 2) self.emit('Py_DECREF(value);', 1) self.func_end() def visitConstructor(self, cons, enum, name): self.emit("case %s_kind:" % cons.name, 1) - self.emit("result = PyType_GenericNew(%s_type, NULL, NULL);" % cons.name, 2); + self.emit("tp = (PyTypeObject *)astmodulestate_global->%s_type;" % cons.name, 2) + self.emit("result = PyType_GenericNew(tp, NULL, NULL);", 2); self.emit("if (!result) goto failed;", 2) for f in cons.fields: self.visitField(f, cons.name, 2, False) @@ -1145,7 +1137,7 @@ class ObjVisitor(PickleVisitor): value = "o->v.%s.%s" % (name, field.name) self.set(field, value, depth) emit("if (!value) goto failed;", 0) - emit('if (_PyObject_SetAttrId(result, &PyId_%s, value) == -1)' % field.name, 0) + emit("if (PyObject_SetAttr(result, astmodulestate_global->%s, value) == -1)" % field.name, 0) emit("goto failed;", 1) emit("Py_DECREF(value);", 0) @@ -1205,9 +1197,9 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode) return NULL; } - req_type[0] = (PyObject*)Module_type; - req_type[1] = (PyObject*)Expression_type; - req_type[2] = (PyObject*)Interactive_type; + req_type[0] = astmodulestate_global->Module_type; + req_type[1] = astmodulestate_global->Expression_type; + req_type[2] = astmodulestate_global->Interactive_type; assert(0 <= mode && mode <= 2); @@ -1219,7 +1211,7 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode) return NULL; if (!isinstance) { PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s", - req_name[mode], Py_TYPE(ast)->tp_name); + req_name[mode], _PyType_Name(Py_TYPE(ast))); return NULL; } if (obj2ast_mod(ast, &res, arena) != 0) @@ -1232,7 +1224,7 @@ int PyAST_Check(PyObject* obj) { if (!init_types()) return -1; - return PyObject_IsInstance(obj, (PyObject*)&AST_type); + return PyObject_IsInstance(obj, astmodulestate_global->AST_type); } """ @@ -1245,6 +1237,86 @@ class ChainOfVisitors: v.visit(object) v.emit("", 0) + +def generate_module_def(f, mod): + # Gather all the data needed for ModuleSpec + visitor_list = set() + with open(os.devnull, "w") as devnull: + visitor = PyTypesDeclareVisitor(devnull) + visitor.visit(mod) + visitor_list.add(visitor) + visitor = PyTypesVisitor(devnull) + visitor.visit(mod) + visitor_list.add(visitor) + + state_strings = set(["__dict__", "_attributes", "_fields", "__module__", "_ast"]) + module_state = set(["__dict__", "_attributes", "_fields", "__module__", "_ast"]) + for visitor in visitor_list: + for identifier in visitor.identifiers: + module_state.add(identifier) + state_strings.add(identifier) + for singleton in visitor.singletons: + module_state.add(singleton) + for tp in visitor.types: + module_state.add(tp) + state_strings = sorted(state_strings) + module_state = sorted(module_state) + f.write('typedef struct {\n') + f.write(' int initialized;\n') + for s in module_state: + f.write(' PyObject *' + s + ';\n') + f.write('} astmodulestate;\n\n') + f.write(""" +#define astmodulestate(o) ((astmodulestate *)PyModule_GetState(o)) + +static int astmodule_clear(PyObject *module) +{ +""") + for s in module_state: + f.write(" Py_CLEAR(astmodulestate(module)->" + s + ');\n') + f.write(""" + return 0; +} + +static int astmodule_traverse(PyObject *module, visitproc visit, void* arg) +{ +""") + for s in module_state: + f.write(" Py_VISIT(astmodulestate(module)->" + s + ');\n') + f.write(""" + return 0; +} + +static void astmodule_free(void* module) { + astmodule_clear((PyObject*)module); +} + +static struct PyModuleDef _astmodule = { + PyModuleDef_HEAD_INIT, + "_ast", + NULL, + sizeof(astmodulestate), + NULL, + NULL, + astmodule_traverse, + astmodule_clear, + astmodule_free, +}; + +#define astmodulestate_global ((astmodulestate *)PyModule_GetState(PyState_FindModule(&_astmodule))) + +""") + f.write('static int init_identifiers(void)\n') + f.write('{\n') + f.write(' astmodulestate *state = astmodulestate_global;\n') + for identifier in state_strings: + f.write(' if ((state->' + identifier) + f.write(' = PyUnicode_InternFromString("') + f.write(identifier + '")) == NULL) return 0;\n') + f.write(' return 1;\n') + f.write('};\n\n') + + common_msg = "/* File automatically generated by %s. */\n\n" def main(srcfile, dump_module=False): @@ -1295,7 +1367,9 @@ def main(srcfile, dump_module=False): f.write('#include "Python.h"\n') f.write('#include "%s-ast.h"\n' % mod.name) f.write('\n') - f.write("static PyTypeObject AST_type;\n") + + generate_module_def(f, mod) + v = ChainOfVisitors( PyTypesDeclareVisitor(f), PyTypesVisitor(f), diff --git a/Python/Python-ast.c b/Python/Python-ast.c index 44ad532757..5190a90f13 100644 --- a/Python/Python-ast.c +++ b/Python/Python-ast.c @@ -5,40 +5,810 @@ #include "Python.h" #include "Python-ast.h" -static PyTypeObject AST_type; -static PyTypeObject *mod_type; +typedef struct { + int initialized; + PyObject *AST_type; + PyObject *Add_singleton; + PyObject *Add_type; + PyObject *And_singleton; + PyObject *And_type; + PyObject *AnnAssign_type; + PyObject *Assert_type; + PyObject *Assign_type; + PyObject *AsyncFor_type; + PyObject *AsyncFunctionDef_type; + PyObject *AsyncWith_type; + PyObject *Attribute_type; + PyObject *AugAssign_type; + PyObject *AugLoad_singleton; + PyObject *AugLoad_type; + PyObject *AugStore_singleton; + PyObject *AugStore_type; + PyObject *Await_type; + PyObject *BinOp_type; + PyObject *BitAnd_singleton; + PyObject *BitAnd_type; + PyObject *BitOr_singleton; + PyObject *BitOr_type; + PyObject *BitXor_singleton; + PyObject *BitXor_type; + PyObject *BoolOp_type; + PyObject *Break_type; + PyObject *Call_type; + PyObject *ClassDef_type; + PyObject *Compare_type; + PyObject *Constant_type; + PyObject *Continue_type; + PyObject *Del_singleton; + PyObject *Del_type; + PyObject *Delete_type; + PyObject *DictComp_type; + PyObject *Dict_type; + PyObject *Div_singleton; + PyObject *Div_type; + PyObject *Eq_singleton; + PyObject *Eq_type; + PyObject *ExceptHandler_type; + PyObject *Expr_type; + PyObject *Expression_type; + PyObject *ExtSlice_type; + PyObject *FloorDiv_singleton; + PyObject *FloorDiv_type; + PyObject *For_type; + PyObject *FormattedValue_type; + PyObject *FunctionDef_type; + PyObject *FunctionType_type; + PyObject *GeneratorExp_type; + PyObject *Global_type; + PyObject *GtE_singleton; + PyObject *GtE_type; + PyObject *Gt_singleton; + PyObject *Gt_type; + PyObject *IfExp_type; + PyObject *If_type; + PyObject *ImportFrom_type; + PyObject *Import_type; + PyObject *In_singleton; + PyObject *In_type; + PyObject *Index_type; + PyObject *Interactive_type; + PyObject *Invert_singleton; + PyObject *Invert_type; + PyObject *IsNot_singleton; + PyObject *IsNot_type; + PyObject *Is_singleton; + PyObject *Is_type; + PyObject *JoinedStr_type; + PyObject *LShift_singleton; + PyObject *LShift_type; + PyObject *Lambda_type; + PyObject *ListComp_type; + PyObject *List_type; + PyObject *Load_singleton; + PyObject *Load_type; + PyObject *LtE_singleton; + PyObject *LtE_type; + PyObject *Lt_singleton; + PyObject *Lt_type; + PyObject *MatMult_singleton; + PyObject *MatMult_type; + PyObject *Mod_singleton; + PyObject *Mod_type; + PyObject *Module_type; + PyObject *Mult_singleton; + PyObject *Mult_type; + PyObject *Name_type; + PyObject *NamedExpr_type; + PyObject *Nonlocal_type; + PyObject *NotEq_singleton; + PyObject *NotEq_type; + PyObject *NotIn_singleton; + PyObject *NotIn_type; + PyObject *Not_singleton; + PyObject *Not_type; + PyObject *Or_singleton; + PyObject *Or_type; + PyObject *Param_singleton; + PyObject *Param_type; + PyObject *Pass_type; + PyObject *Pow_singleton; + PyObject *Pow_type; + PyObject *RShift_singleton; + PyObject *RShift_type; + PyObject *Raise_type; + PyObject *Return_type; + PyObject *SetComp_type; + PyObject *Set_type; + PyObject *Slice_type; + PyObject *Starred_type; + PyObject *Store_singleton; + PyObject *Store_type; + PyObject *Sub_singleton; + PyObject *Sub_type; + PyObject *Subscript_type; + PyObject *Suite_type; + PyObject *Try_type; + PyObject *Tuple_type; + PyObject *TypeIgnore_type; + PyObject *UAdd_singleton; + PyObject *UAdd_type; + PyObject *USub_singleton; + PyObject *USub_type; + PyObject *UnaryOp_type; + PyObject *While_type; + PyObject *With_type; + PyObject *YieldFrom_type; + PyObject *Yield_type; + PyObject *__dict__; + PyObject *__module__; + PyObject *_ast; + PyObject *_attributes; + PyObject *_fields; + PyObject *alias_type; + PyObject *annotation; + PyObject *arg; + PyObject *arg_type; + PyObject *args; + PyObject *argtypes; + PyObject *arguments_type; + PyObject *asname; + PyObject *attr; + PyObject *bases; + PyObject *body; + PyObject *boolop_type; + PyObject *cause; + PyObject *cmpop_type; + PyObject *col_offset; + PyObject *comparators; + PyObject *comprehension_type; + PyObject *context_expr; + PyObject *conversion; + PyObject *ctx; + PyObject *decorator_list; + PyObject *defaults; + PyObject *dims; + PyObject *elt; + PyObject *elts; + PyObject *end_col_offset; + PyObject *end_lineno; + PyObject *exc; + PyObject *excepthandler_type; + PyObject *expr_context_type; + PyObject *expr_type; + PyObject *finalbody; + PyObject *format_spec; + PyObject *func; + PyObject *generators; + PyObject *handlers; + PyObject *id; + PyObject *ifs; + PyObject *is_async; + PyObject *items; + PyObject *iter; + PyObject *key; + PyObject *keys; + PyObject *keyword_type; + PyObject *keywords; + PyObject *kind; + PyObject *kw_defaults; + PyObject *kwarg; + PyObject *kwonlyargs; + PyObject *left; + PyObject *level; + PyObject *lineno; + PyObject *lower; + PyObject *mod_type; + PyObject *module; + PyObject *msg; + PyObject *name; + PyObject *names; + PyObject *op; + PyObject *operand; + PyObject *operator_type; + PyObject *ops; + PyObject *optional_vars; + PyObject *orelse; + PyObject *posonlyargs; + PyObject *returns; + PyObject *right; + PyObject *simple; + PyObject *slice; + PyObject *slice_type; + PyObject *step; + PyObject *stmt_type; + PyObject *tag; + PyObject *target; + PyObject *targets; + PyObject *test; + PyObject *type; + PyObject *type_comment; + PyObject *type_ignore_type; + PyObject *type_ignores; + PyObject *unaryop_type; + PyObject *upper; + PyObject *value; + PyObject *values; + PyObject *vararg; + PyObject *withitem_type; +} astmodulestate; + + +#define astmodulestate(o) ((astmodulestate *)PyModule_GetState(o)) + +static int astmodule_clear(PyObject *module) +{ + Py_CLEAR(astmodulestate(module)->AST_type); + Py_CLEAR(astmodulestate(module)->Add_singleton); + Py_CLEAR(astmodulestate(module)->Add_type); + Py_CLEAR(astmodulestate(module)->And_singleton); + Py_CLEAR(astmodulestate(module)->And_type); + Py_CLEAR(astmodulestate(module)->AnnAssign_type); + Py_CLEAR(astmodulestate(module)->Assert_type); + Py_CLEAR(astmodulestate(module)->Assign_type); + Py_CLEAR(astmodulestate(module)->AsyncFor_type); + Py_CLEAR(astmodulestate(module)->AsyncFunctionDef_type); + Py_CLEAR(astmodulestate(module)->AsyncWith_type); + Py_CLEAR(astmodulestate(module)->Attribute_type); + Py_CLEAR(astmodulestate(module)->AugAssign_type); + Py_CLEAR(astmodulestate(module)->AugLoad_singleton); + Py_CLEAR(astmodulestate(module)->AugLoad_type); + Py_CLEAR(astmodulestate(module)->AugStore_singleton); + Py_CLEAR(astmodulestate(module)->AugStore_type); + Py_CLEAR(astmodulestate(module)->Await_type); + Py_CLEAR(astmodulestate(module)->BinOp_type); + Py_CLEAR(astmodulestate(module)->BitAnd_singleton); + Py_CLEAR(astmodulestate(module)->BitAnd_type); + Py_CLEAR(astmodulestate(module)->BitOr_singleton); + Py_CLEAR(astmodulestate(module)->BitOr_type); + Py_CLEAR(astmodulestate(module)->BitXor_singleton); + Py_CLEAR(astmodulestate(module)->BitXor_type); + Py_CLEAR(astmodulestate(module)->BoolOp_type); + Py_CLEAR(astmodulestate(module)->Break_type); + Py_CLEAR(astmodulestate(module)->Call_type); + Py_CLEAR(astmodulestate(module)->ClassDef_type); + Py_CLEAR(astmodulestate(module)->Compare_type); + Py_CLEAR(astmodulestate(module)->Constant_type); + Py_CLEAR(astmodulestate(module)->Continue_type); + Py_CLEAR(astmodulestate(module)->Del_singleton); + Py_CLEAR(astmodulestate(module)->Del_type); + Py_CLEAR(astmodulestate(module)->Delete_type); + Py_CLEAR(astmodulestate(module)->DictComp_type); + Py_CLEAR(astmodulestate(module)->Dict_type); + Py_CLEAR(astmodulestate(module)->Div_singleton); + Py_CLEAR(astmodulestate(module)->Div_type); + Py_CLEAR(astmodulestate(module)->Eq_singleton); + Py_CLEAR(astmodulestate(module)->Eq_type); + Py_CLEAR(astmodulestate(module)->ExceptHandler_type); + Py_CLEAR(astmodulestate(module)->Expr_type); + Py_CLEAR(astmodulestate(module)->Expression_type); + Py_CLEAR(astmodulestate(module)->ExtSlice_type); + Py_CLEAR(astmodulestate(module)->FloorDiv_singleton); + Py_CLEAR(astmodulestate(module)->FloorDiv_type); + Py_CLEAR(astmodulestate(module)->For_type); + Py_CLEAR(astmodulestate(module)->FormattedValue_type); + Py_CLEAR(astmodulestate(module)->FunctionDef_type); + Py_CLEAR(astmodulestate(module)->FunctionType_type); + Py_CLEAR(astmodulestate(module)->GeneratorExp_type); + Py_CLEAR(astmodulestate(module)->Global_type); + Py_CLEAR(astmodulestate(module)->GtE_singleton); + Py_CLEAR(astmodulestate(module)->GtE_type); + Py_CLEAR(astmodulestate(module)->Gt_singleton); + Py_CLEAR(astmodulestate(module)->Gt_type); + Py_CLEAR(astmodulestate(module)->IfExp_type); + Py_CLEAR(astmodulestate(module)->If_type); + Py_CLEAR(astmodulestate(module)->ImportFrom_type); + Py_CLEAR(astmodulestate(module)->Import_type); + Py_CLEAR(astmodulestate(module)->In_singleton); + Py_CLEAR(astmodulestate(module)->In_type); + Py_CLEAR(astmodulestate(module)->Index_type); + Py_CLEAR(astmodulestate(module)->Interactive_type); + Py_CLEAR(astmodulestate(module)->Invert_singleton); + Py_CLEAR(astmodulestate(module)->Invert_type); + Py_CLEAR(astmodulestate(module)->IsNot_singleton); + Py_CLEAR(astmodulestate(module)->IsNot_type); + Py_CLEAR(astmodulestate(module)->Is_singleton); + Py_CLEAR(astmodulestate(module)->Is_type); + Py_CLEAR(astmodulestate(module)->JoinedStr_type); + Py_CLEAR(astmodulestate(module)->LShift_singleton); + Py_CLEAR(astmodulestate(module)->LShift_type); + Py_CLEAR(astmodulestate(module)->Lambda_type); + Py_CLEAR(astmodulestate(module)->ListComp_type); + Py_CLEAR(astmodulestate(module)->List_type); + Py_CLEAR(astmodulestate(module)->Load_singleton); + Py_CLEAR(astmodulestate(module)->Load_type); + Py_CLEAR(astmodulestate(module)->LtE_singleton); + Py_CLEAR(astmodulestate(module)->LtE_type); + Py_CLEAR(astmodulestate(module)->Lt_singleton); + Py_CLEAR(astmodulestate(module)->Lt_type); + Py_CLEAR(astmodulestate(module)->MatMult_singleton); + Py_CLEAR(astmodulestate(module)->MatMult_type); + Py_CLEAR(astmodulestate(module)->Mod_singleton); + Py_CLEAR(astmodulestate(module)->Mod_type); + Py_CLEAR(astmodulestate(module)->Module_type); + Py_CLEAR(astmodulestate(module)->Mult_singleton); + Py_CLEAR(astmodulestate(module)->Mult_type); + Py_CLEAR(astmodulestate(module)->Name_type); + Py_CLEAR(astmodulestate(module)->NamedExpr_type); + Py_CLEAR(astmodulestate(module)->Nonlocal_type); + Py_CLEAR(astmodulestate(module)->NotEq_singleton); + Py_CLEAR(astmodulestate(module)->NotEq_type); + Py_CLEAR(astmodulestate(module)->NotIn_singleton); + Py_CLEAR(astmodulestate(module)->NotIn_type); + Py_CLEAR(astmodulestate(module)->Not_singleton); + Py_CLEAR(astmodulestate(module)->Not_type); + Py_CLEAR(astmodulestate(module)->Or_singleton); + Py_CLEAR(astmodulestate(module)->Or_type); + Py_CLEAR(astmodulestate(module)->Param_singleton); + Py_CLEAR(astmodulestate(module)->Param_type); + Py_CLEAR(astmodulestate(module)->Pass_type); + Py_CLEAR(astmodulestate(module)->Pow_singleton); + Py_CLEAR(astmodulestate(module)->Pow_type); + Py_CLEAR(astmodulestate(module)->RShift_singleton); + Py_CLEAR(astmodulestate(module)->RShift_type); + Py_CLEAR(astmodulestate(module)->Raise_type); + Py_CLEAR(astmodulestate(module)->Return_type); + Py_CLEAR(astmodulestate(module)->SetComp_type); + Py_CLEAR(astmodulestate(module)->Set_type); + Py_CLEAR(astmodulestate(module)->Slice_type); + Py_CLEAR(astmodulestate(module)->Starred_type); + Py_CLEAR(astmodulestate(module)->Store_singleton); + Py_CLEAR(astmodulestate(module)->Store_type); + Py_CLEAR(astmodulestate(module)->Sub_singleton); + Py_CLEAR(astmodulestate(module)->Sub_type); + Py_CLEAR(astmodulestate(module)->Subscript_type); + Py_CLEAR(astmodulestate(module)->Suite_type); + Py_CLEAR(astmodulestate(module)->Try_type); + Py_CLEAR(astmodulestate(module)->Tuple_type); + Py_CLEAR(astmodulestate(module)->TypeIgnore_type); + Py_CLEAR(astmodulestate(module)->UAdd_singleton); + Py_CLEAR(astmodulestate(module)->UAdd_type); + Py_CLEAR(astmodulestate(module)->USub_singleton); + Py_CLEAR(astmodulestate(module)->USub_type); + Py_CLEAR(astmodulestate(module)->UnaryOp_type); + Py_CLEAR(astmodulestate(module)->While_type); + Py_CLEAR(astmodulestate(module)->With_type); + Py_CLEAR(astmodulestate(module)->YieldFrom_type); + Py_CLEAR(astmodulestate(module)->Yield_type); + Py_CLEAR(astmodulestate(module)->__dict__); + Py_CLEAR(astmodulestate(module)->__module__); + Py_CLEAR(astmodulestate(module)->_ast); + Py_CLEAR(astmodulestate(module)->_attributes); + Py_CLEAR(astmodulestate(module)->_fields); + Py_CLEAR(astmodulestate(module)->alias_type); + Py_CLEAR(astmodulestate(module)->annotation); + Py_CLEAR(astmodulestate(module)->arg); + Py_CLEAR(astmodulestate(module)->arg_type); + Py_CLEAR(astmodulestate(module)->args); + Py_CLEAR(astmodulestate(module)->argtypes); + Py_CLEAR(astmodulestate(module)->arguments_type); + Py_CLEAR(astmodulestate(module)->asname); + Py_CLEAR(astmodulestate(module)->attr); + Py_CLEAR(astmodulestate(module)->bases); + Py_CLEAR(astmodulestate(module)->body); + Py_CLEAR(astmodulestate(module)->boolop_type); + Py_CLEAR(astmodulestate(module)->cause); + Py_CLEAR(astmodulestate(module)->cmpop_type); + Py_CLEAR(astmodulestate(module)->col_offset); + Py_CLEAR(astmodulestate(module)->comparators); + Py_CLEAR(astmodulestate(module)->comprehension_type); + Py_CLEAR(astmodulestate(module)->context_expr); + Py_CLEAR(astmodulestate(module)->conversion); + Py_CLEAR(astmodulestate(module)->ctx); + Py_CLEAR(astmodulestate(module)->decorator_list); + Py_CLEAR(astmodulestate(module)->defaults); + Py_CLEAR(astmodulestate(module)->dims); + Py_CLEAR(astmodulestate(module)->elt); + Py_CLEAR(astmodulestate(module)->elts); + Py_CLEAR(astmodulestate(module)->end_col_offset); + Py_CLEAR(astmodulestate(module)->end_lineno); + Py_CLEAR(astmodulestate(module)->exc); + Py_CLEAR(astmodulestate(module)->excepthandler_type); + Py_CLEAR(astmodulestate(module)->expr_context_type); + Py_CLEAR(astmodulestate(module)->expr_type); + Py_CLEAR(astmodulestate(module)->finalbody); + Py_CLEAR(astmodulestate(module)->format_spec); + Py_CLEAR(astmodulestate(module)->func); + Py_CLEAR(astmodulestate(module)->generators); + Py_CLEAR(astmodulestate(module)->handlers); + Py_CLEAR(astmodulestate(module)->id); + Py_CLEAR(astmodulestate(module)->ifs); + Py_CLEAR(astmodulestate(module)->is_async); + Py_CLEAR(astmodulestate(module)->items); + Py_CLEAR(astmodulestate(module)->iter); + Py_CLEAR(astmodulestate(module)->key); + Py_CLEAR(astmodulestate(module)->keys); + Py_CLEAR(astmodulestate(module)->keyword_type); + Py_CLEAR(astmodulestate(module)->keywords); + Py_CLEAR(astmodulestate(module)->kind); + Py_CLEAR(astmodulestate(module)->kw_defaults); + Py_CLEAR(astmodulestate(module)->kwarg); + Py_CLEAR(astmodulestate(module)->kwonlyargs); + Py_CLEAR(astmodulestate(module)->left); + Py_CLEAR(astmodulestate(module)->level); + Py_CLEAR(astmodulestate(module)->lineno); + Py_CLEAR(astmodulestate(module)->lower); + Py_CLEAR(astmodulestate(module)->mod_type); + Py_CLEAR(astmodulestate(module)->module); + Py_CLEAR(astmodulestate(module)->msg); + Py_CLEAR(astmodulestate(module)->name); + Py_CLEAR(astmodulestate(module)->names); + Py_CLEAR(astmodulestate(module)->op); + Py_CLEAR(astmodulestate(module)->operand); + Py_CLEAR(astmodulestate(module)->operator_type); + Py_CLEAR(astmodulestate(module)->ops); + Py_CLEAR(astmodulestate(module)->optional_vars); + Py_CLEAR(astmodulestate(module)->orelse); + Py_CLEAR(astmodulestate(module)->posonlyargs); + Py_CLEAR(astmodulestate(module)->returns); + Py_CLEAR(astmodulestate(module)->right); + Py_CLEAR(astmodulestate(module)->simple); + Py_CLEAR(astmodulestate(module)->slice); + Py_CLEAR(astmodulestate(module)->slice_type); + Py_CLEAR(astmodulestate(module)->step); + Py_CLEAR(astmodulestate(module)->stmt_type); + Py_CLEAR(astmodulestate(module)->tag); + Py_CLEAR(astmodulestate(module)->target); + Py_CLEAR(astmodulestate(module)->targets); + Py_CLEAR(astmodulestate(module)->test); + Py_CLEAR(astmodulestate(module)->type); + Py_CLEAR(astmodulestate(module)->type_comment); + Py_CLEAR(astmodulestate(module)->type_ignore_type); + Py_CLEAR(astmodulestate(module)->type_ignores); + Py_CLEAR(astmodulestate(module)->unaryop_type); + Py_CLEAR(astmodulestate(module)->upper); + Py_CLEAR(astmodulestate(module)->value); + Py_CLEAR(astmodulestate(module)->values); + Py_CLEAR(astmodulestate(module)->vararg); + Py_CLEAR(astmodulestate(module)->withitem_type); + + return 0; +} + +static int astmodule_traverse(PyObject *module, visitproc visit, void* arg) +{ + Py_VISIT(astmodulestate(module)->AST_type); + Py_VISIT(astmodulestate(module)->Add_singleton); + Py_VISIT(astmodulestate(module)->Add_type); + Py_VISIT(astmodulestate(module)->And_singleton); + Py_VISIT(astmodulestate(module)->And_type); + Py_VISIT(astmodulestate(module)->AnnAssign_type); + Py_VISIT(astmodulestate(module)->Assert_type); + Py_VISIT(astmodulestate(module)->Assign_type); + Py_VISIT(astmodulestate(module)->AsyncFor_type); + Py_VISIT(astmodulestate(module)->AsyncFunctionDef_type); + Py_VISIT(astmodulestate(module)->AsyncWith_type); + Py_VISIT(astmodulestate(module)->Attribute_type); + Py_VISIT(astmodulestate(module)->AugAssign_type); + Py_VISIT(astmodulestate(module)->AugLoad_singleton); + Py_VISIT(astmodulestate(module)->AugLoad_type); + Py_VISIT(astmodulestate(module)->AugStore_singleton); + Py_VISIT(astmodulestate(module)->AugStore_type); + Py_VISIT(astmodulestate(module)->Await_type); + Py_VISIT(astmodulestate(module)->BinOp_type); + Py_VISIT(astmodulestate(module)->BitAnd_singleton); + Py_VISIT(astmodulestate(module)->BitAnd_type); + Py_VISIT(astmodulestate(module)->BitOr_singleton); + Py_VISIT(astmodulestate(module)->BitOr_type); + Py_VISIT(astmodulestate(module)->BitXor_singleton); + Py_VISIT(astmodulestate(module)->BitXor_type); + Py_VISIT(astmodulestate(module)->BoolOp_type); + Py_VISIT(astmodulestate(module)->Break_type); + Py_VISIT(astmodulestate(module)->Call_type); + Py_VISIT(astmodulestate(module)->ClassDef_type); + Py_VISIT(astmodulestate(module)->Compare_type); + Py_VISIT(astmodulestate(module)->Constant_type); + Py_VISIT(astmodulestate(module)->Continue_type); + Py_VISIT(astmodulestate(module)->Del_singleton); + Py_VISIT(astmodulestate(module)->Del_type); + Py_VISIT(astmodulestate(module)->Delete_type); + Py_VISIT(astmodulestate(module)->DictComp_type); + Py_VISIT(astmodulestate(module)->Dict_type); + Py_VISIT(astmodulestate(module)->Div_singleton); + Py_VISIT(astmodulestate(module)->Div_type); + Py_VISIT(astmodulestate(module)->Eq_singleton); + Py_VISIT(astmodulestate(module)->Eq_type); + Py_VISIT(astmodulestate(module)->ExceptHandler_type); + Py_VISIT(astmodulestate(module)->Expr_type); + Py_VISIT(astmodulestate(module)->Expression_type); + Py_VISIT(astmodulestate(module)->ExtSlice_type); + Py_VISIT(astmodulestate(module)->FloorDiv_singleton); + Py_VISIT(astmodulestate(module)->FloorDiv_type); + Py_VISIT(astmodulestate(module)->For_type); + Py_VISIT(astmodulestate(module)->FormattedValue_type); + Py_VISIT(astmodulestate(module)->FunctionDef_type); + Py_VISIT(astmodulestate(module)->FunctionType_type); + Py_VISIT(astmodulestate(module)->GeneratorExp_type); + Py_VISIT(astmodulestate(module)->Global_type); + Py_VISIT(astmodulestate(module)->GtE_singleton); + Py_VISIT(astmodulestate(module)->GtE_type); + Py_VISIT(astmodulestate(module)->Gt_singleton); + Py_VISIT(astmodulestate(module)->Gt_type); + Py_VISIT(astmodulestate(module)->IfExp_type); + Py_VISIT(astmodulestate(module)->If_type); + Py_VISIT(astmodulestate(module)->ImportFrom_type); + Py_VISIT(astmodulestate(module)->Import_type); + Py_VISIT(astmodulestate(module)->In_singleton); + Py_VISIT(astmodulestate(module)->In_type); + Py_VISIT(astmodulestate(module)->Index_type); + Py_VISIT(astmodulestate(module)->Interactive_type); + Py_VISIT(astmodulestate(module)->Invert_singleton); + Py_VISIT(astmodulestate(module)->Invert_type); + Py_VISIT(astmodulestate(module)->IsNot_singleton); + Py_VISIT(astmodulestate(module)->IsNot_type); + Py_VISIT(astmodulestate(module)->Is_singleton); + Py_VISIT(astmodulestate(module)->Is_type); + Py_VISIT(astmodulestate(module)->JoinedStr_type); + Py_VISIT(astmodulestate(module)->LShift_singleton); + Py_VISIT(astmodulestate(module)->LShift_type); + Py_VISIT(astmodulestate(module)->Lambda_type); + Py_VISIT(astmodulestate(module)->ListComp_type); + Py_VISIT(astmodulestate(module)->List_type); + Py_VISIT(astmodulestate(module)->Load_singleton); + Py_VISIT(astmodulestate(module)->Load_type); + Py_VISIT(astmodulestate(module)->LtE_singleton); + Py_VISIT(astmodulestate(module)->LtE_type); + Py_VISIT(astmodulestate(module)->Lt_singleton); + Py_VISIT(astmodulestate(module)->Lt_type); + Py_VISIT(astmodulestate(module)->MatMult_singleton); + Py_VISIT(astmodulestate(module)->MatMult_type); + Py_VISIT(astmodulestate(module)->Mod_singleton); + Py_VISIT(astmodulestate(module)->Mod_type); + Py_VISIT(astmodulestate(module)->Module_type); + Py_VISIT(astmodulestate(module)->Mult_singleton); + Py_VISIT(astmodulestate(module)->Mult_type); + Py_VISIT(astmodulestate(module)->Name_type); + Py_VISIT(astmodulestate(module)->NamedExpr_type); + Py_VISIT(astmodulestate(module)->Nonlocal_type); + Py_VISIT(astmodulestate(module)->NotEq_singleton); + Py_VISIT(astmodulestate(module)->NotEq_type); + Py_VISIT(astmodulestate(module)->NotIn_singleton); + Py_VISIT(astmodulestate(module)->NotIn_type); + Py_VISIT(astmodulestate(module)->Not_singleton); + Py_VISIT(astmodulestate(module)->Not_type); + Py_VISIT(astmodulestate(module)->Or_singleton); + Py_VISIT(astmodulestate(module)->Or_type); + Py_VISIT(astmodulestate(module)->Param_singleton); + Py_VISIT(astmodulestate(module)->Param_type); + Py_VISIT(astmodulestate(module)->Pass_type); + Py_VISIT(astmodulestate(module)->Pow_singleton); + Py_VISIT(astmodulestate(module)->Pow_type); + Py_VISIT(astmodulestate(module)->RShift_singleton); + Py_VISIT(astmodulestate(module)->RShift_type); + Py_VISIT(astmodulestate(module)->Raise_type); + Py_VISIT(astmodulestate(module)->Return_type); + Py_VISIT(astmodulestate(module)->SetComp_type); + Py_VISIT(astmodulestate(module)->Set_type); + Py_VISIT(astmodulestate(module)->Slice_type); + Py_VISIT(astmodulestate(module)->Starred_type); + Py_VISIT(astmodulestate(module)->Store_singleton); + Py_VISIT(astmodulestate(module)->Store_type); + Py_VISIT(astmodulestate(module)->Sub_singleton); + Py_VISIT(astmodulestate(module)->Sub_type); + Py_VISIT(astmodulestate(module)->Subscript_type); + Py_VISIT(astmodulestate(module)->Suite_type); + Py_VISIT(astmodulestate(module)->Try_type); + Py_VISIT(astmodulestate(module)->Tuple_type); + Py_VISIT(astmodulestate(module)->TypeIgnore_type); + Py_VISIT(astmodulestate(module)->UAdd_singleton); + Py_VISIT(astmodulestate(module)->UAdd_type); + Py_VISIT(astmodulestate(module)->USub_singleton); + Py_VISIT(astmodulestate(module)->USub_type); + Py_VISIT(astmodulestate(module)->UnaryOp_type); + Py_VISIT(astmodulestate(module)->While_type); + Py_VISIT(astmodulestate(module)->With_type); + Py_VISIT(astmodulestate(module)->YieldFrom_type); + Py_VISIT(astmodulestate(module)->Yield_type); + Py_VISIT(astmodulestate(module)->__dict__); + Py_VISIT(astmodulestate(module)->__module__); + Py_VISIT(astmodulestate(module)->_ast); + Py_VISIT(astmodulestate(module)->_attributes); + Py_VISIT(astmodulestate(module)->_fields); + Py_VISIT(astmodulestate(module)->alias_type); + Py_VISIT(astmodulestate(module)->annotation); + Py_VISIT(astmodulestate(module)->arg); + Py_VISIT(astmodulestate(module)->arg_type); + Py_VISIT(astmodulestate(module)->args); + Py_VISIT(astmodulestate(module)->argtypes); + Py_VISIT(astmodulestate(module)->arguments_type); + Py_VISIT(astmodulestate(module)->asname); + Py_VISIT(astmodulestate(module)->attr); + Py_VISIT(astmodulestate(module)->bases); + Py_VISIT(astmodulestate(module)->body); + Py_VISIT(astmodulestate(module)->boolop_type); + Py_VISIT(astmodulestate(module)->cause); + Py_VISIT(astmodulestate(module)->cmpop_type); + Py_VISIT(astmodulestate(module)->col_offset); + Py_VISIT(astmodulestate(module)->comparators); + Py_VISIT(astmodulestate(module)->comprehension_type); + Py_VISIT(astmodulestate(module)->context_expr); + Py_VISIT(astmodulestate(module)->conversion); + Py_VISIT(astmodulestate(module)->ctx); + Py_VISIT(astmodulestate(module)->decorator_list); + Py_VISIT(astmodulestate(module)->defaults); + Py_VISIT(astmodulestate(module)->dims); + Py_VISIT(astmodulestate(module)->elt); + Py_VISIT(astmodulestate(module)->elts); + Py_VISIT(astmodulestate(module)->end_col_offset); + Py_VISIT(astmodulestate(module)->end_lineno); + Py_VISIT(astmodulestate(module)->exc); + Py_VISIT(astmodulestate(module)->excepthandler_type); + Py_VISIT(astmodulestate(module)->expr_context_type); + Py_VISIT(astmodulestate(module)->expr_type); + Py_VISIT(astmodulestate(module)->finalbody); + Py_VISIT(astmodulestate(module)->format_spec); + Py_VISIT(astmodulestate(module)->func); + Py_VISIT(astmodulestate(module)->generators); + Py_VISIT(astmodulestate(module)->handlers); + Py_VISIT(astmodulestate(module)->id); + Py_VISIT(astmodulestate(module)->ifs); + Py_VISIT(astmodulestate(module)->is_async); + Py_VISIT(astmodulestate(module)->items); + Py_VISIT(astmodulestate(module)->iter); + Py_VISIT(astmodulestate(module)->key); + Py_VISIT(astmodulestate(module)->keys); + Py_VISIT(astmodulestate(module)->keyword_type); + Py_VISIT(astmodulestate(module)->keywords); + Py_VISIT(astmodulestate(module)->kind); + Py_VISIT(astmodulestate(module)->kw_defaults); + Py_VISIT(astmodulestate(module)->kwarg); + Py_VISIT(astmodulestate(module)->kwonlyargs); + Py_VISIT(astmodulestate(module)->left); + Py_VISIT(astmodulestate(module)->level); + Py_VISIT(astmodulestate(module)->lineno); + Py_VISIT(astmodulestate(module)->lower); + Py_VISIT(astmodulestate(module)->mod_type); + Py_VISIT(astmodulestate(module)->module); + Py_VISIT(astmodulestate(module)->msg); + Py_VISIT(astmodulestate(module)->name); + Py_VISIT(astmodulestate(module)->names); + Py_VISIT(astmodulestate(module)->op); + Py_VISIT(astmodulestate(module)->operand); + Py_VISIT(astmodulestate(module)->operator_type); + Py_VISIT(astmodulestate(module)->ops); + Py_VISIT(astmodulestate(module)->optional_vars); + Py_VISIT(astmodulestate(module)->orelse); + Py_VISIT(astmodulestate(module)->posonlyargs); + Py_VISIT(astmodulestate(module)->returns); + Py_VISIT(astmodulestate(module)->right); + Py_VISIT(astmodulestate(module)->simple); + Py_VISIT(astmodulestate(module)->slice); + Py_VISIT(astmodulestate(module)->slice_type); + Py_VISIT(astmodulestate(module)->step); + Py_VISIT(astmodulestate(module)->stmt_type); + Py_VISIT(astmodulestate(module)->tag); + Py_VISIT(astmodulestate(module)->target); + Py_VISIT(astmodulestate(module)->targets); + Py_VISIT(astmodulestate(module)->test); + Py_VISIT(astmodulestate(module)->type); + Py_VISIT(astmodulestate(module)->type_comment); + Py_VISIT(astmodulestate(module)->type_ignore_type); + Py_VISIT(astmodulestate(module)->type_ignores); + Py_VISIT(astmodulestate(module)->unaryop_type); + Py_VISIT(astmodulestate(module)->upper); + Py_VISIT(astmodulestate(module)->value); + Py_VISIT(astmodulestate(module)->values); + Py_VISIT(astmodulestate(module)->vararg); + Py_VISIT(astmodulestate(module)->withitem_type); + + return 0; +} + +static void astmodule_free(void* module) { + astmodule_clear((PyObject*)module); +} + +static struct PyModuleDef _astmodule = { + PyModuleDef_HEAD_INIT, + "_ast", + NULL, + sizeof(astmodulestate), + NULL, + NULL, + astmodule_traverse, + astmodule_clear, + astmodule_free, +}; + +#define astmodulestate_global ((astmodulestate *)PyModule_GetState(PyState_FindModule(&_astmodule))) + +static int init_identifiers(void) +{ + astmodulestate *state = astmodulestate_global; + if ((state->__dict__ = PyUnicode_InternFromString("__dict__")) == NULL) return 0; + if ((state->__module__ = PyUnicode_InternFromString("__module__")) == NULL) return 0; + if ((state->_ast = PyUnicode_InternFromString("_ast")) == NULL) return 0; + if ((state->_attributes = PyUnicode_InternFromString("_attributes")) == NULL) return 0; + if ((state->_fields = PyUnicode_InternFromString("_fields")) == NULL) return 0; + if ((state->annotation = PyUnicode_InternFromString("annotation")) == NULL) return 0; + if ((state->arg = PyUnicode_InternFromString("arg")) == NULL) return 0; + if ((state->args = PyUnicode_InternFromString("args")) == NULL) return 0; + if ((state->argtypes = PyUnicode_InternFromString("argtypes")) == NULL) return 0; + if ((state->asname = PyUnicode_InternFromString("asname")) == NULL) return 0; + if ((state->attr = PyUnicode_InternFromString("attr")) == NULL) return 0; + if ((state->bases = PyUnicode_InternFromString("bases")) == NULL) return 0; + if ((state->body = PyUnicode_InternFromString("body")) == NULL) return 0; + if ((state->cause = PyUnicode_InternFromString("cause")) == NULL) return 0; + if ((state->col_offset = PyUnicode_InternFromString("col_offset")) == NULL) return 0; + if ((state->comparators = PyUnicode_InternFromString("comparators")) == NULL) return 0; + if ((state->context_expr = PyUnicode_InternFromString("context_expr")) == NULL) return 0; + if ((state->conversion = PyUnicode_InternFromString("conversion")) == NULL) return 0; + if ((state->ctx = PyUnicode_InternFromString("ctx")) == NULL) return 0; + if ((state->decorator_list = PyUnicode_InternFromString("decorator_list")) == NULL) return 0; + if ((state->defaults = PyUnicode_InternFromString("defaults")) == NULL) return 0; + if ((state->dims = PyUnicode_InternFromString("dims")) == NULL) return 0; + if ((state->elt = PyUnicode_InternFromString("elt")) == NULL) return 0; + if ((state->elts = PyUnicode_InternFromString("elts")) == NULL) return 0; + if ((state->end_col_offset = PyUnicode_InternFromString("end_col_offset")) == NULL) return 0; + if ((state->end_lineno = PyUnicode_InternFromString("end_lineno")) == NULL) return 0; + if ((state->exc = PyUnicode_InternFromString("exc")) == NULL) return 0; + if ((state->finalbody = PyUnicode_InternFromString("finalbody")) == NULL) return 0; + if ((state->format_spec = PyUnicode_InternFromString("format_spec")) == NULL) return 0; + if ((state->func = PyUnicode_InternFromString("func")) == NULL) return 0; + if ((state->generators = PyUnicode_InternFromString("generators")) == NULL) return 0; + if ((state->handlers = PyUnicode_InternFromString("handlers")) == NULL) return 0; + if ((state->id = PyUnicode_InternFromString("id")) == NULL) return 0; + if ((state->ifs = PyUnicode_InternFromString("ifs")) == NULL) return 0; + if ((state->is_async = PyUnicode_InternFromString("is_async")) == NULL) return 0; + if ((state->items = PyUnicode_InternFromString("items")) == NULL) return 0; + if ((state->iter = PyUnicode_InternFromString("iter")) == NULL) return 0; + if ((state->key = PyUnicode_InternFromString("key")) == NULL) return 0; + if ((state->keys = PyUnicode_InternFromString("keys")) == NULL) return 0; + if ((state->keywords = PyUnicode_InternFromString("keywords")) == NULL) return 0; + if ((state->kind = PyUnicode_InternFromString("kind")) == NULL) return 0; + if ((state->kw_defaults = PyUnicode_InternFromString("kw_defaults")) == NULL) return 0; + if ((state->kwarg = PyUnicode_InternFromString("kwarg")) == NULL) return 0; + if ((state->kwonlyargs = PyUnicode_InternFromString("kwonlyargs")) == NULL) return 0; + if ((state->left = PyUnicode_InternFromString("left")) == NULL) return 0; + if ((state->level = PyUnicode_InternFromString("level")) == NULL) return 0; + if ((state->lineno = PyUnicode_InternFromString("lineno")) == NULL) return 0; + if ((state->lower = PyUnicode_InternFromString("lower")) == NULL) return 0; + if ((state->module = PyUnicode_InternFromString("module")) == NULL) return 0; + if ((state->msg = PyUnicode_InternFromString("msg")) == NULL) return 0; + if ((state->name = PyUnicode_InternFromString("name")) == NULL) return 0; + if ((state->names = PyUnicode_InternFromString("names")) == NULL) return 0; + if ((state->op = PyUnicode_InternFromString("op")) == NULL) return 0; + if ((state->operand = PyUnicode_InternFromString("operand")) == NULL) return 0; + if ((state->ops = PyUnicode_InternFromString("ops")) == NULL) return 0; + if ((state->optional_vars = PyUnicode_InternFromString("optional_vars")) == NULL) return 0; + if ((state->orelse = PyUnicode_InternFromString("orelse")) == NULL) return 0; + if ((state->posonlyargs = PyUnicode_InternFromString("posonlyargs")) == NULL) return 0; + if ((state->returns = PyUnicode_InternFromString("returns")) == NULL) return 0; + if ((state->right = PyUnicode_InternFromString("right")) == NULL) return 0; + if ((state->simple = PyUnicode_InternFromString("simple")) == NULL) return 0; + if ((state->slice = PyUnicode_InternFromString("slice")) == NULL) return 0; + if ((state->step = PyUnicode_InternFromString("step")) == NULL) return 0; + if ((state->tag = PyUnicode_InternFromString("tag")) == NULL) return 0; + if ((state->target = PyUnicode_InternFromString("target")) == NULL) return 0; + if ((state->targets = PyUnicode_InternFromString("targets")) == NULL) return 0; + if ((state->test = PyUnicode_InternFromString("test")) == NULL) return 0; + if ((state->type = PyUnicode_InternFromString("type")) == NULL) return 0; + if ((state->type_comment = PyUnicode_InternFromString("type_comment")) == NULL) return 0; + if ((state->type_ignores = PyUnicode_InternFromString("type_ignores")) == NULL) return 0; + if ((state->upper = PyUnicode_InternFromString("upper")) == NULL) return 0; + if ((state->value = PyUnicode_InternFromString("value")) == NULL) return 0; + if ((state->values = PyUnicode_InternFromString("values")) == NULL) return 0; + if ((state->vararg = PyUnicode_InternFromString("vararg")) == NULL) return 0; + return 1; +}; + static PyObject* ast2obj_mod(void*); -static PyTypeObject *Module_type; -_Py_IDENTIFIER(body); -_Py_IDENTIFIER(type_ignores); static const char * const Module_fields[]={ "body", "type_ignores", }; -static PyTypeObject *Interactive_type; static const char * const Interactive_fields[]={ "body", }; -static PyTypeObject *Expression_type; static const char * const Expression_fields[]={ "body", }; -static PyTypeObject *FunctionType_type; -_Py_IDENTIFIER(argtypes); -_Py_IDENTIFIER(returns); static const char * const FunctionType_fields[]={ "argtypes", "returns", }; -static PyTypeObject *Suite_type; static const char * const Suite_fields[]={ "body", }; -static PyTypeObject *stmt_type; -_Py_IDENTIFIER(lineno); -_Py_IDENTIFIER(col_offset); -_Py_IDENTIFIER(end_lineno); -_Py_IDENTIFIER(end_col_offset); static const char * const stmt_attributes[] = { "lineno", "col_offset", @@ -46,11 +816,6 @@ static const char * const stmt_attributes[] = { "end_col_offset", }; static PyObject* ast2obj_stmt(void*); -static PyTypeObject *FunctionDef_type; -_Py_IDENTIFIER(name); -_Py_IDENTIFIER(args); -_Py_IDENTIFIER(decorator_list); -_Py_IDENTIFIER(type_comment); static const char * const FunctionDef_fields[]={ "name", "args", @@ -59,7 +824,6 @@ static const char * const FunctionDef_fields[]={ "returns", "type_comment", }; -static PyTypeObject *AsyncFunctionDef_type; static const char * const AsyncFunctionDef_fields[]={ "name", "args", @@ -68,9 +832,6 @@ static const char * const AsyncFunctionDef_fields[]={ "returns", "type_comment", }; -static PyTypeObject *ClassDef_type; -_Py_IDENTIFIER(bases); -_Py_IDENTIFIER(keywords); static const char * const ClassDef_fields[]={ "name", "bases", @@ -78,42 +839,28 @@ static const char * const ClassDef_fields[]={ "body", "decorator_list", }; -static PyTypeObject *Return_type; -_Py_IDENTIFIER(value); static const char * const Return_fields[]={ "value", }; -static PyTypeObject *Delete_type; -_Py_IDENTIFIER(targets); static const char * const Delete_fields[]={ "targets", }; -static PyTypeObject *Assign_type; static const char * const Assign_fields[]={ "targets", "value", "type_comment", }; -static PyTypeObject *AugAssign_type; -_Py_IDENTIFIER(target); -_Py_IDENTIFIER(op); static const char * const AugAssign_fields[]={ "target", "op", "value", }; -static PyTypeObject *AnnAssign_type; -_Py_IDENTIFIER(annotation); -_Py_IDENTIFIER(simple); static const char * const AnnAssign_fields[]={ "target", "annotation", "value", "simple", }; -static PyTypeObject *For_type; -_Py_IDENTIFIER(iter); -_Py_IDENTIFIER(orelse); static const char * const For_fields[]={ "target", "iter", @@ -121,7 +868,6 @@ static const char * const For_fields[]={ "orelse", "type_comment", }; -static PyTypeObject *AsyncFor_type; static const char * const AsyncFor_fields[]={ "target", "iter", @@ -129,83 +875,57 @@ static const char * const AsyncFor_fields[]={ "orelse", "type_comment", }; -static PyTypeObject *While_type; -_Py_IDENTIFIER(test); static const char * const While_fields[]={ "test", "body", "orelse", }; -static PyTypeObject *If_type; static const char * const If_fields[]={ "test", "body", "orelse", }; -static PyTypeObject *With_type; -_Py_IDENTIFIER(items); static const char * const With_fields[]={ "items", "body", "type_comment", }; -static PyTypeObject *AsyncWith_type; static const char * const AsyncWith_fields[]={ "items", "body", "type_comment", }; -static PyTypeObject *Raise_type; -_Py_IDENTIFIER(exc); -_Py_IDENTIFIER(cause); static const char * const Raise_fields[]={ "exc", "cause", }; -static PyTypeObject *Try_type; -_Py_IDENTIFIER(handlers); -_Py_IDENTIFIER(finalbody); static const char * const Try_fields[]={ "body", "handlers", "orelse", "finalbody", }; -static PyTypeObject *Assert_type; -_Py_IDENTIFIER(msg); static const char * const Assert_fields[]={ "test", "msg", }; -static PyTypeObject *Import_type; -_Py_IDENTIFIER(names); static const char * const Import_fields[]={ "names", }; -static PyTypeObject *ImportFrom_type; -_Py_IDENTIFIER(module); -_Py_IDENTIFIER(level); static const char * const ImportFrom_fields[]={ "module", "names", "level", }; -static PyTypeObject *Global_type; static const char * const Global_fields[]={ "names", }; -static PyTypeObject *Nonlocal_type; static const char * const Nonlocal_fields[]={ "names", }; -static PyTypeObject *Expr_type; static const char * const Expr_fields[]={ "value", }; -static PyTypeObject *Pass_type; -static PyTypeObject *Break_type; -static PyTypeObject *Continue_type; -static PyTypeObject *expr_type; static const char * const expr_attributes[] = { "lineno", "col_offset", @@ -213,246 +933,137 @@ static const char * const expr_attributes[] = { "end_col_offset", }; static PyObject* ast2obj_expr(void*); -static PyTypeObject *BoolOp_type; -_Py_IDENTIFIER(values); static const char * const BoolOp_fields[]={ "op", "values", }; -static PyTypeObject *NamedExpr_type; static const char * const NamedExpr_fields[]={ "target", "value", }; -static PyTypeObject *BinOp_type; -_Py_IDENTIFIER(left); -_Py_IDENTIFIER(right); static const char * const BinOp_fields[]={ "left", "op", "right", }; -static PyTypeObject *UnaryOp_type; -_Py_IDENTIFIER(operand); static const char * const UnaryOp_fields[]={ "op", "operand", }; -static PyTypeObject *Lambda_type; static const char * const Lambda_fields[]={ "args", "body", }; -static PyTypeObject *IfExp_type; static const char * const IfExp_fields[]={ "test", "body", "orelse", }; -static PyTypeObject *Dict_type; -_Py_IDENTIFIER(keys); static const char * const Dict_fields[]={ "keys", "values", }; -static PyTypeObject *Set_type; -_Py_IDENTIFIER(elts); static const char * const Set_fields[]={ "elts", }; -static PyTypeObject *ListComp_type; -_Py_IDENTIFIER(elt); -_Py_IDENTIFIER(generators); static const char * const ListComp_fields[]={ "elt", "generators", }; -static PyTypeObject *SetComp_type; static const char * const SetComp_fields[]={ "elt", "generators", }; -static PyTypeObject *DictComp_type; -_Py_IDENTIFIER(key); static const char * const DictComp_fields[]={ "key", "value", "generators", }; -static PyTypeObject *GeneratorExp_type; static const char * const GeneratorExp_fields[]={ "elt", "generators", }; -static PyTypeObject *Await_type; static const char * const Await_fields[]={ "value", }; -static PyTypeObject *Yield_type; static const char * const Yield_fields[]={ "value", }; -static PyTypeObject *YieldFrom_type; static const char * const YieldFrom_fields[]={ "value", }; -static PyTypeObject *Compare_type; -_Py_IDENTIFIER(ops); -_Py_IDENTIFIER(comparators); static const char * const Compare_fields[]={ "left", "ops", "comparators", }; -static PyTypeObject *Call_type; -_Py_IDENTIFIER(func); static const char * const Call_fields[]={ "func", "args", "keywords", }; -static PyTypeObject *FormattedValue_type; -_Py_IDENTIFIER(conversion); -_Py_IDENTIFIER(format_spec); static const char * const FormattedValue_fields[]={ "value", "conversion", "format_spec", }; -static PyTypeObject *JoinedStr_type; static const char * const JoinedStr_fields[]={ "values", }; -static PyTypeObject *Constant_type; -_Py_IDENTIFIER(kind); static const char * const Constant_fields[]={ "value", "kind", }; -static PyTypeObject *Attribute_type; -_Py_IDENTIFIER(attr); -_Py_IDENTIFIER(ctx); static const char * const Attribute_fields[]={ "value", "attr", "ctx", }; -static PyTypeObject *Subscript_type; -_Py_IDENTIFIER(slice); static const char * const Subscript_fields[]={ "value", "slice", "ctx", }; -static PyTypeObject *Starred_type; static const char * const Starred_fields[]={ "value", "ctx", }; -static PyTypeObject *Name_type; -_Py_IDENTIFIER(id); static const char * const Name_fields[]={ "id", "ctx", }; -static PyTypeObject *List_type; static const char * const List_fields[]={ "elts", "ctx", }; -static PyTypeObject *Tuple_type; static const char * const Tuple_fields[]={ "elts", "ctx", }; -static PyTypeObject *expr_context_type; -static PyObject *Load_singleton, *Store_singleton, *Del_singleton, -*AugLoad_singleton, *AugStore_singleton, *Param_singleton; static PyObject* ast2obj_expr_context(expr_context_ty); -static PyTypeObject *Load_type; -static PyTypeObject *Store_type; -static PyTypeObject *Del_type; -static PyTypeObject *AugLoad_type; -static PyTypeObject *AugStore_type; -static PyTypeObject *Param_type; -static PyTypeObject *slice_type; static PyObject* ast2obj_slice(void*); -static PyTypeObject *Slice_type; -_Py_IDENTIFIER(lower); -_Py_IDENTIFIER(upper); -_Py_IDENTIFIER(step); static const char * const Slice_fields[]={ "lower", "upper", "step", }; -static PyTypeObject *ExtSlice_type; -_Py_IDENTIFIER(dims); static const char * const ExtSlice_fields[]={ "dims", }; -static PyTypeObject *Index_type; static const char * const Index_fields[]={ "value", }; -static PyTypeObject *boolop_type; -static PyObject *And_singleton, *Or_singleton; static PyObject* ast2obj_boolop(boolop_ty); -static PyTypeObject *And_type; -static PyTypeObject *Or_type; -static PyTypeObject *operator_type; -static PyObject *Add_singleton, *Sub_singleton, *Mult_singleton, -*MatMult_singleton, *Div_singleton, *Mod_singleton, *Pow_singleton, -*LShift_singleton, *RShift_singleton, *BitOr_singleton, *BitXor_singleton, -*BitAnd_singleton, *FloorDiv_singleton; static PyObject* ast2obj_operator(operator_ty); -static PyTypeObject *Add_type; -static PyTypeObject *Sub_type; -static PyTypeObject *Mult_type; -static PyTypeObject *MatMult_type; -static PyTypeObject *Div_type; -static PyTypeObject *Mod_type; -static PyTypeObject *Pow_type; -static PyTypeObject *LShift_type; -static PyTypeObject *RShift_type; -static PyTypeObject *BitOr_type; -static PyTypeObject *BitXor_type; -static PyTypeObject *BitAnd_type; -static PyTypeObject *FloorDiv_type; -static PyTypeObject *unaryop_type; -static PyObject *Invert_singleton, *Not_singleton, *UAdd_singleton, -*USub_singleton; static PyObject* ast2obj_unaryop(unaryop_ty); -static PyTypeObject *Invert_type; -static PyTypeObject *Not_type; -static PyTypeObject *UAdd_type; -static PyTypeObject *USub_type; -static PyTypeObject *cmpop_type; -static PyObject *Eq_singleton, *NotEq_singleton, *Lt_singleton, *LtE_singleton, -*Gt_singleton, *GtE_singleton, *Is_singleton, *IsNot_singleton, *In_singleton, -*NotIn_singleton; static PyObject* ast2obj_cmpop(cmpop_ty); -static PyTypeObject *Eq_type; -static PyTypeObject *NotEq_type; -static PyTypeObject *Lt_type; -static PyTypeObject *LtE_type; -static PyTypeObject *Gt_type; -static PyTypeObject *GtE_type; -static PyTypeObject *Is_type; -static PyTypeObject *IsNot_type; -static PyTypeObject *In_type; -static PyTypeObject *NotIn_type; -static PyTypeObject *comprehension_type; static PyObject* ast2obj_comprehension(void*); -_Py_IDENTIFIER(ifs); -_Py_IDENTIFIER(is_async); static const char * const comprehension_fields[]={ "target", "iter", "ifs", "is_async", }; -static PyTypeObject *excepthandler_type; static const char * const excepthandler_attributes[] = { "lineno", "col_offset", @@ -460,21 +1071,12 @@ static const char * const excepthandler_attributes[] = { "end_col_offset", }; static PyObject* ast2obj_excepthandler(void*); -static PyTypeObject *ExceptHandler_type; -_Py_IDENTIFIER(type); static const char * const ExceptHandler_fields[]={ "type", "name", "body", }; -static PyTypeObject *arguments_type; static PyObject* ast2obj_arguments(void*); -_Py_IDENTIFIER(posonlyargs); -_Py_IDENTIFIER(vararg); -_Py_IDENTIFIER(kwonlyargs); -_Py_IDENTIFIER(kw_defaults); -_Py_IDENTIFIER(kwarg); -_Py_IDENTIFIER(defaults); static const char * const arguments_fields[]={ "posonlyargs", "args", @@ -484,7 +1086,6 @@ static const char * const arguments_fields[]={ "kwarg", "defaults", }; -static PyTypeObject *arg_type; static PyObject* ast2obj_arg(void*); static const char * const arg_attributes[] = { "lineno", @@ -492,45 +1093,33 @@ static const char * const arg_attributes[] = { "end_lineno", "end_col_offset", }; -_Py_IDENTIFIER(arg); static const char * const arg_fields[]={ "arg", "annotation", "type_comment", }; -static PyTypeObject *keyword_type; static PyObject* ast2obj_keyword(void*); static const char * const keyword_fields[]={ "arg", "value", }; -static PyTypeObject *alias_type; static PyObject* ast2obj_alias(void*); -_Py_IDENTIFIER(asname); static const char * const alias_fields[]={ "name", "asname", }; -static PyTypeObject *withitem_type; static PyObject* ast2obj_withitem(void*); -_Py_IDENTIFIER(context_expr); -_Py_IDENTIFIER(optional_vars); static const char * const withitem_fields[]={ "context_expr", "optional_vars", }; -static PyTypeObject *type_ignore_type; static PyObject* ast2obj_type_ignore(void*); -static PyTypeObject *TypeIgnore_type; -_Py_IDENTIFIER(tag); static const char * const TypeIgnore_fields[]={ "lineno", "tag", }; -_Py_IDENTIFIER(_fields); -_Py_IDENTIFIER(_attributes); typedef struct { PyObject_HEAD @@ -566,7 +1155,7 @@ ast_type_init(PyObject *self, PyObject *args, PyObject *kw) Py_ssize_t i, numfields = 0; int res = -1; PyObject *key, *value, *fields; - if (_PyObject_LookupAttrId((PyObject*)Py_TYPE(self), &PyId__fields, &fields) < 0) { + if (_PyObject_LookupAttr((PyObject*)Py_TYPE(self), astmodulestate_global->_fields, &fields) < 0) { goto cleanup; } if (fields) { @@ -579,7 +1168,7 @@ ast_type_init(PyObject *self, PyObject *args, PyObject *kw) if (numfields < PyTuple_GET_SIZE(args)) { PyErr_Format(PyExc_TypeError, "%.400s constructor takes at most " "%zd positional argument%s", - Py_TYPE(self)->tp_name, + _PyType_Name(Py_TYPE(self)), numfields, numfields == 1 ? "" : "s"); res = -1; goto cleanup; @@ -613,9 +1202,8 @@ ast_type_init(PyObject *self, PyObject *args, PyObject *kw) static PyObject * ast_type_reduce(PyObject *self, PyObject *unused) { - _Py_IDENTIFIER(__dict__); PyObject *dict; - if (_PyObject_LookupAttrId(self, &PyId___dict__, &dict) < 0) { + if (_PyObject_LookupAttr(self, astmodulestate_global->__dict__, &dict) < 0) { return NULL; } if (dict) { @@ -634,54 +1222,33 @@ static PyGetSetDef ast_type_getsets[] = { {NULL} }; -static PyTypeObject AST_type = { - PyVarObject_HEAD_INIT(&PyType_Type, 0) +static PyType_Slot AST_type_slots[] = { + {Py_tp_dealloc, ast_dealloc}, + {Py_tp_getattro, PyObject_GenericGetAttr}, + {Py_tp_setattro, PyObject_GenericSetAttr}, + {Py_tp_traverse, ast_traverse}, + {Py_tp_clear, ast_clear}, + {Py_tp_methods, ast_type_methods}, + {Py_tp_getset, ast_type_getsets}, + {Py_tp_init, ast_type_init}, + {Py_tp_alloc, PyType_GenericAlloc}, + {Py_tp_new, PyType_GenericNew}, + {Py_tp_free, PyType_GenericNew}, + {Py_tp_free, PyObject_GC_Del}, + {0, 0}, +}; + +static PyType_Spec AST_type_spec = { "_ast.AST", sizeof(AST_object), 0, - (destructor)ast_dealloc, /* tp_dealloc */ - 0, /* tp_vectorcall_offset */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_as_async */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - 0, /* tp_call */ - 0, /* tp_str */ - PyObject_GenericGetAttr, /* tp_getattro */ - PyObject_GenericSetAttr, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, /* tp_flags */ - 0, /* tp_doc */ - (traverseproc)ast_traverse, /* tp_traverse */ - (inquiry)ast_clear, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - ast_type_methods, /* tp_methods */ - 0, /* tp_members */ - ast_type_getsets, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - offsetof(AST_object, dict),/* tp_dictoffset */ - (initproc)ast_type_init, /* tp_init */ - PyType_GenericAlloc, /* tp_alloc */ - PyType_GenericNew, /* tp_new */ - PyObject_GC_Del, /* tp_free */ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + AST_type_slots }; - -static PyTypeObject * -make_type(const char *type, PyTypeObject *base, const char * const *fields, int num_fields) +static PyObject * +make_type(const char *type, PyObject* base, const char* const* fields, int num_fields) { - _Py_IDENTIFIER(__module__); - _Py_IDENTIFIER(_ast); PyObject *fnames, *result; int i; fnames = PyTuple_New(num_fields); @@ -696,15 +1263,15 @@ make_type(const char *type, PyTypeObject *base, const char * const *fields, int } result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){OOOO}", type, base, - _PyUnicode_FromId(&PyId__fields), fnames, - _PyUnicode_FromId(&PyId___module__), - _PyUnicode_FromId(&PyId__ast)); + astmodulestate_global->_fields, fnames, + astmodulestate_global->__module__, + astmodulestate_global->_ast); Py_DECREF(fnames); - return (PyTypeObject*)result; + return result; } static int -add_attributes(PyTypeObject *type, const char * const *attrs, int num_fields) +add_attributes(PyObject *type, const char * const *attrs, int num_fields) { int i, result; PyObject *s, *l = PyTuple_New(num_fields); @@ -718,7 +1285,7 @@ add_attributes(PyTypeObject *type, const char * const *attrs, int num_fields) } PyTuple_SET_ITEM(l, i, s); } - result = _PyObject_SetAttrId((PyObject*)type, &PyId__attributes, l) >= 0; + result = PyObject_SetAttr(type, astmodulestate_global->_attributes, l) >= 0; Py_DECREF(l); return result; } @@ -824,14 +1391,11 @@ static int obj2ast_int(PyObject* obj, int* out, PyArena* arena) static int add_ast_fields(void) { - PyObject *empty_tuple, *d; - if (PyType_Ready(&AST_type) < 0) - return -1; - d = AST_type.tp_dict; + PyObject *empty_tuple; empty_tuple = PyTuple_New(0); if (!empty_tuple || - _PyDict_SetItemId(d, &PyId__fields, empty_tuple) < 0 || - _PyDict_SetItemId(d, &PyId__attributes, empty_tuple) < 0) { + PyObject_SetAttrString(astmodulestate_global->AST_type, "_fields", empty_tuple) < 0 || + PyObject_SetAttrString(astmodulestate_global->AST_type, "_attributes", empty_tuple) < 0) { Py_XDECREF(empty_tuple); return -1; } @@ -842,333 +1406,427 @@ static int add_ast_fields(void) static int init_types(void) { - static int initialized; - if (initialized) return 1; + PyObject *m; + if (PyState_FindModule(&_astmodule) == NULL) { + m = PyModule_Create(&_astmodule); + if (!m) return 0; + PyState_AddModule(m, &_astmodule); + } + astmodulestate *state = astmodulestate_global; + if (state->initialized) return 1; + if (init_identifiers() < 0) return 0; + state->AST_type = PyType_FromSpec(&AST_type_spec); + if (!state->AST_type) return 0; + ((PyTypeObject*)state->AST_type)->tp_dictoffset = offsetof(AST_object, + dict); if (add_ast_fields() < 0) return 0; - mod_type = make_type("mod", &AST_type, NULL, 0); - if (!mod_type) return 0; - if (!add_attributes(mod_type, NULL, 0)) return 0; - Module_type = make_type("Module", mod_type, Module_fields, 2); - if (!Module_type) return 0; - Interactive_type = make_type("Interactive", mod_type, Interactive_fields, - 1); - if (!Interactive_type) return 0; - Expression_type = make_type("Expression", mod_type, Expression_fields, 1); - if (!Expression_type) return 0; - FunctionType_type = make_type("FunctionType", mod_type, - FunctionType_fields, 2); - if (!FunctionType_type) return 0; - Suite_type = make_type("Suite", mod_type, Suite_fields, 1); - if (!Suite_type) return 0; - stmt_type = make_type("stmt", &AST_type, NULL, 0); - if (!stmt_type) return 0; - if (!add_attributes(stmt_type, stmt_attributes, 4)) return 0; - FunctionDef_type = make_type("FunctionDef", stmt_type, FunctionDef_fields, - 6); - if (!FunctionDef_type) return 0; - AsyncFunctionDef_type = make_type("AsyncFunctionDef", stmt_type, - AsyncFunctionDef_fields, 6); - if (!AsyncFunctionDef_type) return 0; - ClassDef_type = make_type("ClassDef", stmt_type, ClassDef_fields, 5); - if (!ClassDef_type) return 0; - Return_type = make_type("Return", stmt_type, Return_fields, 1); - if (!Return_type) return 0; - Delete_type = make_type("Delete", stmt_type, Delete_fields, 1); - if (!Delete_type) return 0; - Assign_type = make_type("Assign", stmt_type, Assign_fields, 3); - if (!Assign_type) return 0; - AugAssign_type = make_type("AugAssign", stmt_type, AugAssign_fields, 3); - if (!AugAssign_type) return 0; - AnnAssign_type = make_type("AnnAssign", stmt_type, AnnAssign_fields, 4); - if (!AnnAssign_type) return 0; - For_type = make_type("For", stmt_type, For_fields, 5); - if (!For_type) return 0; - AsyncFor_type = make_type("AsyncFor", stmt_type, AsyncFor_fields, 5); - if (!AsyncFor_type) return 0; - While_type = make_type("While", stmt_type, While_fields, 3); - if (!While_type) return 0; - If_type = make_type("If", stmt_type, If_fields, 3); - if (!If_type) return 0; - With_type = make_type("With", stmt_type, With_fields, 3); - if (!With_type) return 0; - AsyncWith_type = make_type("AsyncWith", stmt_type, AsyncWith_fields, 3); - if (!AsyncWith_type) return 0; - Raise_type = make_type("Raise", stmt_type, Raise_fields, 2); - if (!Raise_type) return 0; - Try_type = make_type("Try", stmt_type, Try_fields, 4); - if (!Try_type) return 0; - Assert_type = make_type("Assert", stmt_type, Assert_fields, 2); - if (!Assert_type) return 0; - Import_type = make_type("Import", stmt_type, Import_fields, 1); - if (!Import_type) return 0; - ImportFrom_type = make_type("ImportFrom", stmt_type, ImportFrom_fields, 3); - if (!ImportFrom_type) return 0; - Global_type = make_type("Global", stmt_type, Global_fields, 1); - if (!Global_type) return 0; - Nonlocal_type = make_type("Nonlocal", stmt_type, Nonlocal_fields, 1); - if (!Nonlocal_type) return 0; - Expr_type = make_type("Expr", stmt_type, Expr_fields, 1); - if (!Expr_type) return 0; - Pass_type = make_type("Pass", stmt_type, NULL, 0); - if (!Pass_type) return 0; - Break_type = make_type("Break", stmt_type, NULL, 0); - if (!Break_type) return 0; - Continue_type = make_type("Continue", stmt_type, NULL, 0); - if (!Continue_type) return 0; - expr_type = make_type("expr", &AST_type, NULL, 0); - if (!expr_type) return 0; - if (!add_attributes(expr_type, expr_attributes, 4)) return 0; - BoolOp_type = make_type("BoolOp", expr_type, BoolOp_fields, 2); - if (!BoolOp_type) return 0; - NamedExpr_type = make_type("NamedExpr", expr_type, NamedExpr_fields, 2); - if (!NamedExpr_type) return 0; - BinOp_type = make_type("BinOp", expr_type, BinOp_fields, 3); - if (!BinOp_type) return 0; - UnaryOp_type = make_type("UnaryOp", expr_type, UnaryOp_fields, 2); - if (!UnaryOp_type) return 0; - Lambda_type = make_type("Lambda", expr_type, Lambda_fields, 2); - if (!Lambda_type) return 0; - IfExp_type = make_type("IfExp", expr_type, IfExp_fields, 3); - if (!IfExp_type) return 0; - Dict_type = make_type("Dict", expr_type, Dict_fields, 2); - if (!Dict_type) return 0; - Set_type = make_type("Set", expr_type, Set_fields, 1); - if (!Set_type) return 0; - ListComp_type = make_type("ListComp", expr_type, ListComp_fields, 2); - if (!ListComp_type) return 0; - SetComp_type = make_type("SetComp", expr_type, SetComp_fields, 2); - if (!SetComp_type) return 0; - DictComp_type = make_type("DictComp", expr_type, DictComp_fields, 3); - if (!DictComp_type) return 0; - GeneratorExp_type = make_type("GeneratorExp", expr_type, - GeneratorExp_fields, 2); - if (!GeneratorExp_type) return 0; - Await_type = make_type("Await", expr_type, Await_fields, 1); - if (!Await_type) return 0; - Yield_type = make_type("Yield", expr_type, Yield_fields, 1); - if (!Yield_type) return 0; - YieldFrom_type = make_type("YieldFrom", expr_type, YieldFrom_fields, 1); - if (!YieldFrom_type) return 0; - Compare_type = make_type("Compare", expr_type, Compare_fields, 3); - if (!Compare_type) return 0; - Call_type = make_type("Call", expr_type, Call_fields, 3); - if (!Call_type) return 0; - FormattedValue_type = make_type("FormattedValue", expr_type, - FormattedValue_fields, 3); - if (!FormattedValue_type) return 0; - JoinedStr_type = make_type("JoinedStr", expr_type, JoinedStr_fields, 1); - if (!JoinedStr_type) return 0; - Constant_type = make_type("Constant", expr_type, Constant_fields, 2); - if (!Constant_type) return 0; - Attribute_type = make_type("Attribute", expr_type, Attribute_fields, 3); - if (!Attribute_type) return 0; - Subscript_type = make_type("Subscript", expr_type, Subscript_fields, 3); - if (!Subscript_type) return 0; - Starred_type = make_type("Starred", expr_type, Starred_fields, 2); - if (!Starred_type) return 0; - Name_type = make_type("Name", expr_type, Name_fields, 2); - if (!Name_type) return 0; - List_type = make_type("List", expr_type, List_fields, 2); - if (!List_type) return 0; - Tuple_type = make_type("Tuple", expr_type, Tuple_fields, 2); - if (!Tuple_type) return 0; - expr_context_type = make_type("expr_context", &AST_type, NULL, 0); - if (!expr_context_type) return 0; - if (!add_attributes(expr_context_type, NULL, 0)) return 0; - Load_type = make_type("Load", expr_context_type, NULL, 0); - if (!Load_type) return 0; - Load_singleton = PyType_GenericNew(Load_type, NULL, NULL); - if (!Load_singleton) return 0; - Store_type = make_type("Store", expr_context_type, NULL, 0); - if (!Store_type) return 0; - Store_singleton = PyType_GenericNew(Store_type, NULL, NULL); - if (!Store_singleton) return 0; - Del_type = make_type("Del", expr_context_type, NULL, 0); - if (!Del_type) return 0; - Del_singleton = PyType_GenericNew(Del_type, NULL, NULL); - if (!Del_singleton) return 0; - AugLoad_type = make_type("AugLoad", expr_context_type, NULL, 0); - if (!AugLoad_type) return 0; - AugLoad_singleton = PyType_GenericNew(AugLoad_type, NULL, NULL); - if (!AugLoad_singleton) return 0; - AugStore_type = make_type("AugStore", expr_context_type, NULL, 0); - if (!AugStore_type) return 0; - AugStore_singleton = PyType_GenericNew(AugStore_type, NULL, NULL); - if (!AugStore_singleton) return 0; - Param_type = make_type("Param", expr_context_type, NULL, 0); - if (!Param_type) return 0; - Param_singleton = PyType_GenericNew(Param_type, NULL, NULL); - if (!Param_singleton) return 0; - slice_type = make_type("slice", &AST_type, NULL, 0); - if (!slice_type) return 0; - if (!add_attributes(slice_type, NULL, 0)) return 0; - Slice_type = make_type("Slice", slice_type, Slice_fields, 3); - if (!Slice_type) return 0; - ExtSlice_type = make_type("ExtSlice", slice_type, ExtSlice_fields, 1); - if (!ExtSlice_type) return 0; - Index_type = make_type("Index", slice_type, Index_fields, 1); - if (!Index_type) return 0; - boolop_type = make_type("boolop", &AST_type, NULL, 0); - if (!boolop_type) return 0; - if (!add_attributes(boolop_type, NULL, 0)) return 0; - And_type = make_type("And", boolop_type, NULL, 0); - if (!And_type) return 0; - And_singleton = PyType_GenericNew(And_type, NULL, NULL); - if (!And_singleton) return 0; - Or_type = make_type("Or", boolop_type, NULL, 0); - if (!Or_type) return 0; - Or_singleton = PyType_GenericNew(Or_type, NULL, NULL); - if (!Or_singleton) return 0; - operator_type = make_type("operator", &AST_type, NULL, 0); - if (!operator_type) return 0; - if (!add_attributes(operator_type, NULL, 0)) return 0; - Add_type = make_type("Add", operator_type, NULL, 0); - if (!Add_type) return 0; - Add_singleton = PyType_GenericNew(Add_type, NULL, NULL); - if (!Add_singleton) return 0; - Sub_type = make_type("Sub", operator_type, NULL, 0); - if (!Sub_type) return 0; - Sub_singleton = PyType_GenericNew(Sub_type, NULL, NULL); - if (!Sub_singleton) return 0; - Mult_type = make_type("Mult", operator_type, NULL, 0); - if (!Mult_type) return 0; - Mult_singleton = PyType_GenericNew(Mult_type, NULL, NULL); - if (!Mult_singleton) return 0; - MatMult_type = make_type("MatMult", operator_type, NULL, 0); - if (!MatMult_type) return 0; - MatMult_singleton = PyType_GenericNew(MatMult_type, NULL, NULL); - if (!MatMult_singleton) return 0; - Div_type = make_type("Div", operator_type, NULL, 0); - if (!Div_type) return 0; - Div_singleton = PyType_GenericNew(Div_type, NULL, NULL); - if (!Div_singleton) return 0; - Mod_type = make_type("Mod", operator_type, NULL, 0); - if (!Mod_type) return 0; - Mod_singleton = PyType_GenericNew(Mod_type, NULL, NULL); - if (!Mod_singleton) return 0; - Pow_type = make_type("Pow", operator_type, NULL, 0); - if (!Pow_type) return 0; - Pow_singleton = PyType_GenericNew(Pow_type, NULL, NULL); - if (!Pow_singleton) return 0; - LShift_type = make_type("LShift", operator_type, NULL, 0); - if (!LShift_type) return 0; - LShift_singleton = PyType_GenericNew(LShift_type, NULL, NULL); - if (!LShift_singleton) return 0; - RShift_type = make_type("RShift", operator_type, NULL, 0); - if (!RShift_type) return 0; - RShift_singleton = PyType_GenericNew(RShift_type, NULL, NULL); - if (!RShift_singleton) return 0; - BitOr_type = make_type("BitOr", operator_type, NULL, 0); - if (!BitOr_type) return 0; - BitOr_singleton = PyType_GenericNew(BitOr_type, NULL, NULL); - if (!BitOr_singleton) return 0; - BitXor_type = make_type("BitXor", operator_type, NULL, 0); - if (!BitXor_type) return 0; - BitXor_singleton = PyType_GenericNew(BitXor_type, NULL, NULL); - if (!BitXor_singleton) return 0; - BitAnd_type = make_type("BitAnd", operator_type, NULL, 0); - if (!BitAnd_type) return 0; - BitAnd_singleton = PyType_GenericNew(BitAnd_type, NULL, NULL); - if (!BitAnd_singleton) return 0; - FloorDiv_type = make_type("FloorDiv", operator_type, NULL, 0); - if (!FloorDiv_type) return 0; - FloorDiv_singleton = PyType_GenericNew(FloorDiv_type, NULL, NULL); - if (!FloorDiv_singleton) return 0; - unaryop_type = make_type("unaryop", &AST_type, NULL, 0); - if (!unaryop_type) return 0; - if (!add_attributes(unaryop_type, NULL, 0)) return 0; - Invert_type = make_type("Invert", unaryop_type, NULL, 0); - if (!Invert_type) return 0; - Invert_singleton = PyType_GenericNew(Invert_type, NULL, NULL); - if (!Invert_singleton) return 0; - Not_type = make_type("Not", unaryop_type, NULL, 0); - if (!Not_type) return 0; - Not_singleton = PyType_GenericNew(Not_type, NULL, NULL); - if (!Not_singleton) return 0; - UAdd_type = make_type("UAdd", unaryop_type, NULL, 0); - if (!UAdd_type) return 0; - UAdd_singleton = PyType_GenericNew(UAdd_type, NULL, NULL); - if (!UAdd_singleton) return 0; - USub_type = make_type("USub", unaryop_type, NULL, 0); - if (!USub_type) return 0; - USub_singleton = PyType_GenericNew(USub_type, NULL, NULL); - if (!USub_singleton) return 0; - cmpop_type = make_type("cmpop", &AST_type, NULL, 0); - if (!cmpop_type) return 0; - if (!add_attributes(cmpop_type, NULL, 0)) return 0; - Eq_type = make_type("Eq", cmpop_type, NULL, 0); - if (!Eq_type) return 0; - Eq_singleton = PyType_GenericNew(Eq_type, NULL, NULL); - if (!Eq_singleton) return 0; - NotEq_type = make_type("NotEq", cmpop_type, NULL, 0); - if (!NotEq_type) return 0; - NotEq_singleton = PyType_GenericNew(NotEq_type, NULL, NULL); - if (!NotEq_singleton) return 0; - Lt_type = make_type("Lt", cmpop_type, NULL, 0); - if (!Lt_type) return 0; - Lt_singleton = PyType_GenericNew(Lt_type, NULL, NULL); - if (!Lt_singleton) return 0; - LtE_type = make_type("LtE", cmpop_type, NULL, 0); - if (!LtE_type) return 0; - LtE_singleton = PyType_GenericNew(LtE_type, NULL, NULL); - if (!LtE_singleton) return 0; - Gt_type = make_type("Gt", cmpop_type, NULL, 0); - if (!Gt_type) return 0; - Gt_singleton = PyType_GenericNew(Gt_type, NULL, NULL); - if (!Gt_singleton) return 0; - GtE_type = make_type("GtE", cmpop_type, NULL, 0); - if (!GtE_type) return 0; - GtE_singleton = PyType_GenericNew(GtE_type, NULL, NULL); - if (!GtE_singleton) return 0; - Is_type = make_type("Is", cmpop_type, NULL, 0); - if (!Is_type) return 0; - Is_singleton = PyType_GenericNew(Is_type, NULL, NULL); - if (!Is_singleton) return 0; - IsNot_type = make_type("IsNot", cmpop_type, NULL, 0); - if (!IsNot_type) return 0; - IsNot_singleton = PyType_GenericNew(IsNot_type, NULL, NULL); - if (!IsNot_singleton) return 0; - In_type = make_type("In", cmpop_type, NULL, 0); - if (!In_type) return 0; - In_singleton = PyType_GenericNew(In_type, NULL, NULL); - if (!In_singleton) return 0; - NotIn_type = make_type("NotIn", cmpop_type, NULL, 0); - if (!NotIn_type) return 0; - NotIn_singleton = PyType_GenericNew(NotIn_type, NULL, NULL); - if (!NotIn_singleton) return 0; - comprehension_type = make_type("comprehension", &AST_type, - comprehension_fields, 4); - if (!comprehension_type) return 0; - if (!add_attributes(comprehension_type, NULL, 0)) return 0; - excepthandler_type = make_type("excepthandler", &AST_type, NULL, 0); - if (!excepthandler_type) return 0; - if (!add_attributes(excepthandler_type, excepthandler_attributes, 4)) - return 0; - ExceptHandler_type = make_type("ExceptHandler", excepthandler_type, - ExceptHandler_fields, 3); - if (!ExceptHandler_type) return 0; - arguments_type = make_type("arguments", &AST_type, arguments_fields, 7); - if (!arguments_type) return 0; - if (!add_attributes(arguments_type, NULL, 0)) return 0; - arg_type = make_type("arg", &AST_type, arg_fields, 3); - if (!arg_type) return 0; - if (!add_attributes(arg_type, arg_attributes, 4)) return 0; - keyword_type = make_type("keyword", &AST_type, keyword_fields, 2); - if (!keyword_type) return 0; - if (!add_attributes(keyword_type, NULL, 0)) return 0; - alias_type = make_type("alias", &AST_type, alias_fields, 2); - if (!alias_type) return 0; - if (!add_attributes(alias_type, NULL, 0)) return 0; - withitem_type = make_type("withitem", &AST_type, withitem_fields, 2); - if (!withitem_type) return 0; - if (!add_attributes(withitem_type, NULL, 0)) return 0; - type_ignore_type = make_type("type_ignore", &AST_type, NULL, 0); - if (!type_ignore_type) return 0; - if (!add_attributes(type_ignore_type, NULL, 0)) return 0; - TypeIgnore_type = make_type("TypeIgnore", type_ignore_type, - TypeIgnore_fields, 2); - if (!TypeIgnore_type) return 0; - initialized = 1; + state->mod_type = make_type("mod", state->AST_type, NULL, 0); + if (!state->mod_type) return 0; + if (!add_attributes(state->mod_type, NULL, 0)) return 0; + state->Module_type = make_type("Module", state->mod_type, Module_fields, 2); + if (!state->Module_type) return 0; + state->Interactive_type = make_type("Interactive", state->mod_type, + Interactive_fields, 1); + if (!state->Interactive_type) return 0; + state->Expression_type = make_type("Expression", state->mod_type, + Expression_fields, 1); + if (!state->Expression_type) return 0; + state->FunctionType_type = make_type("FunctionType", state->mod_type, + FunctionType_fields, 2); + if (!state->FunctionType_type) return 0; + state->Suite_type = make_type("Suite", state->mod_type, Suite_fields, 1); + if (!state->Suite_type) return 0; + state->stmt_type = make_type("stmt", state->AST_type, NULL, 0); + if (!state->stmt_type) return 0; + if (!add_attributes(state->stmt_type, stmt_attributes, 4)) return 0; + state->FunctionDef_type = make_type("FunctionDef", state->stmt_type, + FunctionDef_fields, 6); + if (!state->FunctionDef_type) return 0; + state->AsyncFunctionDef_type = make_type("AsyncFunctionDef", + state->stmt_type, + AsyncFunctionDef_fields, 6); + if (!state->AsyncFunctionDef_type) return 0; + state->ClassDef_type = make_type("ClassDef", state->stmt_type, + ClassDef_fields, 5); + if (!state->ClassDef_type) return 0; + state->Return_type = make_type("Return", state->stmt_type, Return_fields, + 1); + if (!state->Return_type) return 0; + state->Delete_type = make_type("Delete", state->stmt_type, Delete_fields, + 1); + if (!state->Delete_type) return 0; + state->Assign_type = make_type("Assign", state->stmt_type, Assign_fields, + 3); + if (!state->Assign_type) return 0; + state->AugAssign_type = make_type("AugAssign", state->stmt_type, + AugAssign_fields, 3); + if (!state->AugAssign_type) return 0; + state->AnnAssign_type = make_type("AnnAssign", state->stmt_type, + AnnAssign_fields, 4); + if (!state->AnnAssign_type) return 0; + state->For_type = make_type("For", state->stmt_type, For_fields, 5); + if (!state->For_type) return 0; + state->AsyncFor_type = make_type("AsyncFor", state->stmt_type, + AsyncFor_fields, 5); + if (!state->AsyncFor_type) return 0; + state->While_type = make_type("While", state->stmt_type, While_fields, 3); + if (!state->While_type) return 0; + state->If_type = make_type("If", state->stmt_type, If_fields, 3); + if (!state->If_type) return 0; + state->With_type = make_type("With", state->stmt_type, With_fields, 3); + if (!state->With_type) return 0; + state->AsyncWith_type = make_type("AsyncWith", state->stmt_type, + AsyncWith_fields, 3); + if (!state->AsyncWith_type) return 0; + state->Raise_type = make_type("Raise", state->stmt_type, Raise_fields, 2); + if (!state->Raise_type) return 0; + state->Try_type = make_type("Try", state->stmt_type, Try_fields, 4); + if (!state->Try_type) return 0; + state->Assert_type = make_type("Assert", state->stmt_type, Assert_fields, + 2); + if (!state->Assert_type) return 0; + state->Import_type = make_type("Import", state->stmt_type, Import_fields, + 1); + if (!state->Import_type) return 0; + state->ImportFrom_type = make_type("ImportFrom", state->stmt_type, + ImportFrom_fields, 3); + if (!state->ImportFrom_type) return 0; + state->Global_type = make_type("Global", state->stmt_type, Global_fields, + 1); + if (!state->Global_type) return 0; + state->Nonlocal_type = make_type("Nonlocal", state->stmt_type, + Nonlocal_fields, 1); + if (!state->Nonlocal_type) return 0; + state->Expr_type = make_type("Expr", state->stmt_type, Expr_fields, 1); + if (!state->Expr_type) return 0; + state->Pass_type = make_type("Pass", state->stmt_type, NULL, 0); + if (!state->Pass_type) return 0; + state->Break_type = make_type("Break", state->stmt_type, NULL, 0); + if (!state->Break_type) return 0; + state->Continue_type = make_type("Continue", state->stmt_type, NULL, 0); + if (!state->Continue_type) return 0; + state->expr_type = make_type("expr", state->AST_type, NULL, 0); + if (!state->expr_type) return 0; + if (!add_attributes(state->expr_type, expr_attributes, 4)) return 0; + state->BoolOp_type = make_type("BoolOp", state->expr_type, BoolOp_fields, + 2); + if (!state->BoolOp_type) return 0; + state->NamedExpr_type = make_type("NamedExpr", state->expr_type, + NamedExpr_fields, 2); + if (!state->NamedExpr_type) return 0; + state->BinOp_type = make_type("BinOp", state->expr_type, BinOp_fields, 3); + if (!state->BinOp_type) return 0; + state->UnaryOp_type = make_type("UnaryOp", state->expr_type, + UnaryOp_fields, 2); + if (!state->UnaryOp_type) return 0; + state->Lambda_type = make_type("Lambda", state->expr_type, Lambda_fields, + 2); + if (!state->Lambda_type) return 0; + state->IfExp_type = make_type("IfExp", state->expr_type, IfExp_fields, 3); + if (!state->IfExp_type) return 0; + state->Dict_type = make_type("Dict", state->expr_type, Dict_fields, 2); + if (!state->Dict_type) return 0; + state->Set_type = make_type("Set", state->expr_type, Set_fields, 1); + if (!state->Set_type) return 0; + state->ListComp_type = make_type("ListComp", state->expr_type, + ListComp_fields, 2); + if (!state->ListComp_type) return 0; + state->SetComp_type = make_type("SetComp", state->expr_type, + SetComp_fields, 2); + if (!state->SetComp_type) return 0; + state->DictComp_type = make_type("DictComp", state->expr_type, + DictComp_fields, 3); + if (!state->DictComp_type) return 0; + state->GeneratorExp_type = make_type("GeneratorExp", state->expr_type, + GeneratorExp_fields, 2); + if (!state->GeneratorExp_type) return 0; + state->Await_type = make_type("Await", state->expr_type, Await_fields, 1); + if (!state->Await_type) return 0; + state->Yield_type = make_type("Yield", state->expr_type, Yield_fields, 1); + if (!state->Yield_type) return 0; + state->YieldFrom_type = make_type("YieldFrom", state->expr_type, + YieldFrom_fields, 1); + if (!state->YieldFrom_type) return 0; + state->Compare_type = make_type("Compare", state->expr_type, + Compare_fields, 3); + if (!state->Compare_type) return 0; + state->Call_type = make_type("Call", state->expr_type, Call_fields, 3); + if (!state->Call_type) return 0; + state->FormattedValue_type = make_type("FormattedValue", state->expr_type, + FormattedValue_fields, 3); + if (!state->FormattedValue_type) return 0; + state->JoinedStr_type = make_type("JoinedStr", state->expr_type, + JoinedStr_fields, 1); + if (!state->JoinedStr_type) return 0; + state->Constant_type = make_type("Constant", state->expr_type, + Constant_fields, 2); + if (!state->Constant_type) return 0; + state->Attribute_type = make_type("Attribute", state->expr_type, + Attribute_fields, 3); + if (!state->Attribute_type) return 0; + state->Subscript_type = make_type("Subscript", state->expr_type, + Subscript_fields, 3); + if (!state->Subscript_type) return 0; + state->Starred_type = make_type("Starred", state->expr_type, + Starred_fields, 2); + if (!state->Starred_type) return 0; + state->Name_type = make_type("Name", state->expr_type, Name_fields, 2); + if (!state->Name_type) return 0; + state->List_type = make_type("List", state->expr_type, List_fields, 2); + if (!state->List_type) return 0; + state->Tuple_type = make_type("Tuple", state->expr_type, Tuple_fields, 2); + if (!state->Tuple_type) return 0; + state->expr_context_type = make_type("expr_context", state->AST_type, NULL, + 0); + if (!state->expr_context_type) return 0; + if (!add_attributes(state->expr_context_type, NULL, 0)) return 0; + state->Load_type = make_type("Load", state->expr_context_type, NULL, 0); + if (!state->Load_type) return 0; + state->Load_singleton = PyType_GenericNew((PyTypeObject *)state->Load_type, + NULL, NULL); + if (!state->Load_singleton) return 0; + state->Store_type = make_type("Store", state->expr_context_type, NULL, 0); + if (!state->Store_type) return 0; + state->Store_singleton = PyType_GenericNew((PyTypeObject + *)state->Store_type, NULL, NULL); + if (!state->Store_singleton) return 0; + state->Del_type = make_type("Del", state->expr_context_type, NULL, 0); + if (!state->Del_type) return 0; + state->Del_singleton = PyType_GenericNew((PyTypeObject *)state->Del_type, + NULL, NULL); + if (!state->Del_singleton) return 0; + state->AugLoad_type = make_type("AugLoad", state->expr_context_type, NULL, + 0); + if (!state->AugLoad_type) return 0; + state->AugLoad_singleton = PyType_GenericNew((PyTypeObject + *)state->AugLoad_type, NULL, + NULL); + if (!state->AugLoad_singleton) return 0; + state->AugStore_type = make_type("AugStore", state->expr_context_type, + NULL, 0); + if (!state->AugStore_type) return 0; + state->AugStore_singleton = PyType_GenericNew((PyTypeObject + *)state->AugStore_type, NULL, + NULL); + if (!state->AugStore_singleton) return 0; + state->Param_type = make_type("Param", state->expr_context_type, NULL, 0); + if (!state->Param_type) return 0; + state->Param_singleton = PyType_GenericNew((PyTypeObject + *)state->Param_type, NULL, NULL); + if (!state->Param_singleton) return 0; + state->slice_type = make_type("slice", state->AST_type, NULL, 0); + if (!state->slice_type) return 0; + if (!add_attributes(state->slice_type, NULL, 0)) return 0; + state->Slice_type = make_type("Slice", state->slice_type, Slice_fields, 3); + if (!state->Slice_type) return 0; + state->ExtSlice_type = make_type("ExtSlice", state->slice_type, + ExtSlice_fields, 1); + if (!state->ExtSlice_type) return 0; + state->Index_type = make_type("Index", state->slice_type, Index_fields, 1); + if (!state->Index_type) return 0; + state->boolop_type = make_type("boolop", state->AST_type, NULL, 0); + if (!state->boolop_type) return 0; + if (!add_attributes(state->boolop_type, NULL, 0)) return 0; + state->And_type = make_type("And", state->boolop_type, NULL, 0); + if (!state->And_type) return 0; + state->And_singleton = PyType_GenericNew((PyTypeObject *)state->And_type, + NULL, NULL); + if (!state->And_singleton) return 0; + state->Or_type = make_type("Or", state->boolop_type, NULL, 0); + if (!state->Or_type) return 0; + state->Or_singleton = PyType_GenericNew((PyTypeObject *)state->Or_type, + NULL, NULL); + if (!state->Or_singleton) return 0; + state->operator_type = make_type("operator", state->AST_type, NULL, 0); + if (!state->operator_type) return 0; + if (!add_attributes(state->operator_type, NULL, 0)) return 0; + state->Add_type = make_type("Add", state->operator_type, NULL, 0); + if (!state->Add_type) return 0; + state->Add_singleton = PyType_GenericNew((PyTypeObject *)state->Add_type, + NULL, NULL); + if (!state->Add_singleton) return 0; + state->Sub_type = make_type("Sub", state->operator_type, NULL, 0); + if (!state->Sub_type) return 0; + state->Sub_singleton = PyType_GenericNew((PyTypeObject *)state->Sub_type, + NULL, NULL); + if (!state->Sub_singleton) return 0; + state->Mult_type = make_type("Mult", state->operator_type, NULL, 0); + if (!state->Mult_type) return 0; + state->Mult_singleton = PyType_GenericNew((PyTypeObject *)state->Mult_type, + NULL, NULL); + if (!state->Mult_singleton) return 0; + state->MatMult_type = make_type("MatMult", state->operator_type, NULL, 0); + if (!state->MatMult_type) return 0; + state->MatMult_singleton = PyType_GenericNew((PyTypeObject + *)state->MatMult_type, NULL, + NULL); + if (!state->MatMult_singleton) return 0; + state->Div_type = make_type("Div", state->operator_type, NULL, 0); + if (!state->Div_type) return 0; + state->Div_singleton = PyType_GenericNew((PyTypeObject *)state->Div_type, + NULL, NULL); + if (!state->Div_singleton) return 0; + state->Mod_type = make_type("Mod", state->operator_type, NULL, 0); + if (!state->Mod_type) return 0; + state->Mod_singleton = PyType_GenericNew((PyTypeObject *)state->Mod_type, + NULL, NULL); + if (!state->Mod_singleton) return 0; + state->Pow_type = make_type("Pow", state->operator_type, NULL, 0); + if (!state->Pow_type) return 0; + state->Pow_singleton = PyType_GenericNew((PyTypeObject *)state->Pow_type, + NULL, NULL); + if (!state->Pow_singleton) return 0; + state->LShift_type = make_type("LShift", state->operator_type, NULL, 0); + if (!state->LShift_type) return 0; + state->LShift_singleton = PyType_GenericNew((PyTypeObject + *)state->LShift_type, NULL, + NULL); + if (!state->LShift_singleton) return 0; + state->RShift_type = make_type("RShift", state->operator_type, NULL, 0); + if (!state->RShift_type) return 0; + state->RShift_singleton = PyType_GenericNew((PyTypeObject + *)state->RShift_type, NULL, + NULL); + if (!state->RShift_singleton) return 0; + state->BitOr_type = make_type("BitOr", state->operator_type, NULL, 0); + if (!state->BitOr_type) return 0; + state->BitOr_singleton = PyType_GenericNew((PyTypeObject + *)state->BitOr_type, NULL, NULL); + if (!state->BitOr_singleton) return 0; + state->BitXor_type = make_type("BitXor", state->operator_type, NULL, 0); + if (!state->BitXor_type) return 0; + state->BitXor_singleton = PyType_GenericNew((PyTypeObject + *)state->BitXor_type, NULL, + NULL); + if (!state->BitXor_singleton) return 0; + state->BitAnd_type = make_type("BitAnd", state->operator_type, NULL, 0); + if (!state->BitAnd_type) return 0; + state->BitAnd_singleton = PyType_GenericNew((PyTypeObject + *)state->BitAnd_type, NULL, + NULL); + if (!state->BitAnd_singleton) return 0; + state->FloorDiv_type = make_type("FloorDiv", state->operator_type, NULL, 0); + if (!state->FloorDiv_type) return 0; + state->FloorDiv_singleton = PyType_GenericNew((PyTypeObject + *)state->FloorDiv_type, NULL, + NULL); + if (!state->FloorDiv_singleton) return 0; + state->unaryop_type = make_type("unaryop", state->AST_type, NULL, 0); + if (!state->unaryop_type) return 0; + if (!add_attributes(state->unaryop_type, NULL, 0)) return 0; + state->Invert_type = make_type("Invert", state->unaryop_type, NULL, 0); + if (!state->Invert_type) return 0; + state->Invert_singleton = PyType_GenericNew((PyTypeObject + *)state->Invert_type, NULL, + NULL); + if (!state->Invert_singleton) return 0; + state->Not_type = make_type("Not", state->unaryop_type, NULL, 0); + if (!state->Not_type) return 0; + state->Not_singleton = PyType_GenericNew((PyTypeObject *)state->Not_type, + NULL, NULL); + if (!state->Not_singleton) return 0; + state->UAdd_type = make_type("UAdd", state->unaryop_type, NULL, 0); + if (!state->UAdd_type) return 0; + state->UAdd_singleton = PyType_GenericNew((PyTypeObject *)state->UAdd_type, + NULL, NULL); + if (!state->UAdd_singleton) return 0; + state->USub_type = make_type("USub", state->unaryop_type, NULL, 0); + if (!state->USub_type) return 0; + state->USub_singleton = PyType_GenericNew((PyTypeObject *)state->USub_type, + NULL, NULL); + if (!state->USub_singleton) return 0; + state->cmpop_type = make_type("cmpop", state->AST_type, NULL, 0); + if (!state->cmpop_type) return 0; + if (!add_attributes(state->cmpop_type, NULL, 0)) return 0; + state->Eq_type = make_type("Eq", state->cmpop_type, NULL, 0); + if (!state->Eq_type) return 0; + state->Eq_singleton = PyType_GenericNew((PyTypeObject *)state->Eq_type, + NULL, NULL); + if (!state->Eq_singleton) return 0; + state->NotEq_type = make_type("NotEq", state->cmpop_type, NULL, 0); + if (!state->NotEq_type) return 0; + state->NotEq_singleton = PyType_GenericNew((PyTypeObject + *)state->NotEq_type, NULL, NULL); + if (!state->NotEq_singleton) return 0; + state->Lt_type = make_type("Lt", state->cmpop_type, NULL, 0); + if (!state->Lt_type) return 0; + state->Lt_singleton = PyType_GenericNew((PyTypeObject *)state->Lt_type, + NULL, NULL); + if (!state->Lt_singleton) return 0; + state->LtE_type = make_type("LtE", state->cmpop_type, NULL, 0); + if (!state->LtE_type) return 0; + state->LtE_singleton = PyType_GenericNew((PyTypeObject *)state->LtE_type, + NULL, NULL); + if (!state->LtE_singleton) return 0; + state->Gt_type = make_type("Gt", state->cmpop_type, NULL, 0); + if (!state->Gt_type) return 0; + state->Gt_singleton = PyType_GenericNew((PyTypeObject *)state->Gt_type, + NULL, NULL); + if (!state->Gt_singleton) return 0; + state->GtE_type = make_type("GtE", state->cmpop_type, NULL, 0); + if (!state->GtE_type) return 0; + state->GtE_singleton = PyType_GenericNew((PyTypeObject *)state->GtE_type, + NULL, NULL); + if (!state->GtE_singleton) return 0; + state->Is_type = make_type("Is", state->cmpop_type, NULL, 0); + if (!state->Is_type) return 0; + state->Is_singleton = PyType_GenericNew((PyTypeObject *)state->Is_type, + NULL, NULL); + if (!state->Is_singleton) return 0; + state->IsNot_type = make_type("IsNot", state->cmpop_type, NULL, 0); + if (!state->IsNot_type) return 0; + state->IsNot_singleton = PyType_GenericNew((PyTypeObject + *)state->IsNot_type, NULL, NULL); + if (!state->IsNot_singleton) return 0; + state->In_type = make_type("In", state->cmpop_type, NULL, 0); + if (!state->In_type) return 0; + state->In_singleton = PyType_GenericNew((PyTypeObject *)state->In_type, + NULL, NULL); + if (!state->In_singleton) return 0; + state->NotIn_type = make_type("NotIn", state->cmpop_type, NULL, 0); + if (!state->NotIn_type) return 0; + state->NotIn_singleton = PyType_GenericNew((PyTypeObject + *)state->NotIn_type, NULL, NULL); + if (!state->NotIn_singleton) return 0; + state->comprehension_type = make_type("comprehension", state->AST_type, + comprehension_fields, 4); + if (!state->comprehension_type) return 0; + if (!add_attributes(state->comprehension_type, NULL, 0)) return 0; + state->excepthandler_type = make_type("excepthandler", state->AST_type, + NULL, 0); + if (!state->excepthandler_type) return 0; + if (!add_attributes(state->excepthandler_type, excepthandler_attributes, + 4)) return 0; + state->ExceptHandler_type = make_type("ExceptHandler", + state->excepthandler_type, + ExceptHandler_fields, 3); + if (!state->ExceptHandler_type) return 0; + state->arguments_type = make_type("arguments", state->AST_type, + arguments_fields, 7); + if (!state->arguments_type) return 0; + if (!add_attributes(state->arguments_type, NULL, 0)) return 0; + state->arg_type = make_type("arg", state->AST_type, arg_fields, 3); + if (!state->arg_type) return 0; + if (!add_attributes(state->arg_type, arg_attributes, 4)) return 0; + state->keyword_type = make_type("keyword", state->AST_type, keyword_fields, + 2); + if (!state->keyword_type) return 0; + if (!add_attributes(state->keyword_type, NULL, 0)) return 0; + state->alias_type = make_type("alias", state->AST_type, alias_fields, 2); + if (!state->alias_type) return 0; + if (!add_attributes(state->alias_type, NULL, 0)) return 0; + state->withitem_type = make_type("withitem", state->AST_type, + withitem_fields, 2); + if (!state->withitem_type) return 0; + if (!add_attributes(state->withitem_type, NULL, 0)) return 0; + state->type_ignore_type = make_type("type_ignore", state->AST_type, NULL, + 0); + if (!state->type_ignore_type) return 0; + if (!add_attributes(state->type_ignore_type, NULL, 0)) return 0; + state->TypeIgnore_type = make_type("TypeIgnore", state->type_ignore_type, + TypeIgnore_fields, 2); + if (!state->TypeIgnore_type) return 0; + state->initialized = 1; return 1; } @@ -2691,63 +3349,72 @@ ast2obj_mod(void* _o) { mod_ty o = (mod_ty)_o; PyObject *result = NULL, *value = NULL; + PyTypeObject *tp; if (!o) { Py_RETURN_NONE; } switch (o->kind) { case Module_kind: - result = PyType_GenericNew(Module_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Module_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.Module.body, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.Module.type_ignores, ast2obj_type_ignore); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_type_ignores, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->type_ignores, + value) == -1) goto failed; Py_DECREF(value); break; case Interactive_kind: - result = PyType_GenericNew(Interactive_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Interactive_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.Interactive.body, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); break; case Expression_kind: - result = PyType_GenericNew(Expression_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Expression_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.Expression.body); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); break; case FunctionType_kind: - result = PyType_GenericNew(FunctionType_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->FunctionType_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.FunctionType.argtypes, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_argtypes, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->argtypes, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.FunctionType.returns); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_returns, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->returns, value) == + -1) goto failed; Py_DECREF(value); break; case Suite_kind: - result = PyType_GenericNew(Suite_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Suite_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.Suite.body, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); break; @@ -2764,461 +3431,517 @@ ast2obj_stmt(void* _o) { stmt_ty o = (stmt_ty)_o; PyObject *result = NULL, *value = NULL; + PyTypeObject *tp; if (!o) { Py_RETURN_NONE; } switch (o->kind) { case FunctionDef_kind: - result = PyType_GenericNew(FunctionDef_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->FunctionDef_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_identifier(o->v.FunctionDef.name); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_name, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->name, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_arguments(o->v.FunctionDef.args); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_args, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->args, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.FunctionDef.body, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.FunctionDef.decorator_list, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_decorator_list, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->decorator_list, + value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.FunctionDef.returns); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_returns, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->returns, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_string(o->v.FunctionDef.type_comment); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_type_comment, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->type_comment, + value) == -1) goto failed; Py_DECREF(value); break; case AsyncFunctionDef_kind: - result = PyType_GenericNew(AsyncFunctionDef_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->AsyncFunctionDef_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_identifier(o->v.AsyncFunctionDef.name); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_name, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->name, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_arguments(o->v.AsyncFunctionDef.args); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_args, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->args, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.AsyncFunctionDef.body, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.AsyncFunctionDef.decorator_list, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_decorator_list, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->decorator_list, + value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.AsyncFunctionDef.returns); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_returns, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->returns, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_string(o->v.AsyncFunctionDef.type_comment); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_type_comment, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->type_comment, + value) == -1) goto failed; Py_DECREF(value); break; case ClassDef_kind: - result = PyType_GenericNew(ClassDef_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->ClassDef_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_identifier(o->v.ClassDef.name); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_name, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->name, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.ClassDef.bases, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_bases, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->bases, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.ClassDef.keywords, ast2obj_keyword); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_keywords, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->keywords, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.ClassDef.body, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.ClassDef.decorator_list, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_decorator_list, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->decorator_list, + value) == -1) goto failed; Py_DECREF(value); break; case Return_kind: - result = PyType_GenericNew(Return_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Return_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.Return.value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); break; case Delete_kind: - result = PyType_GenericNew(Delete_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Delete_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.Delete.targets, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_targets, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->targets, value) == + -1) goto failed; Py_DECREF(value); break; case Assign_kind: - result = PyType_GenericNew(Assign_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Assign_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.Assign.targets, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_targets, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->targets, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.Assign.value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_string(o->v.Assign.type_comment); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_type_comment, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->type_comment, + value) == -1) goto failed; Py_DECREF(value); break; case AugAssign_kind: - result = PyType_GenericNew(AugAssign_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->AugAssign_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.AugAssign.target); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_target, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->target, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_operator(o->v.AugAssign.op); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_op, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->op, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.AugAssign.value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); break; case AnnAssign_kind: - result = PyType_GenericNew(AnnAssign_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->AnnAssign_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.AnnAssign.target); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_target, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->target, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.AnnAssign.annotation); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_annotation, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->annotation, value) + == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.AnnAssign.value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_int(o->v.AnnAssign.simple); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_simple, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->simple, value) == + -1) goto failed; Py_DECREF(value); break; case For_kind: - result = PyType_GenericNew(For_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->For_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.For.target); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_target, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->target, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.For.iter); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_iter, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->iter, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.For.body, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.For.orelse, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_orelse, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->orelse, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_string(o->v.For.type_comment); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_type_comment, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->type_comment, + value) == -1) goto failed; Py_DECREF(value); break; case AsyncFor_kind: - result = PyType_GenericNew(AsyncFor_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->AsyncFor_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.AsyncFor.target); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_target, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->target, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.AsyncFor.iter); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_iter, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->iter, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.AsyncFor.body, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.AsyncFor.orelse, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_orelse, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->orelse, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_string(o->v.AsyncFor.type_comment); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_type_comment, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->type_comment, + value) == -1) goto failed; Py_DECREF(value); break; case While_kind: - result = PyType_GenericNew(While_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->While_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.While.test); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_test, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->test, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.While.body, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.While.orelse, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_orelse, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->orelse, value) == + -1) goto failed; Py_DECREF(value); break; case If_kind: - result = PyType_GenericNew(If_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->If_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.If.test); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_test, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->test, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.If.body, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.If.orelse, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_orelse, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->orelse, value) == + -1) goto failed; Py_DECREF(value); break; case With_kind: - result = PyType_GenericNew(With_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->With_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.With.items, ast2obj_withitem); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_items, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->items, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.With.body, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_string(o->v.With.type_comment); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_type_comment, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->type_comment, + value) == -1) goto failed; Py_DECREF(value); break; case AsyncWith_kind: - result = PyType_GenericNew(AsyncWith_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->AsyncWith_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.AsyncWith.items, ast2obj_withitem); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_items, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->items, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.AsyncWith.body, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_string(o->v.AsyncWith.type_comment); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_type_comment, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->type_comment, + value) == -1) goto failed; Py_DECREF(value); break; case Raise_kind: - result = PyType_GenericNew(Raise_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Raise_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.Raise.exc); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_exc, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->exc, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.Raise.cause); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_cause, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->cause, value) == -1) goto failed; Py_DECREF(value); break; case Try_kind: - result = PyType_GenericNew(Try_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Try_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.Try.body, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.Try.handlers, ast2obj_excepthandler); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_handlers, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->handlers, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.Try.orelse, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_orelse, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->orelse, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.Try.finalbody, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_finalbody, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->finalbody, value) + == -1) goto failed; Py_DECREF(value); break; case Assert_kind: - result = PyType_GenericNew(Assert_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Assert_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.Assert.test); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_test, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->test, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.Assert.msg); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_msg, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->msg, value) == -1) goto failed; Py_DECREF(value); break; case Import_kind: - result = PyType_GenericNew(Import_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Import_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.Import.names, ast2obj_alias); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_names, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->names, value) == -1) goto failed; Py_DECREF(value); break; case ImportFrom_kind: - result = PyType_GenericNew(ImportFrom_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->ImportFrom_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_identifier(o->v.ImportFrom.module); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_module, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->module, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.ImportFrom.names, ast2obj_alias); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_names, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->names, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_int(o->v.ImportFrom.level); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_level, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->level, value) == -1) goto failed; Py_DECREF(value); break; case Global_kind: - result = PyType_GenericNew(Global_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Global_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.Global.names, ast2obj_identifier); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_names, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->names, value) == -1) goto failed; Py_DECREF(value); break; case Nonlocal_kind: - result = PyType_GenericNew(Nonlocal_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Nonlocal_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.Nonlocal.names, ast2obj_identifier); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_names, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->names, value) == -1) goto failed; Py_DECREF(value); break; case Expr_kind: - result = PyType_GenericNew(Expr_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Expr_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.Expr.value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); break; case Pass_kind: - result = PyType_GenericNew(Pass_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Pass_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; break; case Break_kind: - result = PyType_GenericNew(Break_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Break_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; break; case Continue_kind: - result = PyType_GenericNew(Continue_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Continue_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; break; } value = ast2obj_int(o->lineno); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_lineno, value) < 0) + if (PyObject_SetAttr(result, astmodulestate_global->lineno, value) < 0) goto failed; Py_DECREF(value); value = ast2obj_int(o->col_offset); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_col_offset, value) < 0) + if (PyObject_SetAttr(result, astmodulestate_global->col_offset, value) < 0) goto failed; Py_DECREF(value); value = ast2obj_int(o->end_lineno); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_end_lineno, value) < 0) + if (PyObject_SetAttr(result, astmodulestate_global->end_lineno, value) < 0) goto failed; Py_DECREF(value); value = ast2obj_int(o->end_col_offset); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_end_col_offset, value) < 0) + if (PyObject_SetAttr(result, astmodulestate_global->end_col_offset, value) + < 0) goto failed; Py_DECREF(value); return result; @@ -3233,223 +3956,249 @@ ast2obj_expr(void* _o) { expr_ty o = (expr_ty)_o; PyObject *result = NULL, *value = NULL; + PyTypeObject *tp; if (!o) { Py_RETURN_NONE; } switch (o->kind) { case BoolOp_kind: - result = PyType_GenericNew(BoolOp_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->BoolOp_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_boolop(o->v.BoolOp.op); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_op, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->op, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.BoolOp.values, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_values, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->values, value) == + -1) goto failed; Py_DECREF(value); break; case NamedExpr_kind: - result = PyType_GenericNew(NamedExpr_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->NamedExpr_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.NamedExpr.target); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_target, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->target, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.NamedExpr.value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); break; case BinOp_kind: - result = PyType_GenericNew(BinOp_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->BinOp_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.BinOp.left); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_left, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->left, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_operator(o->v.BinOp.op); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_op, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->op, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.BinOp.right); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_right, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->right, value) == -1) goto failed; Py_DECREF(value); break; case UnaryOp_kind: - result = PyType_GenericNew(UnaryOp_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->UnaryOp_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_unaryop(o->v.UnaryOp.op); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_op, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->op, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.UnaryOp.operand); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_operand, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->operand, value) == + -1) goto failed; Py_DECREF(value); break; case Lambda_kind: - result = PyType_GenericNew(Lambda_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Lambda_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_arguments(o->v.Lambda.args); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_args, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->args, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.Lambda.body); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); break; case IfExp_kind: - result = PyType_GenericNew(IfExp_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->IfExp_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.IfExp.test); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_test, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->test, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.IfExp.body); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.IfExp.orelse); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_orelse, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->orelse, value) == + -1) goto failed; Py_DECREF(value); break; case Dict_kind: - result = PyType_GenericNew(Dict_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Dict_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.Dict.keys, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_keys, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->keys, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.Dict.values, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_values, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->values, value) == + -1) goto failed; Py_DECREF(value); break; case Set_kind: - result = PyType_GenericNew(Set_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Set_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.Set.elts, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_elts, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->elts, value) == -1) goto failed; Py_DECREF(value); break; case ListComp_kind: - result = PyType_GenericNew(ListComp_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->ListComp_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.ListComp.elt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_elt, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->elt, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.ListComp.generators, ast2obj_comprehension); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_generators, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->generators, value) + == -1) goto failed; Py_DECREF(value); break; case SetComp_kind: - result = PyType_GenericNew(SetComp_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->SetComp_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.SetComp.elt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_elt, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->elt, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.SetComp.generators, ast2obj_comprehension); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_generators, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->generators, value) + == -1) goto failed; Py_DECREF(value); break; case DictComp_kind: - result = PyType_GenericNew(DictComp_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->DictComp_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.DictComp.key); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_key, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->key, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.DictComp.value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.DictComp.generators, ast2obj_comprehension); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_generators, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->generators, value) + == -1) goto failed; Py_DECREF(value); break; case GeneratorExp_kind: - result = PyType_GenericNew(GeneratorExp_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->GeneratorExp_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.GeneratorExp.elt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_elt, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->elt, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.GeneratorExp.generators, ast2obj_comprehension); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_generators, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->generators, value) + == -1) goto failed; Py_DECREF(value); break; case Await_kind: - result = PyType_GenericNew(Await_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Await_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.Await.value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); break; case Yield_kind: - result = PyType_GenericNew(Yield_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Yield_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.Yield.value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); break; case YieldFrom_kind: - result = PyType_GenericNew(YieldFrom_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->YieldFrom_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.YieldFrom.value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); break; case Compare_kind: - result = PyType_GenericNew(Compare_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Compare_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.Compare.left); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_left, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->left, value) == -1) goto failed; Py_DECREF(value); { @@ -3460,189 +4209,205 @@ ast2obj_expr(void* _o) PyList_SET_ITEM(value, i, ast2obj_cmpop((cmpop_ty)asdl_seq_GET(o->v.Compare.ops, i))); } if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_ops, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->ops, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.Compare.comparators, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_comparators, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->comparators, value) + == -1) goto failed; Py_DECREF(value); break; case Call_kind: - result = PyType_GenericNew(Call_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Call_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.Call.func); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_func, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->func, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.Call.args, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_args, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->args, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.Call.keywords, ast2obj_keyword); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_keywords, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->keywords, value) == + -1) goto failed; Py_DECREF(value); break; case FormattedValue_kind: - result = PyType_GenericNew(FormattedValue_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->FormattedValue_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.FormattedValue.value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_int(o->v.FormattedValue.conversion); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_conversion, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->conversion, value) + == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.FormattedValue.format_spec); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_format_spec, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->format_spec, value) + == -1) goto failed; Py_DECREF(value); break; case JoinedStr_kind: - result = PyType_GenericNew(JoinedStr_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->JoinedStr_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.JoinedStr.values, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_values, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->values, value) == + -1) goto failed; Py_DECREF(value); break; case Constant_kind: - result = PyType_GenericNew(Constant_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Constant_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_constant(o->v.Constant.value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_string(o->v.Constant.kind); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_kind, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->kind, value) == -1) goto failed; Py_DECREF(value); break; case Attribute_kind: - result = PyType_GenericNew(Attribute_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Attribute_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.Attribute.value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_identifier(o->v.Attribute.attr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_attr, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->attr, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr_context(o->v.Attribute.ctx); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_ctx, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->ctx, value) == -1) goto failed; Py_DECREF(value); break; case Subscript_kind: - result = PyType_GenericNew(Subscript_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Subscript_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.Subscript.value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_slice(o->v.Subscript.slice); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_slice, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->slice, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr_context(o->v.Subscript.ctx); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_ctx, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->ctx, value) == -1) goto failed; Py_DECREF(value); break; case Starred_kind: - result = PyType_GenericNew(Starred_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Starred_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.Starred.value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr_context(o->v.Starred.ctx); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_ctx, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->ctx, value) == -1) goto failed; Py_DECREF(value); break; case Name_kind: - result = PyType_GenericNew(Name_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Name_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_identifier(o->v.Name.id); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_id, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->id, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr_context(o->v.Name.ctx); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_ctx, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->ctx, value) == -1) goto failed; Py_DECREF(value); break; case List_kind: - result = PyType_GenericNew(List_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->List_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.List.elts, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_elts, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->elts, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr_context(o->v.List.ctx); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_ctx, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->ctx, value) == -1) goto failed; Py_DECREF(value); break; case Tuple_kind: - result = PyType_GenericNew(Tuple_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Tuple_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.Tuple.elts, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_elts, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->elts, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr_context(o->v.Tuple.ctx); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_ctx, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->ctx, value) == -1) goto failed; Py_DECREF(value); break; } value = ast2obj_int(o->lineno); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_lineno, value) < 0) + if (PyObject_SetAttr(result, astmodulestate_global->lineno, value) < 0) goto failed; Py_DECREF(value); value = ast2obj_int(o->col_offset); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_col_offset, value) < 0) + if (PyObject_SetAttr(result, astmodulestate_global->col_offset, value) < 0) goto failed; Py_DECREF(value); value = ast2obj_int(o->end_lineno); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_end_lineno, value) < 0) + if (PyObject_SetAttr(result, astmodulestate_global->end_lineno, value) < 0) goto failed; Py_DECREF(value); value = ast2obj_int(o->end_col_offset); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_end_col_offset, value) < 0) + if (PyObject_SetAttr(result, astmodulestate_global->end_col_offset, value) + < 0) goto failed; Py_DECREF(value); return result; @@ -3656,23 +4421,23 @@ PyObject* ast2obj_expr_context(expr_context_ty o) { switch(o) { case Load: - Py_INCREF(Load_singleton); - return Load_singleton; + Py_INCREF(astmodulestate_global->Load_singleton); + return astmodulestate_global->Load_singleton; case Store: - Py_INCREF(Store_singleton); - return Store_singleton; + Py_INCREF(astmodulestate_global->Store_singleton); + return astmodulestate_global->Store_singleton; case Del: - Py_INCREF(Del_singleton); - return Del_singleton; + Py_INCREF(astmodulestate_global->Del_singleton); + return astmodulestate_global->Del_singleton; case AugLoad: - Py_INCREF(AugLoad_singleton); - return AugLoad_singleton; + Py_INCREF(astmodulestate_global->AugLoad_singleton); + return astmodulestate_global->AugLoad_singleton; case AugStore: - Py_INCREF(AugStore_singleton); - return AugStore_singleton; + Py_INCREF(astmodulestate_global->AugStore_singleton); + return astmodulestate_global->AugStore_singleton; case Param: - Py_INCREF(Param_singleton); - return Param_singleton; + Py_INCREF(astmodulestate_global->Param_singleton); + return astmodulestate_global->Param_singleton; default: /* should never happen, but just in case ... */ PyErr_Format(PyExc_SystemError, "unknown expr_context found"); @@ -3684,45 +4449,49 @@ ast2obj_slice(void* _o) { slice_ty o = (slice_ty)_o; PyObject *result = NULL, *value = NULL; + PyTypeObject *tp; if (!o) { Py_RETURN_NONE; } switch (o->kind) { case Slice_kind: - result = PyType_GenericNew(Slice_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Slice_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.Slice.lower); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_lower, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->lower, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.Slice.upper); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_upper, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->upper, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->v.Slice.step); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_step, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->step, value) == -1) goto failed; Py_DECREF(value); break; case ExtSlice_kind: - result = PyType_GenericNew(ExtSlice_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->ExtSlice_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_list(o->v.ExtSlice.dims, ast2obj_slice); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_dims, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->dims, value) == -1) goto failed; Py_DECREF(value); break; case Index_kind: - result = PyType_GenericNew(Index_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->Index_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.Index.value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); break; @@ -3738,11 +4507,11 @@ PyObject* ast2obj_boolop(boolop_ty o) { switch(o) { case And: - Py_INCREF(And_singleton); - return And_singleton; + Py_INCREF(astmodulestate_global->And_singleton); + return astmodulestate_global->And_singleton; case Or: - Py_INCREF(Or_singleton); - return Or_singleton; + Py_INCREF(astmodulestate_global->Or_singleton); + return astmodulestate_global->Or_singleton; default: /* should never happen, but just in case ... */ PyErr_Format(PyExc_SystemError, "unknown boolop found"); @@ -3753,44 +4522,44 @@ PyObject* ast2obj_operator(operator_ty o) { switch(o) { case Add: - Py_INCREF(Add_singleton); - return Add_singleton; + Py_INCREF(astmodulestate_global->Add_singleton); + return astmodulestate_global->Add_singleton; case Sub: - Py_INCREF(Sub_singleton); - return Sub_singleton; + Py_INCREF(astmodulestate_global->Sub_singleton); + return astmodulestate_global->Sub_singleton; case Mult: - Py_INCREF(Mult_singleton); - return Mult_singleton; + Py_INCREF(astmodulestate_global->Mult_singleton); + return astmodulestate_global->Mult_singleton; case MatMult: - Py_INCREF(MatMult_singleton); - return MatMult_singleton; + Py_INCREF(astmodulestate_global->MatMult_singleton); + return astmodulestate_global->MatMult_singleton; case Div: - Py_INCREF(Div_singleton); - return Div_singleton; + Py_INCREF(astmodulestate_global->Div_singleton); + return astmodulestate_global->Div_singleton; case Mod: - Py_INCREF(Mod_singleton); - return Mod_singleton; + Py_INCREF(astmodulestate_global->Mod_singleton); + return astmodulestate_global->Mod_singleton; case Pow: - Py_INCREF(Pow_singleton); - return Pow_singleton; + Py_INCREF(astmodulestate_global->Pow_singleton); + return astmodulestate_global->Pow_singleton; case LShift: - Py_INCREF(LShift_singleton); - return LShift_singleton; + Py_INCREF(astmodulestate_global->LShift_singleton); + return astmodulestate_global->LShift_singleton; case RShift: - Py_INCREF(RShift_singleton); - return RShift_singleton; + Py_INCREF(astmodulestate_global->RShift_singleton); + return astmodulestate_global->RShift_singleton; case BitOr: - Py_INCREF(BitOr_singleton); - return BitOr_singleton; + Py_INCREF(astmodulestate_global->BitOr_singleton); + return astmodulestate_global->BitOr_singleton; case BitXor: - Py_INCREF(BitXor_singleton); - return BitXor_singleton; + Py_INCREF(astmodulestate_global->BitXor_singleton); + return astmodulestate_global->BitXor_singleton; case BitAnd: - Py_INCREF(BitAnd_singleton); - return BitAnd_singleton; + Py_INCREF(astmodulestate_global->BitAnd_singleton); + return astmodulestate_global->BitAnd_singleton; case FloorDiv: - Py_INCREF(FloorDiv_singleton); - return FloorDiv_singleton; + Py_INCREF(astmodulestate_global->FloorDiv_singleton); + return astmodulestate_global->FloorDiv_singleton; default: /* should never happen, but just in case ... */ PyErr_Format(PyExc_SystemError, "unknown operator found"); @@ -3801,17 +4570,17 @@ PyObject* ast2obj_unaryop(unaryop_ty o) { switch(o) { case Invert: - Py_INCREF(Invert_singleton); - return Invert_singleton; + Py_INCREF(astmodulestate_global->Invert_singleton); + return astmodulestate_global->Invert_singleton; case Not: - Py_INCREF(Not_singleton); - return Not_singleton; + Py_INCREF(astmodulestate_global->Not_singleton); + return astmodulestate_global->Not_singleton; case UAdd: - Py_INCREF(UAdd_singleton); - return UAdd_singleton; + Py_INCREF(astmodulestate_global->UAdd_singleton); + return astmodulestate_global->UAdd_singleton; case USub: - Py_INCREF(USub_singleton); - return USub_singleton; + Py_INCREF(astmodulestate_global->USub_singleton); + return astmodulestate_global->USub_singleton; default: /* should never happen, but just in case ... */ PyErr_Format(PyExc_SystemError, "unknown unaryop found"); @@ -3822,35 +4591,35 @@ PyObject* ast2obj_cmpop(cmpop_ty o) { switch(o) { case Eq: - Py_INCREF(Eq_singleton); - return Eq_singleton; + Py_INCREF(astmodulestate_global->Eq_singleton); + return astmodulestate_global->Eq_singleton; case NotEq: - Py_INCREF(NotEq_singleton); - return NotEq_singleton; + Py_INCREF(astmodulestate_global->NotEq_singleton); + return astmodulestate_global->NotEq_singleton; case Lt: - Py_INCREF(Lt_singleton); - return Lt_singleton; + Py_INCREF(astmodulestate_global->Lt_singleton); + return astmodulestate_global->Lt_singleton; case LtE: - Py_INCREF(LtE_singleton); - return LtE_singleton; + Py_INCREF(astmodulestate_global->LtE_singleton); + return astmodulestate_global->LtE_singleton; case Gt: - Py_INCREF(Gt_singleton); - return Gt_singleton; + Py_INCREF(astmodulestate_global->Gt_singleton); + return astmodulestate_global->Gt_singleton; case GtE: - Py_INCREF(GtE_singleton); - return GtE_singleton; + Py_INCREF(astmodulestate_global->GtE_singleton); + return astmodulestate_global->GtE_singleton; case Is: - Py_INCREF(Is_singleton); - return Is_singleton; + Py_INCREF(astmodulestate_global->Is_singleton); + return astmodulestate_global->Is_singleton; case IsNot: - Py_INCREF(IsNot_singleton); - return IsNot_singleton; + Py_INCREF(astmodulestate_global->IsNot_singleton); + return astmodulestate_global->IsNot_singleton; case In: - Py_INCREF(In_singleton); - return In_singleton; + Py_INCREF(astmodulestate_global->In_singleton); + return astmodulestate_global->In_singleton; case NotIn: - Py_INCREF(NotIn_singleton); - return NotIn_singleton; + Py_INCREF(astmodulestate_global->NotIn_singleton); + return astmodulestate_global->NotIn_singleton; default: /* should never happen, but just in case ... */ PyErr_Format(PyExc_SystemError, "unknown cmpop found"); @@ -3862,30 +4631,32 @@ ast2obj_comprehension(void* _o) { comprehension_ty o = (comprehension_ty)_o; PyObject *result = NULL, *value = NULL; + PyTypeObject *tp; if (!o) { Py_RETURN_NONE; } - result = PyType_GenericNew(comprehension_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->comprehension_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) return NULL; value = ast2obj_expr(o->target); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_target, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->target, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->iter); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_iter, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->iter, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->ifs, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_ifs, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->ifs, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_int(o->is_async); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_is_async, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->is_async, value) == -1) goto failed; Py_DECREF(value); return result; @@ -3900,49 +4671,52 @@ ast2obj_excepthandler(void* _o) { excepthandler_ty o = (excepthandler_ty)_o; PyObject *result = NULL, *value = NULL; + PyTypeObject *tp; if (!o) { Py_RETURN_NONE; } switch (o->kind) { case ExceptHandler_kind: - result = PyType_GenericNew(ExceptHandler_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->ExceptHandler_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_expr(o->v.ExceptHandler.type); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_type, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->type, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_identifier(o->v.ExceptHandler.name); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_name, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->name, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->v.ExceptHandler.body, ast2obj_stmt); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->body, value) == -1) goto failed; Py_DECREF(value); break; } value = ast2obj_int(o->lineno); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_lineno, value) < 0) + if (PyObject_SetAttr(result, astmodulestate_global->lineno, value) < 0) goto failed; Py_DECREF(value); value = ast2obj_int(o->col_offset); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_col_offset, value) < 0) + if (PyObject_SetAttr(result, astmodulestate_global->col_offset, value) < 0) goto failed; Py_DECREF(value); value = ast2obj_int(o->end_lineno); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_end_lineno, value) < 0) + if (PyObject_SetAttr(result, astmodulestate_global->end_lineno, value) < 0) goto failed; Py_DECREF(value); value = ast2obj_int(o->end_col_offset); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_end_col_offset, value) < 0) + if (PyObject_SetAttr(result, astmodulestate_global->end_col_offset, value) + < 0) goto failed; Py_DECREF(value); return result; @@ -3957,45 +4731,50 @@ ast2obj_arguments(void* _o) { arguments_ty o = (arguments_ty)_o; PyObject *result = NULL, *value = NULL; + PyTypeObject *tp; if (!o) { Py_RETURN_NONE; } - result = PyType_GenericNew(arguments_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->arguments_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) return NULL; value = ast2obj_list(o->posonlyargs, ast2obj_arg); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_posonlyargs, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->posonlyargs, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->args, ast2obj_arg); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_args, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->args, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_arg(o->vararg); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_vararg, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->vararg, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->kwonlyargs, ast2obj_arg); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_kwonlyargs, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->kwonlyargs, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->kw_defaults, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_kw_defaults, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->kw_defaults, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_arg(o->kwarg); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_kwarg, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->kwarg, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->defaults, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_defaults, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->defaults, value) == -1) goto failed; Py_DECREF(value); return result; @@ -4010,45 +4789,50 @@ ast2obj_arg(void* _o) { arg_ty o = (arg_ty)_o; PyObject *result = NULL, *value = NULL; + PyTypeObject *tp; if (!o) { Py_RETURN_NONE; } - result = PyType_GenericNew(arg_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->arg_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) return NULL; value = ast2obj_identifier(o->arg); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_arg, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->arg, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->annotation); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_annotation, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->annotation, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_string(o->type_comment); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_type_comment, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->type_comment, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_int(o->lineno); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_lineno, value) < 0) + if (PyObject_SetAttr(result, astmodulestate_global->lineno, value) < 0) goto failed; Py_DECREF(value); value = ast2obj_int(o->col_offset); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_col_offset, value) < 0) + if (PyObject_SetAttr(result, astmodulestate_global->col_offset, value) < 0) goto failed; Py_DECREF(value); value = ast2obj_int(o->end_lineno); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_end_lineno, value) < 0) + if (PyObject_SetAttr(result, astmodulestate_global->end_lineno, value) < 0) goto failed; Py_DECREF(value); value = ast2obj_int(o->end_col_offset); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_end_col_offset, value) < 0) + if (PyObject_SetAttr(result, astmodulestate_global->end_col_offset, value) + < 0) goto failed; Py_DECREF(value); return result; @@ -4063,20 +4847,22 @@ ast2obj_keyword(void* _o) { keyword_ty o = (keyword_ty)_o; PyObject *result = NULL, *value = NULL; + PyTypeObject *tp; if (!o) { Py_RETURN_NONE; } - result = PyType_GenericNew(keyword_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->keyword_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) return NULL; value = ast2obj_identifier(o->arg); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_arg, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->arg, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->value); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->value, value) == -1) goto failed; Py_DECREF(value); return result; @@ -4091,20 +4877,22 @@ ast2obj_alias(void* _o) { alias_ty o = (alias_ty)_o; PyObject *result = NULL, *value = NULL; + PyTypeObject *tp; if (!o) { Py_RETURN_NONE; } - result = PyType_GenericNew(alias_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->alias_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) return NULL; value = ast2obj_identifier(o->name); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_name, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->name, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_identifier(o->asname); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_asname, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->asname, value) == -1) goto failed; Py_DECREF(value); return result; @@ -4119,20 +4907,24 @@ ast2obj_withitem(void* _o) { withitem_ty o = (withitem_ty)_o; PyObject *result = NULL, *value = NULL; + PyTypeObject *tp; if (!o) { Py_RETURN_NONE; } - result = PyType_GenericNew(withitem_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->withitem_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) return NULL; value = ast2obj_expr(o->context_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_context_expr, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->context_expr, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_expr(o->optional_vars); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_optional_vars, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->optional_vars, value) + == -1) goto failed; Py_DECREF(value); return result; @@ -4147,22 +4939,25 @@ ast2obj_type_ignore(void* _o) { type_ignore_ty o = (type_ignore_ty)_o; PyObject *result = NULL, *value = NULL; + PyTypeObject *tp; if (!o) { Py_RETURN_NONE; } switch (o->kind) { case TypeIgnore_kind: - result = PyType_GenericNew(TypeIgnore_type, NULL, NULL); + tp = (PyTypeObject *)astmodulestate_global->TypeIgnore_type; + result = PyType_GenericNew(tp, NULL, NULL); if (!result) goto failed; value = ast2obj_int(o->v.TypeIgnore.lineno); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_lineno, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->lineno, value) == + -1) goto failed; Py_DECREF(value); value = ast2obj_string(o->v.TypeIgnore.tag); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_tag, value) == -1) + if (PyObject_SetAttr(result, astmodulestate_global->tag, value) == -1) goto failed; Py_DECREF(value); break; @@ -4181,12 +4976,14 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) int isinstance; PyObject *tmp = NULL; + PyObject *tp; if (obj == Py_None) { *out = NULL; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Module_type); + tp = astmodulestate_global->Module_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -4194,7 +4991,7 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) asdl_seq* body; asdl_seq* type_ignores; - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4206,7 +5003,7 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Module field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Module field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -4227,7 +5024,8 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_type_ignores, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->type_ignores, + &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4239,7 +5037,7 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Module field \"type_ignores\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Module field \"type_ignores\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -4264,14 +5062,15 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Interactive_type); + tp = astmodulestate_global->Interactive_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } if (isinstance) { asdl_seq* body; - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4283,7 +5082,7 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Interactive field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Interactive field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -4308,14 +5107,15 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Expression_type); + tp = astmodulestate_global->Expression_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } if (isinstance) { expr_ty body; - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4332,7 +5132,8 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)FunctionType_type); + tp = astmodulestate_global->FunctionType_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -4340,7 +5141,8 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) asdl_seq* argtypes; expr_ty returns; - if (_PyObject_LookupAttrId(obj, &PyId_argtypes, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->argtypes, &tmp) < + 0) { return 1; } if (tmp == NULL) { @@ -4352,7 +5154,7 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "FunctionType field \"argtypes\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "FunctionType field \"argtypes\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -4373,7 +5175,8 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_returns, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->returns, &tmp) < + 0) { return 1; } if (tmp == NULL) { @@ -4390,14 +5193,15 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Suite_type); + tp = astmodulestate_global->Suite_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } if (isinstance) { asdl_seq* body; - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4409,7 +5213,7 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Suite field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Suite field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -4447,6 +5251,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) int isinstance; PyObject *tmp = NULL; + PyObject *tp; int lineno; int col_offset; int end_lineno; @@ -4456,7 +5261,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) *out = NULL; return 0; } - if (_PyObject_LookupAttrId(obj, &PyId_lineno, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->lineno, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4469,7 +5274,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_col_offset, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->col_offset, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -4482,7 +5288,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_end_lineno, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->end_lineno, &tmp) < 0) + { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -4495,7 +5302,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_end_col_offset, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->end_col_offset, &tmp) + < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -4508,7 +5316,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - isinstance = PyObject_IsInstance(obj, (PyObject*)FunctionDef_type); + tp = astmodulestate_global->FunctionDef_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -4520,7 +5329,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) expr_ty returns; string type_comment; - if (_PyObject_LookupAttrId(obj, &PyId_name, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->name, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4533,7 +5342,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_args, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->args, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4546,7 +5355,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4558,7 +5367,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "FunctionDef field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "FunctionDef field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -4579,7 +5388,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_decorator_list, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->decorator_list, + &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4591,7 +5401,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "FunctionDef field \"decorator_list\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "FunctionDef field \"decorator_list\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -4612,7 +5422,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_returns, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->returns, &tmp) < + 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -4625,7 +5436,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_type_comment, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->type_comment, + &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -4644,7 +5456,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)AsyncFunctionDef_type); + tp = astmodulestate_global->AsyncFunctionDef_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -4656,7 +5469,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) expr_ty returns; string type_comment; - if (_PyObject_LookupAttrId(obj, &PyId_name, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->name, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4669,7 +5482,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_args, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->args, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4682,7 +5495,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4694,7 +5507,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -4715,7 +5528,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_decorator_list, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->decorator_list, + &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4727,7 +5541,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field \"decorator_list\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field \"decorator_list\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -4748,7 +5562,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_returns, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->returns, &tmp) < + 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -4761,7 +5576,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_type_comment, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->type_comment, + &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -4780,7 +5596,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)ClassDef_type); + tp = astmodulestate_global->ClassDef_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -4791,7 +5608,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) asdl_seq* body; asdl_seq* decorator_list; - if (_PyObject_LookupAttrId(obj, &PyId_name, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->name, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4804,7 +5621,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_bases, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->bases, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4816,7 +5633,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "ClassDef field \"bases\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "ClassDef field \"bases\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -4837,7 +5654,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_keywords, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->keywords, &tmp) < + 0) { return 1; } if (tmp == NULL) { @@ -4849,7 +5667,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "ClassDef field \"keywords\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "ClassDef field \"keywords\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -4870,7 +5688,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4882,7 +5700,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "ClassDef field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "ClassDef field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -4903,7 +5721,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_decorator_list, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->decorator_list, + &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -4915,7 +5734,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "ClassDef field \"decorator_list\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "ClassDef field \"decorator_list\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -4941,14 +5760,15 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Return_type); + tp = astmodulestate_global->Return_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } if (isinstance) { expr_ty value; - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -4966,14 +5786,16 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Delete_type); + tp = astmodulestate_global->Delete_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } if (isinstance) { asdl_seq* targets; - if (_PyObject_LookupAttrId(obj, &PyId_targets, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->targets, &tmp) < + 0) { return 1; } if (tmp == NULL) { @@ -4985,7 +5807,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Delete field \"targets\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Delete field \"targets\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5011,7 +5833,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Assign_type); + tp = astmodulestate_global->Assign_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -5020,7 +5843,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) expr_ty value; string type_comment; - if (_PyObject_LookupAttrId(obj, &PyId_targets, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->targets, &tmp) < + 0) { return 1; } if (tmp == NULL) { @@ -5032,7 +5856,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Assign field \"targets\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Assign field \"targets\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5053,7 +5877,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -5066,7 +5890,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_type_comment, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->type_comment, + &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -5084,7 +5909,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)AugAssign_type); + tp = astmodulestate_global->AugAssign_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -5093,7 +5919,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) operator_ty op; expr_ty value; - if (_PyObject_LookupAttrId(obj, &PyId_target, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->target, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -5106,7 +5933,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_op, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->op, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -5119,7 +5946,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -5137,7 +5964,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)AnnAssign_type); + tp = astmodulestate_global->AnnAssign_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -5147,7 +5975,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) expr_ty value; int simple; - if (_PyObject_LookupAttrId(obj, &PyId_target, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->target, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -5160,7 +5989,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_annotation, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->annotation, &tmp) + < 0) { return 1; } if (tmp == NULL) { @@ -5173,7 +6003,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -5186,7 +6016,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_simple, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->simple, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -5204,7 +6035,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)For_type); + tp = astmodulestate_global->For_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -5215,7 +6047,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) asdl_seq* orelse; string type_comment; - if (_PyObject_LookupAttrId(obj, &PyId_target, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->target, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -5228,7 +6061,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_iter, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->iter, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -5241,7 +6074,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -5253,7 +6086,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "For field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "For field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5274,7 +6107,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_orelse, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->orelse, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -5286,7 +6120,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "For field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "For field \"orelse\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5307,7 +6141,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_type_comment, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->type_comment, + &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -5325,7 +6160,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)AsyncFor_type); + tp = astmodulestate_global->AsyncFor_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -5336,7 +6172,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) asdl_seq* orelse; string type_comment; - if (_PyObject_LookupAttrId(obj, &PyId_target, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->target, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -5349,7 +6186,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_iter, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->iter, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -5362,7 +6199,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -5374,7 +6211,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "AsyncFor field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "AsyncFor field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5395,7 +6232,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_orelse, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->orelse, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -5407,7 +6245,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "AsyncFor field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "AsyncFor field \"orelse\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5428,7 +6266,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_type_comment, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->type_comment, + &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -5446,7 +6285,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)While_type); + tp = astmodulestate_global->While_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -5455,7 +6295,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) asdl_seq* body; asdl_seq* orelse; - if (_PyObject_LookupAttrId(obj, &PyId_test, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->test, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -5468,7 +6308,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -5480,7 +6320,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "While field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "While field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5501,7 +6341,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_orelse, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->orelse, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -5513,7 +6354,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "While field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "While field \"orelse\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5539,7 +6380,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)If_type); + tp = astmodulestate_global->If_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -5548,7 +6390,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) asdl_seq* body; asdl_seq* orelse; - if (_PyObject_LookupAttrId(obj, &PyId_test, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->test, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -5561,7 +6403,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -5573,7 +6415,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "If field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "If field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5594,7 +6436,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_orelse, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->orelse, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -5606,7 +6449,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "If field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "If field \"orelse\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5632,7 +6475,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)With_type); + tp = astmodulestate_global->With_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -5641,7 +6485,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) asdl_seq* body; string type_comment; - if (_PyObject_LookupAttrId(obj, &PyId_items, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->items, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -5653,7 +6497,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "With field \"items\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "With field \"items\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5674,7 +6518,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -5686,7 +6530,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "With field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "With field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5707,7 +6551,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_type_comment, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->type_comment, + &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -5725,7 +6570,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)AsyncWith_type); + tp = astmodulestate_global->AsyncWith_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -5734,7 +6580,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) asdl_seq* body; string type_comment; - if (_PyObject_LookupAttrId(obj, &PyId_items, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->items, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -5746,7 +6592,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "AsyncWith field \"items\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "AsyncWith field \"items\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5767,7 +6613,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -5779,7 +6625,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "AsyncWith field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "AsyncWith field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5800,7 +6646,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_type_comment, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->type_comment, + &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -5818,7 +6665,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Raise_type); + tp = astmodulestate_global->Raise_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -5826,7 +6674,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) expr_ty exc; expr_ty cause; - if (_PyObject_LookupAttrId(obj, &PyId_exc, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->exc, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -5839,7 +6687,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_cause, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->cause, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -5857,7 +6705,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Try_type); + tp = astmodulestate_global->Try_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -5867,7 +6716,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) asdl_seq* orelse; asdl_seq* finalbody; - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -5879,7 +6728,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Try field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Try field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5900,7 +6749,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_handlers, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->handlers, &tmp) < + 0) { return 1; } if (tmp == NULL) { @@ -5912,7 +6762,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Try field \"handlers\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Try field \"handlers\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5933,7 +6783,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_orelse, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->orelse, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -5945,7 +6796,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Try field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Try field \"orelse\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -5966,7 +6817,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_finalbody, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->finalbody, &tmp) < + 0) { return 1; } if (tmp == NULL) { @@ -5978,7 +6830,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Try field \"finalbody\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Try field \"finalbody\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -6004,7 +6856,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Assert_type); + tp = astmodulestate_global->Assert_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -6012,7 +6865,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) expr_ty test; expr_ty msg; - if (_PyObject_LookupAttrId(obj, &PyId_test, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->test, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6025,7 +6878,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_msg, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->msg, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -6043,14 +6896,15 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Import_type); + tp = astmodulestate_global->Import_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } if (isinstance) { asdl_seq* names; - if (_PyObject_LookupAttrId(obj, &PyId_names, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->names, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6062,7 +6916,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Import field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Import field \"names\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -6088,7 +6942,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)ImportFrom_type); + tp = astmodulestate_global->ImportFrom_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -6097,7 +6952,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) asdl_seq* names; int level; - if (_PyObject_LookupAttrId(obj, &PyId_module, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->module, &tmp) < 0) + { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -6110,7 +6966,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_names, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->names, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6122,7 +6978,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "ImportFrom field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "ImportFrom field \"names\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -6143,7 +6999,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_level, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->level, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -6161,14 +7017,15 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Global_type); + tp = astmodulestate_global->Global_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } if (isinstance) { asdl_seq* names; - if (_PyObject_LookupAttrId(obj, &PyId_names, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->names, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6180,7 +7037,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Global field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Global field \"names\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -6206,14 +7063,15 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Nonlocal_type); + tp = astmodulestate_global->Nonlocal_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } if (isinstance) { asdl_seq* names; - if (_PyObject_LookupAttrId(obj, &PyId_names, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->names, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6225,7 +7083,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Nonlocal field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Nonlocal field \"names\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -6251,14 +7109,15 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Expr_type); + tp = astmodulestate_global->Expr_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } if (isinstance) { expr_ty value; - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6276,7 +7135,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Pass_type); + tp = astmodulestate_global->Pass_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -6286,7 +7146,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Break_type); + tp = astmodulestate_global->Break_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -6296,7 +7157,8 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Continue_type); + tp = astmodulestate_global->Continue_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -6319,6 +7181,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) int isinstance; PyObject *tmp = NULL; + PyObject *tp; int lineno; int col_offset; int end_lineno; @@ -6328,7 +7191,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) *out = NULL; return 0; } - if (_PyObject_LookupAttrId(obj, &PyId_lineno, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->lineno, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6341,7 +7204,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_col_offset, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->col_offset, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -6354,7 +7218,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_end_lineno, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->end_lineno, &tmp) < 0) + { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -6367,7 +7232,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_end_col_offset, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->end_col_offset, &tmp) + < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -6380,7 +7246,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - isinstance = PyObject_IsInstance(obj, (PyObject*)BoolOp_type); + tp = astmodulestate_global->BoolOp_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -6388,7 +7255,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) boolop_ty op; asdl_seq* values; - if (_PyObject_LookupAttrId(obj, &PyId_op, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->op, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6401,7 +7268,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_values, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->values, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -6413,7 +7281,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "BoolOp field \"values\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "BoolOp field \"values\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -6439,7 +7307,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)NamedExpr_type); + tp = astmodulestate_global->NamedExpr_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -6447,7 +7316,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) expr_ty target; expr_ty value; - if (_PyObject_LookupAttrId(obj, &PyId_target, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->target, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -6460,7 +7330,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6478,7 +7348,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)BinOp_type); + tp = astmodulestate_global->BinOp_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -6487,7 +7358,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) operator_ty op; expr_ty right; - if (_PyObject_LookupAttrId(obj, &PyId_left, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->left, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6500,7 +7371,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_op, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->op, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6513,7 +7384,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_right, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->right, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6531,7 +7402,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)UnaryOp_type); + tp = astmodulestate_global->UnaryOp_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -6539,7 +7411,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) unaryop_ty op; expr_ty operand; - if (_PyObject_LookupAttrId(obj, &PyId_op, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->op, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6552,7 +7424,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_operand, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->operand, &tmp) < + 0) { return 1; } if (tmp == NULL) { @@ -6570,7 +7443,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Lambda_type); + tp = astmodulestate_global->Lambda_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -6578,7 +7452,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) arguments_ty args; expr_ty body; - if (_PyObject_LookupAttrId(obj, &PyId_args, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->args, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6591,7 +7465,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6609,7 +7483,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)IfExp_type); + tp = astmodulestate_global->IfExp_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -6618,7 +7493,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) expr_ty body; expr_ty orelse; - if (_PyObject_LookupAttrId(obj, &PyId_test, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->test, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6631,7 +7506,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6644,7 +7519,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_orelse, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->orelse, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -6662,7 +7538,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Dict_type); + tp = astmodulestate_global->Dict_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -6670,7 +7547,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) asdl_seq* keys; asdl_seq* values; - if (_PyObject_LookupAttrId(obj, &PyId_keys, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->keys, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6682,7 +7559,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Dict field \"keys\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Dict field \"keys\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -6703,7 +7580,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_values, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->values, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -6715,7 +7593,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Dict field \"values\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Dict field \"values\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -6741,14 +7619,15 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Set_type); + tp = astmodulestate_global->Set_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } if (isinstance) { asdl_seq* elts; - if (_PyObject_LookupAttrId(obj, &PyId_elts, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->elts, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6760,7 +7639,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Set field \"elts\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Set field \"elts\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -6785,7 +7664,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)ListComp_type); + tp = astmodulestate_global->ListComp_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -6793,7 +7673,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) expr_ty elt; asdl_seq* generators; - if (_PyObject_LookupAttrId(obj, &PyId_elt, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->elt, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6806,7 +7686,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_generators, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->generators, &tmp) + < 0) { return 1; } if (tmp == NULL) { @@ -6818,7 +7699,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "ListComp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "ListComp field \"generators\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -6844,7 +7725,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)SetComp_type); + tp = astmodulestate_global->SetComp_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -6852,7 +7734,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) expr_ty elt; asdl_seq* generators; - if (_PyObject_LookupAttrId(obj, &PyId_elt, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->elt, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6865,7 +7747,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_generators, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->generators, &tmp) + < 0) { return 1; } if (tmp == NULL) { @@ -6877,7 +7760,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "SetComp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "SetComp field \"generators\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -6903,7 +7786,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)DictComp_type); + tp = astmodulestate_global->DictComp_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -6912,7 +7796,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) expr_ty value; asdl_seq* generators; - if (_PyObject_LookupAttrId(obj, &PyId_key, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->key, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6925,7 +7809,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6938,7 +7822,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_generators, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->generators, &tmp) + < 0) { return 1; } if (tmp == NULL) { @@ -6950,7 +7835,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "DictComp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "DictComp field \"generators\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -6976,7 +7861,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)GeneratorExp_type); + tp = astmodulestate_global->GeneratorExp_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -6984,7 +7870,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) expr_ty elt; asdl_seq* generators; - if (_PyObject_LookupAttrId(obj, &PyId_elt, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->elt, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -6997,7 +7883,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_generators, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->generators, &tmp) + < 0) { return 1; } if (tmp == NULL) { @@ -7009,7 +7896,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "GeneratorExp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "GeneratorExp field \"generators\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -7035,14 +7922,15 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Await_type); + tp = astmodulestate_global->Await_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } if (isinstance) { expr_ty value; - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7060,14 +7948,15 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Yield_type); + tp = astmodulestate_global->Yield_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } if (isinstance) { expr_ty value; - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -7085,14 +7974,15 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)YieldFrom_type); + tp = astmodulestate_global->YieldFrom_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } if (isinstance) { expr_ty value; - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7110,7 +8000,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Compare_type); + tp = astmodulestate_global->Compare_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -7119,7 +8010,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) asdl_int_seq* ops; asdl_seq* comparators; - if (_PyObject_LookupAttrId(obj, &PyId_left, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->left, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7132,7 +8023,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_ops, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->ops, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7144,7 +8035,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Compare field \"ops\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Compare field \"ops\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -7165,7 +8056,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_comparators, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->comparators, &tmp) + < 0) { return 1; } if (tmp == NULL) { @@ -7177,7 +8069,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Compare field \"comparators\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Compare field \"comparators\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -7203,7 +8095,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Call_type); + tp = astmodulestate_global->Call_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -7212,7 +8105,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) asdl_seq* args; asdl_seq* keywords; - if (_PyObject_LookupAttrId(obj, &PyId_func, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->func, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7225,7 +8118,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_args, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->args, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7237,7 +8130,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Call field \"args\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Call field \"args\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -7258,7 +8151,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_keywords, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->keywords, &tmp) < + 0) { return 1; } if (tmp == NULL) { @@ -7270,7 +8164,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Call field \"keywords\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Call field \"keywords\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -7296,7 +8190,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)FormattedValue_type); + tp = astmodulestate_global->FormattedValue_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -7305,7 +8200,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) int conversion; expr_ty format_spec; - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7318,7 +8213,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_conversion, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->conversion, &tmp) + < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -7331,7 +8227,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_format_spec, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->format_spec, &tmp) + < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -7349,14 +8246,16 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)JoinedStr_type); + tp = astmodulestate_global->JoinedStr_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } if (isinstance) { asdl_seq* values; - if (_PyObject_LookupAttrId(obj, &PyId_values, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->values, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -7368,7 +8267,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "JoinedStr field \"values\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "JoinedStr field \"values\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -7394,7 +8293,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Constant_type); + tp = astmodulestate_global->Constant_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -7402,7 +8302,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) constant value; string kind; - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7415,7 +8315,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_kind, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->kind, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -7433,7 +8333,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Attribute_type); + tp = astmodulestate_global->Attribute_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -7442,7 +8343,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) identifier attr; expr_context_ty ctx; - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7455,7 +8356,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_attr, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->attr, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7468,7 +8369,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_ctx, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->ctx, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7486,7 +8387,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Subscript_type); + tp = astmodulestate_global->Subscript_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -7495,7 +8397,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) slice_ty slice; expr_context_ty ctx; - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7508,7 +8410,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_slice, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->slice, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7521,7 +8423,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_ctx, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->ctx, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7539,7 +8441,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Starred_type); + tp = astmodulestate_global->Starred_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -7547,7 +8450,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) expr_ty value; expr_context_ty ctx; - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7560,7 +8463,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_ctx, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->ctx, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7578,7 +8481,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Name_type); + tp = astmodulestate_global->Name_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -7586,7 +8490,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) identifier id; expr_context_ty ctx; - if (_PyObject_LookupAttrId(obj, &PyId_id, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->id, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7599,7 +8503,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_ctx, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->ctx, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7617,7 +8521,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)List_type); + tp = astmodulestate_global->List_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -7625,7 +8530,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) asdl_seq* elts; expr_context_ty ctx; - if (_PyObject_LookupAttrId(obj, &PyId_elts, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->elts, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7637,7 +8542,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "List field \"elts\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "List field \"elts\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -7658,7 +8563,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_ctx, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->ctx, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7676,7 +8581,8 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Tuple_type); + tp = astmodulestate_global->Tuple_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -7684,7 +8590,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) asdl_seq* elts; expr_context_ty ctx; - if (_PyObject_LookupAttrId(obj, &PyId_elts, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->elts, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7696,7 +8602,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "Tuple field \"elts\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "Tuple field \"elts\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -7717,7 +8623,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_ctx, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->ctx, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7747,7 +8653,7 @@ obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena* arena) { int isinstance; - isinstance = PyObject_IsInstance(obj, (PyObject *)Load_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Load_type); if (isinstance == -1) { return 1; } @@ -7755,7 +8661,7 @@ obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena* arena) *out = Load; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)Store_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Store_type); if (isinstance == -1) { return 1; } @@ -7763,7 +8669,7 @@ obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena* arena) *out = Store; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)Del_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Del_type); if (isinstance == -1) { return 1; } @@ -7771,7 +8677,7 @@ obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena* arena) *out = Del; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)AugLoad_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->AugLoad_type); if (isinstance == -1) { return 1; } @@ -7779,7 +8685,7 @@ obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena* arena) *out = AugLoad; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)AugStore_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->AugStore_type); if (isinstance == -1) { return 1; } @@ -7787,7 +8693,7 @@ obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena* arena) *out = AugStore; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)Param_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Param_type); if (isinstance == -1) { return 1; } @@ -7806,12 +8712,14 @@ obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena) int isinstance; PyObject *tmp = NULL; + PyObject *tp; if (obj == Py_None) { *out = NULL; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Slice_type); + tp = astmodulestate_global->Slice_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -7820,7 +8728,7 @@ obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena) expr_ty upper; expr_ty step; - if (_PyObject_LookupAttrId(obj, &PyId_lower, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->lower, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -7833,7 +8741,7 @@ obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_upper, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->upper, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -7846,7 +8754,7 @@ obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_step, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->step, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -7863,14 +8771,15 @@ obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)ExtSlice_type); + tp = astmodulestate_global->ExtSlice_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } if (isinstance) { asdl_seq* dims; - if (_PyObject_LookupAttrId(obj, &PyId_dims, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->dims, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7882,7 +8791,7 @@ obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "ExtSlice field \"dims\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "ExtSlice field \"dims\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -7907,14 +8816,15 @@ obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)Index_type); + tp = astmodulestate_global->Index_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } if (isinstance) { expr_ty value; - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -7943,7 +8853,7 @@ obj2ast_boolop(PyObject* obj, boolop_ty* out, PyArena* arena) { int isinstance; - isinstance = PyObject_IsInstance(obj, (PyObject *)And_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->And_type); if (isinstance == -1) { return 1; } @@ -7951,7 +8861,7 @@ obj2ast_boolop(PyObject* obj, boolop_ty* out, PyArena* arena) *out = And; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)Or_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Or_type); if (isinstance == -1) { return 1; } @@ -7969,7 +8879,7 @@ obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) { int isinstance; - isinstance = PyObject_IsInstance(obj, (PyObject *)Add_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Add_type); if (isinstance == -1) { return 1; } @@ -7977,7 +8887,7 @@ obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) *out = Add; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)Sub_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Sub_type); if (isinstance == -1) { return 1; } @@ -7985,7 +8895,7 @@ obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) *out = Sub; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)Mult_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Mult_type); if (isinstance == -1) { return 1; } @@ -7993,7 +8903,7 @@ obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) *out = Mult; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)MatMult_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->MatMult_type); if (isinstance == -1) { return 1; } @@ -8001,7 +8911,7 @@ obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) *out = MatMult; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)Div_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Div_type); if (isinstance == -1) { return 1; } @@ -8009,7 +8919,7 @@ obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) *out = Div; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)Mod_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Mod_type); if (isinstance == -1) { return 1; } @@ -8017,7 +8927,7 @@ obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) *out = Mod; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)Pow_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Pow_type); if (isinstance == -1) { return 1; } @@ -8025,7 +8935,7 @@ obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) *out = Pow; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)LShift_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->LShift_type); if (isinstance == -1) { return 1; } @@ -8033,7 +8943,7 @@ obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) *out = LShift; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)RShift_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->RShift_type); if (isinstance == -1) { return 1; } @@ -8041,7 +8951,7 @@ obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) *out = RShift; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)BitOr_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->BitOr_type); if (isinstance == -1) { return 1; } @@ -8049,7 +8959,7 @@ obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) *out = BitOr; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)BitXor_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->BitXor_type); if (isinstance == -1) { return 1; } @@ -8057,7 +8967,7 @@ obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) *out = BitXor; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)BitAnd_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->BitAnd_type); if (isinstance == -1) { return 1; } @@ -8065,7 +8975,7 @@ obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) *out = BitAnd; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)FloorDiv_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->FloorDiv_type); if (isinstance == -1) { return 1; } @@ -8083,7 +8993,7 @@ obj2ast_unaryop(PyObject* obj, unaryop_ty* out, PyArena* arena) { int isinstance; - isinstance = PyObject_IsInstance(obj, (PyObject *)Invert_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Invert_type); if (isinstance == -1) { return 1; } @@ -8091,7 +9001,7 @@ obj2ast_unaryop(PyObject* obj, unaryop_ty* out, PyArena* arena) *out = Invert; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)Not_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Not_type); if (isinstance == -1) { return 1; } @@ -8099,7 +9009,7 @@ obj2ast_unaryop(PyObject* obj, unaryop_ty* out, PyArena* arena) *out = Not; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)UAdd_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->UAdd_type); if (isinstance == -1) { return 1; } @@ -8107,7 +9017,7 @@ obj2ast_unaryop(PyObject* obj, unaryop_ty* out, PyArena* arena) *out = UAdd; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)USub_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->USub_type); if (isinstance == -1) { return 1; } @@ -8125,7 +9035,7 @@ obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena) { int isinstance; - isinstance = PyObject_IsInstance(obj, (PyObject *)Eq_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Eq_type); if (isinstance == -1) { return 1; } @@ -8133,7 +9043,7 @@ obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena) *out = Eq; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)NotEq_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->NotEq_type); if (isinstance == -1) { return 1; } @@ -8141,7 +9051,7 @@ obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena) *out = NotEq; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)Lt_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Lt_type); if (isinstance == -1) { return 1; } @@ -8149,7 +9059,7 @@ obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena) *out = Lt; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)LtE_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->LtE_type); if (isinstance == -1) { return 1; } @@ -8157,7 +9067,7 @@ obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena) *out = LtE; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)Gt_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Gt_type); if (isinstance == -1) { return 1; } @@ -8165,7 +9075,7 @@ obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena) *out = Gt; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)GtE_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->GtE_type); if (isinstance == -1) { return 1; } @@ -8173,7 +9083,7 @@ obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena) *out = GtE; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)Is_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->Is_type); if (isinstance == -1) { return 1; } @@ -8181,7 +9091,7 @@ obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena) *out = Is; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)IsNot_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->IsNot_type); if (isinstance == -1) { return 1; } @@ -8189,7 +9099,7 @@ obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena) *out = IsNot; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)In_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->In_type); if (isinstance == -1) { return 1; } @@ -8197,7 +9107,7 @@ obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena) *out = In; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject *)NotIn_type); + isinstance = PyObject_IsInstance(obj, astmodulestate_global->NotIn_type); if (isinstance == -1) { return 1; } @@ -8219,7 +9129,7 @@ obj2ast_comprehension(PyObject* obj, comprehension_ty* out, PyArena* arena) asdl_seq* ifs; int is_async; - if (_PyObject_LookupAttrId(obj, &PyId_target, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->target, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -8232,7 +9142,7 @@ obj2ast_comprehension(PyObject* obj, comprehension_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_iter, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->iter, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -8245,7 +9155,7 @@ obj2ast_comprehension(PyObject* obj, comprehension_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_ifs, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->ifs, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -8257,7 +9167,7 @@ obj2ast_comprehension(PyObject* obj, comprehension_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "comprehension field \"ifs\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "comprehension field \"ifs\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -8278,7 +9188,7 @@ obj2ast_comprehension(PyObject* obj, comprehension_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_is_async, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->is_async, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -8304,6 +9214,7 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) int isinstance; PyObject *tmp = NULL; + PyObject *tp; int lineno; int col_offset; int end_lineno; @@ -8313,7 +9224,7 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) *out = NULL; return 0; } - if (_PyObject_LookupAttrId(obj, &PyId_lineno, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->lineno, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -8326,7 +9237,8 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_col_offset, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->col_offset, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -8339,7 +9251,8 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_end_lineno, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->end_lineno, &tmp) < 0) + { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -8352,7 +9265,8 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_end_col_offset, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->end_col_offset, &tmp) + < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -8365,7 +9279,8 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - isinstance = PyObject_IsInstance(obj, (PyObject*)ExceptHandler_type); + tp = astmodulestate_global->ExceptHandler_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -8374,7 +9289,7 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) identifier name; asdl_seq* body; - if (_PyObject_LookupAttrId(obj, &PyId_type, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->type, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -8387,7 +9302,7 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_name, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->name, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -8400,7 +9315,7 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_body, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->body, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -8412,7 +9327,7 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "ExceptHandler field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "ExceptHandler field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -8457,7 +9372,8 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) arg_ty kwarg; asdl_seq* defaults; - if (_PyObject_LookupAttrId(obj, &PyId_posonlyargs, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->posonlyargs, &tmp) < + 0) { return 1; } if (tmp == NULL) { @@ -8469,7 +9385,7 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "arguments field \"posonlyargs\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "arguments field \"posonlyargs\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -8490,7 +9406,7 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_args, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->args, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -8502,7 +9418,7 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "arguments field \"args\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "arguments field \"args\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -8523,7 +9439,7 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_vararg, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->vararg, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -8536,7 +9452,8 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_kwonlyargs, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->kwonlyargs, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -8548,7 +9465,7 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "arguments field \"kwonlyargs\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "arguments field \"kwonlyargs\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -8569,7 +9486,8 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_kw_defaults, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->kw_defaults, &tmp) < + 0) { return 1; } if (tmp == NULL) { @@ -8581,7 +9499,7 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "arguments field \"kw_defaults\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "arguments field \"kw_defaults\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -8602,7 +9520,7 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) } Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_kwarg, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->kwarg, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -8615,7 +9533,7 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_defaults, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->defaults, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -8627,7 +9545,7 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) Py_ssize_t len; Py_ssize_t i; if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "arguments field \"defaults\" must be a list, not a %.200s", tmp->ob_type->tp_name); + PyErr_Format(PyExc_TypeError, "arguments field \"defaults\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp))); goto failed; } len = PyList_GET_SIZE(tmp); @@ -8668,7 +9586,7 @@ obj2ast_arg(PyObject* obj, arg_ty* out, PyArena* arena) int end_lineno; int end_col_offset; - if (_PyObject_LookupAttrId(obj, &PyId_arg, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->arg, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -8681,7 +9599,8 @@ obj2ast_arg(PyObject* obj, arg_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_annotation, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->annotation, &tmp) < 0) + { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -8694,7 +9613,8 @@ obj2ast_arg(PyObject* obj, arg_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_type_comment, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->type_comment, &tmp) < + 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -8707,7 +9627,7 @@ obj2ast_arg(PyObject* obj, arg_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_lineno, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->lineno, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -8720,7 +9640,8 @@ obj2ast_arg(PyObject* obj, arg_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_col_offset, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->col_offset, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -8733,7 +9654,8 @@ obj2ast_arg(PyObject* obj, arg_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_end_lineno, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->end_lineno, &tmp) < 0) + { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -8746,7 +9668,8 @@ obj2ast_arg(PyObject* obj, arg_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_end_col_offset, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->end_col_offset, &tmp) + < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -8774,7 +9697,7 @@ obj2ast_keyword(PyObject* obj, keyword_ty* out, PyArena* arena) identifier arg; expr_ty value; - if (_PyObject_LookupAttrId(obj, &PyId_arg, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->arg, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -8787,7 +9710,7 @@ obj2ast_keyword(PyObject* obj, keyword_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_value, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->value, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -8814,7 +9737,7 @@ obj2ast_alias(PyObject* obj, alias_ty* out, PyArena* arena) identifier name; identifier asname; - if (_PyObject_LookupAttrId(obj, &PyId_name, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->name, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -8827,7 +9750,7 @@ obj2ast_alias(PyObject* obj, alias_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_asname, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->asname, &tmp) < 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -8854,7 +9777,8 @@ obj2ast_withitem(PyObject* obj, withitem_ty* out, PyArena* arena) expr_ty context_expr; expr_ty optional_vars; - if (_PyObject_LookupAttrId(obj, &PyId_context_expr, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->context_expr, &tmp) < + 0) { return 1; } if (tmp == NULL) { @@ -8867,7 +9791,8 @@ obj2ast_withitem(PyObject* obj, withitem_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_optional_vars, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->optional_vars, &tmp) < + 0) { return 1; } if (tmp == NULL || tmp == Py_None) { @@ -8893,12 +9818,14 @@ obj2ast_type_ignore(PyObject* obj, type_ignore_ty* out, PyArena* arena) int isinstance; PyObject *tmp = NULL; + PyObject *tp; if (obj == Py_None) { *out = NULL; return 0; } - isinstance = PyObject_IsInstance(obj, (PyObject*)TypeIgnore_type); + tp = astmodulestate_global->TypeIgnore_type; + isinstance = PyObject_IsInstance(obj, tp); if (isinstance == -1) { return 1; } @@ -8906,7 +9833,8 @@ obj2ast_type_ignore(PyObject* obj, type_ignore_ty* out, PyArena* arena) int lineno; string tag; - if (_PyObject_LookupAttrId(obj, &PyId_lineno, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->lineno, &tmp) < 0) + { return 1; } if (tmp == NULL) { @@ -8919,7 +9847,7 @@ obj2ast_type_ignore(PyObject* obj, type_ignore_ty* out, PyArena* arena) if (res != 0) goto failed; Py_CLEAR(tmp); } - if (_PyObject_LookupAttrId(obj, &PyId_tag, &tmp) < 0) { + if (_PyObject_LookupAttr(obj, astmodulestate_global->tag, &tmp) < 0) { return 1; } if (tmp == NULL) { @@ -8944,215 +9872,361 @@ obj2ast_type_ignore(PyObject* obj, type_ignore_ty* out, PyArena* arena) } -static struct PyModuleDef _astmodule = { - PyModuleDef_HEAD_INIT, "_ast" -}; PyMODINIT_FUNC PyInit__ast(void) { - PyObject *m, *d; + PyObject *m; if (!init_types()) return NULL; - m = PyModule_Create(&_astmodule); + m = PyState_FindModule(&_astmodule); if (!m) return NULL; - d = PyModule_GetDict(m); - if (PyDict_SetItemString(d, "AST", (PyObject*)&AST_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->AST_type); + if (PyModule_AddObject(m, "AST", astmodulestate_global->AST_type) < 0) + return NULL; if (PyModule_AddIntMacro(m, PyCF_ALLOW_TOP_LEVEL_AWAIT) < 0) return NULL; if (PyModule_AddIntMacro(m, PyCF_ONLY_AST) < 0) return NULL; if (PyModule_AddIntMacro(m, PyCF_TYPE_COMMENTS) < 0) return NULL; - if (PyDict_SetItemString(d, "mod", (PyObject*)mod_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Module", (PyObject*)Module_type) < 0) return + if (PyModule_AddObject(m, "mod", astmodulestate_global->mod_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->mod_type); + if (PyModule_AddObject(m, "Module", astmodulestate_global->Module_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->Module_type); + if (PyModule_AddObject(m, "Interactive", + astmodulestate_global->Interactive_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->Interactive_type); + if (PyModule_AddObject(m, "Expression", + astmodulestate_global->Expression_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->Expression_type); + if (PyModule_AddObject(m, "FunctionType", + astmodulestate_global->FunctionType_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->FunctionType_type); + if (PyModule_AddObject(m, "Suite", astmodulestate_global->Suite_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->Suite_type); + if (PyModule_AddObject(m, "stmt", astmodulestate_global->stmt_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->stmt_type); + if (PyModule_AddObject(m, "FunctionDef", + astmodulestate_global->FunctionDef_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->FunctionDef_type); + if (PyModule_AddObject(m, "AsyncFunctionDef", + astmodulestate_global->AsyncFunctionDef_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->AsyncFunctionDef_type); + if (PyModule_AddObject(m, "ClassDef", astmodulestate_global->ClassDef_type) + < 0) return NULL; + Py_INCREF(astmodulestate(m)->ClassDef_type); + if (PyModule_AddObject(m, "Return", astmodulestate_global->Return_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->Return_type); + if (PyModule_AddObject(m, "Delete", astmodulestate_global->Delete_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->Delete_type); + if (PyModule_AddObject(m, "Assign", astmodulestate_global->Assign_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->Assign_type); + if (PyModule_AddObject(m, "AugAssign", + astmodulestate_global->AugAssign_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->AugAssign_type); + if (PyModule_AddObject(m, "AnnAssign", + astmodulestate_global->AnnAssign_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->AnnAssign_type); + if (PyModule_AddObject(m, "For", astmodulestate_global->For_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->For_type); + if (PyModule_AddObject(m, "AsyncFor", astmodulestate_global->AsyncFor_type) + < 0) return NULL; + Py_INCREF(astmodulestate(m)->AsyncFor_type); + if (PyModule_AddObject(m, "While", astmodulestate_global->While_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->While_type); + if (PyModule_AddObject(m, "If", astmodulestate_global->If_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Interactive", (PyObject*)Interactive_type) < + Py_INCREF(astmodulestate(m)->If_type); + if (PyModule_AddObject(m, "With", astmodulestate_global->With_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->With_type); + if (PyModule_AddObject(m, "AsyncWith", + astmodulestate_global->AsyncWith_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->AsyncWith_type); + if (PyModule_AddObject(m, "Raise", astmodulestate_global->Raise_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->Raise_type); + if (PyModule_AddObject(m, "Try", astmodulestate_global->Try_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->Try_type); + if (PyModule_AddObject(m, "Assert", astmodulestate_global->Assert_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->Assert_type); + if (PyModule_AddObject(m, "Import", astmodulestate_global->Import_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->Import_type); + if (PyModule_AddObject(m, "ImportFrom", + astmodulestate_global->ImportFrom_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->ImportFrom_type); + if (PyModule_AddObject(m, "Global", astmodulestate_global->Global_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Expression", (PyObject*)Expression_type) < 0) + Py_INCREF(astmodulestate(m)->Global_type); + if (PyModule_AddObject(m, "Nonlocal", astmodulestate_global->Nonlocal_type) + < 0) return NULL; + Py_INCREF(astmodulestate(m)->Nonlocal_type); + if (PyModule_AddObject(m, "Expr", astmodulestate_global->Expr_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->Expr_type); + if (PyModule_AddObject(m, "Pass", astmodulestate_global->Pass_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->Pass_type); + if (PyModule_AddObject(m, "Break", astmodulestate_global->Break_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->Break_type); + if (PyModule_AddObject(m, "Continue", astmodulestate_global->Continue_type) + < 0) return NULL; + Py_INCREF(astmodulestate(m)->Continue_type); + if (PyModule_AddObject(m, "expr", astmodulestate_global->expr_type) < 0) return NULL; - if (PyDict_SetItemString(d, "FunctionType", (PyObject*)FunctionType_type) < + Py_INCREF(astmodulestate(m)->expr_type); + if (PyModule_AddObject(m, "BoolOp", astmodulestate_global->BoolOp_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Suite", (PyObject*)Suite_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "stmt", (PyObject*)stmt_type) < 0) return NULL; - if (PyDict_SetItemString(d, "FunctionDef", (PyObject*)FunctionDef_type) < + Py_INCREF(astmodulestate(m)->BoolOp_type); + if (PyModule_AddObject(m, "NamedExpr", + astmodulestate_global->NamedExpr_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->NamedExpr_type); + if (PyModule_AddObject(m, "BinOp", astmodulestate_global->BinOp_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->BinOp_type); + if (PyModule_AddObject(m, "UnaryOp", astmodulestate_global->UnaryOp_type) < 0) return NULL; - if (PyDict_SetItemString(d, "AsyncFunctionDef", - (PyObject*)AsyncFunctionDef_type) < 0) return NULL; - if (PyDict_SetItemString(d, "ClassDef", (PyObject*)ClassDef_type) < 0) + Py_INCREF(astmodulestate(m)->UnaryOp_type); + if (PyModule_AddObject(m, "Lambda", astmodulestate_global->Lambda_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->Lambda_type); + if (PyModule_AddObject(m, "IfExp", astmodulestate_global->IfExp_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Return", (PyObject*)Return_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Delete", (PyObject*)Delete_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Assign", (PyObject*)Assign_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "AugAssign", (PyObject*)AugAssign_type) < 0) + Py_INCREF(astmodulestate(m)->IfExp_type); + if (PyModule_AddObject(m, "Dict", astmodulestate_global->Dict_type) < 0) return NULL; - if (PyDict_SetItemString(d, "AnnAssign", (PyObject*)AnnAssign_type) < 0) + Py_INCREF(astmodulestate(m)->Dict_type); + if (PyModule_AddObject(m, "Set", astmodulestate_global->Set_type) < 0) return NULL; - if (PyDict_SetItemString(d, "For", (PyObject*)For_type) < 0) return NULL; - if (PyDict_SetItemString(d, "AsyncFor", (PyObject*)AsyncFor_type) < 0) + Py_INCREF(astmodulestate(m)->Set_type); + if (PyModule_AddObject(m, "ListComp", astmodulestate_global->ListComp_type) + < 0) return NULL; + Py_INCREF(astmodulestate(m)->ListComp_type); + if (PyModule_AddObject(m, "SetComp", astmodulestate_global->SetComp_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->SetComp_type); + if (PyModule_AddObject(m, "DictComp", astmodulestate_global->DictComp_type) + < 0) return NULL; + Py_INCREF(astmodulestate(m)->DictComp_type); + if (PyModule_AddObject(m, "GeneratorExp", + astmodulestate_global->GeneratorExp_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->GeneratorExp_type); + if (PyModule_AddObject(m, "Await", astmodulestate_global->Await_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->Await_type); + if (PyModule_AddObject(m, "Yield", astmodulestate_global->Yield_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->Yield_type); + if (PyModule_AddObject(m, "YieldFrom", + astmodulestate_global->YieldFrom_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->YieldFrom_type); + if (PyModule_AddObject(m, "Compare", astmodulestate_global->Compare_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->Compare_type); + if (PyModule_AddObject(m, "Call", astmodulestate_global->Call_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->Call_type); + if (PyModule_AddObject(m, "FormattedValue", + astmodulestate_global->FormattedValue_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->FormattedValue_type); + if (PyModule_AddObject(m, "JoinedStr", + astmodulestate_global->JoinedStr_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->JoinedStr_type); + if (PyModule_AddObject(m, "Constant", astmodulestate_global->Constant_type) + < 0) return NULL; + Py_INCREF(astmodulestate(m)->Constant_type); + if (PyModule_AddObject(m, "Attribute", + astmodulestate_global->Attribute_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->Attribute_type); + if (PyModule_AddObject(m, "Subscript", + astmodulestate_global->Subscript_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->Subscript_type); + if (PyModule_AddObject(m, "Starred", astmodulestate_global->Starred_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->Starred_type); + if (PyModule_AddObject(m, "Name", astmodulestate_global->Name_type) < 0) return NULL; - if (PyDict_SetItemString(d, "While", (PyObject*)While_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "If", (PyObject*)If_type) < 0) return NULL; - if (PyDict_SetItemString(d, "With", (PyObject*)With_type) < 0) return NULL; - if (PyDict_SetItemString(d, "AsyncWith", (PyObject*)AsyncWith_type) < 0) + Py_INCREF(astmodulestate(m)->Name_type); + if (PyModule_AddObject(m, "List", astmodulestate_global->List_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Raise", (PyObject*)Raise_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Try", (PyObject*)Try_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Assert", (PyObject*)Assert_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Import", (PyObject*)Import_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "ImportFrom", (PyObject*)ImportFrom_type) < 0) + Py_INCREF(astmodulestate(m)->List_type); + if (PyModule_AddObject(m, "Tuple", astmodulestate_global->Tuple_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Global", (PyObject*)Global_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Nonlocal", (PyObject*)Nonlocal_type) < 0) + Py_INCREF(astmodulestate(m)->Tuple_type); + if (PyModule_AddObject(m, "expr_context", + astmodulestate_global->expr_context_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->expr_context_type); + if (PyModule_AddObject(m, "Load", astmodulestate_global->Load_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Expr", (PyObject*)Expr_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Pass", (PyObject*)Pass_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Break", (PyObject*)Break_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Continue", (PyObject*)Continue_type) < 0) + Py_INCREF(astmodulestate(m)->Load_type); + if (PyModule_AddObject(m, "Store", astmodulestate_global->Store_type) < 0) return NULL; - if (PyDict_SetItemString(d, "expr", (PyObject*)expr_type) < 0) return NULL; - if (PyDict_SetItemString(d, "BoolOp", (PyObject*)BoolOp_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "NamedExpr", (PyObject*)NamedExpr_type) < 0) + Py_INCREF(astmodulestate(m)->Store_type); + if (PyModule_AddObject(m, "Del", astmodulestate_global->Del_type) < 0) return NULL; - if (PyDict_SetItemString(d, "BinOp", (PyObject*)BinOp_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "UnaryOp", (PyObject*)UnaryOp_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Lambda", (PyObject*)Lambda_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "IfExp", (PyObject*)IfExp_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Dict", (PyObject*)Dict_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Set", (PyObject*)Set_type) < 0) return NULL; - if (PyDict_SetItemString(d, "ListComp", (PyObject*)ListComp_type) < 0) + Py_INCREF(astmodulestate(m)->Del_type); + if (PyModule_AddObject(m, "AugLoad", astmodulestate_global->AugLoad_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->AugLoad_type); + if (PyModule_AddObject(m, "AugStore", astmodulestate_global->AugStore_type) + < 0) return NULL; + Py_INCREF(astmodulestate(m)->AugStore_type); + if (PyModule_AddObject(m, "Param", astmodulestate_global->Param_type) < 0) return NULL; - if (PyDict_SetItemString(d, "SetComp", (PyObject*)SetComp_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "DictComp", (PyObject*)DictComp_type) < 0) + Py_INCREF(astmodulestate(m)->Param_type); + if (PyModule_AddObject(m, "slice", astmodulestate_global->slice_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->slice_type); + if (PyModule_AddObject(m, "Slice", astmodulestate_global->Slice_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->Slice_type); + if (PyModule_AddObject(m, "ExtSlice", astmodulestate_global->ExtSlice_type) + < 0) return NULL; + Py_INCREF(astmodulestate(m)->ExtSlice_type); + if (PyModule_AddObject(m, "Index", astmodulestate_global->Index_type) < 0) return NULL; - if (PyDict_SetItemString(d, "GeneratorExp", (PyObject*)GeneratorExp_type) < + Py_INCREF(astmodulestate(m)->Index_type); + if (PyModule_AddObject(m, "boolop", astmodulestate_global->boolop_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Await", (PyObject*)Await_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Yield", (PyObject*)Yield_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "YieldFrom", (PyObject*)YieldFrom_type) < 0) + Py_INCREF(astmodulestate(m)->boolop_type); + if (PyModule_AddObject(m, "And", astmodulestate_global->And_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Compare", (PyObject*)Compare_type) < 0) return + Py_INCREF(astmodulestate(m)->And_type); + if (PyModule_AddObject(m, "Or", astmodulestate_global->Or_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Call", (PyObject*)Call_type) < 0) return NULL; - if (PyDict_SetItemString(d, "FormattedValue", - (PyObject*)FormattedValue_type) < 0) return NULL; - if (PyDict_SetItemString(d, "JoinedStr", (PyObject*)JoinedStr_type) < 0) + Py_INCREF(astmodulestate(m)->Or_type); + if (PyModule_AddObject(m, "operator", astmodulestate_global->operator_type) + < 0) return NULL; + Py_INCREF(astmodulestate(m)->operator_type); + if (PyModule_AddObject(m, "Add", astmodulestate_global->Add_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->Add_type); + if (PyModule_AddObject(m, "Sub", astmodulestate_global->Sub_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Constant", (PyObject*)Constant_type) < 0) + Py_INCREF(astmodulestate(m)->Sub_type); + if (PyModule_AddObject(m, "Mult", astmodulestate_global->Mult_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Attribute", (PyObject*)Attribute_type) < 0) + Py_INCREF(astmodulestate(m)->Mult_type); + if (PyModule_AddObject(m, "MatMult", astmodulestate_global->MatMult_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->MatMult_type); + if (PyModule_AddObject(m, "Div", astmodulestate_global->Div_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Subscript", (PyObject*)Subscript_type) < 0) + Py_INCREF(astmodulestate(m)->Div_type); + if (PyModule_AddObject(m, "Mod", astmodulestate_global->Mod_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Starred", (PyObject*)Starred_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Name", (PyObject*)Name_type) < 0) return NULL; - if (PyDict_SetItemString(d, "List", (PyObject*)List_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Tuple", (PyObject*)Tuple_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "expr_context", (PyObject*)expr_context_type) < + Py_INCREF(astmodulestate(m)->Mod_type); + if (PyModule_AddObject(m, "Pow", astmodulestate_global->Pow_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->Pow_type); + if (PyModule_AddObject(m, "LShift", astmodulestate_global->LShift_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Load", (PyObject*)Load_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Store", (PyObject*)Store_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Del", (PyObject*)Del_type) < 0) return NULL; - if (PyDict_SetItemString(d, "AugLoad", (PyObject*)AugLoad_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "AugStore", (PyObject*)AugStore_type) < 0) + Py_INCREF(astmodulestate(m)->LShift_type); + if (PyModule_AddObject(m, "RShift", astmodulestate_global->RShift_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->RShift_type); + if (PyModule_AddObject(m, "BitOr", astmodulestate_global->BitOr_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Param", (PyObject*)Param_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "slice", (PyObject*)slice_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Slice", (PyObject*)Slice_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "ExtSlice", (PyObject*)ExtSlice_type) < 0) + Py_INCREF(astmodulestate(m)->BitOr_type); + if (PyModule_AddObject(m, "BitXor", astmodulestate_global->BitXor_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->BitXor_type); + if (PyModule_AddObject(m, "BitAnd", astmodulestate_global->BitAnd_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->BitAnd_type); + if (PyModule_AddObject(m, "FloorDiv", astmodulestate_global->FloorDiv_type) + < 0) return NULL; + Py_INCREF(astmodulestate(m)->FloorDiv_type); + if (PyModule_AddObject(m, "unaryop", astmodulestate_global->unaryop_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->unaryop_type); + if (PyModule_AddObject(m, "Invert", astmodulestate_global->Invert_type) < + 0) return NULL; + Py_INCREF(astmodulestate(m)->Invert_type); + if (PyModule_AddObject(m, "Not", astmodulestate_global->Not_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Index", (PyObject*)Index_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "boolop", (PyObject*)boolop_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "And", (PyObject*)And_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Or", (PyObject*)Or_type) < 0) return NULL; - if (PyDict_SetItemString(d, "operator", (PyObject*)operator_type) < 0) - return NULL; - if (PyDict_SetItemString(d, "Add", (PyObject*)Add_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Sub", (PyObject*)Sub_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Mult", (PyObject*)Mult_type) < 0) return NULL; - if (PyDict_SetItemString(d, "MatMult", (PyObject*)MatMult_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Div", (PyObject*)Div_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Mod", (PyObject*)Mod_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Pow", (PyObject*)Pow_type) < 0) return NULL; - if (PyDict_SetItemString(d, "LShift", (PyObject*)LShift_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "RShift", (PyObject*)RShift_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "BitOr", (PyObject*)BitOr_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "BitXor", (PyObject*)BitXor_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "BitAnd", (PyObject*)BitAnd_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "FloorDiv", (PyObject*)FloorDiv_type) < 0) + Py_INCREF(astmodulestate(m)->Not_type); + if (PyModule_AddObject(m, "UAdd", astmodulestate_global->UAdd_type) < 0) return NULL; - if (PyDict_SetItemString(d, "unaryop", (PyObject*)unaryop_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Invert", (PyObject*)Invert_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Not", (PyObject*)Not_type) < 0) return NULL; - if (PyDict_SetItemString(d, "UAdd", (PyObject*)UAdd_type) < 0) return NULL; - if (PyDict_SetItemString(d, "USub", (PyObject*)USub_type) < 0) return NULL; - if (PyDict_SetItemString(d, "cmpop", (PyObject*)cmpop_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Eq", (PyObject*)Eq_type) < 0) return NULL; - if (PyDict_SetItemString(d, "NotEq", (PyObject*)NotEq_type) < 0) return - NULL; - if (PyDict_SetItemString(d, "Lt", (PyObject*)Lt_type) < 0) return NULL; - if (PyDict_SetItemString(d, "LtE", (PyObject*)LtE_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Gt", (PyObject*)Gt_type) < 0) return NULL; - if (PyDict_SetItemString(d, "GtE", (PyObject*)GtE_type) < 0) return NULL; - if (PyDict_SetItemString(d, "Is", (PyObject*)Is_type) < 0) return NULL; - if (PyDict_SetItemString(d, "IsNot", (PyObject*)IsNot_type) < 0) return + Py_INCREF(astmodulestate(m)->UAdd_type); + if (PyModule_AddObject(m, "USub", astmodulestate_global->USub_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->USub_type); + if (PyModule_AddObject(m, "cmpop", astmodulestate_global->cmpop_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->cmpop_type); + if (PyModule_AddObject(m, "Eq", astmodulestate_global->Eq_type) < 0) return NULL; - if (PyDict_SetItemString(d, "In", (PyObject*)In_type) < 0) return NULL; - if (PyDict_SetItemString(d, "NotIn", (PyObject*)NotIn_type) < 0) return + Py_INCREF(astmodulestate(m)->Eq_type); + if (PyModule_AddObject(m, "NotEq", astmodulestate_global->NotEq_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->NotEq_type); + if (PyModule_AddObject(m, "Lt", astmodulestate_global->Lt_type) < 0) return NULL; - if (PyDict_SetItemString(d, "comprehension", (PyObject*)comprehension_type) - < 0) return NULL; - if (PyDict_SetItemString(d, "excepthandler", (PyObject*)excepthandler_type) - < 0) return NULL; - if (PyDict_SetItemString(d, "ExceptHandler", (PyObject*)ExceptHandler_type) - < 0) return NULL; - if (PyDict_SetItemString(d, "arguments", (PyObject*)arguments_type) < 0) + Py_INCREF(astmodulestate(m)->Lt_type); + if (PyModule_AddObject(m, "LtE", astmodulestate_global->LtE_type) < 0) return NULL; - if (PyDict_SetItemString(d, "arg", (PyObject*)arg_type) < 0) return NULL; - if (PyDict_SetItemString(d, "keyword", (PyObject*)keyword_type) < 0) return + Py_INCREF(astmodulestate(m)->LtE_type); + if (PyModule_AddObject(m, "Gt", astmodulestate_global->Gt_type) < 0) return NULL; - if (PyDict_SetItemString(d, "alias", (PyObject*)alias_type) < 0) return + Py_INCREF(astmodulestate(m)->Gt_type); + if (PyModule_AddObject(m, "GtE", astmodulestate_global->GtE_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->GtE_type); + if (PyModule_AddObject(m, "Is", astmodulestate_global->Is_type) < 0) return NULL; - if (PyDict_SetItemString(d, "withitem", (PyObject*)withitem_type) < 0) + Py_INCREF(astmodulestate(m)->Is_type); + if (PyModule_AddObject(m, "IsNot", astmodulestate_global->IsNot_type) < 0) return NULL; - if (PyDict_SetItemString(d, "type_ignore", (PyObject*)type_ignore_type) < + Py_INCREF(astmodulestate(m)->IsNot_type); + if (PyModule_AddObject(m, "In", astmodulestate_global->In_type) < 0) return + NULL; + Py_INCREF(astmodulestate(m)->In_type); + if (PyModule_AddObject(m, "NotIn", astmodulestate_global->NotIn_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->NotIn_type); + if (PyModule_AddObject(m, "comprehension", + astmodulestate_global->comprehension_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->comprehension_type); + if (PyModule_AddObject(m, "excepthandler", + astmodulestate_global->excepthandler_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->excepthandler_type); + if (PyModule_AddObject(m, "ExceptHandler", + astmodulestate_global->ExceptHandler_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->ExceptHandler_type); + if (PyModule_AddObject(m, "arguments", + astmodulestate_global->arguments_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->arguments_type); + if (PyModule_AddObject(m, "arg", astmodulestate_global->arg_type) < 0) + return NULL; + Py_INCREF(astmodulestate(m)->arg_type); + if (PyModule_AddObject(m, "keyword", astmodulestate_global->keyword_type) < 0) return NULL; - if (PyDict_SetItemString(d, "TypeIgnore", (PyObject*)TypeIgnore_type) < 0) + Py_INCREF(astmodulestate(m)->keyword_type); + if (PyModule_AddObject(m, "alias", astmodulestate_global->alias_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->alias_type); + if (PyModule_AddObject(m, "withitem", astmodulestate_global->withitem_type) + < 0) return NULL; + Py_INCREF(astmodulestate(m)->withitem_type); + if (PyModule_AddObject(m, "type_ignore", + astmodulestate_global->type_ignore_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->type_ignore_type); + if (PyModule_AddObject(m, "TypeIgnore", + astmodulestate_global->TypeIgnore_type) < 0) return NULL; + Py_INCREF(astmodulestate(m)->TypeIgnore_type); return m; } @@ -9176,9 +10250,9 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode) return NULL; } - req_type[0] = (PyObject*)Module_type; - req_type[1] = (PyObject*)Expression_type; - req_type[2] = (PyObject*)Interactive_type; + req_type[0] = astmodulestate_global->Module_type; + req_type[1] = astmodulestate_global->Expression_type; + req_type[2] = astmodulestate_global->Interactive_type; assert(0 <= mode && mode <= 2); @@ -9190,7 +10264,7 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode) return NULL; if (!isinstance) { PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s", - req_name[mode], Py_TYPE(ast)->tp_name); + req_name[mode], _PyType_Name(Py_TYPE(ast))); return NULL; } if (obj2ast_mod(ast, &res, arena) != 0) @@ -9203,7 +10277,7 @@ int PyAST_Check(PyObject* obj) { if (!init_types()) return -1; - return PyObject_IsInstance(obj, (PyObject*)&AST_type); + return PyObject_IsInstance(obj, astmodulestate_global->AST_type); }