blob: 9c39403dfa23bf511841a07ada08a9755c35fc2e [file] [log] [blame]
Fred Drake3adf79e2001-10-12 19:01:43 +00001\chapter{Abstract Objects Layer \label{abstract}}
2
3The functions in this chapter interact with Python objects regardless
4of their type, or with wide classes of object types (e.g. all
5numerical types, or all sequence types). When used on object types
6for which they do not apply, they will raise a Python exception.
7
8
9\section{Object Protocol \label{object}}
10
11\begin{cfuncdesc}{int}{PyObject_Print}{PyObject *o, FILE *fp, int flags}
12 Print an object \var{o}, on file \var{fp}. Returns \code{-1} on
13 error. The flags argument is used to enable certain printing
14 options. The only option currently supported is
15 \constant{Py_PRINT_RAW}; if given, the \function{str()} of the
16 object is written instead of the \function{repr()}.
17\end{cfuncdesc}
18
Martin v. Löwis29fafd82006-03-01 05:16:03 +000019\begin{cfuncdesc}{int}{PyObject_HasAttrString}{PyObject *o, const char *attr_name}
Fred Drake3adf79e2001-10-12 19:01:43 +000020 Returns \code{1} if \var{o} has the attribute \var{attr_name}, and
21 \code{0} otherwise. This is equivalent to the Python expression
22 \samp{hasattr(\var{o}, \var{attr_name})}. This function always
23 succeeds.
24\end{cfuncdesc}
25
26\begin{cfuncdesc}{PyObject*}{PyObject_GetAttrString}{PyObject *o,
Martin v. Löwis29fafd82006-03-01 05:16:03 +000027 const char *attr_name}
Fred Drake3adf79e2001-10-12 19:01:43 +000028 Retrieve an attribute named \var{attr_name} from object \var{o}.
29 Returns the attribute value on success, or \NULL{} on failure.
30 This is the equivalent of the Python expression
31 \samp{\var{o}.\var{attr_name}}.
32\end{cfuncdesc}
33
34
35\begin{cfuncdesc}{int}{PyObject_HasAttr}{PyObject *o, PyObject *attr_name}
36 Returns \code{1} if \var{o} has the attribute \var{attr_name}, and
37 \code{0} otherwise. This is equivalent to the Python expression
38 \samp{hasattr(\var{o}, \var{attr_name})}. This function always
39 succeeds.
40\end{cfuncdesc}
41
42
43\begin{cfuncdesc}{PyObject*}{PyObject_GetAttr}{PyObject *o,
44 PyObject *attr_name}
45 Retrieve an attribute named \var{attr_name} from object \var{o}.
46 Returns the attribute value on success, or \NULL{} on failure. This
47 is the equivalent of the Python expression
48 \samp{\var{o}.\var{attr_name}}.
49\end{cfuncdesc}
50
51
52\begin{cfuncdesc}{int}{PyObject_SetAttrString}{PyObject *o,
Martin v. Löwis29fafd82006-03-01 05:16:03 +000053 const char *attr_name, PyObject *v}
Fred Drake3adf79e2001-10-12 19:01:43 +000054 Set the value of the attribute named \var{attr_name}, for object
55 \var{o}, to the value \var{v}. Returns \code{-1} on failure. This
56 is the equivalent of the Python statement
57 \samp{\var{o}.\var{attr_name} = \var{v}}.
58\end{cfuncdesc}
59
60
61\begin{cfuncdesc}{int}{PyObject_SetAttr}{PyObject *o,
62 PyObject *attr_name, PyObject *v}
63 Set the value of the attribute named \var{attr_name}, for object
64 \var{o}, to the value \var{v}. Returns \code{-1} on failure. This
65 is the equivalent of the Python statement
66 \samp{\var{o}.\var{attr_name} = \var{v}}.
67\end{cfuncdesc}
68
69
Martin v. Löwis29fafd82006-03-01 05:16:03 +000070\begin{cfuncdesc}{int}{PyObject_DelAttrString}{PyObject *o, const char *attr_name}
Fred Drake3adf79e2001-10-12 19:01:43 +000071 Delete attribute named \var{attr_name}, for object \var{o}. Returns
72 \code{-1} on failure. This is the equivalent of the Python
73 statement: \samp{del \var{o}.\var{attr_name}}.
74\end{cfuncdesc}
75
76
77\begin{cfuncdesc}{int}{PyObject_DelAttr}{PyObject *o, PyObject *attr_name}
78 Delete attribute named \var{attr_name}, for object \var{o}. Returns
79 \code{-1} on failure. This is the equivalent of the Python
80 statement \samp{del \var{o}.\var{attr_name}}.
81\end{cfuncdesc}
82
83
Fred Drake178153f2002-06-13 11:51:48 +000084\begin{cfuncdesc}{PyObject*}{PyObject_RichCompare}{PyObject *o1,
Fred Drakea0c5e9f2002-06-14 14:35:56 +000085 PyObject *o2, int opid}
Fred Drake178153f2002-06-13 11:51:48 +000086 Compare the values of \var{o1} and \var{o2} using the operation
Fred Drakea0c5e9f2002-06-14 14:35:56 +000087 specified by \var{opid}, which must be one of
Fred Drake178153f2002-06-13 11:51:48 +000088 \constant{Py_LT},
89 \constant{Py_LE},
90 \constant{Py_EQ},
91 \constant{Py_NE},
92 \constant{Py_GT}, or
93 \constant{Py_GE}, corresponding to
94 \code{<},
95 \code{<=},
96 \code{==},
97 \code{!=},
98 \code{>}, or
99 \code{>=} respectively. This is the equivalent of the Python expression
Fred Drakea0c5e9f2002-06-14 14:35:56 +0000100 \samp{\var{o1} op \var{o2}}, where \code{op} is the operator
101 corresponding to \var{opid}. Returns the value of the comparison on
Fred Drake178153f2002-06-13 11:51:48 +0000102 success, or \NULL{} on failure.
103\end{cfuncdesc}
104
105\begin{cfuncdesc}{int}{PyObject_RichCompareBool}{PyObject *o1,
Fred Drakea0c5e9f2002-06-14 14:35:56 +0000106 PyObject *o2, int opid}
Fred Drake178153f2002-06-13 11:51:48 +0000107 Compare the values of \var{o1} and \var{o2} using the operation
Fred Drakea0c5e9f2002-06-14 14:35:56 +0000108 specified by \var{opid}, which must be one of
Fred Drake178153f2002-06-13 11:51:48 +0000109 \constant{Py_LT},
110 \constant{Py_LE},
111 \constant{Py_EQ},
112 \constant{Py_NE},
113 \constant{Py_GT}, or
114 \constant{Py_GE}, corresponding to
115 \code{<},
116 \code{<=},
117 \code{==},
118 \code{!=},
119 \code{>}, or
120 \code{>=} respectively. Returns \code{-1} on error, \code{0} if the
121 result is false, \code{1} otherwise. This is the equivalent of the
Fred Drakea0c5e9f2002-06-14 14:35:56 +0000122 Python expression \samp{\var{o1} op \var{o2}}, where
123 \code{op} is the operator corresponding to \var{opid}.
Fred Drake178153f2002-06-13 11:51:48 +0000124\end{cfuncdesc}
125
Fred Drake3adf79e2001-10-12 19:01:43 +0000126\begin{cfuncdesc}{int}{PyObject_Cmp}{PyObject *o1, PyObject *o2, int *result}
127 Compare the values of \var{o1} and \var{o2} using a routine provided
128 by \var{o1}, if one exists, otherwise with a routine provided by
129 \var{o2}. The result of the comparison is returned in
130 \var{result}. Returns \code{-1} on failure. This is the equivalent
131 of the Python statement\bifuncindex{cmp} \samp{\var{result} =
132 cmp(\var{o1}, \var{o2})}.
133\end{cfuncdesc}
134
135
136\begin{cfuncdesc}{int}{PyObject_Compare}{PyObject *o1, PyObject *o2}
137 Compare the values of \var{o1} and \var{o2} using a routine provided
138 by \var{o1}, if one exists, otherwise with a routine provided by
139 \var{o2}. Returns the result of the comparison on success. On
140 error, the value returned is undefined; use
141 \cfunction{PyErr_Occurred()} to detect an error. This is equivalent
142 to the Python expression\bifuncindex{cmp} \samp{cmp(\var{o1},
143 \var{o2})}.
144\end{cfuncdesc}
145
146
147\begin{cfuncdesc}{PyObject*}{PyObject_Repr}{PyObject *o}
148 Compute a string representation of object \var{o}. Returns the
149 string representation on success, \NULL{} on failure. This is the
150 equivalent of the Python expression \samp{repr(\var{o})}. Called by
151 the \function{repr()}\bifuncindex{repr} built-in function and by
152 reverse quotes.
153\end{cfuncdesc}
154
155
156\begin{cfuncdesc}{PyObject*}{PyObject_Str}{PyObject *o}
157 Compute a string representation of object \var{o}. Returns the
158 string representation on success, \NULL{} on failure. This is the
159 equivalent of the Python expression \samp{str(\var{o})}. Called by
160 the \function{str()}\bifuncindex{str} built-in function and by the
161 \keyword{print} statement.
162\end{cfuncdesc}
163
164
165\begin{cfuncdesc}{PyObject*}{PyObject_Unicode}{PyObject *o}
166 Compute a Unicode string representation of object \var{o}. Returns
167 the Unicode string representation on success, \NULL{} on failure.
168 This is the equivalent of the Python expression
Neal Norwitz4ddfd502002-07-28 13:55:20 +0000169 \samp{unicode(\var{o})}. Called by the
170 \function{unicode()}\bifuncindex{unicode} built-in function.
Fred Drake3adf79e2001-10-12 19:01:43 +0000171\end{cfuncdesc}
172
173\begin{cfuncdesc}{int}{PyObject_IsInstance}{PyObject *inst, PyObject *cls}
Fred Drakeb957bc32002-04-23 18:15:44 +0000174 Returns \code{1} if \var{inst} is an instance of the class \var{cls}
175 or a subclass of \var{cls}, or \code{0} if not. On error, returns
176 \code{-1} and sets an exception. If \var{cls} is a type object
177 rather than a class object, \cfunction{PyObject_IsInstance()}
Walter Dörwald6d5f30e2002-12-06 10:09:16 +0000178 returns \code{1} if \var{inst} is of type \var{cls}. If \var{cls}
179 is a tuple, the check will be done against every entry in \var{cls}.
180 The result will be \code{1} when at least one of the checks returns
181 \code{1}, otherwise it will be \code{0}. If \var{inst} is not a class
182 instance and \var{cls} is neither a type object, nor a class object,
183 nor a tuple, \var{inst} must have a \member{__class__} attribute
Fred Drakeb957bc32002-04-23 18:15:44 +0000184 --- the class relationship of the value of that attribute with
185 \var{cls} will be used to determine the result of this function.
Fred Drake3adf79e2001-10-12 19:01:43 +0000186 \versionadded{2.1}
Walter Dörwald6d5f30e2002-12-06 10:09:16 +0000187 \versionchanged[Support for a tuple as the second argument added]{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +0000188\end{cfuncdesc}
189
190Subclass determination is done in a fairly straightforward way, but
191includes a wrinkle that implementors of extensions to the class system
192may want to be aware of. If \class{A} and \class{B} are class
193objects, \class{B} is a subclass of \class{A} if it inherits from
194\class{A} either directly or indirectly. If either is not a class
195object, a more general mechanism is used to determine the class
196relationship of the two objects. When testing if \var{B} is a
197subclass of \var{A}, if \var{A} is \var{B},
198\cfunction{PyObject_IsSubclass()} returns true. If \var{A} and
199\var{B} are different objects, \var{B}'s \member{__bases__} attribute
200is searched in a depth-first fashion for \var{A} --- the presence of
201the \member{__bases__} attribute is considered sufficient for this
202determination.
203
204\begin{cfuncdesc}{int}{PyObject_IsSubclass}{PyObject *derived,
205 PyObject *cls}
206 Returns \code{1} if the class \var{derived} is identical to or
207 derived from the class \var{cls}, otherwise returns \code{0}. In
Walter Dörwaldd9a6ad32002-12-12 16:41:44 +0000208 case of an error, returns \code{-1}. If \var{cls}
209 is a tuple, the check will be done against every entry in \var{cls}.
210 The result will be \code{1} when at least one of the checks returns
211 \code{1}, otherwise it will be \code{0}. If either \var{derived} or
212 \var{cls} is not an actual class object (or tuple), this function
213 uses the generic algorithm described above.
Fred Drake3adf79e2001-10-12 19:01:43 +0000214 \versionadded{2.1}
Walter Dörwaldd9a6ad32002-12-12 16:41:44 +0000215 \versionchanged[Older versions of Python did not support a tuple
216 as the second argument]{2.3}
Fred Drake3adf79e2001-10-12 19:01:43 +0000217\end{cfuncdesc}
218
219
220\begin{cfuncdesc}{int}{PyCallable_Check}{PyObject *o}
221 Determine if the object \var{o} is callable. Return \code{1} if the
222 object is callable and \code{0} otherwise. This function always
223 succeeds.
224\end{cfuncdesc}
225
226
Fred Drake0e0b6182002-04-15 20:51:19 +0000227\begin{cfuncdesc}{PyObject*}{PyObject_Call}{PyObject *callable_object,
228 PyObject *args,
229 PyObject *kw}
230 Call a callable Python object \var{callable_object}, with arguments
231 given by the tuple \var{args}, and named arguments given by the
232 dictionary \var{kw}. If no named arguments are needed, \var{kw} may
233 be \NULL{}. \var{args} must not be \NULL{}, use an empty tuple if
234 no arguments are needed. Returns the result of the call on success,
235 or \NULL{} on failure. This is the equivalent of the Python
236 expression \samp{apply(\var{callable_object}, \var{args}, \var{kw})}
237 or \samp{\var{callable_object}(*\var{args}, **\var{kw})}.
238 \bifuncindex{apply}
Fred Drakef5368272003-01-25 07:48:13 +0000239 \versionadded{2.2}
Fred Drake0e0b6182002-04-15 20:51:19 +0000240\end{cfuncdesc}
241
242
Fred Drake3adf79e2001-10-12 19:01:43 +0000243\begin{cfuncdesc}{PyObject*}{PyObject_CallObject}{PyObject *callable_object,
244 PyObject *args}
245 Call a callable Python object \var{callable_object}, with arguments
246 given by the tuple \var{args}. If no arguments are needed, then
247 \var{args} may be \NULL. Returns the result of the call on
248 success, or \NULL{} on failure. This is the equivalent of the
249 Python expression \samp{apply(\var{callable_object}, \var{args})} or
250 \samp{\var{callable_object}(*\var{args})}.
251 \bifuncindex{apply}
252\end{cfuncdesc}
253
Fred Drakec44e9ec2001-10-26 16:38:38 +0000254\begin{cfuncdesc}{PyObject*}{PyObject_CallFunction}{PyObject *callable,
255 char *format, \moreargs}
256 Call a callable Python object \var{callable}, with a variable
Fred Drake3adf79e2001-10-12 19:01:43 +0000257 number of C arguments. The C arguments are described using a
258 \cfunction{Py_BuildValue()} style format string. The format may be
259 \NULL, indicating that no arguments are provided. Returns the
260 result of the call on success, or \NULL{} on failure. This is the
Fred Drakec44e9ec2001-10-26 16:38:38 +0000261 equivalent of the Python expression \samp{apply(\var{callable},
262 \var{args})} or \samp{\var{callable}(*\var{args})}.
Georg Brandl485dbd12006-05-25 21:11:56 +0000263 Note that if you only pass \ctype{PyObject *} args,
264 \cfunction{PyObject_CallFunctionObjArgs} is a faster alternative.
Fred Drake3adf79e2001-10-12 19:01:43 +0000265 \bifuncindex{apply}
266\end{cfuncdesc}
267
268
269\begin{cfuncdesc}{PyObject*}{PyObject_CallMethod}{PyObject *o,
Fred Drakec44e9ec2001-10-26 16:38:38 +0000270 char *method, char *format,
271 \moreargs}
Raymond Hettinger2619c9e2003-12-07 11:40:17 +0000272 Call the method named \var{method} of object \var{o} with a variable
Fred Drake3adf79e2001-10-12 19:01:43 +0000273 number of C arguments. The C arguments are described by a
Andrew M. Kuchlingfe80b632004-08-07 17:53:05 +0000274 \cfunction{Py_BuildValue()} format string that should
275 produce a tuple. The format may be \NULL,
Fred Drake3adf79e2001-10-12 19:01:43 +0000276 indicating that no arguments are provided. Returns the result of the
277 call on success, or \NULL{} on failure. This is the equivalent of
Fred Drakec44e9ec2001-10-26 16:38:38 +0000278 the Python expression \samp{\var{o}.\var{method}(\var{args})}.
Georg Brandl485dbd12006-05-25 21:11:56 +0000279 Note that if you only pass \ctype{PyObject *} args,
280 \cfunction{PyObject_CallMethodObjArgs} is a faster alternative.
Fred Drakec44e9ec2001-10-26 16:38:38 +0000281\end{cfuncdesc}
282
283
Fred Drakeb0c079e2001-10-28 02:39:03 +0000284\begin{cfuncdesc}{PyObject*}{PyObject_CallFunctionObjArgs}{PyObject *callable,
285 \moreargs,
286 \code{NULL}}
Fred Drakec44e9ec2001-10-26 16:38:38 +0000287 Call a callable Python object \var{callable}, with a variable
288 number of \ctype{PyObject*} arguments. The arguments are provided
289 as a variable number of parameters followed by \NULL.
290 Returns the result of the call on success, or \NULL{} on failure.
291 \versionadded{2.2}
292\end{cfuncdesc}
293
294
Fred Drakeb0c079e2001-10-28 02:39:03 +0000295\begin{cfuncdesc}{PyObject*}{PyObject_CallMethodObjArgs}{PyObject *o,
296 PyObject *name,
297 \moreargs,
298 \code{NULL}}
Fred Drakec44e9ec2001-10-26 16:38:38 +0000299 Calls a method of the object \var{o}, where the name of the method
300 is given as a Python string object in \var{name}. It is called with
301 a variable number of \ctype{PyObject*} arguments. The arguments are
302 provided as a variable number of parameters followed by \NULL.
303 Returns the result of the call on success, or \NULL{} on failure.
304 \versionadded{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +0000305\end{cfuncdesc}
306
307
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000308\begin{cfuncdesc}{long}{PyObject_Hash}{PyObject *o}
Fred Drake3adf79e2001-10-12 19:01:43 +0000309 Compute and return the hash value of an object \var{o}. On failure,
310 return \code{-1}. This is the equivalent of the Python expression
311 \samp{hash(\var{o})}.\bifuncindex{hash}
312\end{cfuncdesc}
313
314
315\begin{cfuncdesc}{int}{PyObject_IsTrue}{PyObject *o}
316 Returns \code{1} if the object \var{o} is considered to be true, and
317 \code{0} otherwise. This is equivalent to the Python expression
Raymond Hettinger2ed6dff2003-04-16 17:28:12 +0000318 \samp{not not \var{o}}. On failure, return \code{-1}.
319\end{cfuncdesc}
320
321
322\begin{cfuncdesc}{int}{PyObject_Not}{PyObject *o}
323 Returns \code{0} if the object \var{o} is considered to be true, and
324 \code{1} otherwise. This is equivalent to the Python expression
325 \samp{not \var{o}}. On failure, return \code{-1}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000326\end{cfuncdesc}
327
328
329\begin{cfuncdesc}{PyObject*}{PyObject_Type}{PyObject *o}
330 When \var{o} is non-\NULL, returns a type object corresponding to
331 the object type of object \var{o}. On failure, raises
332 \exception{SystemError} and returns \NULL. This is equivalent to
Fred Drake12dd7b12003-04-09 18:15:57 +0000333 the Python expression \code{type(\var{o})}.\bifuncindex{type}
Guido van Rossum6db77182003-04-09 18:02:23 +0000334 This function increments the reference count of the return value.
335 There's really no reason to use this function instead of the
336 common expression \code{\var{o}->ob_type}, which returns a pointer
Fred Drake12dd7b12003-04-09 18:15:57 +0000337 of type \ctype{PyTypeObject*}, except when the incremented reference
Guido van Rossum6db77182003-04-09 18:02:23 +0000338 count is needed.
Fred Drake3adf79e2001-10-12 19:01:43 +0000339\end{cfuncdesc}
340
341\begin{cfuncdesc}{int}{PyObject_TypeCheck}{PyObject *o, PyTypeObject *type}
342 Return true if the object \var{o} is of type \var{type} or a subtype
343 of \var{type}. Both parameters must be non-\NULL.
344 \versionadded{2.2}
345\end{cfuncdesc}
346
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000347\begin{cfuncdesc}{Py_ssize_t}{PyObject_Length}{PyObject *o}
348\cfuncline{Py_ssize_t}{PyObject_Size}{PyObject *o}
Fred Drake3adf79e2001-10-12 19:01:43 +0000349 Return the length of object \var{o}. If the object \var{o} provides
Raymond Hettinger4cd5a082004-01-04 03:11:45 +0000350 either the sequence and mapping protocols, the sequence length is
Fred Drake3adf79e2001-10-12 19:01:43 +0000351 returned. On error, \code{-1} is returned. This is the equivalent
352 to the Python expression \samp{len(\var{o})}.\bifuncindex{len}
353\end{cfuncdesc}
354
355
356\begin{cfuncdesc}{PyObject*}{PyObject_GetItem}{PyObject *o, PyObject *key}
357 Return element of \var{o} corresponding to the object \var{key} or
358 \NULL{} on failure. This is the equivalent of the Python expression
359 \samp{\var{o}[\var{key}]}.
360\end{cfuncdesc}
361
362
363\begin{cfuncdesc}{int}{PyObject_SetItem}{PyObject *o,
364 PyObject *key, PyObject *v}
365 Map the object \var{key} to the value \var{v}. Returns \code{-1} on
366 failure. This is the equivalent of the Python statement
367 \samp{\var{o}[\var{key}] = \var{v}}.
368\end{cfuncdesc}
369
370
371\begin{cfuncdesc}{int}{PyObject_DelItem}{PyObject *o, PyObject *key}
372 Delete the mapping for \var{key} from \var{o}. Returns \code{-1} on
373 failure. This is the equivalent of the Python statement \samp{del
374 \var{o}[\var{key}]}.
375\end{cfuncdesc}
376
377\begin{cfuncdesc}{int}{PyObject_AsFileDescriptor}{PyObject *o}
378 Derives a file-descriptor from a Python object. If the object is an
379 integer or long integer, its value is returned. If not, the
380 object's \method{fileno()} method is called if it exists; the method
381 must return an integer or long integer, which is returned as the
382 file descriptor value. Returns \code{-1} on failure.
383\end{cfuncdesc}
384
385\begin{cfuncdesc}{PyObject*}{PyObject_Dir}{PyObject *o}
386 This is equivalent to the Python expression \samp{dir(\var{o})},
387 returning a (possibly empty) list of strings appropriate for the
388 object argument, or \NULL{} if there was an error. If the argument
389 is \NULL, this is like the Python \samp{dir()}, returning the names
390 of the current locals; in this case, if no execution frame is active
391 then \NULL{} is returned but \cfunction{PyErr_Occurred()} will
392 return false.
393\end{cfuncdesc}
394
Fred Drake314bae52002-03-11 18:46:29 +0000395\begin{cfuncdesc}{PyObject*}{PyObject_GetIter}{PyObject *o}
396 This is equivalent to the Python expression \samp{iter(\var{o})}.
397 It returns a new iterator for the object argument, or the object
398 itself if the object is already an iterator. Raises
399 \exception{TypeError} and returns \NULL{} if the object cannot be
400 iterated.
401\end{cfuncdesc}
402
Fred Drake3adf79e2001-10-12 19:01:43 +0000403
404\section{Number Protocol \label{number}}
405
406\begin{cfuncdesc}{int}{PyNumber_Check}{PyObject *o}
407 Returns \code{1} if the object \var{o} provides numeric protocols,
408 and false otherwise. This function always succeeds.
409\end{cfuncdesc}
410
411
412\begin{cfuncdesc}{PyObject*}{PyNumber_Add}{PyObject *o1, PyObject *o2}
413 Returns the result of adding \var{o1} and \var{o2}, or \NULL{} on
414 failure. This is the equivalent of the Python expression
415 \samp{\var{o1} + \var{o2}}.
416\end{cfuncdesc}
417
418
419\begin{cfuncdesc}{PyObject*}{PyNumber_Subtract}{PyObject *o1, PyObject *o2}
420 Returns the result of subtracting \var{o2} from \var{o1}, or \NULL{}
421 on failure. This is the equivalent of the Python expression
422 \samp{\var{o1} - \var{o2}}.
423\end{cfuncdesc}
424
425
426\begin{cfuncdesc}{PyObject*}{PyNumber_Multiply}{PyObject *o1, PyObject *o2}
427 Returns the result of multiplying \var{o1} and \var{o2}, or \NULL{}
428 on failure. This is the equivalent of the Python expression
429 \samp{\var{o1} * \var{o2}}.
430\end{cfuncdesc}
431
432
433\begin{cfuncdesc}{PyObject*}{PyNumber_Divide}{PyObject *o1, PyObject *o2}
434 Returns the result of dividing \var{o1} by \var{o2}, or \NULL{} on
435 failure. This is the equivalent of the Python expression
436 \samp{\var{o1} / \var{o2}}.
437\end{cfuncdesc}
438
439
440\begin{cfuncdesc}{PyObject*}{PyNumber_FloorDivide}{PyObject *o1, PyObject *o2}
441 Return the floor of \var{o1} divided by \var{o2}, or \NULL{} on
442 failure. This is equivalent to the ``classic'' division of
443 integers.
444 \versionadded{2.2}
445\end{cfuncdesc}
446
447
448\begin{cfuncdesc}{PyObject*}{PyNumber_TrueDivide}{PyObject *o1, PyObject *o2}
449 Return a reasonable approximation for the mathematical value of
450 \var{o1} divided by \var{o2}, or \NULL{} on failure. The return
451 value is ``approximate'' because binary floating point numbers are
452 approximate; it is not possible to represent all real numbers in
453 base two. This function can return a floating point value when
454 passed two integers.
455 \versionadded{2.2}
456\end{cfuncdesc}
457
458
459\begin{cfuncdesc}{PyObject*}{PyNumber_Remainder}{PyObject *o1, PyObject *o2}
460 Returns the remainder of dividing \var{o1} by \var{o2}, or \NULL{}
461 on failure. This is the equivalent of the Python expression
462 \samp{\var{o1} \%\ \var{o2}}.
463\end{cfuncdesc}
464
465
466\begin{cfuncdesc}{PyObject*}{PyNumber_Divmod}{PyObject *o1, PyObject *o2}
467 See the built-in function \function{divmod()}\bifuncindex{divmod}.
468 Returns \NULL{} on failure. This is the equivalent of the Python
469 expression \samp{divmod(\var{o1}, \var{o2})}.
470\end{cfuncdesc}
471
472
473\begin{cfuncdesc}{PyObject*}{PyNumber_Power}{PyObject *o1,
474 PyObject *o2, PyObject *o3}
475 See the built-in function \function{pow()}\bifuncindex{pow}.
476 Returns \NULL{} on failure. This is the equivalent of the Python
477 expression \samp{pow(\var{o1}, \var{o2}, \var{o3})}, where \var{o3}
478 is optional. If \var{o3} is to be ignored, pass \cdata{Py_None} in
479 its place (passing \NULL{} for \var{o3} would cause an illegal
480 memory access).
481\end{cfuncdesc}
482
483
484\begin{cfuncdesc}{PyObject*}{PyNumber_Negative}{PyObject *o}
485 Returns the negation of \var{o} on success, or \NULL{} on failure.
486 This is the equivalent of the Python expression \samp{-\var{o}}.
487\end{cfuncdesc}
488
489
490\begin{cfuncdesc}{PyObject*}{PyNumber_Positive}{PyObject *o}
491 Returns \var{o} on success, or \NULL{} on failure. This is the
492 equivalent of the Python expression \samp{+\var{o}}.
493\end{cfuncdesc}
494
495
496\begin{cfuncdesc}{PyObject*}{PyNumber_Absolute}{PyObject *o}
497 Returns the absolute value of \var{o}, or \NULL{} on failure. This
498 is the equivalent of the Python expression \samp{abs(\var{o})}.
499 \bifuncindex{abs}
500\end{cfuncdesc}
501
502
503\begin{cfuncdesc}{PyObject*}{PyNumber_Invert}{PyObject *o}
504 Returns the bitwise negation of \var{o} on success, or \NULL{} on
505 failure. This is the equivalent of the Python expression
506 \samp{\~\var{o}}.
507\end{cfuncdesc}
508
509
510\begin{cfuncdesc}{PyObject*}{PyNumber_Lshift}{PyObject *o1, PyObject *o2}
511 Returns the result of left shifting \var{o1} by \var{o2} on success,
512 or \NULL{} on failure. This is the equivalent of the Python
513 expression \samp{\var{o1} <\code{<} \var{o2}}.
514\end{cfuncdesc}
515
516
517\begin{cfuncdesc}{PyObject*}{PyNumber_Rshift}{PyObject *o1, PyObject *o2}
518 Returns the result of right shifting \var{o1} by \var{o2} on
519 success, or \NULL{} on failure. This is the equivalent of the
520 Python expression \samp{\var{o1} >\code{>} \var{o2}}.
521\end{cfuncdesc}
522
523
524\begin{cfuncdesc}{PyObject*}{PyNumber_And}{PyObject *o1, PyObject *o2}
Raymond Hettingere5fced72004-04-17 11:57:40 +0000525 Returns the ``bitwise and'' of \var{o1} and \var{o2} on success and
Fred Drake3adf79e2001-10-12 19:01:43 +0000526 \NULL{} on failure. This is the equivalent of the Python expression
527 \samp{\var{o1} \&\ \var{o2}}.
528\end{cfuncdesc}
529
530
531\begin{cfuncdesc}{PyObject*}{PyNumber_Xor}{PyObject *o1, PyObject *o2}
532 Returns the ``bitwise exclusive or'' of \var{o1} by \var{o2} on
533 success, or \NULL{} on failure. This is the equivalent of the
534 Python expression \samp{\var{o1} \textasciicircum{} \var{o2}}.
535\end{cfuncdesc}
536
537\begin{cfuncdesc}{PyObject*}{PyNumber_Or}{PyObject *o1, PyObject *o2}
538 Returns the ``bitwise or'' of \var{o1} and \var{o2} on success, or
539 \NULL{} on failure. This is the equivalent of the Python expression
540 \samp{\var{o1} | \var{o2}}.
541\end{cfuncdesc}
542
543
544\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceAdd}{PyObject *o1, PyObject *o2}
545 Returns the result of adding \var{o1} and \var{o2}, or \NULL{} on
546 failure. The operation is done \emph{in-place} when \var{o1}
547 supports it. This is the equivalent of the Python statement
548 \samp{\var{o1} += \var{o2}}.
549\end{cfuncdesc}
550
551
552\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceSubtract}{PyObject *o1,
553 PyObject *o2}
554 Returns the result of subtracting \var{o2} from \var{o1}, or \NULL{}
555 on failure. The operation is done \emph{in-place} when \var{o1}
556 supports it. This is the equivalent of the Python statement
557 \samp{\var{o1} -= \var{o2}}.
558\end{cfuncdesc}
559
560
561\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceMultiply}{PyObject *o1,
562 PyObject *o2}
563 Returns the result of multiplying \var{o1} and \var{o2}, or \NULL{}
564 on failure. The operation is done \emph{in-place} when \var{o1}
565 supports it. This is the equivalent of the Python statement
566 \samp{\var{o1} *= \var{o2}}.
567\end{cfuncdesc}
568
569
570\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceDivide}{PyObject *o1,
571 PyObject *o2}
572 Returns the result of dividing \var{o1} by \var{o2}, or \NULL{} on
573 failure. The operation is done \emph{in-place} when \var{o1}
574 supports it. This is the equivalent of the Python statement
575 \samp{\var{o1} /= \var{o2}}.
576\end{cfuncdesc}
577
578
579\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceFloorDivide}{PyObject *o1,
580 PyObject *o2}
Andrew M. Kuchling1b50b432004-06-05 19:00:55 +0000581 Returns the mathematical floor of dividing \var{o1} by \var{o2}, or
Fred Drake3adf79e2001-10-12 19:01:43 +0000582 \NULL{} on failure. The operation is done \emph{in-place} when
583 \var{o1} supports it. This is the equivalent of the Python
584 statement \samp{\var{o1} //= \var{o2}}.
585 \versionadded{2.2}
586\end{cfuncdesc}
587
588
589\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceTrueDivide}{PyObject *o1,
590 PyObject *o2}
591 Return a reasonable approximation for the mathematical value of
592 \var{o1} divided by \var{o2}, or \NULL{} on failure. The return
593 value is ``approximate'' because binary floating point numbers are
594 approximate; it is not possible to represent all real numbers in
595 base two. This function can return a floating point value when
596 passed two integers. The operation is done \emph{in-place} when
597 \var{o1} supports it.
598 \versionadded{2.2}
599\end{cfuncdesc}
600
601
602\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceRemainder}{PyObject *o1,
603 PyObject *o2}
604 Returns the remainder of dividing \var{o1} by \var{o2}, or \NULL{}
605 on failure. The operation is done \emph{in-place} when \var{o1}
606 supports it. This is the equivalent of the Python statement
607 \samp{\var{o1} \%= \var{o2}}.
608\end{cfuncdesc}
609
610
611\begin{cfuncdesc}{PyObject*}{PyNumber_InPlacePower}{PyObject *o1,
612 PyObject *o2, PyObject *o3}
613 See the built-in function \function{pow()}.\bifuncindex{pow}
614 Returns \NULL{} on failure. The operation is done \emph{in-place}
615 when \var{o1} supports it. This is the equivalent of the Python
616 statement \samp{\var{o1} **= \var{o2}} when o3 is \cdata{Py_None},
617 or an in-place variant of \samp{pow(\var{o1}, \var{o2}, \var{o3})}
618 otherwise. If \var{o3} is to be ignored, pass \cdata{Py_None} in its
619 place (passing \NULL{} for \var{o3} would cause an illegal memory
620 access).
621\end{cfuncdesc}
622
623\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceLshift}{PyObject *o1,
624 PyObject *o2}
625 Returns the result of left shifting \var{o1} by \var{o2} on success,
626 or \NULL{} on failure. The operation is done \emph{in-place} when
627 \var{o1} supports it. This is the equivalent of the Python
628 statement \samp{\var{o1} <\code{<=} \var{o2}}.
629\end{cfuncdesc}
630
631
632\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceRshift}{PyObject *o1,
633 PyObject *o2}
634 Returns the result of right shifting \var{o1} by \var{o2} on
635 success, or \NULL{} on failure. The operation is done
636 \emph{in-place} when \var{o1} supports it. This is the equivalent
Fred Drakef25fa6d2006-05-03 02:04:40 +0000637 of the Python statement \samp{\var{o1} >>= \var{o2}}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000638\end{cfuncdesc}
639
640
641\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceAnd}{PyObject *o1, PyObject *o2}
642 Returns the ``bitwise and'' of \var{o1} and \var{o2} on success and
643 \NULL{} on failure. The operation is done \emph{in-place} when
644 \var{o1} supports it. This is the equivalent of the Python
645 statement \samp{\var{o1} \&= \var{o2}}.
646\end{cfuncdesc}
647
648
649\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceXor}{PyObject *o1, PyObject *o2}
650 Returns the ``bitwise exclusive or'' of \var{o1} by \var{o2} on
651 success, or \NULL{} on failure. The operation is done
652 \emph{in-place} when \var{o1} supports it. This is the equivalent
653 of the Python statement \samp{\var{o1} \textasciicircum= \var{o2}}.
654\end{cfuncdesc}
655
656\begin{cfuncdesc}{PyObject*}{PyNumber_InPlaceOr}{PyObject *o1, PyObject *o2}
657 Returns the ``bitwise or'' of \var{o1} and \var{o2} on success, or
658 \NULL{} on failure. The operation is done \emph{in-place} when
659 \var{o1} supports it. This is the equivalent of the Python
660 statement \samp{\var{o1} |= \var{o2}}.
661\end{cfuncdesc}
662
663\begin{cfuncdesc}{int}{PyNumber_Coerce}{PyObject **p1, PyObject **p2}
664 This function takes the addresses of two variables of type
665 \ctype{PyObject*}. If the objects pointed to by \code{*\var{p1}}
666 and \code{*\var{p2}} have the same type, increment their reference
667 count and return \code{0} (success). If the objects can be converted
668 to a common numeric type, replace \code{*p1} and \code{*p2} by their
669 converted value (with 'new' reference counts), and return \code{0}.
670 If no conversion is possible, or if some other error occurs, return
671 \code{-1} (failure) and don't increment the reference counts. The
672 call \code{PyNumber_Coerce(\&o1, \&o2)} is equivalent to the Python
673 statement \samp{\var{o1}, \var{o2} = coerce(\var{o1}, \var{o2})}.
674 \bifuncindex{coerce}
675\end{cfuncdesc}
676
677\begin{cfuncdesc}{PyObject*}{PyNumber_Int}{PyObject *o}
678 Returns the \var{o} converted to an integer object on success, or
Walter Dörwaldf1715402002-11-19 20:49:15 +0000679 \NULL{} on failure. If the argument is outside the integer range
680 a long object will be returned instead. This is the equivalent
681 of the Python expression \samp{int(\var{o})}.\bifuncindex{int}
Fred Drake3adf79e2001-10-12 19:01:43 +0000682\end{cfuncdesc}
683
684\begin{cfuncdesc}{PyObject*}{PyNumber_Long}{PyObject *o}
685 Returns the \var{o} converted to a long integer object on success,
686 or \NULL{} on failure. This is the equivalent of the Python
687 expression \samp{long(\var{o})}.\bifuncindex{long}
688\end{cfuncdesc}
689
690\begin{cfuncdesc}{PyObject*}{PyNumber_Float}{PyObject *o}
691 Returns the \var{o} converted to a float object on success, or
692 \NULL{} on failure. This is the equivalent of the Python expression
693 \samp{float(\var{o})}.\bifuncindex{float}
694\end{cfuncdesc}
695
Neal Norwitz8a87f5d2006-08-12 17:03:09 +0000696\begin{cfuncdesc}{PyObject*}{PyNumber_Index}{PyObject *o}
697 Returns the \var{o} converted to a Python int or long on success or \NULL{}
698 with a TypeError exception raised on failure.
Neal Norwitz025f14b2006-03-08 05:29:18 +0000699 \versionadded{2.5}
Guido van Rossum38fff8c2006-03-07 18:50:55 +0000700\end{cfuncdesc}
Fred Drake3adf79e2001-10-12 19:01:43 +0000701
Neal Norwitz8a87f5d2006-08-12 17:03:09 +0000702\begin{cfuncdesc}{Py_ssize_t}{PyNumber_AsSsize_t}{PyObject *o, PyObject *exc}
703 Returns \var{o} converted to a Py_ssize_t value if \var{o}
704 can be interpreted as an integer. If \var{o} can be converted to a Python
705 int or long but the attempt to convert to a Py_ssize_t value
706 would raise an \exception{OverflowError}, then the \var{exc} argument
707 is the type of exception that will be raised (usually \exception{IndexError}
708 or \exception{OverflowError}). If \var{exc} is \NULL{}, then the exception
709 is cleared and the value is clipped to \var{PY_SSIZE_T_MIN}
710 for a negative integer or \var{PY_SSIZE_T_MAX} for a positive integer.
711 \versionadded{2.5}
712\end{cfuncdesc}
713
714\begin{cfuncdesc}{int}{PyIndex_Check}{PyObject *o}
715 Returns True if \var{o} is an index integer (has the nb_index slot of
716 the tp_as_number structure filled in).
717 \versionadded{2.5}
718\end{cfuncdesc}
719
720
Fred Drake3adf79e2001-10-12 19:01:43 +0000721\section{Sequence Protocol \label{sequence}}
722
723\begin{cfuncdesc}{int}{PySequence_Check}{PyObject *o}
724 Return \code{1} if the object provides sequence protocol, and
725 \code{0} otherwise. This function always succeeds.
726\end{cfuncdesc}
727
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000728\begin{cfuncdesc}{Py_ssize_t}{PySequence_Size}{PyObject *o}
Fred Drake3adf79e2001-10-12 19:01:43 +0000729 Returns the number of objects in sequence \var{o} on success, and
730 \code{-1} on failure. For objects that do not provide sequence
731 protocol, this is equivalent to the Python expression
732 \samp{len(\var{o})}.\bifuncindex{len}
733\end{cfuncdesc}
734
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000735\begin{cfuncdesc}{Py_ssize_t}{PySequence_Length}{PyObject *o}
Fred Drake3adf79e2001-10-12 19:01:43 +0000736 Alternate name for \cfunction{PySequence_Size()}.
737\end{cfuncdesc}
738
739\begin{cfuncdesc}{PyObject*}{PySequence_Concat}{PyObject *o1, PyObject *o2}
740 Return the concatenation of \var{o1} and \var{o2} on success, and
741 \NULL{} on failure. This is the equivalent of the Python
742 expression \samp{\var{o1} + \var{o2}}.
743\end{cfuncdesc}
744
745
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000746\begin{cfuncdesc}{PyObject*}{PySequence_Repeat}{PyObject *o, Py_ssize_t count}
Fred Drake3adf79e2001-10-12 19:01:43 +0000747 Return the result of repeating sequence object \var{o} \var{count}
748 times, or \NULL{} on failure. This is the equivalent of the Python
749 expression \samp{\var{o} * \var{count}}.
750\end{cfuncdesc}
751
752\begin{cfuncdesc}{PyObject*}{PySequence_InPlaceConcat}{PyObject *o1,
753 PyObject *o2}
754 Return the concatenation of \var{o1} and \var{o2} on success, and
755 \NULL{} on failure. The operation is done \emph{in-place} when
756 \var{o1} supports it. This is the equivalent of the Python
757 expression \samp{\var{o1} += \var{o2}}.
758\end{cfuncdesc}
759
760
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000761\begin{cfuncdesc}{PyObject*}{PySequence_InPlaceRepeat}{PyObject *o, Py_ssize_t count}
Fred Drake3adf79e2001-10-12 19:01:43 +0000762 Return the result of repeating sequence object \var{o} \var{count}
763 times, or \NULL{} on failure. The operation is done \emph{in-place}
764 when \var{o} supports it. This is the equivalent of the Python
765 expression \samp{\var{o} *= \var{count}}.
766\end{cfuncdesc}
767
768
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000769\begin{cfuncdesc}{PyObject*}{PySequence_GetItem}{PyObject *o, Py_ssize_t i}
Fred Drake3adf79e2001-10-12 19:01:43 +0000770 Return the \var{i}th element of \var{o}, or \NULL{} on failure.
771 This is the equivalent of the Python expression
772 \samp{\var{o}[\var{i}]}.
773\end{cfuncdesc}
774
775
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000776\begin{cfuncdesc}{PyObject*}{PySequence_GetSlice}{PyObject *o, Py_ssize_t i1, Py_ssize_t i2}
Fred Drake3adf79e2001-10-12 19:01:43 +0000777 Return the slice of sequence object \var{o} between \var{i1} and
778 \var{i2}, or \NULL{} on failure. This is the equivalent of the
779 Python expression \samp{\var{o}[\var{i1}:\var{i2}]}.
780\end{cfuncdesc}
781
782
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000783\begin{cfuncdesc}{int}{PySequence_SetItem}{PyObject *o, Py_ssize_t i, PyObject *v}
Fred Drake3adf79e2001-10-12 19:01:43 +0000784 Assign object \var{v} to the \var{i}th element of \var{o}. Returns
785 \code{-1} on failure. This is the equivalent of the Python
Raymond Hettinger12c484d2003-08-09 04:37:14 +0000786 statement \samp{\var{o}[\var{i}] = \var{v}}. This function \emph{does not}
787 steal a reference to \var{v}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000788\end{cfuncdesc}
789
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000790\begin{cfuncdesc}{int}{PySequence_DelItem}{PyObject *o, Py_ssize_t i}
Fred Drake3adf79e2001-10-12 19:01:43 +0000791 Delete the \var{i}th element of object \var{o}. Returns \code{-1}
792 on failure. This is the equivalent of the Python statement
793 \samp{del \var{o}[\var{i}]}.
794\end{cfuncdesc}
795
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000796\begin{cfuncdesc}{int}{PySequence_SetSlice}{PyObject *o, Py_ssize_t i1,
797 Py_ssize_t i2, PyObject *v}
Fred Drake3adf79e2001-10-12 19:01:43 +0000798 Assign the sequence object \var{v} to the slice in sequence object
799 \var{o} from \var{i1} to \var{i2}. This is the equivalent of the
800 Python statement \samp{\var{o}[\var{i1}:\var{i2}] = \var{v}}.
801\end{cfuncdesc}
802
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000803\begin{cfuncdesc}{int}{PySequence_DelSlice}{PyObject *o, Py_ssize_t i1, Py_ssize_t i2}
Fred Drake3adf79e2001-10-12 19:01:43 +0000804 Delete the slice in sequence object \var{o} from \var{i1} to
805 \var{i2}. Returns \code{-1} on failure. This is the equivalent of
806 the Python statement \samp{del \var{o}[\var{i1}:\var{i2}]}.
807\end{cfuncdesc}
808
Fred Drake3adf79e2001-10-12 19:01:43 +0000809\begin{cfuncdesc}{int}{PySequence_Count}{PyObject *o, PyObject *value}
810 Return the number of occurrences of \var{value} in \var{o}, that is,
811 return the number of keys for which \code{\var{o}[\var{key}] ==
812 \var{value}}. On failure, return \code{-1}. This is equivalent to
813 the Python expression \samp{\var{o}.count(\var{value})}.
814\end{cfuncdesc}
815
816\begin{cfuncdesc}{int}{PySequence_Contains}{PyObject *o, PyObject *value}
817 Determine if \var{o} contains \var{value}. If an item in \var{o} is
818 equal to \var{value}, return \code{1}, otherwise return \code{0}.
819 On error, return \code{-1}. This is equivalent to the Python
820 expression \samp{\var{value} in \var{o}}.
821\end{cfuncdesc}
822
823\begin{cfuncdesc}{int}{PySequence_Index}{PyObject *o, PyObject *value}
824 Return the first index \var{i} for which \code{\var{o}[\var{i}] ==
825 \var{value}}. On error, return \code{-1}. This is equivalent to
826 the Python expression \samp{\var{o}.index(\var{value})}.
827\end{cfuncdesc}
828
829\begin{cfuncdesc}{PyObject*}{PySequence_List}{PyObject *o}
830 Return a list object with the same contents as the arbitrary
831 sequence \var{o}. The returned list is guaranteed to be new.
832\end{cfuncdesc}
833
834\begin{cfuncdesc}{PyObject*}{PySequence_Tuple}{PyObject *o}
835 Return a tuple object with the same contents as the arbitrary
Neal Norwitz98fcaaf2005-10-12 03:58:14 +0000836 sequence \var{o} or \NULL{} on failure. If \var{o} is a tuple,
837 a new reference will be returned, otherwise a tuple will be
838 constructed with the appropriate contents. This is equivalent
839 to the Python expression \samp{tuple(\var{o})}.
840 \bifuncindex{tuple}
Fred Drake3adf79e2001-10-12 19:01:43 +0000841\end{cfuncdesc}
842
843\begin{cfuncdesc}{PyObject*}{PySequence_Fast}{PyObject *o, const char *m}
844 Returns the sequence \var{o} as a tuple, unless it is already a
845 tuple or list, in which case \var{o} is returned. Use
846 \cfunction{PySequence_Fast_GET_ITEM()} to access the members of the
847 result. Returns \NULL{} on failure. If the object is not a
848 sequence, raises \exception{TypeError} with \var{m} as the message
849 text.
850\end{cfuncdesc}
851
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000852\begin{cfuncdesc}{PyObject*}{PySequence_Fast_GET_ITEM}{PyObject *o, Py_ssize_t i}
Fred Drake3adf79e2001-10-12 19:01:43 +0000853 Return the \var{i}th element of \var{o}, assuming that \var{o} was
Fred Drakec37b65e2001-11-28 07:26:15 +0000854 returned by \cfunction{PySequence_Fast()}, \var{o} is not \NULL,
Tim Peters1fc240e2001-10-26 05:06:50 +0000855 and that \var{i} is within bounds.
856\end{cfuncdesc}
857
Raymond Hettingerc1e4f9d2004-03-12 08:04:00 +0000858\begin{cfuncdesc}{PyObject**}{PySequence_Fast_ITEMS}{PyObject *o}
859 Return the underlying array of PyObject pointers. Assumes that
860 \var{o} was returned by \cfunction{PySequence_Fast()} and
861 \var{o} is not \NULL.
862 \versionadded{2.4}
863\end{cfuncdesc}
864
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000865\begin{cfuncdesc}{PyObject*}{PySequence_ITEM}{PyObject *o, Py_ssize_t i}
Brett Cannon77e02122003-09-07 02:22:16 +0000866 Return the \var{i}th element of \var{o} or \NULL{} on failure.
Martin v. Löwis01f94bd2002-05-08 08:44:21 +0000867 Macro form of \cfunction{PySequence_GetItem()} but without checking
868 that \cfunction{PySequence_Check(\var{o})} is true and without
Fred Drake86228e42002-05-23 16:02:28 +0000869 adjustment for negative indices.
870 \versionadded{2.3}
Martin v. Löwis01f94bd2002-05-08 08:44:21 +0000871\end{cfuncdesc}
872
Tim Peters1fc240e2001-10-26 05:06:50 +0000873\begin{cfuncdesc}{int}{PySequence_Fast_GET_SIZE}{PyObject *o}
874 Returns the length of \var{o}, assuming that \var{o} was
875 returned by \cfunction{PySequence_Fast()} and that \var{o} is
Fred Drakec37b65e2001-11-28 07:26:15 +0000876 not \NULL. The size can also be gotten by calling
Tim Peters1fc240e2001-10-26 05:06:50 +0000877 \cfunction{PySequence_Size()} on \var{o}, but
878 \cfunction{PySequence_Fast_GET_SIZE()} is faster because it can
879 assume \var{o} is a list or tuple.
Fred Drake3adf79e2001-10-12 19:01:43 +0000880\end{cfuncdesc}
881
882
883\section{Mapping Protocol \label{mapping}}
884
885\begin{cfuncdesc}{int}{PyMapping_Check}{PyObject *o}
886 Return \code{1} if the object provides mapping protocol, and
887 \code{0} otherwise. This function always succeeds.
888\end{cfuncdesc}
889
890
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000891\begin{cfuncdesc}{Py_ssize_t}{PyMapping_Length}{PyObject *o}
Fred Drake3adf79e2001-10-12 19:01:43 +0000892 Returns the number of keys in object \var{o} on success, and
893 \code{-1} on failure. For objects that do not provide mapping
894 protocol, this is equivalent to the Python expression
895 \samp{len(\var{o})}.\bifuncindex{len}
896\end{cfuncdesc}
897
898
899\begin{cfuncdesc}{int}{PyMapping_DelItemString}{PyObject *o, char *key}
900 Remove the mapping for object \var{key} from the object \var{o}.
901 Return \code{-1} on failure. This is equivalent to the Python
902 statement \samp{del \var{o}[\var{key}]}.
903\end{cfuncdesc}
904
905
906\begin{cfuncdesc}{int}{PyMapping_DelItem}{PyObject *o, PyObject *key}
907 Remove the mapping for object \var{key} from the object \var{o}.
908 Return \code{-1} on failure. This is equivalent to the Python
909 statement \samp{del \var{o}[\var{key}]}.
910\end{cfuncdesc}
911
912
913\begin{cfuncdesc}{int}{PyMapping_HasKeyString}{PyObject *o, char *key}
914 On success, return \code{1} if the mapping object has the key
915 \var{key} and \code{0} otherwise. This is equivalent to the Python
916 expression \samp{\var{o}.has_key(\var{key})}. This function always
917 succeeds.
918\end{cfuncdesc}
919
920
921\begin{cfuncdesc}{int}{PyMapping_HasKey}{PyObject *o, PyObject *key}
922 Return \code{1} if the mapping object has the key \var{key} and
923 \code{0} otherwise. This is equivalent to the Python expression
924 \samp{\var{o}.has_key(\var{key})}. This function always succeeds.
925\end{cfuncdesc}
926
927
928\begin{cfuncdesc}{PyObject*}{PyMapping_Keys}{PyObject *o}
929 On success, return a list of the keys in object \var{o}. On
930 failure, return \NULL. This is equivalent to the Python expression
931 \samp{\var{o}.keys()}.
932\end{cfuncdesc}
933
934
935\begin{cfuncdesc}{PyObject*}{PyMapping_Values}{PyObject *o}
936 On success, return a list of the values in object \var{o}. On
937 failure, return \NULL. This is equivalent to the Python expression
938 \samp{\var{o}.values()}.
939\end{cfuncdesc}
940
941
942\begin{cfuncdesc}{PyObject*}{PyMapping_Items}{PyObject *o}
943 On success, return a list of the items in object \var{o}, where each
944 item is a tuple containing a key-value pair. On failure, return
945 \NULL. This is equivalent to the Python expression
946 \samp{\var{o}.items()}.
947\end{cfuncdesc}
948
949
950\begin{cfuncdesc}{PyObject*}{PyMapping_GetItemString}{PyObject *o, char *key}
951 Return element of \var{o} corresponding to the object \var{key} or
952 \NULL{} on failure. This is the equivalent of the Python expression
953 \samp{\var{o}[\var{key}]}.
954\end{cfuncdesc}
955
956\begin{cfuncdesc}{int}{PyMapping_SetItemString}{PyObject *o, char *key,
957 PyObject *v}
958 Map the object \var{key} to the value \var{v} in object \var{o}.
959 Returns \code{-1} on failure. This is the equivalent of the Python
960 statement \samp{\var{o}[\var{key}] = \var{v}}.
961\end{cfuncdesc}
962
963
964\section{Iterator Protocol \label{iterator}}
965
966\versionadded{2.2}
967
968There are only a couple of functions specifically for working with
969iterators.
970
971\begin{cfuncdesc}{int}{PyIter_Check}{PyObject *o}
972 Return true if the object \var{o} supports the iterator protocol.
973\end{cfuncdesc}
974
975\begin{cfuncdesc}{PyObject*}{PyIter_Next}{PyObject *o}
976 Return the next value from the iteration \var{o}. If the object is
977 an iterator, this retrieves the next value from the iteration, and
978 returns \NULL{} with no exception set if there are no remaining
979 items. If the object is not an iterator, \exception{TypeError} is
980 raised, or if there is an error in retrieving the item, returns
981 \NULL{} and passes along the exception.
982\end{cfuncdesc}
983
984To write a loop which iterates over an iterator, the C code should
985look something like this:
986
987\begin{verbatim}
Fred Drake314bae52002-03-11 18:46:29 +0000988PyObject *iterator = PyObject_GetIter(obj);
Fred Drake3adf79e2001-10-12 19:01:43 +0000989PyObject *item;
990
Fred Drake314bae52002-03-11 18:46:29 +0000991if (iterator == NULL) {
992 /* propagate error */
993}
994
995while (item = PyIter_Next(iterator)) {
Fred Drake3adf79e2001-10-12 19:01:43 +0000996 /* do something with item */
Fred Drake8b8fe282001-12-26 16:53:48 +0000997 ...
998 /* release reference when done */
999 Py_DECREF(item);
Fred Drake3adf79e2001-10-12 19:01:43 +00001000}
Fred Drake314bae52002-03-11 18:46:29 +00001001
1002Py_DECREF(iterator);
1003
Fred Drake3adf79e2001-10-12 19:01:43 +00001004if (PyErr_Occurred()) {
Fred Drake314bae52002-03-11 18:46:29 +00001005 /* propagate error */
Fred Drake3adf79e2001-10-12 19:01:43 +00001006}
1007else {
1008 /* continue doing useful work */
1009}
Fred Drake8b8fe282001-12-26 16:53:48 +00001010\end{verbatim}
1011
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001012
Fred Drake94ead572001-11-09 23:34:26 +00001013\section{Buffer Protocol \label{abstract-buffer}}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001014
1015\begin{cfuncdesc}{int}{PyObject_AsCharBuffer}{PyObject *obj,
Fred Drake94ead572001-11-09 23:34:26 +00001016 const char **buffer,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001017 Py_ssize_t *buffer_len}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001018 Returns a pointer to a read-only memory location useable as character-
1019 based input. The \var{obj} argument must support the single-segment
Fred Drake243ea712002-04-04 04:10:36 +00001020 character buffer interface. On success, returns \code{0}, sets
Thomas Hellerbfeeeee2001-11-12 07:46:31 +00001021 \var{buffer} to the memory location and \var{buffer_len} to the buffer
Fred Drake243ea712002-04-04 04:10:36 +00001022 length. Returns \code{-1} and sets a \exception{TypeError} on error.
Fred Drake94ead572001-11-09 23:34:26 +00001023 \versionadded{1.6}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001024\end{cfuncdesc}
1025
1026\begin{cfuncdesc}{int}{PyObject_AsReadBuffer}{PyObject *obj,
Andrew M. Kuchlingee5e4cd2004-07-07 13:07:47 +00001027 const void **buffer,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001028 Py_ssize_t *buffer_len}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001029 Returns a pointer to a read-only memory location containing
1030 arbitrary data. The \var{obj} argument must support the
1031 single-segment readable buffer interface. On success, returns
Fred Drake243ea712002-04-04 04:10:36 +00001032 \code{0}, sets \var{buffer} to the memory location and \var{buffer_len}
1033 to the buffer length. Returns \code{-1} and sets a
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001034 \exception{TypeError} on error.
Fred Drake94ead572001-11-09 23:34:26 +00001035 \versionadded{1.6}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001036\end{cfuncdesc}
1037
1038\begin{cfuncdesc}{int}{PyObject_CheckReadBuffer}{PyObject *o}
1039 Returns \code{1} if \var{o} supports the single-segment readable
1040 buffer interface. Otherwise returns \code{0}.
Fred Drake94ead572001-11-09 23:34:26 +00001041 \versionadded{2.2}
Fred Drake8b8fe282001-12-26 16:53:48 +00001042\end{cfuncdesc}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001043
1044\begin{cfuncdesc}{int}{PyObject_AsWriteBuffer}{PyObject *obj,
Andrew M. Kuchlingee5e4cd2004-07-07 13:07:47 +00001045 void **buffer,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001046 Py_ssize_t *buffer_len}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001047 Returns a pointer to a writeable memory location. The \var{obj}
1048 argument must support the single-segment, character buffer
Fred Drake243ea712002-04-04 04:10:36 +00001049 interface. On success, returns \code{0}, sets \var{buffer} to the
Thomas Hellerbfeeeee2001-11-12 07:46:31 +00001050 memory location and \var{buffer_len} to the buffer length. Returns
Fred Drake243ea712002-04-04 04:10:36 +00001051 \code{-1} and sets a \exception{TypeError} on error.
Fred Drake94ead572001-11-09 23:34:26 +00001052 \versionadded{1.6}
Jeremy Hylton89c3a222001-11-09 21:59:42 +00001053\end{cfuncdesc}