blob: 98e0e039ab594a34967eb6c121de3a64b8862fa2 [file] [log] [blame]
Fred Drake3adf79e2001-10-12 19:01:43 +00001\chapter{Concrete Objects Layer \label{concrete}}
2
3
4The functions in this chapter are specific to certain Python object
5types. Passing them an object of the wrong type is not a good idea;
6if you receive an object from a Python program and you are not sure
7that it has the right type, you must perform a type check first;
8for example, to check that an object is a dictionary, use
9\cfunction{PyDict_Check()}. The chapter is structured like the
10``family tree'' of Python object types.
11
12\warning{While the functions described in this chapter carefully check
13the type of the objects which are passed in, many of them do not check
14for \NULL{} being passed instead of a valid object. Allowing \NULL{}
15to be passed in can cause memory access violations and immediate
16termination of the interpreter.}
17
18
19\section{Fundamental Objects \label{fundamental}}
20
Tim Petersf582b822001-12-11 18:51:08 +000021This section describes Python type objects and the singleton object
Fred Drake3adf79e2001-10-12 19:01:43 +000022\code{None}.
23
24
25\subsection{Type Objects \label{typeObjects}}
26
27\obindex{type}
28\begin{ctypedesc}{PyTypeObject}
29 The C structure of the objects used to describe built-in types.
30\end{ctypedesc}
31
32\begin{cvardesc}{PyObject*}{PyType_Type}
33 This is the type object for type objects; it is the same object as
34 \code{types.TypeType} in the Python layer.
35 \withsubitem{(in module types)}{\ttindex{TypeType}}
36\end{cvardesc}
37
38\begin{cfuncdesc}{int}{PyType_Check}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +000039 Return true if the object \var{o} is a type object, including
40 instances of types derived from the standard type object. Return
Fred Drakee3c764b2002-04-10 17:52:52 +000041 false in all other cases.
42\end{cfuncdesc}
43
44\begin{cfuncdesc}{int}{PyType_CheckExact}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +000045 Return true if the object \var{o} is a type object, but not a
46 subtype of the standard type object. Return false in all other
Fred Drakee3c764b2002-04-10 17:52:52 +000047 cases.
48 \versionadded{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +000049\end{cfuncdesc}
50
51\begin{cfuncdesc}{int}{PyType_HasFeature}{PyObject *o, int feature}
Georg Brandl99363b62005-09-03 07:27:26 +000052 Return true if the type object \var{o} sets the feature
Fred Drake3adf79e2001-10-12 19:01:43 +000053 \var{feature}. Type features are denoted by single bit flags.
54\end{cfuncdesc}
55
Fred Drakee3c764b2002-04-10 17:52:52 +000056\begin{cfuncdesc}{int}{PyType_IS_GC}{PyObject *o}
57 Return true if the type object includes support for the cycle
58 detector; this tests the type flag \constant{Py_TPFLAGS_HAVE_GC}.
59 \versionadded{2.0}
60\end{cfuncdesc}
61
Fred Drake3adf79e2001-10-12 19:01:43 +000062\begin{cfuncdesc}{int}{PyType_IsSubtype}{PyTypeObject *a, PyTypeObject *b}
Georg Brandl99363b62005-09-03 07:27:26 +000063 Return true if \var{a} is a subtype of \var{b}.
Fred Drake3adf79e2001-10-12 19:01:43 +000064 \versionadded{2.2}
65\end{cfuncdesc}
66
67\begin{cfuncdesc}{PyObject*}{PyType_GenericAlloc}{PyTypeObject *type,
Martin v. Löwis29fafd82006-03-01 05:16:03 +000068 Py_ssize_t nitems}
Fred Drake3adf79e2001-10-12 19:01:43 +000069 \versionadded{2.2}
70\end{cfuncdesc}
71
72\begin{cfuncdesc}{PyObject*}{PyType_GenericNew}{PyTypeObject *type,
73 PyObject *args, PyObject *kwds}
74 \versionadded{2.2}
75\end{cfuncdesc}
76
77\begin{cfuncdesc}{int}{PyType_Ready}{PyTypeObject *type}
Fred Drake28de8d42002-04-12 16:15:10 +000078 Finalize a type object. This should be called on all type objects
79 to finish their initialization. This function is responsible for
Georg Brandl99363b62005-09-03 07:27:26 +000080 adding inherited slots from a type's base class. Return \code{0}
81 on success, or return \code{-1} and sets an exception on error.
Fred Drake3adf79e2001-10-12 19:01:43 +000082 \versionadded{2.2}
83\end{cfuncdesc}
84
85
86\subsection{The None Object \label{noneObject}}
87
Fred Drake7a700b82004-01-01 05:43:53 +000088\obindex{None}
Fred Drake3adf79e2001-10-12 19:01:43 +000089Note that the \ctype{PyTypeObject} for \code{None} is not directly
90exposed in the Python/C API. Since \code{None} is a singleton,
91testing for object identity (using \samp{==} in C) is sufficient.
92There is no \cfunction{PyNone_Check()} function for the same reason.
93
94\begin{cvardesc}{PyObject*}{Py_None}
95 The Python \code{None} object, denoting lack of value. This object
Fred Drake6ccdccd2002-03-12 20:12:54 +000096 has no methods. It needs to be treated just like any other object
97 with respect to reference counts.
Fred Drake3adf79e2001-10-12 19:01:43 +000098\end{cvardesc}
99
Brett Cannon35d83602003-11-09 04:15:30 +0000100\begin{csimplemacrodesc}{Py_RETURN_NONE}
Georg Brandl99363b62005-09-03 07:27:26 +0000101 Properly handle returning \cdata{Py_None} from within a C function.
Brett Cannon35d83602003-11-09 04:15:30 +0000102\end{csimplemacrodesc}
103
Fred Drake3adf79e2001-10-12 19:01:43 +0000104
105\section{Numeric Objects \label{numericObjects}}
106
107\obindex{numeric}
108
109
110\subsection{Plain Integer Objects \label{intObjects}}
111
112\obindex{integer}
113\begin{ctypedesc}{PyIntObject}
114 This subtype of \ctype{PyObject} represents a Python integer
115 object.
116\end{ctypedesc}
117
118\begin{cvardesc}{PyTypeObject}{PyInt_Type}
Tim Petersf582b822001-12-11 18:51:08 +0000119 This instance of \ctype{PyTypeObject} represents the Python plain
Fred Drake3adf79e2001-10-12 19:01:43 +0000120 integer type. This is the same object as \code{types.IntType}.
121 \withsubitem{(in modules types)}{\ttindex{IntType}}
122\end{cvardesc}
123
Andrew M. Kuchling4eb1a002004-08-07 20:19:24 +0000124\begin{cfuncdesc}{int}{PyInt_Check}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000125 Return true if \var{o} is of type \cdata{PyInt_Type} or a subtype
Fred Drake3adf79e2001-10-12 19:01:43 +0000126 of \cdata{PyInt_Type}.
127 \versionchanged[Allowed subtypes to be accepted]{2.2}
128\end{cfuncdesc}
129
Andrew M. Kuchling4eb1a002004-08-07 20:19:24 +0000130\begin{cfuncdesc}{int}{PyInt_CheckExact}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000131 Return true if \var{o} is of type \cdata{PyInt_Type}, but not a
Fred Drake3adf79e2001-10-12 19:01:43 +0000132 subtype of \cdata{PyInt_Type}.
133 \versionadded{2.2}
134\end{cfuncdesc}
135
Skip Montanaro1ff49a72003-02-03 05:13:24 +0000136\begin{cfuncdesc}{PyObject*}{PyInt_FromString}{char *str, char **pend,
137 int base}
138 Return a new \ctype{PyIntObject} or \ctype{PyLongObject} based on the
139 string value in \var{str}, which is interpreted according to the radix in
Tim Peters9ddf40b2004-06-20 22:41:32 +0000140 \var{base}. If \var{pend} is non-\NULL{}, \code{*\var{pend}} will point to
Skip Montanaro1ff49a72003-02-03 05:13:24 +0000141 the first character in \var{str} which follows the representation of the
142 number. If \var{base} is \code{0}, the radix will be determined based on
143 the leading characters of \var{str}: if \var{str} starts with \code{'0x'}
144 or \code{'0X'}, radix 16 will be used; if \var{str} starts with
145 \code{'0'}, radix 8 will be used; otherwise radix 10 will be used. If
146 \var{base} is not \code{0}, it must be between \code{2} and \code{36},
147 inclusive. Leading spaces are ignored. If there are no digits,
148 \exception{ValueError} will be raised. If the string represents a number
149 too large to be contained within the machine's \ctype{long int} type and
150 overflow warnings are being suppressed, a \ctype{PyLongObject} will be
151 returned. If overflow warnings are not being suppressed, \NULL{} will be
152 returned in this case.
153\end{cfuncdesc}
154
Fred Drake3adf79e2001-10-12 19:01:43 +0000155\begin{cfuncdesc}{PyObject*}{PyInt_FromLong}{long ival}
Georg Brandl99363b62005-09-03 07:27:26 +0000156 Create a new integer object with a value of \var{ival}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000157
158 The current implementation keeps an array of integer objects for all
Georg Brandlb6e92c42006-03-27 22:09:16 +0000159 integers between \code{-5} and \code{256}, when you create an int in
Fred Drake3adf79e2001-10-12 19:01:43 +0000160 that range you actually just get back a reference to the existing
161 object. So it should be possible to change the value of \code{1}. I
162 suspect the behaviour of Python in this case is undefined. :-)
163\end{cfuncdesc}
164
Martin v. Löwis3b197542006-03-01 05:47:11 +0000165\begin{cfuncdesc}{PyObject*}{PyInt_FromSsize_t}{Py_ssize_t ival}
166 Create a new integer object with a value of \var{ival}.
167 If the value exceeds \code{LONG_MAX}, a long integer object is
168 returned.
169
170 \versionadded{2.5}
171\end{cfuncdesc}
172
Fred Drake3adf79e2001-10-12 19:01:43 +0000173\begin{cfuncdesc}{long}{PyInt_AsLong}{PyObject *io}
174 Will first attempt to cast the object to a \ctype{PyIntObject}, if
Martin v. Löwis3b197542006-03-01 05:47:11 +0000175 it is not already one, and then return its value. If there is an
176 error, \code{-1} is returned, and the caller should check
177 \code{PyErr_Occurred()} to find out whether there was an error, or
178 whether the value just happened to be -1.
Fred Drake3adf79e2001-10-12 19:01:43 +0000179\end{cfuncdesc}
180
181\begin{cfuncdesc}{long}{PyInt_AS_LONG}{PyObject *io}
Georg Brandl99363b62005-09-03 07:27:26 +0000182 Return the value of the object \var{io}. No error checking is
Fred Drake3adf79e2001-10-12 19:01:43 +0000183 performed.
184\end{cfuncdesc}
185
Thomas Heller34d7f092003-04-23 19:51:05 +0000186\begin{cfuncdesc}{unsigned long}{PyInt_AsUnsignedLongMask}{PyObject *io}
187 Will first attempt to cast the object to a \ctype{PyIntObject} or
Fred Drakec22b2992003-04-23 20:38:41 +0000188 \ctype{PyLongObject}, if it is not already one, and then return its
Thomas Heller34d7f092003-04-23 19:51:05 +0000189 value as unsigned long. This function does not check for overflow.
190 \versionadded{2.3}
191\end{cfuncdesc}
192
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000193\begin{cfuncdesc}{unsigned PY_LONG_LONG}{PyInt_AsUnsignedLongLongMask}{PyObject *io}
Thomas Heller34d7f092003-04-23 19:51:05 +0000194 Will first attempt to cast the object to a \ctype{PyIntObject} or
Fred Drakec22b2992003-04-23 20:38:41 +0000195 \ctype{PyLongObject}, if it is not already one, and then return its
Thomas Heller34d7f092003-04-23 19:51:05 +0000196 value as unsigned long long, without checking for overflow.
197 \versionadded{2.3}
198\end{cfuncdesc}
199
Martin v. Löwis3b197542006-03-01 05:47:11 +0000200\begin{cfuncdesc}{Py_ssize_t}{PyInt_AsSsize_t}{PyObject *io}
201 Will first attempt to cast the object to a \ctype{PyIntObject} or
202 \ctype{PyLongObject}, if it is not already one, and then return its
203 value as \ctype{Py_ssize_t}.
204 \versionadded{2.5}
205\end{cfuncdesc}
206
Fred Drake3adf79e2001-10-12 19:01:43 +0000207\begin{cfuncdesc}{long}{PyInt_GetMax}{}
Georg Brandl99363b62005-09-03 07:27:26 +0000208 Return the system's idea of the largest integer it can handle
Fred Drake3adf79e2001-10-12 19:01:43 +0000209 (\constant{LONG_MAX}\ttindex{LONG_MAX}, as defined in the system
210 header files).
211\end{cfuncdesc}
212
Fred Drake2be406b2004-08-03 16:02:35 +0000213\subsection{Boolean Objects \label{boolObjects}}
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000214
215Booleans in Python are implemented as a subclass of integers. There
216are only two booleans, \constant{Py_False} and \constant{Py_True}. As
217such, the normal creation and deletion functions don't apply to
218booleans. The following macros are available, however.
219
Andrew M. Kuchling4eb1a002004-08-07 20:19:24 +0000220\begin{cfuncdesc}{int}{PyBool_Check}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000221 Return true if \var{o} is of type \cdata{PyBool_Type}.
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000222 \versionadded{2.3}
223\end{cfuncdesc}
224
Skip Montanaro6d3db702004-07-29 02:16:04 +0000225\begin{cvardesc}{PyObject*}{Py_False}
226 The Python \code{False} object. This object has no methods. It needs to
227 be treated just like any other object with respect to reference counts.
228\end{cvardesc}
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000229
Skip Montanaro6d3db702004-07-29 02:16:04 +0000230\begin{cvardesc}{PyObject*}{Py_True}
231 The Python \code{True} object. This object has no methods. It needs to
232 be treated just like any other object with respect to reference counts.
233\end{cvardesc}
234
235\begin{csimplemacrodesc}{Py_RETURN_FALSE}
236 Return \constant{Py_False} from a function, properly incrementing its
237 reference count.
238\versionadded{2.4}
239\end{csimplemacrodesc}
240
241\begin{csimplemacrodesc}{Py_RETURN_TRUE}
Andrew M. Kuchling4eb1a002004-08-07 20:19:24 +0000242 Return \constant{Py_True} from a function, properly incrementing its
243 reference count.
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000244\versionadded{2.4}
Skip Montanaro6d3db702004-07-29 02:16:04 +0000245\end{csimplemacrodesc}
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000246
Georg Brandl99363b62005-09-03 07:27:26 +0000247\begin{cfuncdesc}{PyObject*}{PyBool_FromLong}{long v}
248 Return a new reference to \constant{Py_True} or \constant{Py_False}
249 depending on the truth value of \var{v}.
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000250\versionadded{2.3}
251\end{cfuncdesc}
Fred Drake3adf79e2001-10-12 19:01:43 +0000252
253\subsection{Long Integer Objects \label{longObjects}}
254
255\obindex{long integer}
256\begin{ctypedesc}{PyLongObject}
257 This subtype of \ctype{PyObject} represents a Python long integer
258 object.
259\end{ctypedesc}
260
261\begin{cvardesc}{PyTypeObject}{PyLong_Type}
262 This instance of \ctype{PyTypeObject} represents the Python long
263 integer type. This is the same object as \code{types.LongType}.
264 \withsubitem{(in modules types)}{\ttindex{LongType}}
265\end{cvardesc}
266
267\begin{cfuncdesc}{int}{PyLong_Check}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +0000268 Return true if its argument is a \ctype{PyLongObject} or a subtype
Fred Drake3adf79e2001-10-12 19:01:43 +0000269 of \ctype{PyLongObject}.
270 \versionchanged[Allowed subtypes to be accepted]{2.2}
271\end{cfuncdesc}
272
273\begin{cfuncdesc}{int}{PyLong_CheckExact}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +0000274 Return true if its argument is a \ctype{PyLongObject}, but not a
Fred Drake3adf79e2001-10-12 19:01:43 +0000275 subtype of \ctype{PyLongObject}.
276 \versionadded{2.2}
277\end{cfuncdesc}
278
279\begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
Georg Brandl99363b62005-09-03 07:27:26 +0000280 Return a new \ctype{PyLongObject} object from \var{v}, or \NULL{}
Fred Drake3adf79e2001-10-12 19:01:43 +0000281 on failure.
282\end{cfuncdesc}
283
284\begin{cfuncdesc}{PyObject*}{PyLong_FromUnsignedLong}{unsigned long v}
Georg Brandl99363b62005-09-03 07:27:26 +0000285 Return a new \ctype{PyLongObject} object from a C \ctype{unsigned
Fred Drake3adf79e2001-10-12 19:01:43 +0000286 long}, or \NULL{} on failure.
287\end{cfuncdesc}
288
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000289\begin{cfuncdesc}{PyObject*}{PyLong_FromLongLong}{PY_LONG_LONG v}
Georg Brandl99363b62005-09-03 07:27:26 +0000290 Return a new \ctype{PyLongObject} object from a C \ctype{long long},
Fred Drake3adf79e2001-10-12 19:01:43 +0000291 or \NULL{} on failure.
292\end{cfuncdesc}
293
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000294\begin{cfuncdesc}{PyObject*}{PyLong_FromUnsignedLongLong}{unsigned PY_LONG_LONG v}
Georg Brandl99363b62005-09-03 07:27:26 +0000295 Return a new \ctype{PyLongObject} object from a C \ctype{unsigned
Fred Drake3adf79e2001-10-12 19:01:43 +0000296 long long}, or \NULL{} on failure.
297\end{cfuncdesc}
298
299\begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
Georg Brandl99363b62005-09-03 07:27:26 +0000300 Return a new \ctype{PyLongObject} object from the integer part of
Fred Drake3adf79e2001-10-12 19:01:43 +0000301 \var{v}, or \NULL{} on failure.
302\end{cfuncdesc}
303
304\begin{cfuncdesc}{PyObject*}{PyLong_FromString}{char *str, char **pend,
305 int base}
306 Return a new \ctype{PyLongObject} based on the string value in
307 \var{str}, which is interpreted according to the radix in
Tim Peters9ddf40b2004-06-20 22:41:32 +0000308 \var{base}. If \var{pend} is non-\NULL{}, \code{*\var{pend}} will
Fred Drake3adf79e2001-10-12 19:01:43 +0000309 point to the first character in \var{str} which follows the
310 representation of the number. If \var{base} is \code{0}, the radix
Skip Montanaro1ff49a72003-02-03 05:13:24 +0000311 will be determined based on the leading characters of \var{str}: if
Fred Drake3adf79e2001-10-12 19:01:43 +0000312 \var{str} starts with \code{'0x'} or \code{'0X'}, radix 16 will be
313 used; if \var{str} starts with \code{'0'}, radix 8 will be used;
314 otherwise radix 10 will be used. If \var{base} is not \code{0}, it
315 must be between \code{2} and \code{36}, inclusive. Leading spaces
316 are ignored. If there are no digits, \exception{ValueError} will be
317 raised.
318\end{cfuncdesc}
319
320\begin{cfuncdesc}{PyObject*}{PyLong_FromUnicode}{Py_UNICODE *u,
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000321 Py_ssize_t length, int base}
Fred Drake3adf79e2001-10-12 19:01:43 +0000322 Convert a sequence of Unicode digits to a Python long integer
323 value. The first parameter, \var{u}, points to the first character
324 of the Unicode string, \var{length} gives the number of characters,
325 and \var{base} is the radix for the conversion. The radix must be
326 in the range [2, 36]; if it is out of range, \exception{ValueError}
327 will be raised.
328 \versionadded{1.6}
329\end{cfuncdesc}
330
331\begin{cfuncdesc}{PyObject*}{PyLong_FromVoidPtr}{void *p}
332 Create a Python integer or long integer from the pointer \var{p}.
333 The pointer value can be retrieved from the resulting value using
334 \cfunction{PyLong_AsVoidPtr()}.
335 \versionadded{1.5.2}
336\end{cfuncdesc}
337
338\begin{cfuncdesc}{long}{PyLong_AsLong}{PyObject *pylong}
Georg Brandl99363b62005-09-03 07:27:26 +0000339 Return a C \ctype{long} representation of the contents of
Fred Drake3adf79e2001-10-12 19:01:43 +0000340 \var{pylong}. If \var{pylong} is greater than
341 \constant{LONG_MAX}\ttindex{LONG_MAX}, an \exception{OverflowError}
342 is raised.
343 \withsubitem{(built-in exception)}{\ttindex{OverflowError}}
344\end{cfuncdesc}
345
346\begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLong}{PyObject *pylong}
Georg Brandl99363b62005-09-03 07:27:26 +0000347 Return a C \ctype{unsigned long} representation of the contents of
Fred Drake3adf79e2001-10-12 19:01:43 +0000348 \var{pylong}. If \var{pylong} is greater than
349 \constant{ULONG_MAX}\ttindex{ULONG_MAX}, an
350 \exception{OverflowError} is raised.
Tim Petersf582b822001-12-11 18:51:08 +0000351 \withsubitem{(built-in exception)}{\ttindex{OverflowError}}
Fred Drake3adf79e2001-10-12 19:01:43 +0000352\end{cfuncdesc}
353
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000354\begin{cfuncdesc}{PY_LONG_LONG}{PyLong_AsLongLong}{PyObject *pylong}
Fred Drake3adf79e2001-10-12 19:01:43 +0000355 Return a C \ctype{long long} from a Python long integer. If
356 \var{pylong} cannot be represented as a \ctype{long long}, an
357 \exception{OverflowError} will be raised.
358 \versionadded{2.2}
359\end{cfuncdesc}
360
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000361\begin{cfuncdesc}{unsigned PY_LONG_LONG}{PyLong_AsUnsignedLongLong}{PyObject
Fred Drake3adf79e2001-10-12 19:01:43 +0000362 *pylong}
363 Return a C \ctype{unsigned long long} from a Python long integer.
364 If \var{pylong} cannot be represented as an \ctype{unsigned long
365 long}, an \exception{OverflowError} will be raised if the value is
366 positive, or a \exception{TypeError} will be raised if the value is
367 negative.
368 \versionadded{2.2}
369\end{cfuncdesc}
370
Thomas Heller34d7f092003-04-23 19:51:05 +0000371\begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLongMask}{PyObject *io}
372 Return a C \ctype{unsigned long} from a Python long integer, without
373 checking for overflow.
374 \versionadded{2.3}
375\end{cfuncdesc}
376
377\begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLongLongMask}{PyObject *io}
378 Return a C \ctype{unsigned long long} from a Python long integer, without
379 checking for overflow.
380 \versionadded{2.3}
381\end{cfuncdesc}
382
Fred Drake3adf79e2001-10-12 19:01:43 +0000383\begin{cfuncdesc}{double}{PyLong_AsDouble}{PyObject *pylong}
Georg Brandl99363b62005-09-03 07:27:26 +0000384 Return a C \ctype{double} representation of the contents of
Fred Drake3adf79e2001-10-12 19:01:43 +0000385 \var{pylong}. If \var{pylong} cannot be approximately represented
386 as a \ctype{double}, an \exception{OverflowError} exception is
387 raised and \code{-1.0} will be returned.
388\end{cfuncdesc}
389
390\begin{cfuncdesc}{void*}{PyLong_AsVoidPtr}{PyObject *pylong}
391 Convert a Python integer or long integer \var{pylong} to a C
392 \ctype{void} pointer. If \var{pylong} cannot be converted, an
393 \exception{OverflowError} will be raised. This is only assured to
394 produce a usable \ctype{void} pointer for values created with
395 \cfunction{PyLong_FromVoidPtr()}.
396 \versionadded{1.5.2}
397\end{cfuncdesc}
398
399
400\subsection{Floating Point Objects \label{floatObjects}}
401
402\obindex{floating point}
403\begin{ctypedesc}{PyFloatObject}
404 This subtype of \ctype{PyObject} represents a Python floating point
405 object.
406\end{ctypedesc}
407
408\begin{cvardesc}{PyTypeObject}{PyFloat_Type}
409 This instance of \ctype{PyTypeObject} represents the Python floating
410 point type. This is the same object as \code{types.FloatType}.
411 \withsubitem{(in modules types)}{\ttindex{FloatType}}
412\end{cvardesc}
413
414\begin{cfuncdesc}{int}{PyFloat_Check}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +0000415 Return true if its argument is a \ctype{PyFloatObject} or a subtype
Fred Drake3adf79e2001-10-12 19:01:43 +0000416 of \ctype{PyFloatObject}.
417 \versionchanged[Allowed subtypes to be accepted]{2.2}
418\end{cfuncdesc}
419
420\begin{cfuncdesc}{int}{PyFloat_CheckExact}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +0000421 Return true if its argument is a \ctype{PyFloatObject}, but not a
Fred Drake3adf79e2001-10-12 19:01:43 +0000422 subtype of \ctype{PyFloatObject}.
423 \versionadded{2.2}
424\end{cfuncdesc}
425
Skip Montanaro1ff49a72003-02-03 05:13:24 +0000426\begin{cfuncdesc}{PyObject*}{PyFloat_FromString}{PyObject *str, char **pend}
Georg Brandl99363b62005-09-03 07:27:26 +0000427 Create a \ctype{PyFloatObject} object based on the string value in
Skip Montanaro1ff49a72003-02-03 05:13:24 +0000428 \var{str}, or \NULL{} on failure. The \var{pend} argument is ignored. It
429 remains only for backward compatibility.
Skip Montanaroae31e9b2003-02-03 03:56:36 +0000430\end{cfuncdesc}
431
Fred Drake3adf79e2001-10-12 19:01:43 +0000432\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
Georg Brandl99363b62005-09-03 07:27:26 +0000433 Create a \ctype{PyFloatObject} object from \var{v}, or \NULL{} on
Fred Drake3adf79e2001-10-12 19:01:43 +0000434 failure.
435\end{cfuncdesc}
436
437\begin{cfuncdesc}{double}{PyFloat_AsDouble}{PyObject *pyfloat}
Georg Brandl99363b62005-09-03 07:27:26 +0000438 Return a C \ctype{double} representation of the contents of
Fred Drake3adf79e2001-10-12 19:01:43 +0000439 \var{pyfloat}.
440\end{cfuncdesc}
441
442\begin{cfuncdesc}{double}{PyFloat_AS_DOUBLE}{PyObject *pyfloat}
Georg Brandl99363b62005-09-03 07:27:26 +0000443 Return a C \ctype{double} representation of the contents of
Fred Drake3adf79e2001-10-12 19:01:43 +0000444 \var{pyfloat}, but without error checking.
445\end{cfuncdesc}
446
447
448\subsection{Complex Number Objects \label{complexObjects}}
449
450\obindex{complex number}
451Python's complex number objects are implemented as two distinct types
452when viewed from the C API: one is the Python object exposed to
453Python programs, and the other is a C structure which represents the
454actual complex number value. The API provides functions for working
455with both.
456
457\subsubsection{Complex Numbers as C Structures}
458
459Note that the functions which accept these structures as parameters
460and return them as results do so \emph{by value} rather than
461dereferencing them through pointers. This is consistent throughout
462the API.
463
464\begin{ctypedesc}{Py_complex}
465 The C structure which corresponds to the value portion of a Python
466 complex number object. Most of the functions for dealing with
467 complex number objects use structures of this type as input or
468 output values, as appropriate. It is defined as:
469
470\begin{verbatim}
471typedef struct {
472 double real;
473 double imag;
474} Py_complex;
475\end{verbatim}
476\end{ctypedesc}
477
478\begin{cfuncdesc}{Py_complex}{_Py_c_sum}{Py_complex left, Py_complex right}
479 Return the sum of two complex numbers, using the C
480 \ctype{Py_complex} representation.
481\end{cfuncdesc}
482
483\begin{cfuncdesc}{Py_complex}{_Py_c_diff}{Py_complex left, Py_complex right}
484 Return the difference between two complex numbers, using the C
485 \ctype{Py_complex} representation.
486\end{cfuncdesc}
487
488\begin{cfuncdesc}{Py_complex}{_Py_c_neg}{Py_complex complex}
489 Return the negation of the complex number \var{complex}, using the C
490 \ctype{Py_complex} representation.
491\end{cfuncdesc}
492
493\begin{cfuncdesc}{Py_complex}{_Py_c_prod}{Py_complex left, Py_complex right}
494 Return the product of two complex numbers, using the C
495 \ctype{Py_complex} representation.
496\end{cfuncdesc}
497
498\begin{cfuncdesc}{Py_complex}{_Py_c_quot}{Py_complex dividend,
499 Py_complex divisor}
500 Return the quotient of two complex numbers, using the C
501 \ctype{Py_complex} representation.
502\end{cfuncdesc}
503
504\begin{cfuncdesc}{Py_complex}{_Py_c_pow}{Py_complex num, Py_complex exp}
505 Return the exponentiation of \var{num} by \var{exp}, using the C
506 \ctype{Py_complex} representation.
507\end{cfuncdesc}
508
509
510\subsubsection{Complex Numbers as Python Objects}
511
512\begin{ctypedesc}{PyComplexObject}
513 This subtype of \ctype{PyObject} represents a Python complex number
514 object.
515\end{ctypedesc}
516
517\begin{cvardesc}{PyTypeObject}{PyComplex_Type}
518 This instance of \ctype{PyTypeObject} represents the Python complex
519 number type.
520\end{cvardesc}
521
522\begin{cfuncdesc}{int}{PyComplex_Check}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +0000523 Return true if its argument is a \ctype{PyComplexObject} or a
Fred Drake3adf79e2001-10-12 19:01:43 +0000524 subtype of \ctype{PyComplexObject}.
525 \versionchanged[Allowed subtypes to be accepted]{2.2}
526\end{cfuncdesc}
527
528\begin{cfuncdesc}{int}{PyComplex_CheckExact}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +0000529 Return true if its argument is a \ctype{PyComplexObject}, but not a
Fred Drake3adf79e2001-10-12 19:01:43 +0000530 subtype of \ctype{PyComplexObject}.
531 \versionadded{2.2}
532\end{cfuncdesc}
533
534\begin{cfuncdesc}{PyObject*}{PyComplex_FromCComplex}{Py_complex v}
535 Create a new Python complex number object from a C
536 \ctype{Py_complex} value.
537\end{cfuncdesc}
538
539\begin{cfuncdesc}{PyObject*}{PyComplex_FromDoubles}{double real, double imag}
Georg Brandl99363b62005-09-03 07:27:26 +0000540 Return a new \ctype{PyComplexObject} object from \var{real} and
Fred Drake3adf79e2001-10-12 19:01:43 +0000541 \var{imag}.
542\end{cfuncdesc}
543
544\begin{cfuncdesc}{double}{PyComplex_RealAsDouble}{PyObject *op}
Georg Brandl99363b62005-09-03 07:27:26 +0000545 Return the real part of \var{op} as a C \ctype{double}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000546\end{cfuncdesc}
547
548\begin{cfuncdesc}{double}{PyComplex_ImagAsDouble}{PyObject *op}
Georg Brandl99363b62005-09-03 07:27:26 +0000549 Return the imaginary part of \var{op} as a C \ctype{double}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000550\end{cfuncdesc}
551
552\begin{cfuncdesc}{Py_complex}{PyComplex_AsCComplex}{PyObject *op}
Georg Brandl99363b62005-09-03 07:27:26 +0000553 Return the \ctype{Py_complex} value of the complex number
Fred Drake3adf79e2001-10-12 19:01:43 +0000554 \var{op}.
555\end{cfuncdesc}
556
557
558
559\section{Sequence Objects \label{sequenceObjects}}
560
561\obindex{sequence}
Tim Petersf582b822001-12-11 18:51:08 +0000562Generic operations on sequence objects were discussed in the previous
563chapter; this section deals with the specific kinds of sequence
Fred Drake3adf79e2001-10-12 19:01:43 +0000564objects that are intrinsic to the Python language.
565
566
567\subsection{String Objects \label{stringObjects}}
568
569These functions raise \exception{TypeError} when expecting a string
570parameter and are called with a non-string parameter.
571
572\obindex{string}
573\begin{ctypedesc}{PyStringObject}
574 This subtype of \ctype{PyObject} represents a Python string object.
575\end{ctypedesc}
576
577\begin{cvardesc}{PyTypeObject}{PyString_Type}
578 This instance of \ctype{PyTypeObject} represents the Python string
579 type; it is the same object as \code{types.TypeType} in the Python
580 layer.
581 \withsubitem{(in module types)}{\ttindex{StringType}}.
582\end{cvardesc}
583
584\begin{cfuncdesc}{int}{PyString_Check}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000585 Return true if the object \var{o} is a string object or an instance
Fred Drake3adf79e2001-10-12 19:01:43 +0000586 of a subtype of the string type.
587 \versionchanged[Allowed subtypes to be accepted]{2.2}
588\end{cfuncdesc}
589
590\begin{cfuncdesc}{int}{PyString_CheckExact}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000591 Return true if the object \var{o} is a string object, but not an
Fred Drake3adf79e2001-10-12 19:01:43 +0000592 instance of a subtype of the string type.
593 \versionadded{2.2}
594\end{cfuncdesc}
595
596\begin{cfuncdesc}{PyObject*}{PyString_FromString}{const char *v}
Georg Brandl99363b62005-09-03 07:27:26 +0000597 Return a new string object with the value \var{v} on success, and
Tim Peters9ddf40b2004-06-20 22:41:32 +0000598 \NULL{} on failure. The parameter \var{v} must not be \NULL{}; it
Fred Drake32a35872001-12-06 20:38:15 +0000599 will not be checked.
Fred Drake3adf79e2001-10-12 19:01:43 +0000600\end{cfuncdesc}
601
602\begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{const char *v,
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000603 Py_ssize_t len}
Georg Brandl99363b62005-09-03 07:27:26 +0000604 Return a new string object with the value \var{v} and length
Fred Drake3adf79e2001-10-12 19:01:43 +0000605 \var{len} on success, and \NULL{} on failure. If \var{v} is
Tim Peters9ddf40b2004-06-20 22:41:32 +0000606 \NULL{}, the contents of the string are uninitialized.
Fred Drake3adf79e2001-10-12 19:01:43 +0000607\end{cfuncdesc}
608
609\begin{cfuncdesc}{PyObject*}{PyString_FromFormat}{const char *format, ...}
Georg Brandl99363b62005-09-03 07:27:26 +0000610 Take a C \cfunction{printf()}-style \var{format} string and a
611 variable number of arguments, calculate the size of the resulting
612 Python string and return a string with the values formatted into
Fred Drake3adf79e2001-10-12 19:01:43 +0000613 it. The variable arguments must be C types and must correspond
614 exactly to the format characters in the \var{format} string. The
615 following format characters are allowed:
616
617 \begin{tableiii}{l|l|l}{member}{Format Characters}{Type}{Comment}
618 \lineiii{\%\%}{\emph{n/a}}{The literal \% character.}
619 \lineiii{\%c}{int}{A single character, represented as an C int.}
620 \lineiii{\%d}{int}{Exactly equivalent to \code{printf("\%d")}.}
621 \lineiii{\%ld}{long}{Exactly equivalent to \code{printf("\%ld")}.}
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000622 \lineiii{\%zd}{long}{Exactly equivalent to \code{printf("\%zd")}.}
Fred Drake3adf79e2001-10-12 19:01:43 +0000623 \lineiii{\%i}{int}{Exactly equivalent to \code{printf("\%i")}.}
624 \lineiii{\%x}{int}{Exactly equivalent to \code{printf("\%x")}.}
625 \lineiii{\%s}{char*}{A null-terminated C character array.}
626 \lineiii{\%p}{void*}{The hex representation of a C pointer.
627 Mostly equivalent to \code{printf("\%p")} except that it is
628 guaranteed to start with the literal \code{0x} regardless of
629 what the platform's \code{printf} yields.}
630 \end{tableiii}
631\end{cfuncdesc}
632
633\begin{cfuncdesc}{PyObject*}{PyString_FromFormatV}{const char *format,
634 va_list vargs}
635 Identical to \function{PyString_FromFormat()} except that it takes
636 exactly two arguments.
637\end{cfuncdesc}
638
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000639\begin{cfuncdesc}{Py_ssize_t}{PyString_Size}{PyObject *string}
Georg Brandl99363b62005-09-03 07:27:26 +0000640 Return the length of the string in string object \var{string}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000641\end{cfuncdesc}
642
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000643\begin{cfuncdesc}{Py_ssize_t}{PyString_GET_SIZE}{PyObject *string}
Fred Drake3adf79e2001-10-12 19:01:43 +0000644 Macro form of \cfunction{PyString_Size()} but without error
645 checking.
646\end{cfuncdesc}
647
648\begin{cfuncdesc}{char*}{PyString_AsString}{PyObject *string}
Georg Brandl99363b62005-09-03 07:27:26 +0000649 Return a NUL-terminated representation of the contents of
Fred Drake3adf79e2001-10-12 19:01:43 +0000650 \var{string}. The pointer refers to the internal buffer of
651 \var{string}, not a copy. The data must not be modified in any way,
652 unless the string was just created using
653 \code{PyString_FromStringAndSize(NULL, \var{size})}.
Fred Drake4b247262002-10-22 20:20:20 +0000654 It must not be deallocated. If \var{string} is a Unicode object,
655 this function computes the default encoding of \var{string} and
656 operates on that. If \var{string} is not a string object at all,
657 \cfunction{PyString_AsString()} returns \NULL{} and raises
658 \exception{TypeError}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000659\end{cfuncdesc}
660
661\begin{cfuncdesc}{char*}{PyString_AS_STRING}{PyObject *string}
662 Macro form of \cfunction{PyString_AsString()} but without error
Fred Drake4b247262002-10-22 20:20:20 +0000663 checking. Only string objects are supported; no Unicode objects
664 should be passed.
Fred Drake3adf79e2001-10-12 19:01:43 +0000665\end{cfuncdesc}
666
667\begin{cfuncdesc}{int}{PyString_AsStringAndSize}{PyObject *obj,
668 char **buffer,
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000669 Py_ssize_t *length}
Georg Brandl99363b62005-09-03 07:27:26 +0000670 Return a NUL-terminated representation of the contents of the
Fred Drake3adf79e2001-10-12 19:01:43 +0000671 object \var{obj} through the output variables \var{buffer} and
672 \var{length}.
673
674 The function accepts both string and Unicode objects as input. For
675 Unicode objects it returns the default encoded version of the
Tim Peters9ddf40b2004-06-20 22:41:32 +0000676 object. If \var{length} is \NULL{}, the resulting buffer may not
Fred Drake4b247262002-10-22 20:20:20 +0000677 contain NUL characters; if it does, the function returns \code{-1}
678 and a \exception{TypeError} is raised.
Fred Drake3adf79e2001-10-12 19:01:43 +0000679
680 The buffer refers to an internal string buffer of \var{obj}, not a
681 copy. The data must not be modified in any way, unless the string
682 was just created using \code{PyString_FromStringAndSize(NULL,
Fred Drake4b247262002-10-22 20:20:20 +0000683 \var{size})}. It must not be deallocated. If \var{string} is a
684 Unicode object, this function computes the default encoding of
685 \var{string} and operates on that. If \var{string} is not a string
Georg Brandle53475d2005-09-28 12:53:12 +0000686 object at all, \cfunction{PyString_AsStringAndSize()} returns
687 \code{-1} and raises \exception{TypeError}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000688\end{cfuncdesc}
689
690\begin{cfuncdesc}{void}{PyString_Concat}{PyObject **string,
691 PyObject *newpart}
Georg Brandl99363b62005-09-03 07:27:26 +0000692 Create a new string object in \var{*string} containing the contents
Fred Drake3adf79e2001-10-12 19:01:43 +0000693 of \var{newpart} appended to \var{string}; the caller will own the
694 new reference. The reference to the old value of \var{string} will
695 be stolen. If the new string cannot be created, the old reference
696 to \var{string} will still be discarded and the value of
Tim Peters9ddf40b2004-06-20 22:41:32 +0000697 \var{*string} will be set to \NULL{}; the appropriate exception will
Fred Drake3adf79e2001-10-12 19:01:43 +0000698 be set.
699\end{cfuncdesc}
700
701\begin{cfuncdesc}{void}{PyString_ConcatAndDel}{PyObject **string,
702 PyObject *newpart}
Georg Brandl99363b62005-09-03 07:27:26 +0000703 Create a new string object in \var{*string} containing the contents
Fred Drake3adf79e2001-10-12 19:01:43 +0000704 of \var{newpart} appended to \var{string}. This version decrements
705 the reference count of \var{newpart}.
706\end{cfuncdesc}
707
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000708\begin{cfuncdesc}{int}{_PyString_Resize}{PyObject **string, Py_ssize_t newsize}
Fred Drake3adf79e2001-10-12 19:01:43 +0000709 A way to resize a string object even though it is ``immutable''.
710 Only use this to build up a brand new string object; don't use this
Tim Peters5de98422002-04-27 18:44:32 +0000711 if the string may already be known in other parts of the code. It
712 is an error to call this function if the refcount on the input string
713 object is not one.
714 Pass the address of an existing string object as an lvalue (it may
715 be written into), and the new size desired. On success, \var{*string}
Fred Drake432425e2002-04-29 15:17:16 +0000716 holds the resized string object and \code{0} is returned; the address in
Tim Peters5de98422002-04-27 18:44:32 +0000717 \var{*string} may differ from its input value. If the
718 reallocation fails, the original string object at \var{*string} is
719 deallocated, \var{*string} is set to \NULL{}, a memory exception is set,
Fred Drake432425e2002-04-29 15:17:16 +0000720 and \code{-1} is returned.
Fred Drake3adf79e2001-10-12 19:01:43 +0000721\end{cfuncdesc}
722
723\begin{cfuncdesc}{PyObject*}{PyString_Format}{PyObject *format,
724 PyObject *args}
Georg Brandl99363b62005-09-03 07:27:26 +0000725 Return a new string object from \var{format} and \var{args}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000726 Analogous to \code{\var{format} \%\ \var{args}}. The \var{args}
727 argument must be a tuple.
728\end{cfuncdesc}
729
730\begin{cfuncdesc}{void}{PyString_InternInPlace}{PyObject **string}
731 Intern the argument \var{*string} in place. The argument must be
732 the address of a pointer variable pointing to a Python string
733 object. If there is an existing interned string that is the same as
734 \var{*string}, it sets \var{*string} to it (decrementing the
735 reference count of the old string object and incrementing the
736 reference count of the interned string object), otherwise it leaves
737 \var{*string} alone and interns it (incrementing its reference
738 count). (Clarification: even though there is a lot of talk about
739 reference counts, think of this function as reference-count-neutral;
740 you own the object after the call if and only if you owned it before
741 the call.)
742\end{cfuncdesc}
743
744\begin{cfuncdesc}{PyObject*}{PyString_InternFromString}{const char *v}
745 A combination of \cfunction{PyString_FromString()} and
746 \cfunction{PyString_InternInPlace()}, returning either a new string
747 object that has been interned, or a new (``owned'') reference to an
748 earlier interned string object with the same value.
749\end{cfuncdesc}
750
751\begin{cfuncdesc}{PyObject*}{PyString_Decode}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000752 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +0000753 const char *encoding,
754 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +0000755 Create an object by decoding \var{size} bytes of the encoded
Fred Drake3adf79e2001-10-12 19:01:43 +0000756 buffer \var{s} using the codec registered for
757 \var{encoding}. \var{encoding} and \var{errors} have the same
758 meaning as the parameters of the same name in the
759 \function{unicode()} built-in function. The codec to be used is
Georg Brandl99363b62005-09-03 07:27:26 +0000760 looked up using the Python codec registry. Return \NULL{} if
Fred Drake3adf79e2001-10-12 19:01:43 +0000761 an exception was raised by the codec.
762\end{cfuncdesc}
763
764\begin{cfuncdesc}{PyObject*}{PyString_AsDecodedObject}{PyObject *str,
765 const char *encoding,
766 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +0000767 Decode a string object by passing it to the codec registered for
768 \var{encoding} and return the result as Python
Fred Drake3adf79e2001-10-12 19:01:43 +0000769 object. \var{encoding} and \var{errors} have the same meaning as the
770 parameters of the same name in the string \method{encode()} method.
771 The codec to be used is looked up using the Python codec registry.
Georg Brandl99363b62005-09-03 07:27:26 +0000772 Return \NULL{} if an exception was raised by the codec.
Fred Drake3adf79e2001-10-12 19:01:43 +0000773\end{cfuncdesc}
774
775\begin{cfuncdesc}{PyObject*}{PyString_Encode}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000776 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +0000777 const char *encoding,
778 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +0000779 Encode the \ctype{char} buffer of the given size by passing it to
780 the codec registered for \var{encoding} and return a Python object.
Fred Drake3adf79e2001-10-12 19:01:43 +0000781 \var{encoding} and \var{errors} have the same meaning as the
782 parameters of the same name in the string \method{encode()} method.
783 The codec to be used is looked up using the Python codec
Georg Brandl99363b62005-09-03 07:27:26 +0000784 registry. Return \NULL{} if an exception was raised by the
Fred Drake3adf79e2001-10-12 19:01:43 +0000785 codec.
786\end{cfuncdesc}
787
788\begin{cfuncdesc}{PyObject*}{PyString_AsEncodedObject}{PyObject *str,
789 const char *encoding,
790 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +0000791 Encode a string object using the codec registered for
792 \var{encoding} and return the result as Python object.
Fred Drake3adf79e2001-10-12 19:01:43 +0000793 \var{encoding} and \var{errors} have the same meaning as the
794 parameters of the same name in the string \method{encode()} method.
795 The codec to be used is looked up using the Python codec registry.
Georg Brandl99363b62005-09-03 07:27:26 +0000796 Return \NULL{} if an exception was raised by the codec.
Fred Drake3adf79e2001-10-12 19:01:43 +0000797\end{cfuncdesc}
798
799
800\subsection{Unicode Objects \label{unicodeObjects}}
801\sectionauthor{Marc-Andre Lemburg}{mal@lemburg.com}
802
803%--- Unicode Type -------------------------------------------------------
804
805These are the basic Unicode object types used for the Unicode
806implementation in Python:
807
808\begin{ctypedesc}{Py_UNICODE}
Marc-André Lemburgdf4f6e92005-10-10 19:08:41 +0000809 This type represents the storage type which is used by Python
810 internally as basis for holding Unicode ordinals. Python's default
811 builds use a 16-bit type for \ctype{Py_UNICODE} and store Unicode
812 values internally as UCS2. It is also possible to build a UCS4
813 version of Python (most recent Linux distributions come with UCS4
814 builds of Python). These builds then use a 32-bit type for
815 \ctype{Py_UNICODE} and store Unicode data internally as UCS4. On
816 platforms where \ctype{wchar_t} is available and compatible with the
817 chosen Python Unicode build variant, \ctype{Py_UNICODE} is a typedef
818 alias for \ctype{wchar_t} to enhance native platform compatibility.
819 On all other platforms, \ctype{Py_UNICODE} is a typedef alias for
820 either \ctype{unsigned short} (UCS2) or \ctype{unsigned long}
821 (UCS4).
Fred Drake3adf79e2001-10-12 19:01:43 +0000822\end{ctypedesc}
823
Marc-André Lemburgdf4f6e92005-10-10 19:08:41 +0000824Note that UCS2 and UCS4 Python builds are not binary compatible.
825Please keep this in mind when writing extensions or interfaces.
826
Fred Drake3adf79e2001-10-12 19:01:43 +0000827\begin{ctypedesc}{PyUnicodeObject}
828 This subtype of \ctype{PyObject} represents a Python Unicode object.
829\end{ctypedesc}
830
831\begin{cvardesc}{PyTypeObject}{PyUnicode_Type}
832 This instance of \ctype{PyTypeObject} represents the Python Unicode
833 type.
834\end{cvardesc}
835
836The following APIs are really C macros and can be used to do fast
837checks and to access internal read-only data of Unicode objects:
838
839\begin{cfuncdesc}{int}{PyUnicode_Check}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000840 Return true if the object \var{o} is a Unicode object or an
Fred Drake3adf79e2001-10-12 19:01:43 +0000841 instance of a Unicode subtype.
842 \versionchanged[Allowed subtypes to be accepted]{2.2}
843\end{cfuncdesc}
844
845\begin{cfuncdesc}{int}{PyUnicode_CheckExact}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000846 Return true if the object \var{o} is a Unicode object, but not an
Fred Drake3adf79e2001-10-12 19:01:43 +0000847 instance of a subtype.
848 \versionadded{2.2}
849\end{cfuncdesc}
850
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000851\begin{cfuncdesc}{Py_ssize_t}{PyUnicode_GET_SIZE}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000852 Return the size of the object. \var{o} has to be a
Fred Drake3adf79e2001-10-12 19:01:43 +0000853 \ctype{PyUnicodeObject} (not checked).
854\end{cfuncdesc}
855
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000856\begin{cfuncdesc}{Py_ssize_t}{PyUnicode_GET_DATA_SIZE}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000857 Return the size of the object's internal buffer in bytes. \var{o}
Fred Drake3adf79e2001-10-12 19:01:43 +0000858 has to be a \ctype{PyUnicodeObject} (not checked).
859\end{cfuncdesc}
860
861\begin{cfuncdesc}{Py_UNICODE*}{PyUnicode_AS_UNICODE}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000862 Return a pointer to the internal \ctype{Py_UNICODE} buffer of the
Fred Drake3adf79e2001-10-12 19:01:43 +0000863 object. \var{o} has to be a \ctype{PyUnicodeObject} (not checked).
864\end{cfuncdesc}
865
866\begin{cfuncdesc}{const char*}{PyUnicode_AS_DATA}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000867 Return a pointer to the internal buffer of the object.
Fred Drake3adf79e2001-10-12 19:01:43 +0000868 \var{o} has to be a \ctype{PyUnicodeObject} (not checked).
869\end{cfuncdesc}
870
871% --- Unicode character properties ---------------------------------------
872
873Unicode provides many different character properties. The most often
874needed ones are available through these macros which are mapped to C
875functions depending on the Python configuration.
876
877\begin{cfuncdesc}{int}{Py_UNICODE_ISSPACE}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000878 Return 1 or 0 depending on whether \var{ch} is a whitespace
Fred Drake3adf79e2001-10-12 19:01:43 +0000879 character.
880\end{cfuncdesc}
881
882\begin{cfuncdesc}{int}{Py_UNICODE_ISLOWER}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000883 Return 1 or 0 depending on whether \var{ch} is a lowercase character.
Fred Drake3adf79e2001-10-12 19:01:43 +0000884\end{cfuncdesc}
885
886\begin{cfuncdesc}{int}{Py_UNICODE_ISUPPER}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000887 Return 1 or 0 depending on whether \var{ch} is an uppercase
Fred Drake3adf79e2001-10-12 19:01:43 +0000888 character.
889\end{cfuncdesc}
890
891\begin{cfuncdesc}{int}{Py_UNICODE_ISTITLE}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000892 Return 1 or 0 depending on whether \var{ch} is a titlecase character.
Fred Drake3adf79e2001-10-12 19:01:43 +0000893\end{cfuncdesc}
894
895\begin{cfuncdesc}{int}{Py_UNICODE_ISLINEBREAK}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000896 Return 1 or 0 depending on whether \var{ch} is a linebreak character.
Fred Drake3adf79e2001-10-12 19:01:43 +0000897\end{cfuncdesc}
898
899\begin{cfuncdesc}{int}{Py_UNICODE_ISDECIMAL}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000900 Return 1 or 0 depending on whether \var{ch} is a decimal character.
Fred Drake3adf79e2001-10-12 19:01:43 +0000901\end{cfuncdesc}
902
903\begin{cfuncdesc}{int}{Py_UNICODE_ISDIGIT}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000904 Return 1 or 0 depending on whether \var{ch} is a digit character.
Fred Drake3adf79e2001-10-12 19:01:43 +0000905\end{cfuncdesc}
906
907\begin{cfuncdesc}{int}{Py_UNICODE_ISNUMERIC}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000908 Return 1 or 0 depending on whether \var{ch} is a numeric character.
Fred Drake3adf79e2001-10-12 19:01:43 +0000909\end{cfuncdesc}
910
911\begin{cfuncdesc}{int}{Py_UNICODE_ISALPHA}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000912 Return 1 or 0 depending on whether \var{ch} is an alphabetic
Fred Drake3adf79e2001-10-12 19:01:43 +0000913 character.
914\end{cfuncdesc}
915
916\begin{cfuncdesc}{int}{Py_UNICODE_ISALNUM}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000917 Return 1 or 0 depending on whether \var{ch} is an alphanumeric
Fred Drake3adf79e2001-10-12 19:01:43 +0000918 character.
919\end{cfuncdesc}
920
921These APIs can be used for fast direct character conversions:
922
923\begin{cfuncdesc}{Py_UNICODE}{Py_UNICODE_TOLOWER}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000924 Return the character \var{ch} converted to lower case.
Fred Drake3adf79e2001-10-12 19:01:43 +0000925\end{cfuncdesc}
926
927\begin{cfuncdesc}{Py_UNICODE}{Py_UNICODE_TOUPPER}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000928 Return the character \var{ch} converted to upper case.
Fred Drake3adf79e2001-10-12 19:01:43 +0000929\end{cfuncdesc}
930
931\begin{cfuncdesc}{Py_UNICODE}{Py_UNICODE_TOTITLE}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000932 Return the character \var{ch} converted to title case.
Fred Drake3adf79e2001-10-12 19:01:43 +0000933\end{cfuncdesc}
934
935\begin{cfuncdesc}{int}{Py_UNICODE_TODECIMAL}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000936 Return the character \var{ch} converted to a decimal positive
937 integer. Return \code{-1} if this is not possible. This macro
938 does not raise exceptions.
Fred Drake3adf79e2001-10-12 19:01:43 +0000939\end{cfuncdesc}
940
941\begin{cfuncdesc}{int}{Py_UNICODE_TODIGIT}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000942 Return the character \var{ch} converted to a single digit integer.
943 Return \code{-1} if this is not possible. This macro does not raise
Fred Drake3adf79e2001-10-12 19:01:43 +0000944 exceptions.
945\end{cfuncdesc}
946
947\begin{cfuncdesc}{double}{Py_UNICODE_TONUMERIC}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000948 Return the character \var{ch} converted to a (positive) double.
949 Return \code{-1.0} if this is not possible. This macro does not raise
Fred Drake3adf79e2001-10-12 19:01:43 +0000950 exceptions.
951\end{cfuncdesc}
952
953% --- Plain Py_UNICODE ---------------------------------------------------
954
955To create Unicode objects and access their basic sequence properties,
956use these APIs:
957
958\begin{cfuncdesc}{PyObject*}{PyUnicode_FromUnicode}{const Py_UNICODE *u,
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000959 Py_ssize_t size}
Fred Drake3adf79e2001-10-12 19:01:43 +0000960 Create a Unicode Object from the Py_UNICODE buffer \var{u} of the
961 given size. \var{u} may be \NULL{} which causes the contents to be
962 undefined. It is the user's responsibility to fill in the needed
963 data. The buffer is copied into the new object. If the buffer is
Tim Peters9ddf40b2004-06-20 22:41:32 +0000964 not \NULL{}, the return value might be a shared object. Therefore,
Fred Drake3adf79e2001-10-12 19:01:43 +0000965 modification of the resulting Unicode object is only allowed when
Tim Peters9ddf40b2004-06-20 22:41:32 +0000966 \var{u} is \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000967\end{cfuncdesc}
968
969\begin{cfuncdesc}{Py_UNICODE*}{PyUnicode_AsUnicode}{PyObject *unicode}
970 Return a read-only pointer to the Unicode object's internal
971 \ctype{Py_UNICODE} buffer, \NULL{} if \var{unicode} is not a Unicode
972 object.
973\end{cfuncdesc}
974
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000975\begin{cfuncdesc}{Py_ssize_t}{PyUnicode_GetSize}{PyObject *unicode}
Fred Drake3adf79e2001-10-12 19:01:43 +0000976 Return the length of the Unicode object.
977\end{cfuncdesc}
978
979\begin{cfuncdesc}{PyObject*}{PyUnicode_FromEncodedObject}{PyObject *obj,
980 const char *encoding,
981 const char *errors}
982 Coerce an encoded object \var{obj} to an Unicode object and return a
983 reference with incremented refcount.
984
985 Coercion is done in the following way:
986
987\begin{enumerate}
988\item Unicode objects are passed back as-is with incremented
989 refcount. \note{These cannot be decoded; passing a non-\NULL{}
990 value for encoding will result in a \exception{TypeError}.}
991
992\item String and other char buffer compatible objects are decoded
993 according to the given encoding and using the error handling
994 defined by errors. Both can be \NULL{} to have the interface
995 use the default values (see the next section for details).
996
997\item All other objects cause an exception.
998\end{enumerate}
999
1000 The API returns \NULL{} if there was an error. The caller is
1001 responsible for decref'ing the returned objects.
1002\end{cfuncdesc}
1003
1004\begin{cfuncdesc}{PyObject*}{PyUnicode_FromObject}{PyObject *obj}
1005 Shortcut for \code{PyUnicode_FromEncodedObject(obj, NULL, "strict")}
1006 which is used throughout the interpreter whenever coercion to
1007 Unicode is needed.
1008\end{cfuncdesc}
1009
1010% --- wchar_t support for platforms which support it ---------------------
1011
1012If the platform supports \ctype{wchar_t} and provides a header file
1013wchar.h, Python can interface directly to this type using the
1014following functions. Support is optimized if Python's own
1015\ctype{Py_UNICODE} type is identical to the system's \ctype{wchar_t}.
1016
1017\begin{cfuncdesc}{PyObject*}{PyUnicode_FromWideChar}{const wchar_t *w,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001018 Py_ssize_t size}
Thomas Heller541703b2002-04-29 17:28:43 +00001019 Create a Unicode object from the \ctype{wchar_t} buffer \var{w} of
Georg Brandl99363b62005-09-03 07:27:26 +00001020 the given size. Return \NULL{} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00001021\end{cfuncdesc}
1022
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001023\begin{cfuncdesc}{Py_ssize_t}{PyUnicode_AsWideChar}{PyUnicodeObject *unicode,
Fred Drake3adf79e2001-10-12 19:01:43 +00001024 wchar_t *w,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001025 Py_ssize_t size}
Georg Brandl99363b62005-09-03 07:27:26 +00001026 Copy the Unicode object contents into the \ctype{wchar_t} buffer
Marc-André Lemburga9cadcd2004-11-22 13:02:31 +00001027 \var{w}. At most \var{size} \ctype{wchar_t} characters are copied
Georg Brandl99363b62005-09-03 07:27:26 +00001028 (excluding a possibly trailing 0-termination character). Return
Marc-André Lemburga9cadcd2004-11-22 13:02:31 +00001029 the number of \ctype{wchar_t} characters copied or -1 in case of an
1030 error. Note that the resulting \ctype{wchar_t} string may or may
1031 not be 0-terminated. It is the responsibility of the caller to make
1032 sure that the \ctype{wchar_t} string is 0-terminated in case this is
1033 required by the application.
Fred Drake3adf79e2001-10-12 19:01:43 +00001034\end{cfuncdesc}
1035
1036
1037\subsubsection{Built-in Codecs \label{builtinCodecs}}
1038
1039Python provides a set of builtin codecs which are written in C
1040for speed. All of these codecs are directly usable via the
1041following functions.
1042
1043Many of the following APIs take two arguments encoding and
1044errors. These parameters encoding and errors have the same semantics
1045as the ones of the builtin unicode() Unicode object constructor.
1046
1047Setting encoding to \NULL{} causes the default encoding to be used
1048which is \ASCII. The file system calls should use
1049\cdata{Py_FileSystemDefaultEncoding} as the encoding for file
1050names. This variable should be treated as read-only: On some systems,
1051it will be a pointer to a static string, on others, it will change at
Raymond Hettingercb2da432003-10-12 18:24:34 +00001052run-time (such as when the application invokes setlocale).
Fred Drake3adf79e2001-10-12 19:01:43 +00001053
1054Error handling is set by errors which may also be set to \NULL{}
1055meaning to use the default handling defined for the codec. Default
1056error handling for all builtin codecs is ``strict''
1057(\exception{ValueError} is raised).
1058
1059The codecs all use a similar interface. Only deviation from the
1060following generic ones are documented for simplicity.
1061
1062% --- Generic Codecs -----------------------------------------------------
1063
1064These are the generic codec APIs:
1065
1066\begin{cfuncdesc}{PyObject*}{PyUnicode_Decode}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001067 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001068 const char *encoding,
1069 const char *errors}
1070 Create a Unicode object by decoding \var{size} bytes of the encoded
1071 string \var{s}. \var{encoding} and \var{errors} have the same
1072 meaning as the parameters of the same name in the
1073 \function{unicode()} builtin function. The codec to be used is
Georg Brandl99363b62005-09-03 07:27:26 +00001074 looked up using the Python codec registry. Return \NULL{} if an
Fred Drake3adf79e2001-10-12 19:01:43 +00001075 exception was raised by the codec.
1076\end{cfuncdesc}
1077
1078\begin{cfuncdesc}{PyObject*}{PyUnicode_Encode}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001079 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001080 const char *encoding,
1081 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001082 Encode the \ctype{Py_UNICODE} buffer of the given size and return
Fred Drake3adf79e2001-10-12 19:01:43 +00001083 a Python string object. \var{encoding} and \var{errors} have the
1084 same meaning as the parameters of the same name in the Unicode
1085 \method{encode()} method. The codec to be used is looked up using
Georg Brandl99363b62005-09-03 07:27:26 +00001086 the Python codec registry. Return \NULL{} if an exception was
Fred Drake3adf79e2001-10-12 19:01:43 +00001087 raised by the codec.
1088\end{cfuncdesc}
1089
1090\begin{cfuncdesc}{PyObject*}{PyUnicode_AsEncodedString}{PyObject *unicode,
1091 const char *encoding,
1092 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001093 Encode a Unicode object and return the result as Python string
Fred Drake3adf79e2001-10-12 19:01:43 +00001094 object. \var{encoding} and \var{errors} have the same meaning as the
1095 parameters of the same name in the Unicode \method{encode()} method.
1096 The codec to be used is looked up using the Python codec registry.
Georg Brandl99363b62005-09-03 07:27:26 +00001097 Return \NULL{} if an exception was raised by the codec.
Fred Drake3adf79e2001-10-12 19:01:43 +00001098\end{cfuncdesc}
1099
1100% --- UTF-8 Codecs -------------------------------------------------------
1101
1102These are the UTF-8 codec APIs:
1103
1104\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF8}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001105 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001106 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001107 Create a Unicode object by decoding \var{size} bytes of the UTF-8
1108 encoded string \var{s}. Return \NULL{} if an exception was raised
Fred Drake3adf79e2001-10-12 19:01:43 +00001109 by the codec.
1110\end{cfuncdesc}
1111
Walter Dörwald69652032004-09-07 20:24:22 +00001112\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF8Stateful}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001113 Py_ssize_t size,
Walter Dörwald69652032004-09-07 20:24:22 +00001114 const char *errors,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001115 Py_ssize_t *consumed}
Georg Brandl99363b62005-09-03 07:27:26 +00001116 If \var{consumed} is \NULL{}, behave like \cfunction{PyUnicode_DecodeUTF8()}.
Walter Dörwald69652032004-09-07 20:24:22 +00001117 If \var{consumed} is not \NULL{}, trailing incomplete UTF-8 byte sequences
1118 will not be treated as an error. Those bytes will not be decoded and the
1119 number of bytes that have been decoded will be stored in \var{consumed}.
1120 \versionadded{2.4}
1121\end{cfuncdesc}
1122
Fred Drake3adf79e2001-10-12 19:01:43 +00001123\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeUTF8}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001124 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001125 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001126 Encode the \ctype{Py_UNICODE} buffer of the given size using UTF-8
1127 and return a Python string object. Return \NULL{} if an exception
Fred Drake3adf79e2001-10-12 19:01:43 +00001128 was raised by the codec.
1129\end{cfuncdesc}
1130
1131\begin{cfuncdesc}{PyObject*}{PyUnicode_AsUTF8String}{PyObject *unicode}
Georg Brandl99363b62005-09-03 07:27:26 +00001132 Encode a Unicode objects using UTF-8 and return the result as
1133 Python string object. Error handling is ``strict''. Return
Fred Drake3adf79e2001-10-12 19:01:43 +00001134 \NULL{} if an exception was raised by the codec.
1135\end{cfuncdesc}
1136
1137% --- UTF-16 Codecs ------------------------------------------------------ */
1138
1139These are the UTF-16 codec APIs:
1140
1141\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF16}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001142 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001143 const char *errors,
1144 int *byteorder}
Georg Brandl99363b62005-09-03 07:27:26 +00001145 Decode \var{length} bytes from a UTF-16 encoded buffer string and
1146 return the corresponding Unicode object. \var{errors} (if
Tim Peters9ddf40b2004-06-20 22:41:32 +00001147 non-\NULL{}) defines the error handling. It defaults to ``strict''.
Fred Drake3adf79e2001-10-12 19:01:43 +00001148
Tim Peters9ddf40b2004-06-20 22:41:32 +00001149 If \var{byteorder} is non-\NULL{}, the decoder starts decoding using
Fred Drake3adf79e2001-10-12 19:01:43 +00001150 the given byte order:
1151
1152\begin{verbatim}
1153 *byteorder == -1: little endian
1154 *byteorder == 0: native order
1155 *byteorder == 1: big endian
1156\end{verbatim}
1157
1158 and then switches according to all byte order marks (BOM) it finds
1159 in the input data. BOMs are not copied into the resulting Unicode
1160 string. After completion, \var{*byteorder} is set to the current
1161 byte order at the end of input data.
1162
Tim Peters9ddf40b2004-06-20 22:41:32 +00001163 If \var{byteorder} is \NULL{}, the codec starts in native order mode.
Fred Drake3adf79e2001-10-12 19:01:43 +00001164
Georg Brandl99363b62005-09-03 07:27:26 +00001165 Return \NULL{} if an exception was raised by the codec.
Fred Drake3adf79e2001-10-12 19:01:43 +00001166\end{cfuncdesc}
1167
Walter Dörwald69652032004-09-07 20:24:22 +00001168\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF16Stateful}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001169 Py_ssize_t size,
Walter Dörwald69652032004-09-07 20:24:22 +00001170 const char *errors,
1171 int *byteorder,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001172 Py_ssize_t *consumed}
Georg Brandl99363b62005-09-03 07:27:26 +00001173 If \var{consumed} is \NULL{}, behave like
Walter Dörwald69652032004-09-07 20:24:22 +00001174 \cfunction{PyUnicode_DecodeUTF16()}. If \var{consumed} is not \NULL{},
1175 \cfunction{PyUnicode_DecodeUTF16Stateful()} will not treat trailing incomplete
Raymond Hettinger0c230b92005-08-17 10:05:22 +00001176 UTF-16 byte sequences (such as an odd number of bytes or a split surrogate pair)
Walter Dörwald69652032004-09-07 20:24:22 +00001177 as an error. Those bytes will not be decoded and the number of bytes that
1178 have been decoded will be stored in \var{consumed}.
1179 \versionadded{2.4}
1180\end{cfuncdesc}
1181
Fred Drake3adf79e2001-10-12 19:01:43 +00001182\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeUTF16}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001183 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001184 const char *errors,
1185 int byteorder}
Georg Brandl99363b62005-09-03 07:27:26 +00001186 Return a Python string object holding the UTF-16 encoded value of
Fred Drake3adf79e2001-10-12 19:01:43 +00001187 the Unicode data in \var{s}. If \var{byteorder} is not \code{0},
1188 output is written according to the following byte order:
1189
1190\begin{verbatim}
1191 byteorder == -1: little endian
1192 byteorder == 0: native byte order (writes a BOM mark)
1193 byteorder == 1: big endian
1194\end{verbatim}
1195
1196 If byteorder is \code{0}, the output string will always start with
1197 the Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark
1198 is prepended.
1199
Martin v. Löwis9bc4f2d2004-06-03 09:55:28 +00001200 If \var{Py_UNICODE_WIDE} is defined, a single \ctype{Py_UNICODE}
1201 value may get represented as a surrogate pair. If it is not
1202 defined, each \ctype{Py_UNICODE} values is interpreted as an
1203 UCS-2 character.
Fred Drake3adf79e2001-10-12 19:01:43 +00001204
Georg Brandl99363b62005-09-03 07:27:26 +00001205 Return \NULL{} if an exception was raised by the codec.
Fred Drake3adf79e2001-10-12 19:01:43 +00001206\end{cfuncdesc}
1207
1208\begin{cfuncdesc}{PyObject*}{PyUnicode_AsUTF16String}{PyObject *unicode}
Georg Brandl99363b62005-09-03 07:27:26 +00001209 Return a Python string using the UTF-16 encoding in native byte
Fred Drake3adf79e2001-10-12 19:01:43 +00001210 order. The string always starts with a BOM mark. Error handling is
Georg Brandl99363b62005-09-03 07:27:26 +00001211 ``strict''. Return \NULL{} if an exception was raised by the
Fred Drake3adf79e2001-10-12 19:01:43 +00001212 codec.
1213\end{cfuncdesc}
1214
1215% --- Unicode-Escape Codecs ----------------------------------------------
1216
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001217These are the ``Unicode Escape'' codec APIs:
Fred Drake3adf79e2001-10-12 19:01:43 +00001218
1219\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUnicodeEscape}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001220 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001221 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001222 Create a Unicode object by decoding \var{size} bytes of the
1223 Unicode-Escape encoded string \var{s}. Return \NULL{} if an
Fred Drake3adf79e2001-10-12 19:01:43 +00001224 exception was raised by the codec.
1225\end{cfuncdesc}
1226
1227\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeUnicodeEscape}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001228 Py_ssize_t size}
Georg Brandl99363b62005-09-03 07:27:26 +00001229 Encode the \ctype{Py_UNICODE} buffer of the given size using
1230 Unicode-Escape and return a Python string object. Return \NULL{}
Fred Drake3adf79e2001-10-12 19:01:43 +00001231 if an exception was raised by the codec.
1232\end{cfuncdesc}
1233
1234\begin{cfuncdesc}{PyObject*}{PyUnicode_AsUnicodeEscapeString}{PyObject *unicode}
Georg Brandl99363b62005-09-03 07:27:26 +00001235 Encode a Unicode objects using Unicode-Escape and return the
Fred Drake3adf79e2001-10-12 19:01:43 +00001236 result as Python string object. Error handling is ``strict''.
Georg Brandl99363b62005-09-03 07:27:26 +00001237 Return \NULL{} if an exception was raised by the codec.
Fred Drake3adf79e2001-10-12 19:01:43 +00001238\end{cfuncdesc}
1239
1240% --- Raw-Unicode-Escape Codecs ------------------------------------------
1241
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001242These are the ``Raw Unicode Escape'' codec APIs:
Fred Drake3adf79e2001-10-12 19:01:43 +00001243
1244\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeRawUnicodeEscape}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001245 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001246 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001247 Create a Unicode object by decoding \var{size} bytes of the
1248 Raw-Unicode-Escape encoded string \var{s}. Return \NULL{} if an
Fred Drake3adf79e2001-10-12 19:01:43 +00001249 exception was raised by the codec.
1250\end{cfuncdesc}
1251
1252\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeRawUnicodeEscape}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001253 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001254 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001255 Encode the \ctype{Py_UNICODE} buffer of the given size using
1256 Raw-Unicode-Escape and return a Python string object. Return
Fred Drake3adf79e2001-10-12 19:01:43 +00001257 \NULL{} if an exception was raised by the codec.
1258\end{cfuncdesc}
1259
1260\begin{cfuncdesc}{PyObject*}{PyUnicode_AsRawUnicodeEscapeString}{PyObject *unicode}
Georg Brandl99363b62005-09-03 07:27:26 +00001261 Encode a Unicode objects using Raw-Unicode-Escape and return the
Fred Drake3adf79e2001-10-12 19:01:43 +00001262 result as Python string object. Error handling is ``strict''.
Georg Brandl99363b62005-09-03 07:27:26 +00001263 Return \NULL{} if an exception was raised by the codec.
Fred Drake3adf79e2001-10-12 19:01:43 +00001264\end{cfuncdesc}
1265
Tim Petersf582b822001-12-11 18:51:08 +00001266% --- Latin-1 Codecs -----------------------------------------------------
Fred Drake3adf79e2001-10-12 19:01:43 +00001267
1268These are the Latin-1 codec APIs:
1269Latin-1 corresponds to the first 256 Unicode ordinals and only these
1270are accepted by the codecs during encoding.
1271
1272\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeLatin1}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001273 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001274 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001275 Create a Unicode object by decoding \var{size} bytes of the Latin-1
1276 encoded string \var{s}. Return \NULL{} if an exception was raised
Fred Drake3adf79e2001-10-12 19:01:43 +00001277 by the codec.
1278\end{cfuncdesc}
1279
1280\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeLatin1}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001281 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001282 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001283 Encode the \ctype{Py_UNICODE} buffer of the given size using
1284 Latin-1 and return a Python string object. Return \NULL{} if an
Fred Drake3adf79e2001-10-12 19:01:43 +00001285 exception was raised by the codec.
1286\end{cfuncdesc}
1287
1288\begin{cfuncdesc}{PyObject*}{PyUnicode_AsLatin1String}{PyObject *unicode}
Georg Brandl99363b62005-09-03 07:27:26 +00001289 Encode a Unicode objects using Latin-1 and return the result as
1290 Python string object. Error handling is ``strict''. Return
Fred Drake3adf79e2001-10-12 19:01:43 +00001291 \NULL{} if an exception was raised by the codec.
1292\end{cfuncdesc}
1293
Tim Petersf582b822001-12-11 18:51:08 +00001294% --- ASCII Codecs -------------------------------------------------------
Fred Drake3adf79e2001-10-12 19:01:43 +00001295
1296These are the \ASCII{} codec APIs. Only 7-bit \ASCII{} data is
1297accepted. All other codes generate errors.
1298
1299\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeASCII}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001300 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001301 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001302 Create a Unicode object by decoding \var{size} bytes of the
1303 \ASCII{} encoded string \var{s}. Return \NULL{} if an exception
Fred Drake3adf79e2001-10-12 19:01:43 +00001304 was raised by the codec.
1305\end{cfuncdesc}
1306
1307\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeASCII}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001308 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001309 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001310 Encode the \ctype{Py_UNICODE} buffer of the given size using
1311 \ASCII{} and return a Python string object. Return \NULL{} if an
Fred Drake3adf79e2001-10-12 19:01:43 +00001312 exception was raised by the codec.
1313\end{cfuncdesc}
1314
1315\begin{cfuncdesc}{PyObject*}{PyUnicode_AsASCIIString}{PyObject *unicode}
Georg Brandl99363b62005-09-03 07:27:26 +00001316 Encode a Unicode objects using \ASCII{} and return the result as
1317 Python string object. Error handling is ``strict''. Return
Fred Drake3adf79e2001-10-12 19:01:43 +00001318 \NULL{} if an exception was raised by the codec.
1319\end{cfuncdesc}
1320
Tim Petersf582b822001-12-11 18:51:08 +00001321% --- Character Map Codecs -----------------------------------------------
Fred Drake3adf79e2001-10-12 19:01:43 +00001322
1323These are the mapping codec APIs:
1324
1325This codec is special in that it can be used to implement many
1326different codecs (and this is in fact what was done to obtain most of
1327the standard codecs included in the \module{encodings} package). The
1328codec uses mapping to encode and decode characters.
1329
1330Decoding mappings must map single string characters to single Unicode
1331characters, integers (which are then interpreted as Unicode ordinals)
Tim Petersf582b822001-12-11 18:51:08 +00001332or None (meaning "undefined mapping" and causing an error).
Fred Drake3adf79e2001-10-12 19:01:43 +00001333
1334Encoding mappings must map single Unicode characters to single string
1335characters, integers (which are then interpreted as Latin-1 ordinals)
1336or None (meaning "undefined mapping" and causing an error).
1337
1338The mapping objects provided must only support the __getitem__ mapping
1339interface.
1340
1341If a character lookup fails with a LookupError, the character is
1342copied as-is meaning that its ordinal value will be interpreted as
1343Unicode or Latin-1 ordinal resp. Because of this, mappings only need
1344to contain those mappings which map characters to different code
1345points.
1346
1347\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeCharmap}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001348 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001349 PyObject *mapping,
1350 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001351 Create a Unicode object by decoding \var{size} bytes of the encoded
1352 string \var{s} using the given \var{mapping} object. Return
Walter Dörwaldd1c1e102005-10-06 20:29:57 +00001353 \NULL{} if an exception was raised by the codec. If \var{mapping} is \NULL{}
1354 latin-1 decoding will be done. Else it can be a dictionary mapping byte or a
1355 unicode string, which is treated as a lookup table. Byte values greater
1356 that the length of the string and U+FFFE "characters" are treated as
1357 "undefined mapping".
1358 \versionchanged[Allowed unicode string as mapping argument]{2.4}
Fred Drake3adf79e2001-10-12 19:01:43 +00001359\end{cfuncdesc}
1360
1361\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeCharmap}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001362 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001363 PyObject *mapping,
1364 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001365 Encode the \ctype{Py_UNICODE} buffer of the given size using the
1366 given \var{mapping} object and return a Python string object.
1367 Return \NULL{} if an exception was raised by the codec.
Fred Drake3adf79e2001-10-12 19:01:43 +00001368\end{cfuncdesc}
1369
1370\begin{cfuncdesc}{PyObject*}{PyUnicode_AsCharmapString}{PyObject *unicode,
1371 PyObject *mapping}
Georg Brandl99363b62005-09-03 07:27:26 +00001372 Encode a Unicode objects using the given \var{mapping} object and
1373 return the result as Python string object. Error handling is
1374 ``strict''. Return \NULL{} if an exception was raised by the
Fred Drake3adf79e2001-10-12 19:01:43 +00001375 codec.
1376\end{cfuncdesc}
1377
1378The following codec API is special in that maps Unicode to Unicode.
1379
1380\begin{cfuncdesc}{PyObject*}{PyUnicode_TranslateCharmap}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001381 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001382 PyObject *table,
1383 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001384 Translate a \ctype{Py_UNICODE} buffer of the given length by
1385 applying a character mapping \var{table} to it and return the
1386 resulting Unicode object. Return \NULL{} when an exception was
Fred Drake3adf79e2001-10-12 19:01:43 +00001387 raised by the codec.
1388
1389 The \var{mapping} table must map Unicode ordinal integers to Unicode
1390 ordinal integers or None (causing deletion of the character).
1391
1392 Mapping tables need only provide the method{__getitem__()}
1393 interface; dictionaries and sequences work well. Unmapped character
1394 ordinals (ones which cause a \exception{LookupError}) are left
1395 untouched and are copied as-is.
1396\end{cfuncdesc}
1397
1398% --- MBCS codecs for Windows --------------------------------------------
1399
1400These are the MBCS codec APIs. They are currently only available on
1401Windows and use the Win32 MBCS converters to implement the
1402conversions. Note that MBCS (or DBCS) is a class of encodings, not
1403just one. The target encoding is defined by the user settings on the
1404machine running the codec.
1405
1406\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeMBCS}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001407 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001408 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001409 Create a Unicode object by decoding \var{size} bytes of the MBCS
1410 encoded string \var{s}. Return \NULL{} if an exception was
Fred Drake3adf79e2001-10-12 19:01:43 +00001411 raised by the codec.
1412\end{cfuncdesc}
1413
1414\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeMBCS}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001415 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001416 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001417 Encode the \ctype{Py_UNICODE} buffer of the given size using MBCS
1418 and return a Python string object. Return \NULL{} if an exception
Fred Drake3adf79e2001-10-12 19:01:43 +00001419 was raised by the codec.
1420\end{cfuncdesc}
1421
1422\begin{cfuncdesc}{PyObject*}{PyUnicode_AsMBCSString}{PyObject *unicode}
Georg Brandl99363b62005-09-03 07:27:26 +00001423 Encode a Unicode objects using MBCS and return the result as
1424 Python string object. Error handling is ``strict''. Return
Fred Drake3adf79e2001-10-12 19:01:43 +00001425 \NULL{} if an exception was raised by the codec.
1426\end{cfuncdesc}
1427
1428% --- Methods & Slots ----------------------------------------------------
1429
1430\subsubsection{Methods and Slot Functions \label{unicodeMethodsAndSlots}}
1431
1432The following APIs are capable of handling Unicode objects and strings
1433on input (we refer to them as strings in the descriptions) and return
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001434Unicode objects or integers as appropriate.
Fred Drake3adf79e2001-10-12 19:01:43 +00001435
1436They all return \NULL{} or \code{-1} if an exception occurs.
1437
1438\begin{cfuncdesc}{PyObject*}{PyUnicode_Concat}{PyObject *left,
1439 PyObject *right}
1440 Concat two strings giving a new Unicode string.
1441\end{cfuncdesc}
1442
1443\begin{cfuncdesc}{PyObject*}{PyUnicode_Split}{PyObject *s,
1444 PyObject *sep,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001445 Py_ssize_t maxsplit}
Tim Peters9ddf40b2004-06-20 22:41:32 +00001446 Split a string giving a list of Unicode strings. If sep is \NULL{},
Fred Drake3adf79e2001-10-12 19:01:43 +00001447 splitting will be done at all whitespace substrings. Otherwise,
1448 splits occur at the given separator. At most \var{maxsplit} splits
1449 will be done. If negative, no limit is set. Separators are not
1450 included in the resulting list.
1451\end{cfuncdesc}
1452
1453\begin{cfuncdesc}{PyObject*}{PyUnicode_Splitlines}{PyObject *s,
Martin v. Löwis24b88812003-03-30 16:40:42 +00001454 int keepend}
Fred Drake3adf79e2001-10-12 19:01:43 +00001455 Split a Unicode string at line breaks, returning a list of Unicode
Martin v. Löwis24b88812003-03-30 16:40:42 +00001456 strings. CRLF is considered to be one line break. If \var{keepend}
1457 is 0, the Line break characters are not included in the resulting
1458 strings.
Fred Drake3adf79e2001-10-12 19:01:43 +00001459\end{cfuncdesc}
1460
1461\begin{cfuncdesc}{PyObject*}{PyUnicode_Translate}{PyObject *str,
1462 PyObject *table,
1463 const char *errors}
1464 Translate a string by applying a character mapping table to it and
1465 return the resulting Unicode object.
1466
1467 The mapping table must map Unicode ordinal integers to Unicode
1468 ordinal integers or None (causing deletion of the character).
1469
1470 Mapping tables need only provide the \method{__getitem__()}
1471 interface; dictionaries and sequences work well. Unmapped character
1472 ordinals (ones which cause a \exception{LookupError}) are left
1473 untouched and are copied as-is.
1474
1475 \var{errors} has the usual meaning for codecs. It may be \NULL{}
1476 which indicates to use the default error handling.
1477\end{cfuncdesc}
1478
1479\begin{cfuncdesc}{PyObject*}{PyUnicode_Join}{PyObject *separator,
1480 PyObject *seq}
1481 Join a sequence of strings using the given separator and return the
1482 resulting Unicode string.
1483\end{cfuncdesc}
1484
Raymond Hettinger8ef9b3e2004-12-10 17:12:32 +00001485\begin{cfuncdesc}{int}{PyUnicode_Tailmatch}{PyObject *str,
Fred Drake3adf79e2001-10-12 19:01:43 +00001486 PyObject *substr,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001487 Py_ssize_t start,
1488 Py_ssize_t end,
Fred Drake3adf79e2001-10-12 19:01:43 +00001489 int direction}
1490 Return 1 if \var{substr} matches \var{str}[\var{start}:\var{end}] at
1491 the given tail end (\var{direction} == -1 means to do a prefix
1492 match, \var{direction} == 1 a suffix match), 0 otherwise.
Georg Brandl99363b62005-09-03 07:27:26 +00001493 Return \code{-1} if an error occurred.
Fred Drake3adf79e2001-10-12 19:01:43 +00001494\end{cfuncdesc}
1495
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001496\begin{cfuncdesc}{Py_ssize_t}{PyUnicode_Find}{PyObject *str,
Fred Drake1d1e1db2002-06-20 22:07:04 +00001497 PyObject *substr,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001498 Py_ssize_t start,
1499 Py_ssize_t end,
Fred Drake1d1e1db2002-06-20 22:07:04 +00001500 int direction}
Fred Drake3adf79e2001-10-12 19:01:43 +00001501 Return the first position of \var{substr} in
1502 \var{str}[\var{start}:\var{end}] using the given \var{direction}
1503 (\var{direction} == 1 means to do a forward search,
Fred Drake1d1e1db2002-06-20 22:07:04 +00001504 \var{direction} == -1 a backward search). The return value is the
1505 index of the first match; a value of \code{-1} indicates that no
1506 match was found, and \code{-2} indicates that an error occurred and
1507 an exception has been set.
Fred Drake3adf79e2001-10-12 19:01:43 +00001508\end{cfuncdesc}
1509
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001510\begin{cfuncdesc}{Py_ssize_t}{PyUnicode_Count}{PyObject *str,
Fred Drake1d1e1db2002-06-20 22:07:04 +00001511 PyObject *substr,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001512 Py_ssize_t start,
1513 Py_ssize_t end}
Fred Drake1d1e1db2002-06-20 22:07:04 +00001514 Return the number of non-overlapping occurrences of \var{substr} in
Georg Brandl99363b62005-09-03 07:27:26 +00001515 \code{\var{str}[\var{start}:\var{end}]}. Return \code{-1} if an
Fred Drake1d1e1db2002-06-20 22:07:04 +00001516 error occurred.
Fred Drake3adf79e2001-10-12 19:01:43 +00001517\end{cfuncdesc}
1518
1519\begin{cfuncdesc}{PyObject*}{PyUnicode_Replace}{PyObject *str,
1520 PyObject *substr,
1521 PyObject *replstr,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001522 Py_ssize_t maxcount}
Fred Drake3adf79e2001-10-12 19:01:43 +00001523 Replace at most \var{maxcount} occurrences of \var{substr} in
1524 \var{str} with \var{replstr} and return the resulting Unicode object.
1525 \var{maxcount} == -1 means replace all occurrences.
1526\end{cfuncdesc}
1527
1528\begin{cfuncdesc}{int}{PyUnicode_Compare}{PyObject *left, PyObject *right}
1529 Compare two strings and return -1, 0, 1 for less than, equal, and
1530 greater than, respectively.
1531\end{cfuncdesc}
1532
1533\begin{cfuncdesc}{PyObject*}{PyUnicode_Format}{PyObject *format,
1534 PyObject *args}
Georg Brandl99363b62005-09-03 07:27:26 +00001535 Return a new string object from \var{format} and \var{args}; this
Fred Drake3adf79e2001-10-12 19:01:43 +00001536 is analogous to \code{\var{format} \%\ \var{args}}. The
1537 \var{args} argument must be a tuple.
1538\end{cfuncdesc}
1539
1540\begin{cfuncdesc}{int}{PyUnicode_Contains}{PyObject *container,
1541 PyObject *element}
Georg Brandl99363b62005-09-03 07:27:26 +00001542 Check whether \var{element} is contained in \var{container} and
1543 return true or false accordingly.
Fred Drake3adf79e2001-10-12 19:01:43 +00001544
1545 \var{element} has to coerce to a one element Unicode
1546 string. \code{-1} is returned if there was an error.
1547\end{cfuncdesc}
1548
1549
1550\subsection{Buffer Objects \label{bufferObjects}}
1551\sectionauthor{Greg Stein}{gstein@lyra.org}
1552
1553\obindex{buffer}
1554Python objects implemented in C can export a group of functions called
1555the ``buffer\index{buffer interface} interface.'' These functions can
1556be used by an object to expose its data in a raw, byte-oriented
1557format. Clients of the object can use the buffer interface to access
1558the object data directly, without needing to copy it first.
1559
Tim Petersf582b822001-12-11 18:51:08 +00001560Two examples of objects that support
1561the buffer interface are strings and arrays. The string object exposes
Fred Drake3adf79e2001-10-12 19:01:43 +00001562the character contents in the buffer interface's byte-oriented
1563form. An array can also expose its contents, but it should be noted
1564that array elements may be multi-byte values.
1565
1566An example user of the buffer interface is the file object's
1567\method{write()} method. Any object that can export a series of bytes
1568through the buffer interface can be written to a file. There are a
Tim Petersf582b822001-12-11 18:51:08 +00001569number of format codes to \cfunction{PyArg_ParseTuple()} that operate
Fred Drake3adf79e2001-10-12 19:01:43 +00001570against an object's buffer interface, returning data from the target
1571object.
1572
1573More information on the buffer interface is provided in the section
Fred Drake54e62942001-12-11 19:40:16 +00001574``Buffer Object Structures'' (section~\ref{buffer-structs}), under
Fred Drake3adf79e2001-10-12 19:01:43 +00001575the description for \ctype{PyBufferProcs}\ttindex{PyBufferProcs}.
1576
1577A ``buffer object'' is defined in the \file{bufferobject.h} header
1578(included by \file{Python.h}). These objects look very similar to
1579string objects at the Python programming level: they support slicing,
1580indexing, concatenation, and some other standard string
1581operations. However, their data can come from one of two sources: from
1582a block of memory, or from another object which exports the buffer
1583interface.
1584
1585Buffer objects are useful as a way to expose the data from another
1586object's buffer interface to the Python programmer. They can also be
1587used as a zero-copy slicing mechanism. Using their ability to
1588reference a block of memory, it is possible to expose any data to the
1589Python programmer quite easily. The memory could be a large, constant
1590array in a C extension, it could be a raw block of memory for
1591manipulation before passing to an operating system library, or it
1592could be used to pass around structured data in its native, in-memory
1593format.
1594
1595\begin{ctypedesc}{PyBufferObject}
1596 This subtype of \ctype{PyObject} represents a buffer object.
1597\end{ctypedesc}
1598
1599\begin{cvardesc}{PyTypeObject}{PyBuffer_Type}
1600 The instance of \ctype{PyTypeObject} which represents the Python
1601 buffer type; it is the same object as \code{types.BufferType} in the
1602 Python layer.\withsubitem{(in module types)}{\ttindex{BufferType}}.
1603\end{cvardesc}
1604
1605\begin{cvardesc}{int}{Py_END_OF_BUFFER}
1606 This constant may be passed as the \var{size} parameter to
1607 \cfunction{PyBuffer_FromObject()} or
1608 \cfunction{PyBuffer_FromReadWriteObject()}. It indicates that the
1609 new \ctype{PyBufferObject} should refer to \var{base} object from
1610 the specified \var{offset} to the end of its exported buffer. Using
1611 this enables the caller to avoid querying the \var{base} object for
1612 its length.
1613\end{cvardesc}
1614
1615\begin{cfuncdesc}{int}{PyBuffer_Check}{PyObject *p}
1616 Return true if the argument has type \cdata{PyBuffer_Type}.
1617\end{cfuncdesc}
1618
1619\begin{cfuncdesc}{PyObject*}{PyBuffer_FromObject}{PyObject *base,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001620 Py_ssize_t offset, Py_ssize_t size}
Fred Drake3adf79e2001-10-12 19:01:43 +00001621 Return a new read-only buffer object. This raises
1622 \exception{TypeError} if \var{base} doesn't support the read-only
1623 buffer protocol or doesn't provide exactly one buffer segment, or it
1624 raises \exception{ValueError} if \var{offset} is less than zero. The
1625 buffer will hold a reference to the \var{base} object, and the
1626 buffer's contents will refer to the \var{base} object's buffer
1627 interface, starting as position \var{offset} and extending for
1628 \var{size} bytes. If \var{size} is \constant{Py_END_OF_BUFFER}, then
1629 the new buffer's contents extend to the length of the \var{base}
1630 object's exported buffer data.
1631\end{cfuncdesc}
1632
1633\begin{cfuncdesc}{PyObject*}{PyBuffer_FromReadWriteObject}{PyObject *base,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001634 Py_ssize_t offset,
1635 Py_ssize_t size}
Fred Drake3adf79e2001-10-12 19:01:43 +00001636 Return a new writable buffer object. Parameters and exceptions are
1637 similar to those for \cfunction{PyBuffer_FromObject()}. If the
1638 \var{base} object does not export the writeable buffer protocol,
1639 then \exception{TypeError} is raised.
1640\end{cfuncdesc}
1641
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001642\begin{cfuncdesc}{PyObject*}{PyBuffer_FromMemory}{void *ptr, Py_ssize_t size}
Fred Drake3adf79e2001-10-12 19:01:43 +00001643 Return a new read-only buffer object that reads from a specified
1644 location in memory, with a specified size. The caller is
1645 responsible for ensuring that the memory buffer, passed in as
1646 \var{ptr}, is not deallocated while the returned buffer object
1647 exists. Raises \exception{ValueError} if \var{size} is less than
1648 zero. Note that \constant{Py_END_OF_BUFFER} may \emph{not} be
1649 passed for the \var{size} parameter; \exception{ValueError} will be
1650 raised in that case.
1651\end{cfuncdesc}
1652
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001653\begin{cfuncdesc}{PyObject*}{PyBuffer_FromReadWriteMemory}{void *ptr, Py_ssize_t size}
Fred Drake3adf79e2001-10-12 19:01:43 +00001654 Similar to \cfunction{PyBuffer_FromMemory()}, but the returned
1655 buffer is writable.
1656\end{cfuncdesc}
1657
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001658\begin{cfuncdesc}{PyObject*}{PyBuffer_New}{Py_ssize_t size}
Georg Brandl99363b62005-09-03 07:27:26 +00001659 Return a new writable buffer object that maintains its own memory
Fred Drake3adf79e2001-10-12 19:01:43 +00001660 buffer of \var{size} bytes. \exception{ValueError} is returned if
Neil Schemenauerd68d3ee2004-06-08 02:58:50 +00001661 \var{size} is not zero or positive. Note that the memory buffer (as
1662 returned by \cfunction{PyObject_AsWriteBuffer()}) is not specifically
1663 aligned.
Fred Drake3adf79e2001-10-12 19:01:43 +00001664\end{cfuncdesc}
1665
1666
1667\subsection{Tuple Objects \label{tupleObjects}}
1668
1669\obindex{tuple}
1670\begin{ctypedesc}{PyTupleObject}
1671 This subtype of \ctype{PyObject} represents a Python tuple object.
1672\end{ctypedesc}
1673
1674\begin{cvardesc}{PyTypeObject}{PyTuple_Type}
1675 This instance of \ctype{PyTypeObject} represents the Python tuple
1676 type; it is the same object as \code{types.TupleType} in the Python
1677 layer.\withsubitem{(in module types)}{\ttindex{TupleType}}.
1678\end{cvardesc}
1679
1680\begin{cfuncdesc}{int}{PyTuple_Check}{PyObject *p}
1681 Return true if \var{p} is a tuple object or an instance of a subtype
1682 of the tuple type.
1683 \versionchanged[Allowed subtypes to be accepted]{2.2}
1684\end{cfuncdesc}
1685
1686\begin{cfuncdesc}{int}{PyTuple_CheckExact}{PyObject *p}
1687 Return true if \var{p} is a tuple object, but not an instance of a
1688 subtype of the tuple type.
1689 \versionadded{2.2}
1690\end{cfuncdesc}
1691
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001692\begin{cfuncdesc}{PyObject*}{PyTuple_New}{Py_ssize_t len}
Fred Drake3adf79e2001-10-12 19:01:43 +00001693 Return a new tuple object of size \var{len}, or \NULL{} on failure.
1694\end{cfuncdesc}
1695
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001696\begin{cfuncdesc}{PyObject*}{PyTuple_Pack}{Py_ssize_t n, \moreargs}
Raymond Hettingercb2da432003-10-12 18:24:34 +00001697 Return a new tuple object of size \var{n}, or \NULL{} on failure.
1698 The tuple values are initialized to the subsequent \var{n} C arguments
1699 pointing to Python objects. \samp{PyTuple_Pack(2, \var{a}, \var{b})}
1700 is equivalent to \samp{Py_BuildValue("(OO)", \var{a}, \var{b})}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00001701 \versionadded{2.4}
Raymond Hettingercb2da432003-10-12 18:24:34 +00001702\end{cfuncdesc}
1703
Fred Drake3adf79e2001-10-12 19:01:43 +00001704\begin{cfuncdesc}{int}{PyTuple_Size}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00001705 Take a pointer to a tuple object, and return the size of that
Fred Drake3adf79e2001-10-12 19:01:43 +00001706 tuple.
1707\end{cfuncdesc}
1708
1709\begin{cfuncdesc}{int}{PyTuple_GET_SIZE}{PyObject *p}
1710 Return the size of the tuple \var{p}, which must be non-\NULL{} and
1711 point to a tuple; no error checking is performed.
1712\end{cfuncdesc}
1713
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001714\begin{cfuncdesc}{PyObject*}{PyTuple_GetItem}{PyObject *p, Py_ssize_t pos}
Georg Brandl99363b62005-09-03 07:27:26 +00001715 Return the object at position \var{pos} in the tuple pointed to by
1716 \var{p}. If \var{pos} is out of bounds, return \NULL{} and sets an
Fred Drake3adf79e2001-10-12 19:01:43 +00001717 \exception{IndexError} exception.
1718\end{cfuncdesc}
1719
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001720\begin{cfuncdesc}{PyObject*}{PyTuple_GET_ITEM}{PyObject *p, Py_ssize_t pos}
Fred Drake3adf79e2001-10-12 19:01:43 +00001721 Like \cfunction{PyTuple_GetItem()}, but does no checking of its
1722 arguments.
1723\end{cfuncdesc}
1724
1725\begin{cfuncdesc}{PyObject*}{PyTuple_GetSlice}{PyObject *p,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001726 Py_ssize_t low, Py_ssize_t high}
Georg Brandl99363b62005-09-03 07:27:26 +00001727 Take a slice of the tuple pointed to by \var{p} from \var{low} to
1728 \var{high} and return it as a new tuple.
Fred Drake3adf79e2001-10-12 19:01:43 +00001729\end{cfuncdesc}
1730
1731\begin{cfuncdesc}{int}{PyTuple_SetItem}{PyObject *p,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001732 Py_ssize_t pos, PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +00001733 Insert a reference to object \var{o} at position \var{pos} of the
1734 tuple pointed to by \var{p}. Return \code{0} on success.
Fred Drake3adf79e2001-10-12 19:01:43 +00001735 \note{This function ``steals'' a reference to \var{o}.}
1736\end{cfuncdesc}
1737
1738\begin{cfuncdesc}{void}{PyTuple_SET_ITEM}{PyObject *p,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001739 Py_ssize_t pos, PyObject *o}
Fred Drake3adf79e2001-10-12 19:01:43 +00001740 Like \cfunction{PyTuple_SetItem()}, but does no error checking, and
1741 should \emph{only} be used to fill in brand new tuples. \note{This
1742 function ``steals'' a reference to \var{o}.}
1743\end{cfuncdesc}
1744
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001745\begin{cfuncdesc}{int}{_PyTuple_Resize}{PyObject **p, Py_ssize_t newsize}
Fred Drake3adf79e2001-10-12 19:01:43 +00001746 Can be used to resize a tuple. \var{newsize} will be the new length
1747 of the tuple. Because tuples are \emph{supposed} to be immutable,
1748 this should only be used if there is only one reference to the
1749 object. Do \emph{not} use this if the tuple may already be known to
1750 some other part of the code. The tuple will always grow or shrink
1751 at the end. Think of this as destroying the old tuple and creating
1752 a new one, only more efficiently. Returns \code{0} on success.
1753 Client code should never assume that the resulting value of
1754 \code{*\var{p}} will be the same as before calling this function.
1755 If the object referenced by \code{*\var{p}} is replaced, the
1756 original \code{*\var{p}} is destroyed. On failure, returns
Tim Peters9ddf40b2004-06-20 22:41:32 +00001757 \code{-1} and sets \code{*\var{p}} to \NULL{}, and raises
Fred Drake3adf79e2001-10-12 19:01:43 +00001758 \exception{MemoryError} or
1759 \exception{SystemError}.
Tim Petersf582b822001-12-11 18:51:08 +00001760 \versionchanged[Removed unused third parameter, \var{last_is_sticky}]{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001761\end{cfuncdesc}
1762
1763
1764\subsection{List Objects \label{listObjects}}
1765
1766\obindex{list}
1767\begin{ctypedesc}{PyListObject}
1768 This subtype of \ctype{PyObject} represents a Python list object.
1769\end{ctypedesc}
1770
1771\begin{cvardesc}{PyTypeObject}{PyList_Type}
1772 This instance of \ctype{PyTypeObject} represents the Python list
1773 type. This is the same object as \code{types.ListType}.
1774 \withsubitem{(in module types)}{\ttindex{ListType}}
1775\end{cvardesc}
1776
1777\begin{cfuncdesc}{int}{PyList_Check}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00001778 Return true if \var{p} is a list object or an instance of a
Andrew MacIntyre13cd8892003-12-25 23:57:52 +00001779 subtype of the list type.
1780 \versionchanged[Allowed subtypes to be accepted]{2.2}
1781\end{cfuncdesc}
1782
1783\begin{cfuncdesc}{int}{PyList_CheckExact}{PyObject *p}
1784 Return true if \var{p} is a list object, but not an instance of a
1785 subtype of the list type.
1786 \versionadded{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001787\end{cfuncdesc}
1788
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001789\begin{cfuncdesc}{PyObject*}{PyList_New}{Py_ssize_t len}
Georg Brandl99363b62005-09-03 07:27:26 +00001790 Return a new list of length \var{len} on success, or \NULL{} on
Fred Drake3adf79e2001-10-12 19:01:43 +00001791 failure.
1792\end{cfuncdesc}
1793
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001794\begin{cfuncdesc}{Py_ssize_t}{PyList_Size}{PyObject *list}
Georg Brandl99363b62005-09-03 07:27:26 +00001795 Return the length of the list object in \var{list}; this is
Fred Drake3adf79e2001-10-12 19:01:43 +00001796 equivalent to \samp{len(\var{list})} on a list object.
1797 \bifuncindex{len}
1798\end{cfuncdesc}
1799
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001800\begin{cfuncdesc}{Py_ssize_t}{PyList_GET_SIZE}{PyObject *list}
Fred Drake3adf79e2001-10-12 19:01:43 +00001801 Macro form of \cfunction{PyList_Size()} without error checking.
1802\end{cfuncdesc}
1803
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001804\begin{cfuncdesc}{PyObject*}{PyList_GetItem}{PyObject *list, Py_ssize_t index}
Georg Brandl99363b62005-09-03 07:27:26 +00001805 Return the object at position \var{pos} in the list pointed to by
Georg Brandl4dce8e42006-04-06 12:45:51 +00001806 \var{p}. The position must be positive, indexing from the end of the
1807 list is not supported. If \var{pos} is out of bounds, return \NULL{}
1808 and set an \exception{IndexError} exception.
Fred Drake3adf79e2001-10-12 19:01:43 +00001809\end{cfuncdesc}
1810
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001811\begin{cfuncdesc}{PyObject*}{PyList_GET_ITEM}{PyObject *list, Py_ssize_t i}
Fred Drake3adf79e2001-10-12 19:01:43 +00001812 Macro form of \cfunction{PyList_GetItem()} without error checking.
1813\end{cfuncdesc}
1814
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001815\begin{cfuncdesc}{int}{PyList_SetItem}{PyObject *list, Py_ssize_t index,
Fred Drake3adf79e2001-10-12 19:01:43 +00001816 PyObject *item}
Georg Brandl99363b62005-09-03 07:27:26 +00001817 Set the item at index \var{index} in list to \var{item}. Return
Fred Drake3adf79e2001-10-12 19:01:43 +00001818 \code{0} on success or \code{-1} on failure. \note{This function
1819 ``steals'' a reference to \var{item} and discards a reference to an
1820 item already in the list at the affected position.}
1821\end{cfuncdesc}
1822
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001823\begin{cfuncdesc}{void}{PyList_SET_ITEM}{PyObject *list, Py_ssize_t i,
Fred Drake3adf79e2001-10-12 19:01:43 +00001824 PyObject *o}
1825 Macro form of \cfunction{PyList_SetItem()} without error checking.
1826 This is normally only used to fill in new lists where there is no
1827 previous content.
1828 \note{This function ``steals'' a reference to \var{item}, and,
1829 unlike \cfunction{PyList_SetItem()}, does \emph{not} discard a
1830 reference to any item that it being replaced; any reference in
1831 \var{list} at position \var{i} will be leaked.}
1832\end{cfuncdesc}
1833
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001834\begin{cfuncdesc}{int}{PyList_Insert}{PyObject *list, Py_ssize_t index,
Fred Drake3adf79e2001-10-12 19:01:43 +00001835 PyObject *item}
Georg Brandl99363b62005-09-03 07:27:26 +00001836 Insert the item \var{item} into list \var{list} in front of index
1837 \var{index}. Return \code{0} if successful; return \code{-1} and
1838 set an exception if unsuccessful. Analogous to
Fred Drake3adf79e2001-10-12 19:01:43 +00001839 \code{\var{list}.insert(\var{index}, \var{item})}.
1840\end{cfuncdesc}
1841
1842\begin{cfuncdesc}{int}{PyList_Append}{PyObject *list, PyObject *item}
Georg Brandl99363b62005-09-03 07:27:26 +00001843 Append the object \var{item} at the end of list \var{list}.
1844 Return \code{0} if successful; return \code{-1} and set an
Fred Drake3adf79e2001-10-12 19:01:43 +00001845 exception if unsuccessful. Analogous to
1846 \code{\var{list}.append(\var{item})}.
1847\end{cfuncdesc}
1848
1849\begin{cfuncdesc}{PyObject*}{PyList_GetSlice}{PyObject *list,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001850 Py_ssize_t low, Py_ssize_t high}
Georg Brandl99363b62005-09-03 07:27:26 +00001851 Return a list of the objects in \var{list} containing the objects
1852 \emph{between} \var{low} and \var{high}. Return \NULL{} and set
Fred Drake3adf79e2001-10-12 19:01:43 +00001853 an exception if unsuccessful.
1854 Analogous to \code{\var{list}[\var{low}:\var{high}]}.
1855\end{cfuncdesc}
1856
1857\begin{cfuncdesc}{int}{PyList_SetSlice}{PyObject *list,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001858 Py_ssize_t low, Py_ssize_t high,
Fred Drake3adf79e2001-10-12 19:01:43 +00001859 PyObject *itemlist}
Georg Brandl99363b62005-09-03 07:27:26 +00001860 Set the slice of \var{list} between \var{low} and \var{high} to the
Fred Drake3adf79e2001-10-12 19:01:43 +00001861 contents of \var{itemlist}. Analogous to
Raymond Hettinger9c7ed4c2003-10-26 17:20:07 +00001862 \code{\var{list}[\var{low}:\var{high}] = \var{itemlist}}.
1863 The \var{itemlist} may be \NULL{}, indicating the assignment
1864 of an empty list (slice deletion).
Georg Brandl99363b62005-09-03 07:27:26 +00001865 Return \code{0} on success, \code{-1} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00001866\end{cfuncdesc}
1867
1868\begin{cfuncdesc}{int}{PyList_Sort}{PyObject *list}
Georg Brandl99363b62005-09-03 07:27:26 +00001869 Sort the items of \var{list} in place. Return \code{0} on
Fred Drake3adf79e2001-10-12 19:01:43 +00001870 success, \code{-1} on failure. This is equivalent to
1871 \samp{\var{list}.sort()}.
1872\end{cfuncdesc}
1873
1874\begin{cfuncdesc}{int}{PyList_Reverse}{PyObject *list}
Georg Brandl99363b62005-09-03 07:27:26 +00001875 Reverse the items of \var{list} in place. Return \code{0} on
Fred Drake3adf79e2001-10-12 19:01:43 +00001876 success, \code{-1} on failure. This is the equivalent of
1877 \samp{\var{list}.reverse()}.
1878\end{cfuncdesc}
1879
1880\begin{cfuncdesc}{PyObject*}{PyList_AsTuple}{PyObject *list}
Georg Brandl99363b62005-09-03 07:27:26 +00001881 Return a new tuple object containing the contents of \var{list};
Fred Drake3adf79e2001-10-12 19:01:43 +00001882 equivalent to \samp{tuple(\var{list})}.\bifuncindex{tuple}
1883\end{cfuncdesc}
1884
1885
1886\section{Mapping Objects \label{mapObjects}}
1887
1888\obindex{mapping}
1889
1890
1891\subsection{Dictionary Objects \label{dictObjects}}
1892
1893\obindex{dictionary}
1894\begin{ctypedesc}{PyDictObject}
1895 This subtype of \ctype{PyObject} represents a Python dictionary
1896 object.
1897\end{ctypedesc}
1898
1899\begin{cvardesc}{PyTypeObject}{PyDict_Type}
1900 This instance of \ctype{PyTypeObject} represents the Python
1901 dictionary type. This is exposed to Python programs as
1902 \code{types.DictType} and \code{types.DictionaryType}.
1903 \withsubitem{(in module types)}{\ttindex{DictType}\ttindex{DictionaryType}}
1904\end{cvardesc}
1905
1906\begin{cfuncdesc}{int}{PyDict_Check}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00001907 Return true if \var{p} is a dict object or an instance of a
Andrew MacIntyre13cd8892003-12-25 23:57:52 +00001908 subtype of the dict type.
1909 \versionchanged[Allowed subtypes to be accepted]{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001910\end{cfuncdesc}
1911
Andrew MacIntyref72af652003-12-26 00:07:51 +00001912\begin{cfuncdesc}{int}{PyDict_CheckExact}{PyObject *p}
1913 Return true if \var{p} is a dict object, but not an instance of a
1914 subtype of the dict type.
1915 \versionadded{2.4}
1916\end{cfuncdesc}
1917
Fred Drake3adf79e2001-10-12 19:01:43 +00001918\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
Georg Brandl99363b62005-09-03 07:27:26 +00001919 Return a new empty dictionary, or \NULL{} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00001920\end{cfuncdesc}
1921
1922\begin{cfuncdesc}{PyObject*}{PyDictProxy_New}{PyObject *dict}
1923 Return a proxy object for a mapping which enforces read-only
1924 behavior. This is normally used to create a proxy to prevent
1925 modification of the dictionary for non-dynamic class types.
1926 \versionadded{2.2}
1927\end{cfuncdesc}
1928
1929\begin{cfuncdesc}{void}{PyDict_Clear}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00001930 Empty an existing dictionary of all key-value pairs.
Fred Drake3adf79e2001-10-12 19:01:43 +00001931\end{cfuncdesc}
1932
Raymond Hettingerbc0f2ab2003-11-25 21:12:14 +00001933\begin{cfuncdesc}{int}{PyDict_Contains}{PyObject *p, PyObject *key}
1934 Determine if dictionary \var{p} contains \var{key}. If an item
1935 in \var{p} is matches \var{key}, return \code{1}, otherwise return
1936 \code{0}. On error, return \code{-1}. This is equivalent to the
1937 Python expression \samp{\var{key} in \var{p}}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00001938 \versionadded{2.4}
Raymond Hettingerbc0f2ab2003-11-25 21:12:14 +00001939\end{cfuncdesc}
1940
Fred Drake3adf79e2001-10-12 19:01:43 +00001941\begin{cfuncdesc}{PyObject*}{PyDict_Copy}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00001942 Return a new dictionary that contains the same key-value pairs as
Fred Drake3adf79e2001-10-12 19:01:43 +00001943 \var{p}.
1944 \versionadded{1.6}
1945\end{cfuncdesc}
1946
1947\begin{cfuncdesc}{int}{PyDict_SetItem}{PyObject *p, PyObject *key,
1948 PyObject *val}
Georg Brandl99363b62005-09-03 07:27:26 +00001949 Insert \var{value} into the dictionary \var{p} with a key of
Fred Drake3adf79e2001-10-12 19:01:43 +00001950 \var{key}. \var{key} must be hashable; if it isn't,
1951 \exception{TypeError} will be raised.
Georg Brandl99363b62005-09-03 07:27:26 +00001952 Return \code{0} on success or \code{-1} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00001953\end{cfuncdesc}
1954
1955\begin{cfuncdesc}{int}{PyDict_SetItemString}{PyObject *p,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001956 const char *key,
Fred Drake3adf79e2001-10-12 19:01:43 +00001957 PyObject *val}
Georg Brandl99363b62005-09-03 07:27:26 +00001958 Insert \var{value} into the dictionary \var{p} using \var{key} as a
Fred Drake3adf79e2001-10-12 19:01:43 +00001959 key. \var{key} should be a \ctype{char*}. The key object is created
Georg Brandl99363b62005-09-03 07:27:26 +00001960 using \code{PyString_FromString(\var{key})}. Return \code{0} on
Fred Drake3adf79e2001-10-12 19:01:43 +00001961 success or \code{-1} on failure.
1962 \ttindex{PyString_FromString()}
1963\end{cfuncdesc}
1964
1965\begin{cfuncdesc}{int}{PyDict_DelItem}{PyObject *p, PyObject *key}
Georg Brandl99363b62005-09-03 07:27:26 +00001966 Remove the entry in dictionary \var{p} with key \var{key}.
Fred Drake3adf79e2001-10-12 19:01:43 +00001967 \var{key} must be hashable; if it isn't, \exception{TypeError} is
Georg Brandl99363b62005-09-03 07:27:26 +00001968 raised. Return \code{0} on success or \code{-1} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00001969\end{cfuncdesc}
1970
1971\begin{cfuncdesc}{int}{PyDict_DelItemString}{PyObject *p, char *key}
Georg Brandl99363b62005-09-03 07:27:26 +00001972 Remove the entry in dictionary \var{p} which has a key specified by
1973 the string \var{key}. Return \code{0} on success or \code{-1} on
Fred Drake3adf79e2001-10-12 19:01:43 +00001974 failure.
1975\end{cfuncdesc}
1976
1977\begin{cfuncdesc}{PyObject*}{PyDict_GetItem}{PyObject *p, PyObject *key}
Georg Brandl99363b62005-09-03 07:27:26 +00001978 Return the object from dictionary \var{p} which has a key
1979 \var{key}. Return \NULL{} if the key \var{key} is not present, but
Fred Drake3adf79e2001-10-12 19:01:43 +00001980 \emph{without} setting an exception.
1981\end{cfuncdesc}
1982
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001983\begin{cfuncdesc}{PyObject*}{PyDict_GetItemString}{PyObject *p, const char *key}
Fred Drake3adf79e2001-10-12 19:01:43 +00001984 This is the same as \cfunction{PyDict_GetItem()}, but \var{key} is
1985 specified as a \ctype{char*}, rather than a \ctype{PyObject*}.
1986\end{cfuncdesc}
1987
1988\begin{cfuncdesc}{PyObject*}{PyDict_Items}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00001989 Return a \ctype{PyListObject} containing all the items from the
Nicholas Bastin975e7252004-09-29 21:39:26 +00001990 dictionary, as in the dictionary method \method{items()} (see the
Fred Drake3adf79e2001-10-12 19:01:43 +00001991 \citetitle[../lib/lib.html]{Python Library Reference}).
1992\end{cfuncdesc}
1993
1994\begin{cfuncdesc}{PyObject*}{PyDict_Keys}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00001995 Return a \ctype{PyListObject} containing all the keys from the
Fred Drake3adf79e2001-10-12 19:01:43 +00001996 dictionary, as in the dictionary method \method{keys()} (see the
1997 \citetitle[../lib/lib.html]{Python Library Reference}).
1998\end{cfuncdesc}
1999
2000\begin{cfuncdesc}{PyObject*}{PyDict_Values}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002001 Return a \ctype{PyListObject} containing all the values from the
Fred Drake3adf79e2001-10-12 19:01:43 +00002002 dictionary \var{p}, as in the dictionary method \method{values()}
2003 (see the \citetitle[../lib/lib.html]{Python Library Reference}).
2004\end{cfuncdesc}
2005
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002006\begin{cfuncdesc}{Py_ssize_t}{PyDict_Size}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002007 Return the number of items in the dictionary. This is equivalent
Fred Drake3adf79e2001-10-12 19:01:43 +00002008 to \samp{len(\var{p})} on a dictionary.\bifuncindex{len}
2009\end{cfuncdesc}
2010
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002011\begin{cfuncdesc}{int}{PyDict_Next}{PyObject *p, Py_ssize_t *ppos,
Fred Drake3adf79e2001-10-12 19:01:43 +00002012 PyObject **pkey, PyObject **pvalue}
2013 Iterate over all key-value pairs in the dictionary \var{p}. The
2014 \ctype{int} referred to by \var{ppos} must be initialized to
2015 \code{0} prior to the first call to this function to start the
2016 iteration; the function returns true for each pair in the
2017 dictionary, and false once all pairs have been reported. The
2018 parameters \var{pkey} and \var{pvalue} should either point to
2019 \ctype{PyObject*} variables that will be filled in with each key and
Tim Peters9ddf40b2004-06-20 22:41:32 +00002020 value, respectively, or may be \NULL{}. Any references returned through
Raymond Hettinger54693242003-12-13 19:48:41 +00002021 them are borrowed. \var{ppos} should not be altered during iteration.
2022 Its value represents offsets within the internal dictionary structure,
2023 and since the structure is sparse, the offsets are not consecutive.
Fred Drake3adf79e2001-10-12 19:01:43 +00002024
2025 For example:
2026
2027\begin{verbatim}
2028PyObject *key, *value;
2029int pos = 0;
2030
2031while (PyDict_Next(self->dict, &pos, &key, &value)) {
2032 /* do something interesting with the values... */
2033 ...
2034}
2035\end{verbatim}
2036
2037 The dictionary \var{p} should not be mutated during iteration. It
2038 is safe (since Python 2.1) to modify the values of the keys as you
2039 iterate over the dictionary, but only so long as the set of keys
2040 does not change. For example:
2041
2042\begin{verbatim}
2043PyObject *key, *value;
2044int pos = 0;
2045
2046while (PyDict_Next(self->dict, &pos, &key, &value)) {
2047 int i = PyInt_AS_LONG(value) + 1;
2048 PyObject *o = PyInt_FromLong(i);
2049 if (o == NULL)
2050 return -1;
2051 if (PyDict_SetItem(self->dict, key, o) < 0) {
2052 Py_DECREF(o);
2053 return -1;
2054 }
2055 Py_DECREF(o);
2056}
2057\end{verbatim}
2058\end{cfuncdesc}
2059
2060\begin{cfuncdesc}{int}{PyDict_Merge}{PyObject *a, PyObject *b, int override}
Tim Petersf582b822001-12-11 18:51:08 +00002061 Iterate over mapping object \var{b} adding key-value pairs to dictionary
2062 \var{a}.
2063 \var{b} may be a dictionary, or any object supporting
2064 \function{PyMapping_Keys()} and \function{PyObject_GetItem()}.
2065 If \var{override} is true, existing pairs in \var{a} will
Fred Drake3adf79e2001-10-12 19:01:43 +00002066 be replaced if a matching key is found in \var{b}, otherwise pairs
2067 will only be added if there is not a matching key in \var{a}.
Tim Petersf582b822001-12-11 18:51:08 +00002068 Return \code{0} on success or \code{-1} if an exception was
Fred Drake3adf79e2001-10-12 19:01:43 +00002069 raised.
2070\versionadded{2.2}
2071\end{cfuncdesc}
2072
2073\begin{cfuncdesc}{int}{PyDict_Update}{PyObject *a, PyObject *b}
2074 This is the same as \code{PyDict_Merge(\var{a}, \var{b}, 1)} in C,
Tim Petersf582b822001-12-11 18:51:08 +00002075 or \code{\var{a}.update(\var{b})} in Python. Return \code{0} on
Fred Drake3adf79e2001-10-12 19:01:43 +00002076 success or \code{-1} if an exception was raised.
2077 \versionadded{2.2}
2078\end{cfuncdesc}
2079
Tim Petersf582b822001-12-11 18:51:08 +00002080\begin{cfuncdesc}{int}{PyDict_MergeFromSeq2}{PyObject *a, PyObject *seq2,
2081 int override}
2082 Update or merge into dictionary \var{a}, from the key-value pairs in
2083 \var{seq2}. \var{seq2} must be an iterable object producing
2084 iterable objects of length 2, viewed as key-value pairs. In case of
2085 duplicate keys, the last wins if \var{override} is true, else the
2086 first wins.
2087 Return \code{0} on success or \code{-1} if an exception
2088 was raised.
2089 Equivalent Python (except for the return value):
2090
2091\begin{verbatim}
2092def PyDict_MergeFromSeq2(a, seq2, override):
2093 for key, value in seq2:
2094 if override or key not in a:
2095 a[key] = value
2096\end{verbatim}
2097
2098 \versionadded{2.2}
2099\end{cfuncdesc}
Fred Drake3adf79e2001-10-12 19:01:43 +00002100
Fred Drake54e62942001-12-11 19:40:16 +00002101
Fred Drake3adf79e2001-10-12 19:01:43 +00002102\section{Other Objects \label{otherObjects}}
2103
2104\subsection{File Objects \label{fileObjects}}
2105
2106\obindex{file}
2107Python's built-in file objects are implemented entirely on the
2108\ctype{FILE*} support from the C standard library. This is an
2109implementation detail and may change in future releases of Python.
2110
2111\begin{ctypedesc}{PyFileObject}
2112 This subtype of \ctype{PyObject} represents a Python file object.
2113\end{ctypedesc}
2114
2115\begin{cvardesc}{PyTypeObject}{PyFile_Type}
2116 This instance of \ctype{PyTypeObject} represents the Python file
2117 type. This is exposed to Python programs as \code{types.FileType}.
2118 \withsubitem{(in module types)}{\ttindex{FileType}}
2119\end{cvardesc}
2120
2121\begin{cfuncdesc}{int}{PyFile_Check}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002122 Return true if its argument is a \ctype{PyFileObject} or a subtype
Fred Drake3adf79e2001-10-12 19:01:43 +00002123 of \ctype{PyFileObject}.
2124 \versionchanged[Allowed subtypes to be accepted]{2.2}
2125\end{cfuncdesc}
2126
2127\begin{cfuncdesc}{int}{PyFile_CheckExact}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002128 Return true if its argument is a \ctype{PyFileObject}, but not a
Fred Drake3adf79e2001-10-12 19:01:43 +00002129 subtype of \ctype{PyFileObject}.
2130 \versionadded{2.2}
2131\end{cfuncdesc}
2132
2133\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *filename, char *mode}
Georg Brandl99363b62005-09-03 07:27:26 +00002134 On success, return a new file object that is opened on the file
Fred Drake3adf79e2001-10-12 19:01:43 +00002135 given by \var{filename}, with a file mode given by \var{mode}, where
2136 \var{mode} has the same semantics as the standard C routine
Georg Brandl99363b62005-09-03 07:27:26 +00002137 \cfunction{fopen()}\ttindex{fopen()}. On failure, return \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002138\end{cfuncdesc}
2139
2140\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp,
2141 char *name, char *mode,
2142 int (*close)(FILE*)}
Georg Brandl99363b62005-09-03 07:27:26 +00002143 Create a new \ctype{PyFileObject} from the already-open standard C
Fred Drake3adf79e2001-10-12 19:01:43 +00002144 file pointer, \var{fp}. The function \var{close} will be called
Georg Brandl99363b62005-09-03 07:27:26 +00002145 when the file should be closed. Return \NULL{} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00002146\end{cfuncdesc}
2147
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002148\begin{cfuncdesc}{FILE*}{PyFile_AsFile}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002149 Return the file object associated with \var{p} as a \ctype{FILE*}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002150\end{cfuncdesc}
2151
2152\begin{cfuncdesc}{PyObject*}{PyFile_GetLine}{PyObject *p, int n}
2153 Equivalent to \code{\var{p}.readline(\optional{\var{n}})}, this
2154 function reads one line from the object \var{p}. \var{p} may be a
2155 file object or any object with a \method{readline()} method. If
2156 \var{n} is \code{0}, exactly one line is read, regardless of the
2157 length of the line. If \var{n} is greater than \code{0}, no more
2158 than \var{n} bytes will be read from the file; a partial line can be
2159 returned. In both cases, an empty string is returned if the end of
2160 the file is reached immediately. If \var{n} is less than \code{0},
2161 however, one line is read regardless of length, but
2162 \exception{EOFError} is raised if the end of the file is reached
2163 immediately.
2164 \withsubitem{(built-in exception)}{\ttindex{EOFError}}
2165\end{cfuncdesc}
2166
2167\begin{cfuncdesc}{PyObject*}{PyFile_Name}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002168 Return the name of the file specified by \var{p} as a string
Fred Drake3adf79e2001-10-12 19:01:43 +00002169 object.
2170\end{cfuncdesc}
2171
2172\begin{cfuncdesc}{void}{PyFile_SetBufSize}{PyFileObject *p, int n}
2173 Available on systems with \cfunction{setvbuf()}\ttindex{setvbuf()}
2174 only. This should only be called immediately after file object
2175 creation.
2176\end{cfuncdesc}
2177
Martin v. Löwis5467d4c2003-05-10 07:10:12 +00002178\begin{cfuncdesc}{int}{PyFile_Encoding}{PyFileObject *p, char *enc}
2179 Set the file's encoding for Unicode output to \var{enc}. Return
2180 1 on success and 0 on failure.
2181 \versionadded{2.3}
2182\end{cfuncdesc}
2183
Fred Drake3adf79e2001-10-12 19:01:43 +00002184\begin{cfuncdesc}{int}{PyFile_SoftSpace}{PyObject *p, int newflag}
Georg Brandl99363b62005-09-03 07:27:26 +00002185 This function exists for internal use by the interpreter. Set the
Fred Drake3adf79e2001-10-12 19:01:43 +00002186 \member{softspace} attribute of \var{p} to \var{newflag} and
Georg Brandl99363b62005-09-03 07:27:26 +00002187 \withsubitem{(file attribute)}{\ttindex{softspace}}return the
Fred Drake3adf79e2001-10-12 19:01:43 +00002188 previous value. \var{p} does not have to be a file object for this
2189 function to work properly; any object is supported (thought its only
2190 interesting if the \member{softspace} attribute can be set). This
2191 function clears any errors, and will return \code{0} as the previous
2192 value if the attribute either does not exist or if there were errors
2193 in retrieving it. There is no way to detect errors from this
2194 function, but doing so should not be needed.
2195\end{cfuncdesc}
2196
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002197\begin{cfuncdesc}{int}{PyFile_WriteObject}{PyObject *obj, PyObject *p,
Fred Drake3adf79e2001-10-12 19:01:43 +00002198 int flags}
Georg Brandl99363b62005-09-03 07:27:26 +00002199 Write object \var{obj} to file object \var{p}. The only supported
Fred Drake3adf79e2001-10-12 19:01:43 +00002200 flag for \var{flags} is
2201 \constant{Py_PRINT_RAW}\ttindex{Py_PRINT_RAW}; if given, the
2202 \function{str()} of the object is written instead of the
Georg Brandl99363b62005-09-03 07:27:26 +00002203 \function{repr()}. Return \code{0} on success or \code{-1} on
Fred Drake3adf79e2001-10-12 19:01:43 +00002204 failure; the appropriate exception will be set.
2205\end{cfuncdesc}
2206
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002207\begin{cfuncdesc}{int}{PyFile_WriteString}{const char *s, PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002208 Write string \var{s} to file object \var{p}. Return \code{0} on
Fred Drake3adf79e2001-10-12 19:01:43 +00002209 success or \code{-1} on failure; the appropriate exception will be
2210 set.
2211\end{cfuncdesc}
2212
2213
2214\subsection{Instance Objects \label{instanceObjects}}
2215
2216\obindex{instance}
2217There are very few functions specific to instance objects.
2218
2219\begin{cvardesc}{PyTypeObject}{PyInstance_Type}
2220 Type object for class instances.
2221\end{cvardesc}
2222
2223\begin{cfuncdesc}{int}{PyInstance_Check}{PyObject *obj}
Georg Brandl99363b62005-09-03 07:27:26 +00002224 Return true if \var{obj} is an instance.
Fred Drake3adf79e2001-10-12 19:01:43 +00002225\end{cfuncdesc}
2226
2227\begin{cfuncdesc}{PyObject*}{PyInstance_New}{PyObject *class,
2228 PyObject *arg,
2229 PyObject *kw}
2230 Create a new instance of a specific class. The parameters \var{arg}
2231 and \var{kw} are used as the positional and keyword parameters to
2232 the object's constructor.
2233\end{cfuncdesc}
2234
2235\begin{cfuncdesc}{PyObject*}{PyInstance_NewRaw}{PyObject *class,
2236 PyObject *dict}
Neil Schemenauerc4932292005-06-18 17:54:13 +00002237 Create a new instance of a specific class without calling its
Fred Drake3adf79e2001-10-12 19:01:43 +00002238 constructor. \var{class} is the class of new object. The
2239 \var{dict} parameter will be used as the object's \member{__dict__};
Tim Peters9ddf40b2004-06-20 22:41:32 +00002240 if \NULL{}, a new dictionary will be created for the instance.
Fred Drake3adf79e2001-10-12 19:01:43 +00002241\end{cfuncdesc}
2242
2243
Georg Brandl9b743f52006-02-20 12:57:53 +00002244\subsection{Function Objects \label{function-objects}}
2245
2246\obindex{function}
2247There are a few functions specific to Python functions.
2248
2249\begin{ctypedesc}{PyFunctionObject}
2250 The C structure used for functions.
2251\end{ctypedesc}
2252
2253\begin{cvardesc}{PyTypeObject}{PyFunction_Type}
2254 This is an instance of \ctype{PyTypeObject} and represents the
2255 Python function type. It is exposed to Python programmers as
2256 \code{types.FunctionType}.
2257 \withsubitem{(in module types)}{\ttindex{MethodType}}
2258\end{cvardesc}
2259
2260\begin{cfuncdesc}{int}{PyFunction_Check}{PyObject *o}
2261 Return true if \var{o} is a function object (has type
2262 \cdata{PyFunction_Type}). The parameter must not be \NULL{}.
2263\end{cfuncdesc}
2264
2265\begin{cfuncdesc}{PyObject*}{PyFunction_New}{PyObject *code,
2266 PyObject *globals}
2267 Return a new function object associated with the code object
Walter Dörwaldc44e14e2006-03-31 11:03:57 +00002268 \var{code}. \var{globals} must be a dictionary with the global
2269 variables accessible to the function.
Georg Brandl9b743f52006-02-20 12:57:53 +00002270
2271 The function's docstring, name and \var{__module__} are retrieved
2272 from the code object, the argument defaults and closure are set to
2273 \NULL{}.
2274\end{cfuncdesc}
2275
2276\begin{cfuncdesc}{PyObject*}{PyFunction_GetCode}{PyObject *op}
2277 Return the code object associated with the function object \var{op}.
2278\end{cfuncdesc}
2279
2280\begin{cfuncdesc}{PyObject*}{PyFunction_GetGlobals}{PyObject *op}
2281 Return the globals dictionary associated with the function object
2282 \var{op}.
2283\end{cfuncdesc}
2284
2285\begin{cfuncdesc}{PyObject*}{PyFunction_GetModule}{PyObject *op}
2286 Return the \var{__module__} attribute of the function object \var{op}.
2287 This is normally a string containing the module name, but can be set
2288 to any other object by Python code.
2289\end{cfuncdesc}
2290
2291\begin{cfuncdesc}{PyObject*}{PyFunction_GetDefaults}{PyObject *op}
2292 Return the argument default values of the function object \var{op}.
2293 This can be a tuple of arguments or \NULL{}.
2294\end{cfuncdesc}
2295
2296\begin{cfuncdesc}{int}{PyFunction_SetDefaults}{PyObject *op,
2297 PyObject *defaults}
2298 Set the argument default values for the function object \var{op}.
2299 \var{defaults} must be \var{Py_None} or a tuple.
2300
2301 Raises \exception{SystemError} and returns \code{-1} on failure.
2302\end{cfuncdesc}
2303
2304\begin{cfuncdesc}{PyObject*}{PyFunction_GetClosure}{PyObject *op}
2305 Return the closure associated with the function object \var{op}.
2306 This can be \NULL{} or a tuple of cell objects.
2307\end{cfuncdesc}
2308
2309\begin{cfuncdesc}{int}{PyFunction_SetClosure}{PyObject *op,
2310 PyObject *closure}
2311 Set the closure associated with the function object \var{op}.
2312 \var{closure} must be \var{Py_None} or a tuple of cell objects.
2313
2314 Raises \exception{SystemError} and returns \code{-1} on failure.
2315\end{cfuncdesc}
2316
2317
Fred Drake3adf79e2001-10-12 19:01:43 +00002318\subsection{Method Objects \label{method-objects}}
2319
2320\obindex{method}
2321There are some useful functions that are useful for working with
2322method objects.
2323
2324\begin{cvardesc}{PyTypeObject}{PyMethod_Type}
2325 This instance of \ctype{PyTypeObject} represents the Python method
2326 type. This is exposed to Python programs as \code{types.MethodType}.
2327 \withsubitem{(in module types)}{\ttindex{MethodType}}
2328\end{cvardesc}
2329
2330\begin{cfuncdesc}{int}{PyMethod_Check}{PyObject *o}
2331 Return true if \var{o} is a method object (has type
Tim Peters9ddf40b2004-06-20 22:41:32 +00002332 \cdata{PyMethod_Type}). The parameter must not be \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002333\end{cfuncdesc}
2334
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002335\begin{cfuncdesc}{PyObject*}{PyMethod_New}{PyObject *func,
Fred Drake3adf79e2001-10-12 19:01:43 +00002336 PyObject *self, PyObject *class}
2337 Return a new method object, with \var{func} being any callable
2338 object; this is the function that will be called when the method is
2339 called. If this method should be bound to an instance, \var{self}
2340 should be the instance and \var{class} should be the class of
2341 \var{self}, otherwise \var{self} should be \NULL{} and \var{class}
2342 should be the class which provides the unbound method..
2343\end{cfuncdesc}
2344
2345\begin{cfuncdesc}{PyObject*}{PyMethod_Class}{PyObject *meth}
2346 Return the class object from which the method \var{meth} was
2347 created; if this was created from an instance, it will be the class
2348 of the instance.
2349\end{cfuncdesc}
2350
2351\begin{cfuncdesc}{PyObject*}{PyMethod_GET_CLASS}{PyObject *meth}
2352 Macro version of \cfunction{PyMethod_Class()} which avoids error
2353 checking.
2354\end{cfuncdesc}
2355
2356\begin{cfuncdesc}{PyObject*}{PyMethod_Function}{PyObject *meth}
2357 Return the function object associated with the method \var{meth}.
2358\end{cfuncdesc}
2359
2360\begin{cfuncdesc}{PyObject*}{PyMethod_GET_FUNCTION}{PyObject *meth}
2361 Macro version of \cfunction{PyMethod_Function()} which avoids error
2362 checking.
2363\end{cfuncdesc}
2364
2365\begin{cfuncdesc}{PyObject*}{PyMethod_Self}{PyObject *meth}
2366 Return the instance associated with the method \var{meth} if it is
Tim Peters9ddf40b2004-06-20 22:41:32 +00002367 bound, otherwise return \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002368\end{cfuncdesc}
2369
2370\begin{cfuncdesc}{PyObject*}{PyMethod_GET_SELF}{PyObject *meth}
2371 Macro version of \cfunction{PyMethod_Self()} which avoids error
2372 checking.
2373\end{cfuncdesc}
2374
2375
2376\subsection{Module Objects \label{moduleObjects}}
2377
2378\obindex{module}
2379There are only a few functions special to module objects.
2380
2381\begin{cvardesc}{PyTypeObject}{PyModule_Type}
2382 This instance of \ctype{PyTypeObject} represents the Python module
2383 type. This is exposed to Python programs as
2384 \code{types.ModuleType}.
2385 \withsubitem{(in module types)}{\ttindex{ModuleType}}
2386\end{cvardesc}
2387
2388\begin{cfuncdesc}{int}{PyModule_Check}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002389 Return true if \var{p} is a module object, or a subtype of a module
Fred Drake3adf79e2001-10-12 19:01:43 +00002390 object.
2391 \versionchanged[Allowed subtypes to be accepted]{2.2}
2392\end{cfuncdesc}
2393
2394\begin{cfuncdesc}{int}{PyModule_CheckExact}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002395 Return true if \var{p} is a module object, but not a subtype of
Fred Drake3adf79e2001-10-12 19:01:43 +00002396 \cdata{PyModule_Type}.
2397 \versionadded{2.2}
2398\end{cfuncdesc}
2399
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002400\begin{cfuncdesc}{PyObject*}{PyModule_New}{const char *name}
Fred Drake3adf79e2001-10-12 19:01:43 +00002401 Return a new module object with the \member{__name__} attribute set
2402 to \var{name}. Only the module's \member{__doc__} and
2403 \member{__name__} attributes are filled in; the caller is
2404 responsible for providing a \member{__file__} attribute.
2405 \withsubitem{(module attribute)}{
2406 \ttindex{__name__}\ttindex{__doc__}\ttindex{__file__}}
2407\end{cfuncdesc}
2408
2409\begin{cfuncdesc}{PyObject*}{PyModule_GetDict}{PyObject *module}
2410 Return the dictionary object that implements \var{module}'s
2411 namespace; this object is the same as the \member{__dict__}
2412 attribute of the module object. This function never fails.
2413 \withsubitem{(module attribute)}{\ttindex{__dict__}}
Fred Drakef495ef72002-04-12 19:32:07 +00002414 It is recommended extensions use other \cfunction{PyModule_*()}
2415 and \cfunction{PyObject_*()} functions rather than directly
2416 manipulate a module's \member{__dict__}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002417\end{cfuncdesc}
2418
2419\begin{cfuncdesc}{char*}{PyModule_GetName}{PyObject *module}
2420 Return \var{module}'s \member{__name__} value. If the module does
2421 not provide one, or if it is not a string, \exception{SystemError}
2422 is raised and \NULL{} is returned.
2423 \withsubitem{(module attribute)}{\ttindex{__name__}}
2424 \withsubitem{(built-in exception)}{\ttindex{SystemError}}
2425\end{cfuncdesc}
2426
2427\begin{cfuncdesc}{char*}{PyModule_GetFilename}{PyObject *module}
2428 Return the name of the file from which \var{module} was loaded using
2429 \var{module}'s \member{__file__} attribute. If this is not defined,
2430 or if it is not a string, raise \exception{SystemError} and return
Tim Peters9ddf40b2004-06-20 22:41:32 +00002431 \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002432 \withsubitem{(module attribute)}{\ttindex{__file__}}
2433 \withsubitem{(built-in exception)}{\ttindex{SystemError}}
2434\end{cfuncdesc}
2435
2436\begin{cfuncdesc}{int}{PyModule_AddObject}{PyObject *module,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002437 const char *name, PyObject *value}
Fred Drake3adf79e2001-10-12 19:01:43 +00002438 Add an object to \var{module} as \var{name}. This is a convenience
2439 function which can be used from the module's initialization
Georg Brandl99363b62005-09-03 07:27:26 +00002440 function. This steals a reference to \var{value}. Return
Fred Drake3adf79e2001-10-12 19:01:43 +00002441 \code{-1} on error, \code{0} on success.
2442 \versionadded{2.0}
2443\end{cfuncdesc}
2444
2445\begin{cfuncdesc}{int}{PyModule_AddIntConstant}{PyObject *module,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002446 const char *name, long value}
Fred Drake3adf79e2001-10-12 19:01:43 +00002447 Add an integer constant to \var{module} as \var{name}. This
2448 convenience function can be used from the module's initialization
Georg Brandl99363b62005-09-03 07:27:26 +00002449 function. Return \code{-1} on error, \code{0} on success.
Fred Drake3adf79e2001-10-12 19:01:43 +00002450 \versionadded{2.0}
2451\end{cfuncdesc}
2452
2453\begin{cfuncdesc}{int}{PyModule_AddStringConstant}{PyObject *module,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002454 const char *name, const char *value}
Fred Drake3adf79e2001-10-12 19:01:43 +00002455 Add a string constant to \var{module} as \var{name}. This
2456 convenience function can be used from the module's initialization
Georg Brandl99363b62005-09-03 07:27:26 +00002457 function. The string \var{value} must be null-terminated. Return
Fred Drake3adf79e2001-10-12 19:01:43 +00002458 \code{-1} on error, \code{0} on success.
2459 \versionadded{2.0}
2460\end{cfuncdesc}
2461
2462
2463\subsection{Iterator Objects \label{iterator-objects}}
2464
2465Python provides two general-purpose iterator objects. The first, a
2466sequence iterator, works with an arbitrary sequence supporting the
2467\method{__getitem__()} method. The second works with a callable
2468object and a sentinel value, calling the callable for each item in the
2469sequence, and ending the iteration when the sentinel value is
2470returned.
2471
2472\begin{cvardesc}{PyTypeObject}{PySeqIter_Type}
2473 Type object for iterator objects returned by
2474 \cfunction{PySeqIter_New()} and the one-argument form of the
2475 \function{iter()} built-in function for built-in sequence types.
2476 \versionadded{2.2}
2477\end{cvardesc}
2478
2479\begin{cfuncdesc}{int}{PySeqIter_Check}{op}
2480 Return true if the type of \var{op} is \cdata{PySeqIter_Type}.
2481 \versionadded{2.2}
2482\end{cfuncdesc}
2483
2484\begin{cfuncdesc}{PyObject*}{PySeqIter_New}{PyObject *seq}
2485 Return an iterator that works with a general sequence object,
2486 \var{seq}. The iteration ends when the sequence raises
2487 \exception{IndexError} for the subscripting operation.
2488 \versionadded{2.2}
2489\end{cfuncdesc}
2490
2491\begin{cvardesc}{PyTypeObject}{PyCallIter_Type}
2492 Type object for iterator objects returned by
2493 \cfunction{PyCallIter_New()} and the two-argument form of the
2494 \function{iter()} built-in function.
2495 \versionadded{2.2}
2496\end{cvardesc}
2497
2498\begin{cfuncdesc}{int}{PyCallIter_Check}{op}
2499 Return true if the type of \var{op} is \cdata{PyCallIter_Type}.
2500 \versionadded{2.2}
2501\end{cfuncdesc}
2502
2503\begin{cfuncdesc}{PyObject*}{PyCallIter_New}{PyObject *callable,
2504 PyObject *sentinel}
2505 Return a new iterator. The first parameter, \var{callable}, can be
2506 any Python callable object that can be called with no parameters;
2507 each call to it should return the next item in the iteration. When
2508 \var{callable} returns a value equal to \var{sentinel}, the
2509 iteration will be terminated.
2510 \versionadded{2.2}
2511\end{cfuncdesc}
2512
2513
2514\subsection{Descriptor Objects \label{descriptor-objects}}
2515
Fred Drake54e62942001-12-11 19:40:16 +00002516``Descriptors'' are objects that describe some attribute of an object.
2517They are found in the dictionary of type objects.
2518
Fred Drake3adf79e2001-10-12 19:01:43 +00002519\begin{cvardesc}{PyTypeObject}{PyProperty_Type}
Fred Drake54e62942001-12-11 19:40:16 +00002520 The type object for the built-in descriptor types.
Fred Drake3adf79e2001-10-12 19:01:43 +00002521 \versionadded{2.2}
2522\end{cvardesc}
2523
2524\begin{cfuncdesc}{PyObject*}{PyDescr_NewGetSet}{PyTypeObject *type,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002525 struct PyGetSetDef *getset}
Fred Drake3adf79e2001-10-12 19:01:43 +00002526 \versionadded{2.2}
2527\end{cfuncdesc}
2528
2529\begin{cfuncdesc}{PyObject*}{PyDescr_NewMember}{PyTypeObject *type,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002530 struct PyMemberDef *meth}
Fred Drake3adf79e2001-10-12 19:01:43 +00002531 \versionadded{2.2}
2532\end{cfuncdesc}
2533
2534\begin{cfuncdesc}{PyObject*}{PyDescr_NewMethod}{PyTypeObject *type,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002535 struct PyMethodDef *meth}
Fred Drake3adf79e2001-10-12 19:01:43 +00002536 \versionadded{2.2}
2537\end{cfuncdesc}
2538
2539\begin{cfuncdesc}{PyObject*}{PyDescr_NewWrapper}{PyTypeObject *type,
2540 struct wrapperbase *wrapper,
2541 void *wrapped}
2542 \versionadded{2.2}
2543\end{cfuncdesc}
2544
Thomas Heller8178a222004-02-09 10:47:11 +00002545\begin{cfuncdesc}{PyObject*}{PyDescr_NewClassMethod}{PyTypeObject *type,
2546 PyMethodDef *method}
2547 \versionadded{2.3}
2548\end{cfuncdesc}
2549
Fred Drake3adf79e2001-10-12 19:01:43 +00002550\begin{cfuncdesc}{int}{PyDescr_IsData}{PyObject *descr}
Georg Brandl99363b62005-09-03 07:27:26 +00002551 Return true if the descriptor objects \var{descr} describes a data
Fred Drake3adf79e2001-10-12 19:01:43 +00002552 attribute, or false if it describes a method. \var{descr} must be a
2553 descriptor object; there is no error checking.
2554 \versionadded{2.2}
2555\end{cfuncdesc}
2556
2557\begin{cfuncdesc}{PyObject*}{PyWrapper_New}{PyObject *, PyObject *}
2558 \versionadded{2.2}
2559\end{cfuncdesc}
2560
2561
2562\subsection{Slice Objects \label{slice-objects}}
2563
2564\begin{cvardesc}{PyTypeObject}{PySlice_Type}
2565 The type object for slice objects. This is the same as
2566 \code{types.SliceType}.
2567 \withsubitem{(in module types)}{\ttindex{SliceType}}
2568\end{cvardesc}
2569
2570\begin{cfuncdesc}{int}{PySlice_Check}{PyObject *ob}
Georg Brandl99363b62005-09-03 07:27:26 +00002571 Return true if \var{ob} is a slice object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002572 \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002573\end{cfuncdesc}
2574
2575\begin{cfuncdesc}{PyObject*}{PySlice_New}{PyObject *start, PyObject *stop,
2576 PyObject *step}
2577 Return a new slice object with the given values. The \var{start},
2578 \var{stop}, and \var{step} parameters are used as the values of the
2579 slice object attributes of the same names. Any of the values may be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002580 \NULL{}, in which case the \code{None} will be used for the
Georg Brandl99363b62005-09-03 07:27:26 +00002581 corresponding attribute. Return \NULL{} if the new object could
Fred Drake3adf79e2001-10-12 19:01:43 +00002582 not be allocated.
2583\end{cfuncdesc}
2584
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002585\begin{cfuncdesc}{int}{PySlice_GetIndices}{PySliceObject *slice, Py_ssize_t length,
2586 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step}
Michael W. Hudson5efaf7e2002-06-11 10:55:12 +00002587Retrieve the start, stop and step indices from the slice object
2588\var{slice}, assuming a sequence of length \var{length}. Treats
2589indices greater than \var{length} as errors.
2590
2591Returns 0 on success and -1 on error with no exception set (unless one
2592of the indices was not \constant{None} and failed to be converted to
2593an integer, in which case -1 is returned with an exception set).
2594
2595You probably do not want to use this function. If you want to use
2596slice objects in versions of Python prior to 2.3, you would probably
2597do well to incorporate the source of \cfunction{PySlice_GetIndicesEx},
2598suitably renamed, in the source of your extension.
2599\end{cfuncdesc}
2600
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002601\begin{cfuncdesc}{int}{PySlice_GetIndicesEx}{PySliceObject *slice, Py_ssize_t length,
2602 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step,
2603 Py_ssize_t *slicelength}
Michael W. Hudson5efaf7e2002-06-11 10:55:12 +00002604Usable replacement for \cfunction{PySlice_GetIndices}. Retrieve the
2605start, stop, and step indices from the slice object \var{slice}
2606assuming a sequence of length \var{length}, and store the length of
2607the slice in \var{slicelength}. Out of bounds indices are clipped in
2608a manner consistent with the handling of normal slices.
2609
2610Returns 0 on success and -1 on error with exception set.
2611
2612\versionadded{2.3}
Fred Drake3adf79e2001-10-12 19:01:43 +00002613\end{cfuncdesc}
2614
2615
2616\subsection{Weak Reference Objects \label{weakref-objects}}
2617
2618Python supports \emph{weak references} as first-class objects. There
2619are two specific object types which directly implement weak
2620references. The first is a simple reference object, and the second
2621acts as a proxy for the original object as much as it can.
2622
2623\begin{cfuncdesc}{int}{PyWeakref_Check}{ob}
2624 Return true if \var{ob} is either a reference or proxy object.
2625 \versionadded{2.2}
2626\end{cfuncdesc}
2627
2628\begin{cfuncdesc}{int}{PyWeakref_CheckRef}{ob}
2629 Return true if \var{ob} is a reference object.
2630 \versionadded{2.2}
2631\end{cfuncdesc}
2632
2633\begin{cfuncdesc}{int}{PyWeakref_CheckProxy}{ob}
2634 Return true if \var{ob} is a proxy object.
2635 \versionadded{2.2}
2636\end{cfuncdesc}
2637
2638\begin{cfuncdesc}{PyObject*}{PyWeakref_NewRef}{PyObject *ob,
2639 PyObject *callback}
2640 Return a weak reference object for the object \var{ob}. This will
2641 always return a new reference, but is not guaranteed to create a new
2642 object; an existing reference object may be returned. The second
2643 parameter, \var{callback}, can be a callable object that receives
2644 notification when \var{ob} is garbage collected; it should accept a
Raymond Hettinger5232f502004-03-25 08:51:36 +00002645 single parameter, which will be the weak reference object itself.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002646 \var{callback} may also be \code{None} or \NULL{}. If \var{ob}
Fred Drake3adf79e2001-10-12 19:01:43 +00002647 is not a weakly-referencable object, or if \var{callback} is not
Tim Peters9ddf40b2004-06-20 22:41:32 +00002648 callable, \code{None}, or \NULL{}, this will return \NULL{} and
Fred Drake3adf79e2001-10-12 19:01:43 +00002649 raise \exception{TypeError}.
2650 \versionadded{2.2}
2651\end{cfuncdesc}
2652
2653\begin{cfuncdesc}{PyObject*}{PyWeakref_NewProxy}{PyObject *ob,
2654 PyObject *callback}
2655 Return a weak reference proxy object for the object \var{ob}. This
2656 will always return a new reference, but is not guaranteed to create
2657 a new object; an existing proxy object may be returned. The second
2658 parameter, \var{callback}, can be a callable object that receives
2659 notification when \var{ob} is garbage collected; it should accept a
Raymond Hettinger5232f502004-03-25 08:51:36 +00002660 single parameter, which will be the weak reference object itself.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002661 \var{callback} may also be \code{None} or \NULL{}. If \var{ob} is not
Fred Drake3adf79e2001-10-12 19:01:43 +00002662 a weakly-referencable object, or if \var{callback} is not callable,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002663 \code{None}, or \NULL{}, this will return \NULL{} and raise
Fred Drake3adf79e2001-10-12 19:01:43 +00002664 \exception{TypeError}.
2665 \versionadded{2.2}
2666\end{cfuncdesc}
2667
2668\begin{cfuncdesc}{PyObject*}{PyWeakref_GetObject}{PyObject *ref}
Georg Brandl99363b62005-09-03 07:27:26 +00002669 Return the referenced object from a weak reference, \var{ref}. If
Ka-Ping Yeebd379e92003-03-28 18:07:16 +00002670 the referent is no longer live, returns \code{None}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002671 \versionadded{2.2}
2672\end{cfuncdesc}
2673
2674\begin{cfuncdesc}{PyObject*}{PyWeakref_GET_OBJECT}{PyObject *ref}
2675 Similar to \cfunction{PyWeakref_GetObject()}, but implemented as a
2676 macro that does no error checking.
2677 \versionadded{2.2}
2678\end{cfuncdesc}
2679
2680
2681\subsection{CObjects \label{cObjects}}
2682
2683\obindex{CObject}
2684Refer to \emph{Extending and Embedding the Python Interpreter},
Fred Drake54e62942001-12-11 19:40:16 +00002685section~1.12, ``Providing a C API for an Extension Module,'' for more
Fred Drake3adf79e2001-10-12 19:01:43 +00002686information on using these objects.
2687
2688
2689\begin{ctypedesc}{PyCObject}
2690 This subtype of \ctype{PyObject} represents an opaque value, useful
2691 for C extension modules who need to pass an opaque value (as a
2692 \ctype{void*} pointer) through Python code to other C code. It is
2693 often used to make a C function pointer defined in one module
2694 available to other modules, so the regular import mechanism can be
2695 used to access C APIs defined in dynamically loaded modules.
2696\end{ctypedesc}
2697
2698\begin{cfuncdesc}{int}{PyCObject_Check}{PyObject *p}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002699 Return true if its argument is a \ctype{PyCObject}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002700\end{cfuncdesc}
2701
Tim Petersf582b822001-12-11 18:51:08 +00002702\begin{cfuncdesc}{PyObject*}{PyCObject_FromVoidPtr}{void* cobj,
Fred Drake54e62942001-12-11 19:40:16 +00002703 void (*destr)(void *)}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002704 Create a \ctype{PyCObject} from the \code{void *}\var{cobj}. The
Fred Drake3adf79e2001-10-12 19:01:43 +00002705 \var{destr} function will be called when the object is reclaimed,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002706 unless it is \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002707\end{cfuncdesc}
2708
2709\begin{cfuncdesc}{PyObject*}{PyCObject_FromVoidPtrAndDesc}{void* cobj,
2710 void* desc, void (*destr)(void *, void *)}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002711 Create a \ctype{PyCObject} from the \ctype{void *}\var{cobj}. The
Fred Drake3adf79e2001-10-12 19:01:43 +00002712 \var{destr} function will be called when the object is reclaimed.
2713 The \var{desc} argument can be used to pass extra callback data for
2714 the destructor function.
2715\end{cfuncdesc}
2716
2717\begin{cfuncdesc}{void*}{PyCObject_AsVoidPtr}{PyObject* self}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002718 Return the object \ctype{void *} that the \ctype{PyCObject}
Fred Drake3adf79e2001-10-12 19:01:43 +00002719 \var{self} was created with.
2720\end{cfuncdesc}
2721
2722\begin{cfuncdesc}{void*}{PyCObject_GetDesc}{PyObject* self}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002723 Return the description \ctype{void *} that the \ctype{PyCObject}
Fred Drake3adf79e2001-10-12 19:01:43 +00002724 \var{self} was created with.
2725\end{cfuncdesc}
Fred Drakecd8474e2001-11-26 21:29:17 +00002726
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002727\begin{cfuncdesc}{int}{PyCObject_SetVoidPtr}{PyObject* self, void* cobj}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002728 Set the void pointer inside \var{self} to \var{cobj}.
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002729 The \ctype{PyCObject} must not have an associated destructor.
2730 Return true on success, false on failure.
2731\end{cfuncdesc}
2732
Fred Drakecd8474e2001-11-26 21:29:17 +00002733
2734\subsection{Cell Objects \label{cell-objects}}
2735
2736``Cell'' objects are used to implement variables referenced by
2737multiple scopes. For each such variable, a cell object is created to
2738store the value; the local variables of each stack frame that
2739references the value contains a reference to the cells from outer
2740scopes which also use that variable. When the value is accessed, the
2741value contained in the cell is used instead of the cell object
2742itself. This de-referencing of the cell object requires support from
2743the generated byte-code; these are not automatically de-referenced
2744when accessed. Cell objects are not likely to be useful elsewhere.
2745
Fred Drake54e62942001-12-11 19:40:16 +00002746\begin{ctypedesc}{PyCellObject}
2747 The C structure used for cell objects.
2748\end{ctypedesc}
2749
Fred Drakecd8474e2001-11-26 21:29:17 +00002750\begin{cvardesc}{PyTypeObject}{PyCell_Type}
Georg Brandl9b743f52006-02-20 12:57:53 +00002751 The type object corresponding to cell objects.
Fred Drakecd8474e2001-11-26 21:29:17 +00002752\end{cvardesc}
2753
2754\begin{cfuncdesc}{int}{PyCell_Check}{ob}
2755 Return true if \var{ob} is a cell object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002756 \NULL{}.
Fred Drakecd8474e2001-11-26 21:29:17 +00002757\end{cfuncdesc}
2758
2759\begin{cfuncdesc}{PyObject*}{PyCell_New}{PyObject *ob}
2760 Create and return a new cell object containing the value \var{ob}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002761 The parameter may be \NULL{}.
Fred Drakecd8474e2001-11-26 21:29:17 +00002762\end{cfuncdesc}
2763
2764\begin{cfuncdesc}{PyObject*}{PyCell_Get}{PyObject *cell}
2765 Return the contents of the cell \var{cell}.
2766\end{cfuncdesc}
2767
2768\begin{cfuncdesc}{PyObject*}{PyCell_GET}{PyObject *cell}
2769 Return the contents of the cell \var{cell}, but without checking
Raymond Hettingerf4bb1f92003-08-23 03:38:11 +00002770 that \var{cell} is non-\NULL{} and a cell object.
Fred Drakecd8474e2001-11-26 21:29:17 +00002771\end{cfuncdesc}
2772
2773\begin{cfuncdesc}{int}{PyCell_Set}{PyObject *cell, PyObject *value}
2774 Set the contents of the cell object \var{cell} to \var{value}. This
2775 releases the reference to any current content of the cell.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002776 \var{value} may be \NULL{}. \var{cell} must be non-\NULL{}; if it is
Fred Drakecd8474e2001-11-26 21:29:17 +00002777 not a cell object, \code{-1} will be returned. On success, \code{0}
2778 will be returned.
2779\end{cfuncdesc}
2780
2781\begin{cfuncdesc}{void}{PyCell_SET}{PyObject *cell, PyObject *value}
2782 Sets the value of the cell object \var{cell} to \var{value}. No
2783 reference counts are adjusted, and no checks are made for safety;
2784 \var{cell} must be non-\NULL{} and must be a cell object.
2785\end{cfuncdesc}
Martin v. Löwise440e472004-06-01 15:22:42 +00002786
2787
2788\subsection{Generator Objects \label{gen-objects}}
2789
2790Generator objects are what Python uses to implement generator iterators.
2791They are normally created by iterating over a function that yields values,
2792rather than explicitly calling \cfunction{PyGen_New}.
2793
2794\begin{ctypedesc}{PyGenObject}
2795 The C structure used for generator objects.
2796\end{ctypedesc}
2797
2798\begin{cvardesc}{PyTypeObject}{PyGen_Type}
2799 The type object corresponding to generator objects
2800\end{cvardesc}
2801
2802\begin{cfuncdesc}{int}{PyGen_Check}{ob}
2803 Return true if \var{ob} is a generator object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002804 \NULL{}.
Martin v. Löwise440e472004-06-01 15:22:42 +00002805\end{cfuncdesc}
2806
2807\begin{cfuncdesc}{int}{PyGen_CheckExact}{ob}
2808 Return true if \var{ob}'s type is \var{PyGen_Type}
2809 is a generator object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002810 \NULL{}.
Martin v. Löwise440e472004-06-01 15:22:42 +00002811\end{cfuncdesc}
2812
2813\begin{cfuncdesc}{PyObject*}{PyGen_New}{PyFrameObject *frame}
2814 Create and return a new generator object based on the \var{frame} object.
Fred Drake3e482d92006-03-30 02:58:38 +00002815 A reference to \var{frame} is stolen by this function.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002816 The parameter must not be \NULL{}.
2817\end{cfuncdesc}
2818
2819
2820\subsection{DateTime Objects \label{datetime-objects}}
2821
2822Various date and time objects are supplied by the \module{datetime}
2823module. Before using any of these functions, the header file
2824\file{datetime.h} must be included in your source (note that this is
2825not include by \file{Python.h}), and macro \cfunction{PyDateTime_IMPORT()}
2826must be invoked. The macro arranges to put a pointer to a C structure
2827in a static variable \code{PyDateTimeAPI}, which is used by the following
Tim Peters183dabc2004-07-11 19:26:19 +00002828macros.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002829
Tim Peters183dabc2004-07-11 19:26:19 +00002830Type-check macros:
2831
2832\begin{cfuncdesc}{int}{PyDate_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002833 Return true if \var{ob} is of type \cdata{PyDateTime_DateType} or
2834 a subtype of \cdata{PyDateTime_DateType}. \var{ob} must not be
2835 \NULL{}.
2836 \versionadded{2.4}
2837\end{cfuncdesc}
2838
Tim Peters183dabc2004-07-11 19:26:19 +00002839\begin{cfuncdesc}{int}{PyDate_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002840 Return true if \var{ob} is of type \cdata{PyDateTime_DateType}.
2841 \var{ob} must not be \NULL{}.
2842 \versionadded{2.4}
2843\end{cfuncdesc}
2844
Tim Peters183dabc2004-07-11 19:26:19 +00002845\begin{cfuncdesc}{int}{PyDateTime_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002846 Return true if \var{ob} is of type \cdata{PyDateTime_DateTimeType} or
2847 a subtype of \cdata{PyDateTime_DateTimeType}. \var{ob} must not be
2848 \NULL{}.
2849 \versionadded{2.4}
2850\end{cfuncdesc}
2851
Tim Peters183dabc2004-07-11 19:26:19 +00002852\begin{cfuncdesc}{int}{PyDateTime_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002853 Return true if \var{ob} is of type \cdata{PyDateTime_DateTimeType}.
2854 \var{ob} must not be \NULL{}.
2855 \versionadded{2.4}
2856\end{cfuncdesc}
2857
Tim Peters183dabc2004-07-11 19:26:19 +00002858\begin{cfuncdesc}{int}{PyTime_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002859 Return true if \var{ob} is of type \cdata{PyDateTime_TimeType} or
2860 a subtype of \cdata{PyDateTime_TimeType}. \var{ob} must not be
2861 \NULL{}.
2862 \versionadded{2.4}
2863\end{cfuncdesc}
2864
Tim Peters183dabc2004-07-11 19:26:19 +00002865\begin{cfuncdesc}{int}{PyTime_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002866 Return true if \var{ob} is of type \cdata{PyDateTime_TimeType}.
2867 \var{ob} must not be \NULL{}.
2868 \versionadded{2.4}
2869\end{cfuncdesc}
2870
Tim Peters183dabc2004-07-11 19:26:19 +00002871\begin{cfuncdesc}{int}{PyDelta_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002872 Return true if \var{ob} is of type \cdata{PyDateTime_DeltaType} or
2873 a subtype of \cdata{PyDateTime_DeltaType}. \var{ob} must not be
2874 \NULL{}.
2875 \versionadded{2.4}
2876\end{cfuncdesc}
2877
Tim Peters183dabc2004-07-11 19:26:19 +00002878\begin{cfuncdesc}{int}{PyDelta_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002879 Return true if \var{ob} is of type \cdata{PyDateTime_DeltaType}.
2880 \var{ob} must not be \NULL{}.
2881 \versionadded{2.4}
2882\end{cfuncdesc}
2883
Tim Peters183dabc2004-07-11 19:26:19 +00002884\begin{cfuncdesc}{int}{PyTZInfo_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002885 Return true if \var{ob} is of type \cdata{PyDateTime_TZInfoType} or
2886 a subtype of \cdata{PyDateTime_TZInfoType}. \var{ob} must not be
2887 \NULL{}.
2888 \versionadded{2.4}
2889\end{cfuncdesc}
2890
Tim Peters183dabc2004-07-11 19:26:19 +00002891\begin{cfuncdesc}{int}{PyTZInfo_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002892 Return true if \var{ob} is of type \cdata{PyDateTime_TZInfoType}.
2893 \var{ob} must not be \NULL{}.
2894 \versionadded{2.4}
2895\end{cfuncdesc}
2896
Tim Peters183dabc2004-07-11 19:26:19 +00002897Macros to create objects:
2898
Tim Peters9ddf40b2004-06-20 22:41:32 +00002899\begin{cfuncdesc}{PyObject*}{PyDate_FromDate}{int year, int month, int day}
2900 Return a \code{datetime.date} object with the specified year, month
2901 and day.
2902 \versionadded{2.4}
2903\end{cfuncdesc}
2904
Brett Cannon5bbe6ad2005-02-17 05:17:17 +00002905\begin{cfuncdesc}{PyObject*}{PyDateTime_FromDateAndTime}{int year, int month,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002906 int day, int hour, int minute, int second, int usecond}
2907 Return a \code{datetime.datetime} object with the specified year, month,
2908 day, hour, minute, second and microsecond.
2909 \versionadded{2.4}
2910\end{cfuncdesc}
2911
2912\begin{cfuncdesc}{PyObject*}{PyTime_FromTime}{int hour, int minute,
2913 int second, int usecond}
2914 Return a \code{datetime.time} object with the specified hour, minute,
2915 second and microsecond.
2916 \versionadded{2.4}
2917\end{cfuncdesc}
2918
2919\begin{cfuncdesc}{PyObject*}{PyDelta_FromDSU}{int days, int seconds,
2920 int useconds}
2921 Return a \code{datetime.timedelta} object representing the given number
2922 of days, seconds and microseconds. Normalization is performed so that
2923 the resulting number of microseconds and seconds lie in the ranges
2924 documented for \code{datetime.timedelta} objects.
2925 \versionadded{2.4}
2926\end{cfuncdesc}
2927
Tim Peters8ff9f9f2004-07-17 01:42:26 +00002928Macros to extract fields from date objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00002929instance of \cdata{PyDateTime_Date}, including subclasses (such as
2930\cdata{PyDateTime_DateTime}). The argument must not be \NULL{}, and
2931the type is not checked:
2932
2933\begin{cfuncdesc}{int}{PyDateTime_GET_YEAR}{PyDateTime_Date *o}
2934 Return the year, as a positive int.
2935 \versionadded{2.4}
2936\end{cfuncdesc}
2937
2938\begin{cfuncdesc}{int}{PyDateTime_GET_MONTH}{PyDateTime_Date *o}
2939 Return the month, as an int from 1 through 12.
2940 \versionadded{2.4}
2941\end{cfuncdesc}
2942
2943\begin{cfuncdesc}{int}{PyDateTime_GET_DAY}{PyDateTime_Date *o}
2944 Return the day, as an int from 1 through 31.
2945 \versionadded{2.4}
2946\end{cfuncdesc}
2947
Tim Peters8ff9f9f2004-07-17 01:42:26 +00002948Macros to extract fields from datetime objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00002949instance of \cdata{PyDateTime_DateTime}, including subclasses.
2950The argument must not be \NULL{}, and the type is not checked:
2951
2952\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_HOUR}{PyDateTime_DateTime *o}
Neal Norwitz7fdd92f2004-08-02 21:56:33 +00002953 Return the hour, as an int from 0 through 23.
Tim Peters183dabc2004-07-11 19:26:19 +00002954 \versionadded{2.4}
2955\end{cfuncdesc}
2956
2957\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_MINUTE}{PyDateTime_DateTime *o}
2958 Return the minute, as an int from 0 through 59.
2959 \versionadded{2.4}
2960\end{cfuncdesc}
2961
2962\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_SECOND}{PyDateTime_DateTime *o}
2963 Return the second, as an int from 0 through 59.
2964 \versionadded{2.4}
2965\end{cfuncdesc}
2966
2967\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_MICROSECOND}{PyDateTime_DateTime *o}
2968 Return the microsecond, as an int from 0 through 999999.
2969 \versionadded{2.4}
2970\end{cfuncdesc}
2971
Tim Peters8ff9f9f2004-07-17 01:42:26 +00002972Macros to extract fields from time objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00002973instance of \cdata{PyDateTime_Time}, including subclasses.
2974The argument must not be \NULL{}, and the type is not checked:
2975
2976\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_HOUR}{PyDateTime_Time *o}
Neal Norwitz7fdd92f2004-08-02 21:56:33 +00002977 Return the hour, as an int from 0 through 23.
Tim Peters183dabc2004-07-11 19:26:19 +00002978 \versionadded{2.4}
2979\end{cfuncdesc}
2980
2981\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_MINUTE}{PyDateTime_Time *o}
2982 Return the minute, as an int from 0 through 59.
2983 \versionadded{2.4}
2984\end{cfuncdesc}
2985
2986\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_SECOND}{PyDateTime_Time *o}
2987 Return the second, as an int from 0 through 59.
2988 \versionadded{2.4}
2989\end{cfuncdesc}
2990
2991\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_MICROSECOND}{PyDateTime_Time *o}
2992 Return the microsecond, as an int from 0 through 999999.
2993 \versionadded{2.4}
2994\end{cfuncdesc}
2995
2996Macros for the convenience of modules implementing the DB API:
2997
Tim Peters9ddf40b2004-06-20 22:41:32 +00002998\begin{cfuncdesc}{PyObject*}{PyDateTime_FromTimestamp}{PyObject *args}
2999 Create and return a new \code{datetime.datetime} object given an argument
3000 tuple suitable for passing to \code{datetime.datetime.fromtimestamp()}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00003001 \versionadded{2.4}
3002\end{cfuncdesc}
3003
3004\begin{cfuncdesc}{PyObject*}{PyDate_FromTimestamp}{PyObject *args}
3005 Create and return a new \code{datetime.date} object given an argument
3006 tuple suitable for passing to \code{datetime.date.fromtimestamp()}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00003007 \versionadded{2.4}
Martin v. Löwise440e472004-06-01 15:22:42 +00003008\end{cfuncdesc}
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003009
3010
3011\subsection{Set Objects \label{setObjects}}
3012\sectionauthor{Raymond D. Hettinger}{python@rcn.com}
3013
3014\obindex{set}
3015\obindex{frozenset}
3016\versionadded{2.5}
3017
3018This section details the public API for \class{set} and \class{frozenset}
3019objects. Any functionality not listed below is best accessed using the
Raymond Hettinger0c230b92005-08-17 10:05:22 +00003020either the abstract object protocol (including
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003021\cfunction{PyObject_CallMethod()}, \cfunction{PyObject_RichCompareBool()},
3022\cfunction{PyObject_Hash()}, \cfunction{PyObject_Repr()},
3023\cfunction{PyObject_IsTrue()}, \cfunction{PyObject_Print()}, and
Raymond Hettinger0c230b92005-08-17 10:05:22 +00003024\cfunction{PyObject_GetIter()})
3025or the abstract number protocol (including
3026\cfunction{PyNumber_Add()}, \cfunction{PyNumber_Subtract()},
3027\cfunction{PyNumber_Or()}, \cfunction{PyNumber_Xor()},
Georg Brandlb518d8c2006-02-22 11:46:55 +00003028\cfunction{PyNumber_InPlaceAdd()}, \cfunction{PyNumber_InPlaceSubtract()},
3029\cfunction{PyNumber_InPlaceOr()}, and \cfunction{PyNumber_InPlaceXor()}).
Raymond Hettinger66760f82006-03-20 18:35:55 +00003030
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003031\begin{ctypedesc}{PySetObject}
3032 This subtype of \ctype{PyObject} is used to hold the internal data for
3033 both \class{set} and \class{frozenset} objects. It is like a
3034 \ctype{PyDictObject} in that it is a fixed size for small sets
3035 (much like tuple storage) and will point to a separate, variable sized
3036 block of memory for medium and large sized sets (much like list storage).
3037 None of the fields of this structure should be considered public and
3038 are subject to change. All access should be done through the
Raymond Hettinger94fedf92005-08-17 12:23:45 +00003039 documented API rather than by manipulating the values in the structure.
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003040
3041\end{ctypedesc}
3042
3043\begin{cvardesc}{PyTypeObject}{PySet_Type}
3044 This is an instance of \ctype{PyTypeObject} representing the Python
3045 \class{set} type.
3046\end{cvardesc}
3047
3048\begin{cvardesc}{PyTypeObject}{PyFrozenSet_Type}
3049 This is an instance of \ctype{PyTypeObject} representing the Python
3050 \class{frozenset} type.
3051\end{cvardesc}
3052
3053
3054The following type check macros work on pointers to any Python object.
3055Likewise, the constructor functions work with any iterable Python object.
3056
3057\begin{cfuncdesc}{int}{PyAnySet_Check}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00003058 Return true if \var{p} is a \class{set} object, a \class{frozenset}
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003059 object, or an instance of a subtype.
3060\end{cfuncdesc}
3061
3062\begin{cfuncdesc}{int}{PyAnySet_CheckExact}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00003063 Return true if \var{p} is a \class{set} object or a \class{frozenset}
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003064 object but not an instance of a subtype.
3065\end{cfuncdesc}
3066
3067\begin{cfuncdesc}{int}{PyFrozenSet_CheckExact}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00003068 Return true if \var{p} is a \class{frozenset} object
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003069 but not an instance of a subtype.
3070\end{cfuncdesc}
3071
3072\begin{cfuncdesc}{PyObject*}{PySet_New}{PyObject *iterable}
Georg Brandl99363b62005-09-03 07:27:26 +00003073 Return a new \class{set} containing objects returned by the
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003074 \var{iterable}. The \var{iterable} may be \NULL{} to create a
Georg Brandl99363b62005-09-03 07:27:26 +00003075 new empty set. Return the new set on success or \NULL{} on
3076 failure. Raise \exception{TypeError} if \var{iterable} is
Raymond Hettinger94fedf92005-08-17 12:23:45 +00003077 not actually iterable. The constructor is also useful for
3078 copying a set (\code{c=set(s)}).
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003079\end{cfuncdesc}
3080
3081\begin{cfuncdesc}{PyObject*}{PyFrozenSet_New}{PyObject *iterable}
Georg Brandl99363b62005-09-03 07:27:26 +00003082 Return a new \class{frozenset} containing objects returned by the
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003083 \var{iterable}. The \var{iterable} may be \NULL{} to create a
Georg Brandl99363b62005-09-03 07:27:26 +00003084 new empty frozenset. Return the new set on success or \NULL{} on
3085 failure. Raise \exception{TypeError} if \var{iterable} is
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003086 not actually iterable.
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003087\end{cfuncdesc}
3088
3089
3090The following functions and macros are available for instances of
3091\class{set} or \class{frozenset} or instances of their subtypes.
3092
3093\begin{cfuncdesc}{int}{PySet_Size}{PyObject *anyset}
Georg Brandl99363b62005-09-03 07:27:26 +00003094 Return the length of a \class{set} or \class{frozenset} object.
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003095 Equivalent to \samp{len(\var{anyset})}. Raises a
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003096 \exception{PyExc_SystemError} if \var{anyset} is not a \class{set},
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003097 \class{frozenset}, or an instance of a subtype.
3098 \bifuncindex{len}
3099\end{cfuncdesc}
3100
3101\begin{cfuncdesc}{int}{PySet_GET_SIZE}{PyObject *anyset}
3102 Macro form of \cfunction{PySet_Size()} without error checking.
3103\end{cfuncdesc}
3104
3105\begin{cfuncdesc}{int}{PySet_Contains}{PyObject *anyset, PyObject *key}
Georg Brandl99363b62005-09-03 07:27:26 +00003106 Return 1 if found, 0 if not found, and -1 if an error is
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003107 encountered. Unlike the Python \method{__contains__()} method, this
3108 function does not automatically convert unhashable sets into temporary
Georg Brandl99363b62005-09-03 07:27:26 +00003109 frozensets. Raise a \exception{TypeError} if the \var{key} is unhashable.
3110 Raise \exception{PyExc_SystemError} if \var{anyset} is not a \class{set},
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003111 \class{frozenset}, or an instance of a subtype.
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003112\end{cfuncdesc}
3113
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003114The following functions are available for instances of \class{set} or
3115its subtypes but not for instances of \class{frozenset} or its subtypes.
3116
3117\begin{cfuncdesc}{int}{PySet_Add}{PyObject *set, PyObject *key}
Georg Brandl99363b62005-09-03 07:27:26 +00003118 Add \var{key} to a \class{set} instance. Does not apply to
3119 \class{frozenset} instances. Return 0 on success or -1 on failure.
3120 Raise a \exception{TypeError} if the \var{key} is unhashable.
3121 Raise a \exception{MemoryError} if there is no room to grow.
3122 Raise a \exception{SystemError} if \var{set} is an not an instance
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003123 of \class{set} or its subtype.
3124\end{cfuncdesc}
3125
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003126\begin{cfuncdesc}{int}{PySet_Discard}{PyObject *set, PyObject *key}
Georg Brandl99363b62005-09-03 07:27:26 +00003127 Return 1 if found and removed, 0 if not found (no action taken),
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003128 and -1 if an error is encountered. Does not raise \exception{KeyError}
Georg Brandl99363b62005-09-03 07:27:26 +00003129 for missing keys. Raise a \exception{TypeError} if the \var{key} is
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003130 unhashable. Unlike the Python \method{discard()} method, this function
3131 does not automatically convert unhashable sets into temporary frozensets.
Georg Brandl99363b62005-09-03 07:27:26 +00003132 Raise \exception{PyExc_SystemError} if \var{set} is an not an instance
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003133 of \class{set} or its subtype.
3134\end{cfuncdesc}
3135
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003136\begin{cfuncdesc}{PyObject*}{PySet_Pop}{PyObject *set}
Georg Brandl99363b62005-09-03 07:27:26 +00003137 Return a new reference to an arbitrary object in the \var{set},
3138 and removes the object from the \var{set}. Return \NULL{} on
3139 failure. Raise \exception{KeyError} if the set is empty.
3140 Raise a \exception{SystemError} if \var{set} is an not an instance
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003141 of \class{set} or its subtype.
3142\end{cfuncdesc}
3143
Barry Warsaw176014f2006-03-30 22:45:35 +00003144\begin{cfuncdesc}{int}{PySet_Clear}{PyObject *set}
3145 Empty an existing set of all elements.
3146\end{cfuncdesc}