Lines Matching refs:attr

1199     PyObject *attr;
1214 PyObject *attr;
1222 if (!PyArg_UnpackTuple(args, "attrgetter", 1, 1, &attr))
1226 attr = PyTuple_New(nattrs);
1227 if (attr == NULL)
1230 /* prepare attr while checking args */
1241 Py_DECREF(attr);
1245 Py_DECREF(attr);
1262 PyTuple_SET_ITEM(attr, idx, item);
1271 Py_DECREF(attr);
1284 Py_DECREF(attr);
1298 Py_DECREF(attr);
1304 PyTuple_SET_ITEM(attr, idx, attr_chain);
1312 Py_DECREF(attr);
1316 ag->attr = attr;
1327 Py_CLEAR(ag->attr);
1344 Py_VISIT(ag->attr);
1350 dotted_getattr(PyObject *obj, PyObject *attr)
1354 /* attr is either a tuple or instance of str.
1356 if (PyTuple_CheckExact(attr)) { /* chained getattr */
1360 name_count = PyTuple_GET_SIZE(attr);
1363 attr_name = PyTuple_GET_ITEM(attr, name_idx);
1373 newobj = PyObject_GetAttr(obj, attr);
1412 /* ag->attr is always a tuple */
1413 return dotted_getattr(obj, PyTuple_GET_ITEM(ag->attr, 0));
1416 assert(PyTuple_Check(ag->attr));
1417 assert(PyTuple_GET_SIZE(ag->attr) == nattrs);
1424 PyObject *attr, *val;
1425 attr = PyTuple_GET_ITEM(ag->attr, i);
1426 val = dotted_getattr(obj, attr);
1437 dotjoinattr(PyObject *attr, PyObject **attrsep)
1439 if (PyTuple_CheckExact(attr)) {
1445 return PyUnicode_Join(*attrsep, attr);
1447 Py_INCREF(attr);
1448 return attr;
1462 PyObject *attr = PyTuple_GET_ITEM(ag->attr, i);
1463 PyObject *attrstr = dotjoinattr(attr, &attrsep);
1488 PyObject *attr = dotjoinattr(PyTuple_GET_ITEM(ag->attr, 0), &attrsep);
1489 if (attr != NULL) {
1490 repr = PyUnicode_FromFormat("%s(%R)", Py_TYPE(ag)->tp_name, attr);
1491 Py_DECREF(attr);
1529 "attrgetter(attr, ...) --> attrgetter object\n\