@@ -1151,21 +1151,24 @@ Mapping Object Structures
1151
1151
1152
1152
.. c :member :: lenfunc PyMappingMethods.mp_length
1153
1153
1154
- This function is used by :c:func: `PyMapping_Length ` and
1154
+ This function is used by :c:func: `PyMapping_Size ` and
1155
1155
:c:func: `PyObject_Size `, and has the same signature. This slot may be set to
1156
1156
*NULL * if the object has no defined length.
1157
1157
1158
1158
.. c :member :: binaryfunc PyMappingMethods.mp_subscript
1159
1159
1160
- This function is used by :c:func: `PyObject_GetItem ` and has the same
1161
- signature. This slot must be filled for the :c:func: `PyMapping_Check `
1162
- function to return ``1 ``, it can be *NULL * otherwise.
1160
+ This function is used by :c:func: `PyObject_GetItem ` and
1161
+ :c:func: `PySequence_GetSlice `, and has the same signature as
1162
+ :c:func: `!PyObject_GetItem `. This slot must be filled for the
1163
+ :c:func: `PyMapping_Check ` function to return ``1 ``, it can be *NULL *
1164
+ otherwise.
1163
1165
1164
1166
.. c :member :: objobjargproc PyMappingMethods.mp_ass_subscript
1165
1167
1166
- This function is used by :c:func: `PyObject_SetItem ` and
1167
- :c:func: `PyObject_DelItem `. It has the same signature as
1168
- :c:func: `PyObject_SetItem `, but *v * can also be set to *NULL * to delete
1168
+ This function is used by :c:func: `PyObject_SetItem `,
1169
+ :c:func: `PyObject_DelItem `, :c:func: `PyObject_SetSlice ` and
1170
+ :c:func: `PyObject_DelSlice `. It has the same signature as
1171
+ :c:func: `!PyObject_SetItem `, but *v * can also be set to *NULL * to delete
1169
1172
an item. If this slot is *NULL *, the object does not support item
1170
1173
assignment and deletion.
1171
1174
@@ -1185,26 +1188,29 @@ Sequence Object Structures
1185
1188
1186
1189
.. c :member :: lenfunc PySequenceMethods.sq_length
1187
1190
1188
- This function is used by :c:func: `PySequence_Size ` and :c:func: `PyObject_Size `,
1189
- and has the same signature.
1191
+ This function is used by :c:func: `PySequence_Size ` and
1192
+ :c:func: `PyObject_Size `, and has the same signature. It is also used for
1193
+ handling negative indices via the :c:member: `~PySequenceMethods.sq_item `
1194
+ and the :c:member: `~PySequenceMethods.sq_ass_item ` slots.
1190
1195
1191
1196
.. c :member :: binaryfunc PySequenceMethods.sq_concat
1192
1197
1193
1198
This function is used by :c:func: `PySequence_Concat ` and has the same
1194
1199
signature. It is also used by the ``+ `` operator, after trying the numeric
1195
- addition via the :c:member: `~PyTypeObject.tp_as_number .nb_add ` slot.
1200
+ addition via the :c:member: `~PyNumberMethods .nb_add ` slot.
1196
1201
1197
1202
.. c :member :: ssizeargfunc PySequenceMethods.sq_repeat
1198
1203
1199
1204
This function is used by :c:func: `PySequence_Repeat ` and has the same
1200
1205
signature. It is also used by the ``* `` operator, after trying numeric
1201
- multiplication via the :c:member: `~PyTypeObject.tp_as_number.nb_multiply `
1202
- slot.
1206
+ multiplication via the :c:member: `~PyNumberMethods.nb_multiply ` slot.
1203
1207
1204
1208
.. c :member :: ssizeargfunc PySequenceMethods.sq_item
1205
1209
1206
1210
This function is used by :c:func: `PySequence_GetItem ` and has the same
1207
- signature. This slot must be filled for the :c:func: `PySequence_Check `
1211
+ signature. It is also used by :c:func: `PyObject_GetItem `, after trying
1212
+ the subscription via the :c:member: `~PyMappingMethods.mp_subscript ` slot.
1213
+ This slot must be filled for the :c:func: `PySequence_Check `
1208
1214
function to return ``1 ``, it can be *NULL * otherwise.
1209
1215
1210
1216
Negative indexes are handled as follows: if the :attr: `sq_length ` slot is
@@ -1215,28 +1221,36 @@ Sequence Object Structures
1215
1221
.. c :member :: ssizeobjargproc PySequenceMethods.sq_ass_item
1216
1222
1217
1223
This function is used by :c:func: `PySequence_SetItem ` and has the same
1218
- signature. This slot may be left to *NULL * if the object does not support
1224
+ signature. It is also used by :c:func: `PyObject_SetItem ` and
1225
+ :c:func: `PyObject_DelItem `, after trying the item assignment and deletion
1226
+ via the :c:member: `~PyMappingMethods.mp_ass_subscript ` slot.
1227
+ This slot may be left to *NULL * if the object does not support
1219
1228
item assignment and deletion.
1220
1229
1221
1230
.. c :member :: objobjproc PySequenceMethods.sq_contains
1222
1231
1223
1232
This function may be used by :c:func: `PySequence_Contains ` and has the same
1224
1233
signature. This slot may be left to *NULL *, in this case
1225
- :c:func: `PySequence_Contains ` simply traverses the sequence until it finds a
1226
- match.
1234
+ :c:func: `! PySequence_Contains ` simply traverses the sequence until it
1235
+ finds a match.
1227
1236
1228
1237
.. c :member :: binaryfunc PySequenceMethods.sq_inplace_concat
1229
1238
1230
1239
This function is used by :c:func: `PySequence_InPlaceConcat ` and has the same
1231
- signature. It should modify its first operand, and return it.
1240
+ signature. It should modify its first operand, and return it. This slot
1241
+ may be left to *NULL *, in this case :c:func: `!PySequence_InPlaceConcat `
1242
+ will fall back to :c:func: `PySequence_Concat `. It is also used by the
1243
+ augmented assignment ``+= ``, after trying numeric inplace addition
1244
+ via the :c:member: `~PyNumberMethods.nb_inplace_add ` slot.
1232
1245
1233
1246
.. c :member :: ssizeargfunc PySequenceMethods.sq_inplace_repeat
1234
1247
1235
1248
This function is used by :c:func: `PySequence_InPlaceRepeat ` and has the same
1236
- signature. It should modify its first operand, and return it.
1237
-
1238
- .. XXX need to explain precedence between mapping and sequence
1239
- .. XXX explains when to implement the sq_inplace_* slots
1249
+ signature. It should modify its first operand, and return it. This slot
1250
+ may be left to *NULL *, in this case :c:func: `!PySequence_InPlaceRepeat `
1251
+ will fall back to :c:func: `PySequence_Repeat `. It is also used by the
1252
+ augmented assignment ``*= ``, after trying numeric inplace multiplication
1253
+ via the :c:member: `~PyNumberMethods.nb_inplace_multiply ` slot.
1240
1254
1241
1255
1242
1256
.. _buffer-structs :
0 commit comments