blob: 6dc1ca497e4842b103a89da54bc59d70c0b929fe [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
Thomas Wouters0e3f5912006-08-11 14:57:12 +000034 \code{type} and \code{types.TypeType} in the Python layer.
Fred Drake3adf79e2001-10-12 19:01:43 +000035 \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
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000120 integer type. This is the same object as \code{int} and
121 \code{types.IntType}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000122 \withsubitem{(in modules types)}{\ttindex{IntType}}
123\end{cvardesc}
124
Andrew M. Kuchling4eb1a002004-08-07 20:19:24 +0000125\begin{cfuncdesc}{int}{PyInt_Check}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000126 Return true if \var{o} is of type \cdata{PyInt_Type} or a subtype
Fred Drake3adf79e2001-10-12 19:01:43 +0000127 of \cdata{PyInt_Type}.
128 \versionchanged[Allowed subtypes to be accepted]{2.2}
129\end{cfuncdesc}
130
Andrew M. Kuchling4eb1a002004-08-07 20:19:24 +0000131\begin{cfuncdesc}{int}{PyInt_CheckExact}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000132 Return true if \var{o} is of type \cdata{PyInt_Type}, but not a
Fred Drake3adf79e2001-10-12 19:01:43 +0000133 subtype of \cdata{PyInt_Type}.
134 \versionadded{2.2}
135\end{cfuncdesc}
136
Skip Montanaro1ff49a72003-02-03 05:13:24 +0000137\begin{cfuncdesc}{PyObject*}{PyInt_FromString}{char *str, char **pend,
138 int base}
139 Return a new \ctype{PyIntObject} or \ctype{PyLongObject} based on the
140 string value in \var{str}, which is interpreted according to the radix in
Tim Peters9ddf40b2004-06-20 22:41:32 +0000141 \var{base}. If \var{pend} is non-\NULL{}, \code{*\var{pend}} will point to
Skip Montanaro1ff49a72003-02-03 05:13:24 +0000142 the first character in \var{str} which follows the representation of the
143 number. If \var{base} is \code{0}, the radix will be determined based on
144 the leading characters of \var{str}: if \var{str} starts with \code{'0x'}
145 or \code{'0X'}, radix 16 will be used; if \var{str} starts with
146 \code{'0'}, radix 8 will be used; otherwise radix 10 will be used. If
147 \var{base} is not \code{0}, it must be between \code{2} and \code{36},
148 inclusive. Leading spaces are ignored. If there are no digits,
149 \exception{ValueError} will be raised. If the string represents a number
150 too large to be contained within the machine's \ctype{long int} type and
151 overflow warnings are being suppressed, a \ctype{PyLongObject} will be
152 returned. If overflow warnings are not being suppressed, \NULL{} will be
153 returned in this case.
154\end{cfuncdesc}
155
Fred Drake3adf79e2001-10-12 19:01:43 +0000156\begin{cfuncdesc}{PyObject*}{PyInt_FromLong}{long ival}
Georg Brandl99363b62005-09-03 07:27:26 +0000157 Create a new integer object with a value of \var{ival}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000158
159 The current implementation keeps an array of integer objects for all
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000160 integers between \code{-5} and \code{256}, when you create an int in
Fred Drake3adf79e2001-10-12 19:01:43 +0000161 that range you actually just get back a reference to the existing
162 object. So it should be possible to change the value of \code{1}. I
163 suspect the behaviour of Python in this case is undefined. :-)
164\end{cfuncdesc}
165
Martin v. Löwis3b197542006-03-01 05:47:11 +0000166\begin{cfuncdesc}{PyObject*}{PyInt_FromSsize_t}{Py_ssize_t ival}
167 Create a new integer object with a value of \var{ival}.
168 If the value exceeds \code{LONG_MAX}, a long integer object is
169 returned.
170
171 \versionadded{2.5}
172\end{cfuncdesc}
173
Fred Drake3adf79e2001-10-12 19:01:43 +0000174\begin{cfuncdesc}{long}{PyInt_AsLong}{PyObject *io}
175 Will first attempt to cast the object to a \ctype{PyIntObject}, if
Martin v. Löwis3b197542006-03-01 05:47:11 +0000176 it is not already one, and then return its value. If there is an
177 error, \code{-1} is returned, and the caller should check
178 \code{PyErr_Occurred()} to find out whether there was an error, or
179 whether the value just happened to be -1.
Fred Drake3adf79e2001-10-12 19:01:43 +0000180\end{cfuncdesc}
181
182\begin{cfuncdesc}{long}{PyInt_AS_LONG}{PyObject *io}
Georg Brandl99363b62005-09-03 07:27:26 +0000183 Return the value of the object \var{io}. No error checking is
Fred Drake3adf79e2001-10-12 19:01:43 +0000184 performed.
185\end{cfuncdesc}
186
Thomas Heller34d7f092003-04-23 19:51:05 +0000187\begin{cfuncdesc}{unsigned long}{PyInt_AsUnsignedLongMask}{PyObject *io}
188 Will first attempt to cast the object to a \ctype{PyIntObject} or
Fred Drakec22b2992003-04-23 20:38:41 +0000189 \ctype{PyLongObject}, if it is not already one, and then return its
Thomas Heller34d7f092003-04-23 19:51:05 +0000190 value as unsigned long. This function does not check for overflow.
191 \versionadded{2.3}
192\end{cfuncdesc}
193
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000194\begin{cfuncdesc}{unsigned PY_LONG_LONG}{PyInt_AsUnsignedLongLongMask}{PyObject *io}
Thomas Heller34d7f092003-04-23 19:51:05 +0000195 Will first attempt to cast the object to a \ctype{PyIntObject} or
Fred Drakec22b2992003-04-23 20:38:41 +0000196 \ctype{PyLongObject}, if it is not already one, and then return its
Thomas Heller34d7f092003-04-23 19:51:05 +0000197 value as unsigned long long, without checking for overflow.
198 \versionadded{2.3}
199\end{cfuncdesc}
200
Martin v. Löwis3b197542006-03-01 05:47:11 +0000201\begin{cfuncdesc}{Py_ssize_t}{PyInt_AsSsize_t}{PyObject *io}
202 Will first attempt to cast the object to a \ctype{PyIntObject} or
203 \ctype{PyLongObject}, if it is not already one, and then return its
204 value as \ctype{Py_ssize_t}.
205 \versionadded{2.5}
206\end{cfuncdesc}
207
Fred Drake3adf79e2001-10-12 19:01:43 +0000208\begin{cfuncdesc}{long}{PyInt_GetMax}{}
Georg Brandl99363b62005-09-03 07:27:26 +0000209 Return the system's idea of the largest integer it can handle
Fred Drake3adf79e2001-10-12 19:01:43 +0000210 (\constant{LONG_MAX}\ttindex{LONG_MAX}, as defined in the system
211 header files).
212\end{cfuncdesc}
213
Fred Drake2be406b2004-08-03 16:02:35 +0000214\subsection{Boolean Objects \label{boolObjects}}
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000215
216Booleans in Python are implemented as a subclass of integers. There
217are only two booleans, \constant{Py_False} and \constant{Py_True}. As
218such, the normal creation and deletion functions don't apply to
219booleans. The following macros are available, however.
220
Andrew M. Kuchling4eb1a002004-08-07 20:19:24 +0000221\begin{cfuncdesc}{int}{PyBool_Check}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000222 Return true if \var{o} is of type \cdata{PyBool_Type}.
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000223 \versionadded{2.3}
224\end{cfuncdesc}
225
Skip Montanaro6d3db702004-07-29 02:16:04 +0000226\begin{cvardesc}{PyObject*}{Py_False}
227 The Python \code{False} object. This object has no methods. It needs to
228 be treated just like any other object with respect to reference counts.
229\end{cvardesc}
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000230
Skip Montanaro6d3db702004-07-29 02:16:04 +0000231\begin{cvardesc}{PyObject*}{Py_True}
232 The Python \code{True} object. This object has no methods. It needs to
233 be treated just like any other object with respect to reference counts.
234\end{cvardesc}
235
236\begin{csimplemacrodesc}{Py_RETURN_FALSE}
237 Return \constant{Py_False} from a function, properly incrementing its
238 reference count.
239\versionadded{2.4}
240\end{csimplemacrodesc}
241
242\begin{csimplemacrodesc}{Py_RETURN_TRUE}
Andrew M. Kuchling4eb1a002004-08-07 20:19:24 +0000243 Return \constant{Py_True} from a function, properly incrementing its
244 reference count.
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000245\versionadded{2.4}
Skip Montanaro6d3db702004-07-29 02:16:04 +0000246\end{csimplemacrodesc}
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000247
Georg Brandl99363b62005-09-03 07:27:26 +0000248\begin{cfuncdesc}{PyObject*}{PyBool_FromLong}{long v}
Thomas Wouters477c8d52006-05-27 19:21:47 +0000249 Return a new reference to \constant{Py_True} or \constant{Py_False}
Georg Brandl99363b62005-09-03 07:27:26 +0000250 depending on the truth value of \var{v}.
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000251\versionadded{2.3}
252\end{cfuncdesc}
Fred Drake3adf79e2001-10-12 19:01:43 +0000253
254\subsection{Long Integer Objects \label{longObjects}}
255
256\obindex{long integer}
257\begin{ctypedesc}{PyLongObject}
258 This subtype of \ctype{PyObject} represents a Python long integer
259 object.
260\end{ctypedesc}
261
262\begin{cvardesc}{PyTypeObject}{PyLong_Type}
263 This instance of \ctype{PyTypeObject} represents the Python long
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000264 integer type. This is the same object as \code{long} and
265 \code{types.LongType}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000266 \withsubitem{(in modules types)}{\ttindex{LongType}}
267\end{cvardesc}
268
269\begin{cfuncdesc}{int}{PyLong_Check}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +0000270 Return true if its argument is a \ctype{PyLongObject} or a subtype
Fred Drake3adf79e2001-10-12 19:01:43 +0000271 of \ctype{PyLongObject}.
272 \versionchanged[Allowed subtypes to be accepted]{2.2}
273\end{cfuncdesc}
274
275\begin{cfuncdesc}{int}{PyLong_CheckExact}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +0000276 Return true if its argument is a \ctype{PyLongObject}, but not a
Fred Drake3adf79e2001-10-12 19:01:43 +0000277 subtype of \ctype{PyLongObject}.
278 \versionadded{2.2}
279\end{cfuncdesc}
280
281\begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
Georg Brandl99363b62005-09-03 07:27:26 +0000282 Return a new \ctype{PyLongObject} object from \var{v}, or \NULL{}
Fred Drake3adf79e2001-10-12 19:01:43 +0000283 on failure.
284\end{cfuncdesc}
285
286\begin{cfuncdesc}{PyObject*}{PyLong_FromUnsignedLong}{unsigned long v}
Georg Brandl99363b62005-09-03 07:27:26 +0000287 Return a new \ctype{PyLongObject} object from a C \ctype{unsigned
Fred Drake3adf79e2001-10-12 19:01:43 +0000288 long}, or \NULL{} on failure.
289\end{cfuncdesc}
290
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000291\begin{cfuncdesc}{PyObject*}{PyLong_FromLongLong}{PY_LONG_LONG v}
Georg Brandl99363b62005-09-03 07:27:26 +0000292 Return a new \ctype{PyLongObject} object from a C \ctype{long long},
Fred Drake3adf79e2001-10-12 19:01:43 +0000293 or \NULL{} on failure.
294\end{cfuncdesc}
295
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000296\begin{cfuncdesc}{PyObject*}{PyLong_FromUnsignedLongLong}{unsigned PY_LONG_LONG v}
Georg Brandl99363b62005-09-03 07:27:26 +0000297 Return a new \ctype{PyLongObject} object from a C \ctype{unsigned
Fred Drake3adf79e2001-10-12 19:01:43 +0000298 long long}, or \NULL{} on failure.
299\end{cfuncdesc}
300
301\begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
Georg Brandl99363b62005-09-03 07:27:26 +0000302 Return a new \ctype{PyLongObject} object from the integer part of
Fred Drake3adf79e2001-10-12 19:01:43 +0000303 \var{v}, or \NULL{} on failure.
304\end{cfuncdesc}
305
306\begin{cfuncdesc}{PyObject*}{PyLong_FromString}{char *str, char **pend,
307 int base}
308 Return a new \ctype{PyLongObject} based on the string value in
309 \var{str}, which is interpreted according to the radix in
Tim Peters9ddf40b2004-06-20 22:41:32 +0000310 \var{base}. If \var{pend} is non-\NULL{}, \code{*\var{pend}} will
Fred Drake3adf79e2001-10-12 19:01:43 +0000311 point to the first character in \var{str} which follows the
312 representation of the number. If \var{base} is \code{0}, the radix
Skip Montanaro1ff49a72003-02-03 05:13:24 +0000313 will be determined based on the leading characters of \var{str}: if
Fred Drake3adf79e2001-10-12 19:01:43 +0000314 \var{str} starts with \code{'0x'} or \code{'0X'}, radix 16 will be
315 used; if \var{str} starts with \code{'0'}, radix 8 will be used;
316 otherwise radix 10 will be used. If \var{base} is not \code{0}, it
317 must be between \code{2} and \code{36}, inclusive. Leading spaces
318 are ignored. If there are no digits, \exception{ValueError} will be
319 raised.
320\end{cfuncdesc}
321
322\begin{cfuncdesc}{PyObject*}{PyLong_FromUnicode}{Py_UNICODE *u,
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000323 Py_ssize_t length, int base}
Fred Drake3adf79e2001-10-12 19:01:43 +0000324 Convert a sequence of Unicode digits to a Python long integer
325 value. The first parameter, \var{u}, points to the first character
326 of the Unicode string, \var{length} gives the number of characters,
327 and \var{base} is the radix for the conversion. The radix must be
328 in the range [2, 36]; if it is out of range, \exception{ValueError}
329 will be raised.
330 \versionadded{1.6}
331\end{cfuncdesc}
332
333\begin{cfuncdesc}{PyObject*}{PyLong_FromVoidPtr}{void *p}
334 Create a Python integer or long integer from the pointer \var{p}.
335 The pointer value can be retrieved from the resulting value using
336 \cfunction{PyLong_AsVoidPtr()}.
337 \versionadded{1.5.2}
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000338 \versionchanged[If the integer is larger than LONG_MAX,
339 a positive long integer is returned]{2.5}
340 \end{cfuncdesc}
Fred Drake3adf79e2001-10-12 19:01:43 +0000341
342\begin{cfuncdesc}{long}{PyLong_AsLong}{PyObject *pylong}
Georg Brandl99363b62005-09-03 07:27:26 +0000343 Return a C \ctype{long} representation of the contents of
Fred Drake3adf79e2001-10-12 19:01:43 +0000344 \var{pylong}. If \var{pylong} is greater than
345 \constant{LONG_MAX}\ttindex{LONG_MAX}, an \exception{OverflowError}
346 is raised.
347 \withsubitem{(built-in exception)}{\ttindex{OverflowError}}
348\end{cfuncdesc}
349
350\begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLong}{PyObject *pylong}
Georg Brandl99363b62005-09-03 07:27:26 +0000351 Return a C \ctype{unsigned long} representation of the contents of
Fred Drake3adf79e2001-10-12 19:01:43 +0000352 \var{pylong}. If \var{pylong} is greater than
353 \constant{ULONG_MAX}\ttindex{ULONG_MAX}, an
354 \exception{OverflowError} is raised.
Tim Petersf582b822001-12-11 18:51:08 +0000355 \withsubitem{(built-in exception)}{\ttindex{OverflowError}}
Fred Drake3adf79e2001-10-12 19:01:43 +0000356\end{cfuncdesc}
357
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000358\begin{cfuncdesc}{PY_LONG_LONG}{PyLong_AsLongLong}{PyObject *pylong}
Fred Drake3adf79e2001-10-12 19:01:43 +0000359 Return a C \ctype{long long} from a Python long integer. If
360 \var{pylong} cannot be represented as a \ctype{long long}, an
361 \exception{OverflowError} will be raised.
362 \versionadded{2.2}
363\end{cfuncdesc}
364
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000365\begin{cfuncdesc}{unsigned PY_LONG_LONG}{PyLong_AsUnsignedLongLong}{PyObject
Fred Drake3adf79e2001-10-12 19:01:43 +0000366 *pylong}
367 Return a C \ctype{unsigned long long} from a Python long integer.
368 If \var{pylong} cannot be represented as an \ctype{unsigned long
369 long}, an \exception{OverflowError} will be raised if the value is
370 positive, or a \exception{TypeError} will be raised if the value is
371 negative.
372 \versionadded{2.2}
373\end{cfuncdesc}
374
Thomas Heller34d7f092003-04-23 19:51:05 +0000375\begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLongMask}{PyObject *io}
376 Return a C \ctype{unsigned long} from a Python long integer, without
377 checking for overflow.
378 \versionadded{2.3}
379\end{cfuncdesc}
380
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000381\begin{cfuncdesc}{unsigned PY_LONG_LONG}{PyLong_AsUnsignedLongLongMask}{PyObject *io}
Thomas Heller34d7f092003-04-23 19:51:05 +0000382 Return a C \ctype{unsigned long long} from a Python long integer, without
383 checking for overflow.
384 \versionadded{2.3}
385\end{cfuncdesc}
386
Fred Drake3adf79e2001-10-12 19:01:43 +0000387\begin{cfuncdesc}{double}{PyLong_AsDouble}{PyObject *pylong}
Georg Brandl99363b62005-09-03 07:27:26 +0000388 Return a C \ctype{double} representation of the contents of
Fred Drake3adf79e2001-10-12 19:01:43 +0000389 \var{pylong}. If \var{pylong} cannot be approximately represented
390 as a \ctype{double}, an \exception{OverflowError} exception is
391 raised and \code{-1.0} will be returned.
392\end{cfuncdesc}
393
394\begin{cfuncdesc}{void*}{PyLong_AsVoidPtr}{PyObject *pylong}
395 Convert a Python integer or long integer \var{pylong} to a C
396 \ctype{void} pointer. If \var{pylong} cannot be converted, an
397 \exception{OverflowError} will be raised. This is only assured to
398 produce a usable \ctype{void} pointer for values created with
399 \cfunction{PyLong_FromVoidPtr()}.
400 \versionadded{1.5.2}
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000401 \versionchanged[For values outside 0..LONG_MAX, both signed and
402 unsigned integers are acccepted]{2.5}
Fred Drake3adf79e2001-10-12 19:01:43 +0000403\end{cfuncdesc}
404
405
406\subsection{Floating Point Objects \label{floatObjects}}
407
408\obindex{floating point}
409\begin{ctypedesc}{PyFloatObject}
410 This subtype of \ctype{PyObject} represents a Python floating point
411 object.
412\end{ctypedesc}
413
414\begin{cvardesc}{PyTypeObject}{PyFloat_Type}
415 This instance of \ctype{PyTypeObject} represents the Python floating
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000416 point type. This is the same object as \code{float} and
417 \code{types.FloatType}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000418 \withsubitem{(in modules types)}{\ttindex{FloatType}}
419\end{cvardesc}
420
421\begin{cfuncdesc}{int}{PyFloat_Check}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +0000422 Return true if its argument is a \ctype{PyFloatObject} or a subtype
Fred Drake3adf79e2001-10-12 19:01:43 +0000423 of \ctype{PyFloatObject}.
424 \versionchanged[Allowed subtypes to be accepted]{2.2}
425\end{cfuncdesc}
426
427\begin{cfuncdesc}{int}{PyFloat_CheckExact}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +0000428 Return true if its argument is a \ctype{PyFloatObject}, but not a
Fred Drake3adf79e2001-10-12 19:01:43 +0000429 subtype of \ctype{PyFloatObject}.
430 \versionadded{2.2}
431\end{cfuncdesc}
432
Georg Brandl428f0642007-03-18 18:35:15 +0000433\begin{cfuncdesc}{PyObject*}{PyFloat_FromString}{PyObject *str}
Georg Brandl99363b62005-09-03 07:27:26 +0000434 Create a \ctype{PyFloatObject} object based on the string value in
Georg Brandl428f0642007-03-18 18:35:15 +0000435 \var{str}, or \NULL{} on failure.
Skip Montanaroae31e9b2003-02-03 03:56:36 +0000436\end{cfuncdesc}
437
Fred Drake3adf79e2001-10-12 19:01:43 +0000438\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
Georg Brandl99363b62005-09-03 07:27:26 +0000439 Create a \ctype{PyFloatObject} object from \var{v}, or \NULL{} on
Fred Drake3adf79e2001-10-12 19:01:43 +0000440 failure.
441\end{cfuncdesc}
442
443\begin{cfuncdesc}{double}{PyFloat_AsDouble}{PyObject *pyfloat}
Georg Brandl99363b62005-09-03 07:27:26 +0000444 Return a C \ctype{double} representation of the contents of
Guido van Rossumd8faa362007-04-27 19:54:29 +0000445 \var{pyfloat}. If \var{pyfloat} is not a Python floating point
446 object but has a \method{__float__} method, this method will first
447 be called to convert \var{pyfloat} into a float.
Fred Drake3adf79e2001-10-12 19:01:43 +0000448\end{cfuncdesc}
449
450\begin{cfuncdesc}{double}{PyFloat_AS_DOUBLE}{PyObject *pyfloat}
Georg Brandl99363b62005-09-03 07:27:26 +0000451 Return a C \ctype{double} representation of the contents of
Fred Drake3adf79e2001-10-12 19:01:43 +0000452 \var{pyfloat}, but without error checking.
453\end{cfuncdesc}
454
455
456\subsection{Complex Number Objects \label{complexObjects}}
457
458\obindex{complex number}
459Python's complex number objects are implemented as two distinct types
460when viewed from the C API: one is the Python object exposed to
461Python programs, and the other is a C structure which represents the
462actual complex number value. The API provides functions for working
463with both.
464
465\subsubsection{Complex Numbers as C Structures}
466
467Note that the functions which accept these structures as parameters
468and return them as results do so \emph{by value} rather than
469dereferencing them through pointers. This is consistent throughout
470the API.
471
472\begin{ctypedesc}{Py_complex}
473 The C structure which corresponds to the value portion of a Python
474 complex number object. Most of the functions for dealing with
475 complex number objects use structures of this type as input or
476 output values, as appropriate. It is defined as:
477
478\begin{verbatim}
479typedef struct {
480 double real;
481 double imag;
482} Py_complex;
483\end{verbatim}
484\end{ctypedesc}
485
486\begin{cfuncdesc}{Py_complex}{_Py_c_sum}{Py_complex left, Py_complex right}
487 Return the sum of two complex numbers, using the C
488 \ctype{Py_complex} representation.
489\end{cfuncdesc}
490
491\begin{cfuncdesc}{Py_complex}{_Py_c_diff}{Py_complex left, Py_complex right}
492 Return the difference between two complex numbers, using the C
493 \ctype{Py_complex} representation.
494\end{cfuncdesc}
495
496\begin{cfuncdesc}{Py_complex}{_Py_c_neg}{Py_complex complex}
497 Return the negation of the complex number \var{complex}, using the C
498 \ctype{Py_complex} representation.
499\end{cfuncdesc}
500
501\begin{cfuncdesc}{Py_complex}{_Py_c_prod}{Py_complex left, Py_complex right}
502 Return the product of two complex numbers, using the C
503 \ctype{Py_complex} representation.
504\end{cfuncdesc}
505
506\begin{cfuncdesc}{Py_complex}{_Py_c_quot}{Py_complex dividend,
507 Py_complex divisor}
508 Return the quotient of two complex numbers, using the C
509 \ctype{Py_complex} representation.
510\end{cfuncdesc}
511
512\begin{cfuncdesc}{Py_complex}{_Py_c_pow}{Py_complex num, Py_complex exp}
513 Return the exponentiation of \var{num} by \var{exp}, using the C
514 \ctype{Py_complex} representation.
515\end{cfuncdesc}
516
517
518\subsubsection{Complex Numbers as Python Objects}
519
520\begin{ctypedesc}{PyComplexObject}
521 This subtype of \ctype{PyObject} represents a Python complex number
522 object.
523\end{ctypedesc}
524
525\begin{cvardesc}{PyTypeObject}{PyComplex_Type}
526 This instance of \ctype{PyTypeObject} represents the Python complex
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000527 number type. It is the same object as \code{complex} and
528 \code{types.ComplexType}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000529\end{cvardesc}
530
531\begin{cfuncdesc}{int}{PyComplex_Check}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +0000532 Return true if its argument is a \ctype{PyComplexObject} or a
Fred Drake3adf79e2001-10-12 19:01:43 +0000533 subtype of \ctype{PyComplexObject}.
534 \versionchanged[Allowed subtypes to be accepted]{2.2}
535\end{cfuncdesc}
536
537\begin{cfuncdesc}{int}{PyComplex_CheckExact}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +0000538 Return true if its argument is a \ctype{PyComplexObject}, but not a
Fred Drake3adf79e2001-10-12 19:01:43 +0000539 subtype of \ctype{PyComplexObject}.
540 \versionadded{2.2}
541\end{cfuncdesc}
542
543\begin{cfuncdesc}{PyObject*}{PyComplex_FromCComplex}{Py_complex v}
544 Create a new Python complex number object from a C
545 \ctype{Py_complex} value.
546\end{cfuncdesc}
547
548\begin{cfuncdesc}{PyObject*}{PyComplex_FromDoubles}{double real, double imag}
Georg Brandl99363b62005-09-03 07:27:26 +0000549 Return a new \ctype{PyComplexObject} object from \var{real} and
Fred Drake3adf79e2001-10-12 19:01:43 +0000550 \var{imag}.
551\end{cfuncdesc}
552
553\begin{cfuncdesc}{double}{PyComplex_RealAsDouble}{PyObject *op}
Georg Brandl99363b62005-09-03 07:27:26 +0000554 Return the real part of \var{op} as a C \ctype{double}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000555\end{cfuncdesc}
556
557\begin{cfuncdesc}{double}{PyComplex_ImagAsDouble}{PyObject *op}
Georg Brandl99363b62005-09-03 07:27:26 +0000558 Return the imaginary part of \var{op} as a C \ctype{double}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000559\end{cfuncdesc}
560
561\begin{cfuncdesc}{Py_complex}{PyComplex_AsCComplex}{PyObject *op}
Guido van Rossumd8faa362007-04-27 19:54:29 +0000562 Return the \ctype{Py_complex} value of the complex number \var{op}.
563 \versionchanged[If \var{op} is not a Python complex number object
564 but has a \method{__complex__} method, this method
565 will first be called to convert \var{op} to a Python
566 complex number object]{2.6}
Fred Drake3adf79e2001-10-12 19:01:43 +0000567\end{cfuncdesc}
568
569
570
571\section{Sequence Objects \label{sequenceObjects}}
572
573\obindex{sequence}
Tim Petersf582b822001-12-11 18:51:08 +0000574Generic operations on sequence objects were discussed in the previous
575chapter; this section deals with the specific kinds of sequence
Fred Drake3adf79e2001-10-12 19:01:43 +0000576objects that are intrinsic to the Python language.
577
578
579\subsection{String Objects \label{stringObjects}}
580
581These functions raise \exception{TypeError} when expecting a string
582parameter and are called with a non-string parameter.
583
584\obindex{string}
585\begin{ctypedesc}{PyStringObject}
586 This subtype of \ctype{PyObject} represents a Python string object.
587\end{ctypedesc}
588
589\begin{cvardesc}{PyTypeObject}{PyString_Type}
590 This instance of \ctype{PyTypeObject} represents the Python string
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000591 type; it is the same object as \code{str} and \code{types.StringType}
592 in the Python layer.
Fred Drake3adf79e2001-10-12 19:01:43 +0000593 \withsubitem{(in module types)}{\ttindex{StringType}}.
594\end{cvardesc}
595
596\begin{cfuncdesc}{int}{PyString_Check}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000597 Return true if the object \var{o} is a string object or an instance
Fred Drake3adf79e2001-10-12 19:01:43 +0000598 of a subtype of the string type.
599 \versionchanged[Allowed subtypes to be accepted]{2.2}
600\end{cfuncdesc}
601
602\begin{cfuncdesc}{int}{PyString_CheckExact}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000603 Return true if the object \var{o} is a string object, but not an
Fred Drake3adf79e2001-10-12 19:01:43 +0000604 instance of a subtype of the string type.
605 \versionadded{2.2}
606\end{cfuncdesc}
607
608\begin{cfuncdesc}{PyObject*}{PyString_FromString}{const char *v}
Thomas Wouters89f507f2006-12-13 04:49:30 +0000609 Return a new string object with a copy of the string \var{v} as value
610 on success, and \NULL{} on failure. The parameter \var{v} must not be
611 \NULL{}; it will not be checked.
Fred Drake3adf79e2001-10-12 19:01:43 +0000612\end{cfuncdesc}
613
614\begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{const char *v,
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000615 Py_ssize_t len}
Thomas Wouters89f507f2006-12-13 04:49:30 +0000616 Return a new string object with a copy of the string \var{v} as value
617 and length \var{len} on success, and \NULL{} on failure. If \var{v} is
Tim Peters9ddf40b2004-06-20 22:41:32 +0000618 \NULL{}, the contents of the string are uninitialized.
Fred Drake3adf79e2001-10-12 19:01:43 +0000619\end{cfuncdesc}
620
621\begin{cfuncdesc}{PyObject*}{PyString_FromFormat}{const char *format, ...}
Georg Brandl99363b62005-09-03 07:27:26 +0000622 Take a C \cfunction{printf()}-style \var{format} string and a
623 variable number of arguments, calculate the size of the resulting
624 Python string and return a string with the values formatted into
Fred Drake3adf79e2001-10-12 19:01:43 +0000625 it. The variable arguments must be C types and must correspond
626 exactly to the format characters in the \var{format} string. The
627 following format characters are allowed:
628
Thomas Wouters477c8d52006-05-27 19:21:47 +0000629 % This should be exactly the same as the table in PyErr_Format.
630 % One should just refer to the other.
631
632 % The descriptions for %zd and %zu are wrong, but the truth is complicated
633 % because not all compilers support the %z width modifier -- we fake it
634 % when necessary via interpolating PY_FORMAT_SIZE_T.
635
636 % %u, %lu, %zu should have "new in Python 2.5" blurbs.
637
Fred Drake3adf79e2001-10-12 19:01:43 +0000638 \begin{tableiii}{l|l|l}{member}{Format Characters}{Type}{Comment}
639 \lineiii{\%\%}{\emph{n/a}}{The literal \% character.}
640 \lineiii{\%c}{int}{A single character, represented as an C int.}
641 \lineiii{\%d}{int}{Exactly equivalent to \code{printf("\%d")}.}
Thomas Wouters477c8d52006-05-27 19:21:47 +0000642 \lineiii{\%u}{unsigned int}{Exactly equivalent to \code{printf("\%u")}.}
Fred Drake3adf79e2001-10-12 19:01:43 +0000643 \lineiii{\%ld}{long}{Exactly equivalent to \code{printf("\%ld")}.}
Thomas Wouters477c8d52006-05-27 19:21:47 +0000644 \lineiii{\%lu}{unsigned long}{Exactly equivalent to \code{printf("\%lu")}.}
645 \lineiii{\%zd}{Py_ssize_t}{Exactly equivalent to \code{printf("\%zd")}.}
646 \lineiii{\%zu}{size_t}{Exactly equivalent to \code{printf("\%zu")}.}
Fred Drake3adf79e2001-10-12 19:01:43 +0000647 \lineiii{\%i}{int}{Exactly equivalent to \code{printf("\%i")}.}
648 \lineiii{\%x}{int}{Exactly equivalent to \code{printf("\%x")}.}
649 \lineiii{\%s}{char*}{A null-terminated C character array.}
650 \lineiii{\%p}{void*}{The hex representation of a C pointer.
651 Mostly equivalent to \code{printf("\%p")} except that it is
652 guaranteed to start with the literal \code{0x} regardless of
653 what the platform's \code{printf} yields.}
654 \end{tableiii}
Thomas Wouters477c8d52006-05-27 19:21:47 +0000655
656 An unrecognized format character causes all the rest of the format
657 string to be copied as-is to the result string, and any extra
658 arguments discarded.
Fred Drake3adf79e2001-10-12 19:01:43 +0000659\end{cfuncdesc}
660
661\begin{cfuncdesc}{PyObject*}{PyString_FromFormatV}{const char *format,
662 va_list vargs}
663 Identical to \function{PyString_FromFormat()} except that it takes
664 exactly two arguments.
665\end{cfuncdesc}
666
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000667\begin{cfuncdesc}{Py_ssize_t}{PyString_Size}{PyObject *string}
Georg Brandl99363b62005-09-03 07:27:26 +0000668 Return the length of the string in string object \var{string}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000669\end{cfuncdesc}
670
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000671\begin{cfuncdesc}{Py_ssize_t}{PyString_GET_SIZE}{PyObject *string}
Fred Drake3adf79e2001-10-12 19:01:43 +0000672 Macro form of \cfunction{PyString_Size()} but without error
673 checking.
674\end{cfuncdesc}
675
676\begin{cfuncdesc}{char*}{PyString_AsString}{PyObject *string}
Georg Brandl99363b62005-09-03 07:27:26 +0000677 Return a NUL-terminated representation of the contents of
Fred Drake3adf79e2001-10-12 19:01:43 +0000678 \var{string}. The pointer refers to the internal buffer of
679 \var{string}, not a copy. The data must not be modified in any way,
680 unless the string was just created using
681 \code{PyString_FromStringAndSize(NULL, \var{size})}.
Fred Drake4b247262002-10-22 20:20:20 +0000682 It must not be deallocated. If \var{string} is a Unicode object,
683 this function computes the default encoding of \var{string} and
684 operates on that. If \var{string} is not a string object at all,
685 \cfunction{PyString_AsString()} returns \NULL{} and raises
686 \exception{TypeError}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000687\end{cfuncdesc}
688
689\begin{cfuncdesc}{char*}{PyString_AS_STRING}{PyObject *string}
690 Macro form of \cfunction{PyString_AsString()} but without error
Fred Drake4b247262002-10-22 20:20:20 +0000691 checking. Only string objects are supported; no Unicode objects
692 should be passed.
Fred Drake3adf79e2001-10-12 19:01:43 +0000693\end{cfuncdesc}
694
695\begin{cfuncdesc}{int}{PyString_AsStringAndSize}{PyObject *obj,
696 char **buffer,
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000697 Py_ssize_t *length}
Georg Brandl99363b62005-09-03 07:27:26 +0000698 Return a NUL-terminated representation of the contents of the
Fred Drake3adf79e2001-10-12 19:01:43 +0000699 object \var{obj} through the output variables \var{buffer} and
700 \var{length}.
701
702 The function accepts both string and Unicode objects as input. For
703 Unicode objects it returns the default encoded version of the
Tim Peters9ddf40b2004-06-20 22:41:32 +0000704 object. If \var{length} is \NULL{}, the resulting buffer may not
Fred Drake4b247262002-10-22 20:20:20 +0000705 contain NUL characters; if it does, the function returns \code{-1}
706 and a \exception{TypeError} is raised.
Fred Drake3adf79e2001-10-12 19:01:43 +0000707
708 The buffer refers to an internal string buffer of \var{obj}, not a
709 copy. The data must not be modified in any way, unless the string
710 was just created using \code{PyString_FromStringAndSize(NULL,
Fred Drake4b247262002-10-22 20:20:20 +0000711 \var{size})}. It must not be deallocated. If \var{string} is a
712 Unicode object, this function computes the default encoding of
713 \var{string} and operates on that. If \var{string} is not a string
Thomas Wouters477c8d52006-05-27 19:21:47 +0000714 object at all, \cfunction{PyString_AsStringAndSize()} returns
Georg Brandle53475d2005-09-28 12:53:12 +0000715 \code{-1} and raises \exception{TypeError}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000716\end{cfuncdesc}
717
718\begin{cfuncdesc}{void}{PyString_Concat}{PyObject **string,
719 PyObject *newpart}
Georg Brandl99363b62005-09-03 07:27:26 +0000720 Create a new string object in \var{*string} containing the contents
Fred Drake3adf79e2001-10-12 19:01:43 +0000721 of \var{newpart} appended to \var{string}; the caller will own the
722 new reference. The reference to the old value of \var{string} will
723 be stolen. If the new string cannot be created, the old reference
724 to \var{string} will still be discarded and the value of
Tim Peters9ddf40b2004-06-20 22:41:32 +0000725 \var{*string} will be set to \NULL{}; the appropriate exception will
Fred Drake3adf79e2001-10-12 19:01:43 +0000726 be set.
727\end{cfuncdesc}
728
729\begin{cfuncdesc}{void}{PyString_ConcatAndDel}{PyObject **string,
730 PyObject *newpart}
Georg Brandl99363b62005-09-03 07:27:26 +0000731 Create a new string object in \var{*string} containing the contents
Fred Drake3adf79e2001-10-12 19:01:43 +0000732 of \var{newpart} appended to \var{string}. This version decrements
733 the reference count of \var{newpart}.
734\end{cfuncdesc}
735
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000736\begin{cfuncdesc}{int}{_PyString_Resize}{PyObject **string, Py_ssize_t newsize}
Fred Drake3adf79e2001-10-12 19:01:43 +0000737 A way to resize a string object even though it is ``immutable''.
738 Only use this to build up a brand new string object; don't use this
Tim Peters5de98422002-04-27 18:44:32 +0000739 if the string may already be known in other parts of the code. It
740 is an error to call this function if the refcount on the input string
741 object is not one.
742 Pass the address of an existing string object as an lvalue (it may
743 be written into), and the new size desired. On success, \var{*string}
Fred Drake432425e2002-04-29 15:17:16 +0000744 holds the resized string object and \code{0} is returned; the address in
Tim Peters5de98422002-04-27 18:44:32 +0000745 \var{*string} may differ from its input value. If the
746 reallocation fails, the original string object at \var{*string} is
747 deallocated, \var{*string} is set to \NULL{}, a memory exception is set,
Fred Drake432425e2002-04-29 15:17:16 +0000748 and \code{-1} is returned.
Fred Drake3adf79e2001-10-12 19:01:43 +0000749\end{cfuncdesc}
750
751\begin{cfuncdesc}{PyObject*}{PyString_Format}{PyObject *format,
752 PyObject *args}
Georg Brandl99363b62005-09-03 07:27:26 +0000753 Return a new string object from \var{format} and \var{args}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000754 Analogous to \code{\var{format} \%\ \var{args}}. The \var{args}
755 argument must be a tuple.
756\end{cfuncdesc}
757
758\begin{cfuncdesc}{void}{PyString_InternInPlace}{PyObject **string}
759 Intern the argument \var{*string} in place. The argument must be
760 the address of a pointer variable pointing to a Python string
761 object. If there is an existing interned string that is the same as
762 \var{*string}, it sets \var{*string} to it (decrementing the
763 reference count of the old string object and incrementing the
764 reference count of the interned string object), otherwise it leaves
765 \var{*string} alone and interns it (incrementing its reference
766 count). (Clarification: even though there is a lot of talk about
767 reference counts, think of this function as reference-count-neutral;
768 you own the object after the call if and only if you owned it before
769 the call.)
770\end{cfuncdesc}
771
772\begin{cfuncdesc}{PyObject*}{PyString_InternFromString}{const char *v}
773 A combination of \cfunction{PyString_FromString()} and
774 \cfunction{PyString_InternInPlace()}, returning either a new string
775 object that has been interned, or a new (``owned'') reference to an
776 earlier interned string object with the same value.
777\end{cfuncdesc}
778
779\begin{cfuncdesc}{PyObject*}{PyString_Decode}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000780 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +0000781 const char *encoding,
782 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +0000783 Create an object by decoding \var{size} bytes of the encoded
Fred Drake3adf79e2001-10-12 19:01:43 +0000784 buffer \var{s} using the codec registered for
785 \var{encoding}. \var{encoding} and \var{errors} have the same
786 meaning as the parameters of the same name in the
787 \function{unicode()} built-in function. The codec to be used is
Georg Brandl99363b62005-09-03 07:27:26 +0000788 looked up using the Python codec registry. Return \NULL{} if
Fred Drake3adf79e2001-10-12 19:01:43 +0000789 an exception was raised by the codec.
790\end{cfuncdesc}
791
792\begin{cfuncdesc}{PyObject*}{PyString_AsDecodedObject}{PyObject *str,
793 const char *encoding,
794 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +0000795 Decode a string object by passing it to the codec registered for
796 \var{encoding} and return the result as Python
Fred Drake3adf79e2001-10-12 19:01:43 +0000797 object. \var{encoding} and \var{errors} have the same meaning as the
798 parameters of the same name in the string \method{encode()} method.
799 The codec to be used is looked up using the Python codec registry.
Georg Brandl99363b62005-09-03 07:27:26 +0000800 Return \NULL{} if an exception was raised by the codec.
Fred Drake3adf79e2001-10-12 19:01:43 +0000801\end{cfuncdesc}
802
803\begin{cfuncdesc}{PyObject*}{PyString_Encode}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000804 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +0000805 const char *encoding,
806 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +0000807 Encode the \ctype{char} buffer of the given size by passing it to
808 the codec registered for \var{encoding} and return a Python object.
Fred Drake3adf79e2001-10-12 19:01:43 +0000809 \var{encoding} and \var{errors} have the same meaning as the
810 parameters of the same name in the string \method{encode()} method.
811 The codec to be used is looked up using the Python codec
Georg Brandl99363b62005-09-03 07:27:26 +0000812 registry. Return \NULL{} if an exception was raised by the
Fred Drake3adf79e2001-10-12 19:01:43 +0000813 codec.
814\end{cfuncdesc}
815
816\begin{cfuncdesc}{PyObject*}{PyString_AsEncodedObject}{PyObject *str,
817 const char *encoding,
818 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +0000819 Encode a string object using the codec registered for
820 \var{encoding} and return the result as Python object.
Fred Drake3adf79e2001-10-12 19:01:43 +0000821 \var{encoding} and \var{errors} have the same meaning as the
822 parameters of the same name in the string \method{encode()} method.
823 The codec to be used is looked up using the Python codec registry.
Georg Brandl99363b62005-09-03 07:27:26 +0000824 Return \NULL{} if an exception was raised by the codec.
Fred Drake3adf79e2001-10-12 19:01:43 +0000825\end{cfuncdesc}
826
827
828\subsection{Unicode Objects \label{unicodeObjects}}
829\sectionauthor{Marc-Andre Lemburg}{mal@lemburg.com}
830
831%--- Unicode Type -------------------------------------------------------
832
833These are the basic Unicode object types used for the Unicode
834implementation in Python:
835
836\begin{ctypedesc}{Py_UNICODE}
Marc-André Lemburgdf4f6e92005-10-10 19:08:41 +0000837 This type represents the storage type which is used by Python
838 internally as basis for holding Unicode ordinals. Python's default
839 builds use a 16-bit type for \ctype{Py_UNICODE} and store Unicode
840 values internally as UCS2. It is also possible to build a UCS4
841 version of Python (most recent Linux distributions come with UCS4
842 builds of Python). These builds then use a 32-bit type for
843 \ctype{Py_UNICODE} and store Unicode data internally as UCS4. On
844 platforms where \ctype{wchar_t} is available and compatible with the
845 chosen Python Unicode build variant, \ctype{Py_UNICODE} is a typedef
846 alias for \ctype{wchar_t} to enhance native platform compatibility.
847 On all other platforms, \ctype{Py_UNICODE} is a typedef alias for
848 either \ctype{unsigned short} (UCS2) or \ctype{unsigned long}
849 (UCS4).
Fred Drake3adf79e2001-10-12 19:01:43 +0000850\end{ctypedesc}
851
Marc-André Lemburgdf4f6e92005-10-10 19:08:41 +0000852Note that UCS2 and UCS4 Python builds are not binary compatible.
853Please keep this in mind when writing extensions or interfaces.
854
Fred Drake3adf79e2001-10-12 19:01:43 +0000855\begin{ctypedesc}{PyUnicodeObject}
856 This subtype of \ctype{PyObject} represents a Python Unicode object.
857\end{ctypedesc}
858
859\begin{cvardesc}{PyTypeObject}{PyUnicode_Type}
860 This instance of \ctype{PyTypeObject} represents the Python Unicode
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000861 type. It is exposed to Python code as \code{unicode} and
862 \code{types.UnicodeType}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000863\end{cvardesc}
864
865The following APIs are really C macros and can be used to do fast
866checks and to access internal read-only data of Unicode objects:
867
868\begin{cfuncdesc}{int}{PyUnicode_Check}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000869 Return true if the object \var{o} is a Unicode object or an
Fred Drake3adf79e2001-10-12 19:01:43 +0000870 instance of a Unicode subtype.
871 \versionchanged[Allowed subtypes to be accepted]{2.2}
872\end{cfuncdesc}
873
874\begin{cfuncdesc}{int}{PyUnicode_CheckExact}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000875 Return true if the object \var{o} is a Unicode object, but not an
Fred Drake3adf79e2001-10-12 19:01:43 +0000876 instance of a subtype.
877 \versionadded{2.2}
878\end{cfuncdesc}
879
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000880\begin{cfuncdesc}{Py_ssize_t}{PyUnicode_GET_SIZE}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000881 Return the size of the object. \var{o} has to be a
Fred Drake3adf79e2001-10-12 19:01:43 +0000882 \ctype{PyUnicodeObject} (not checked).
883\end{cfuncdesc}
884
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000885\begin{cfuncdesc}{Py_ssize_t}{PyUnicode_GET_DATA_SIZE}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000886 Return the size of the object's internal buffer in bytes. \var{o}
Fred Drake3adf79e2001-10-12 19:01:43 +0000887 has to be a \ctype{PyUnicodeObject} (not checked).
888\end{cfuncdesc}
889
890\begin{cfuncdesc}{Py_UNICODE*}{PyUnicode_AS_UNICODE}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000891 Return a pointer to the internal \ctype{Py_UNICODE} buffer of the
Fred Drake3adf79e2001-10-12 19:01:43 +0000892 object. \var{o} has to be a \ctype{PyUnicodeObject} (not checked).
893\end{cfuncdesc}
894
895\begin{cfuncdesc}{const char*}{PyUnicode_AS_DATA}{PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +0000896 Return a pointer to the internal buffer of the object.
Fred Drake3adf79e2001-10-12 19:01:43 +0000897 \var{o} has to be a \ctype{PyUnicodeObject} (not checked).
898\end{cfuncdesc}
899
900% --- Unicode character properties ---------------------------------------
901
902Unicode provides many different character properties. The most often
903needed ones are available through these macros which are mapped to C
904functions depending on the Python configuration.
905
906\begin{cfuncdesc}{int}{Py_UNICODE_ISSPACE}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000907 Return 1 or 0 depending on whether \var{ch} is a whitespace
Fred Drake3adf79e2001-10-12 19:01:43 +0000908 character.
909\end{cfuncdesc}
910
911\begin{cfuncdesc}{int}{Py_UNICODE_ISLOWER}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000912 Return 1 or 0 depending on whether \var{ch} is a lowercase character.
Fred Drake3adf79e2001-10-12 19:01:43 +0000913\end{cfuncdesc}
914
915\begin{cfuncdesc}{int}{Py_UNICODE_ISUPPER}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000916 Return 1 or 0 depending on whether \var{ch} is an uppercase
Fred Drake3adf79e2001-10-12 19:01:43 +0000917 character.
918\end{cfuncdesc}
919
920\begin{cfuncdesc}{int}{Py_UNICODE_ISTITLE}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000921 Return 1 or 0 depending on whether \var{ch} is a titlecase character.
Fred Drake3adf79e2001-10-12 19:01:43 +0000922\end{cfuncdesc}
923
924\begin{cfuncdesc}{int}{Py_UNICODE_ISLINEBREAK}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000925 Return 1 or 0 depending on whether \var{ch} is a linebreak character.
Fred Drake3adf79e2001-10-12 19:01:43 +0000926\end{cfuncdesc}
927
928\begin{cfuncdesc}{int}{Py_UNICODE_ISDECIMAL}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000929 Return 1 or 0 depending on whether \var{ch} is a decimal character.
Fred Drake3adf79e2001-10-12 19:01:43 +0000930\end{cfuncdesc}
931
932\begin{cfuncdesc}{int}{Py_UNICODE_ISDIGIT}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000933 Return 1 or 0 depending on whether \var{ch} is a digit character.
Fred Drake3adf79e2001-10-12 19:01:43 +0000934\end{cfuncdesc}
935
936\begin{cfuncdesc}{int}{Py_UNICODE_ISNUMERIC}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000937 Return 1 or 0 depending on whether \var{ch} is a numeric character.
Fred Drake3adf79e2001-10-12 19:01:43 +0000938\end{cfuncdesc}
939
940\begin{cfuncdesc}{int}{Py_UNICODE_ISALPHA}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000941 Return 1 or 0 depending on whether \var{ch} is an alphabetic
Fred Drake3adf79e2001-10-12 19:01:43 +0000942 character.
943\end{cfuncdesc}
944
945\begin{cfuncdesc}{int}{Py_UNICODE_ISALNUM}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000946 Return 1 or 0 depending on whether \var{ch} is an alphanumeric
Fred Drake3adf79e2001-10-12 19:01:43 +0000947 character.
948\end{cfuncdesc}
949
950These APIs can be used for fast direct character conversions:
951
952\begin{cfuncdesc}{Py_UNICODE}{Py_UNICODE_TOLOWER}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000953 Return the character \var{ch} converted to lower case.
Fred Drake3adf79e2001-10-12 19:01:43 +0000954\end{cfuncdesc}
955
956\begin{cfuncdesc}{Py_UNICODE}{Py_UNICODE_TOUPPER}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000957 Return the character \var{ch} converted to upper case.
Fred Drake3adf79e2001-10-12 19:01:43 +0000958\end{cfuncdesc}
959
960\begin{cfuncdesc}{Py_UNICODE}{Py_UNICODE_TOTITLE}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000961 Return the character \var{ch} converted to title case.
Fred Drake3adf79e2001-10-12 19:01:43 +0000962\end{cfuncdesc}
963
964\begin{cfuncdesc}{int}{Py_UNICODE_TODECIMAL}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000965 Return the character \var{ch} converted to a decimal positive
966 integer. Return \code{-1} if this is not possible. This macro
967 does not raise exceptions.
Fred Drake3adf79e2001-10-12 19:01:43 +0000968\end{cfuncdesc}
969
970\begin{cfuncdesc}{int}{Py_UNICODE_TODIGIT}{Py_UNICODE ch}
Georg Brandl99363b62005-09-03 07:27:26 +0000971 Return the character \var{ch} converted to a single digit integer.
972 Return \code{-1} if this is not possible. This macro does not raise
Fred Drake3adf79e2001-10-12 19:01:43 +0000973 exceptions.
974\end{cfuncdesc}
975
976\begin{cfuncdesc}{double}{Py_UNICODE_TONUMERIC}{Py_UNICODE ch}
Thomas Wouters477c8d52006-05-27 19:21:47 +0000977 Return the character \var{ch} converted to a double.
Georg Brandl99363b62005-09-03 07:27:26 +0000978 Return \code{-1.0} if this is not possible. This macro does not raise
Fred Drake3adf79e2001-10-12 19:01:43 +0000979 exceptions.
980\end{cfuncdesc}
981
982% --- Plain Py_UNICODE ---------------------------------------------------
983
984To create Unicode objects and access their basic sequence properties,
985use these APIs:
986
987\begin{cfuncdesc}{PyObject*}{PyUnicode_FromUnicode}{const Py_UNICODE *u,
Martin v. Löwis29fafd82006-03-01 05:16:03 +0000988 Py_ssize_t size}
Fred Drake3adf79e2001-10-12 19:01:43 +0000989 Create a Unicode Object from the Py_UNICODE buffer \var{u} of the
990 given size. \var{u} may be \NULL{} which causes the contents to be
991 undefined. It is the user's responsibility to fill in the needed
992 data. The buffer is copied into the new object. If the buffer is
Tim Peters9ddf40b2004-06-20 22:41:32 +0000993 not \NULL{}, the return value might be a shared object. Therefore,
Fred Drake3adf79e2001-10-12 19:01:43 +0000994 modification of the resulting Unicode object is only allowed when
Tim Peters9ddf40b2004-06-20 22:41:32 +0000995 \var{u} is \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000996\end{cfuncdesc}
997
Walter Dörwaldacaa5a12007-05-05 12:00:46 +0000998\begin{cfuncdesc}{PyObject*}{PyUnicode_FromString}{const char *u}
Walter Dörwald1d0476b2007-05-24 19:10:53 +0000999 Create a Unicode Object from the char buffer \var{u}.
Walter Dörwaldacaa5a12007-05-05 12:00:46 +00001000 \var{u} must be 0-terminated, the bytes will be interpreted as
1001 being latin-1 encoded. \var{u} may also be \NULL{} which causes the
1002 contents to be undefined. It is the user's responsibility to fill
1003 in the needed data. The buffer is copied into the new object.
1004 If the buffer is not \NULL{}, the return value might be a shared object.
1005 Therefore, modification of the resulting Unicode object is only allowed
1006 when \var{u} is \NULL{}.
Walter Dörwald80bfb722007-06-11 16:44:48 +00001007 \versionadded{3.0}
Walter Dörwaldacaa5a12007-05-05 12:00:46 +00001008\end{cfuncdesc}
1009
Walter Dörwaldc0aa45f2007-06-11 16:43:18 +00001010\begin{cfuncdesc}{PyObject*}{PyUnicode_FromFormat}{const char *format, ...}
1011 Take a C \cfunction{printf()}-style \var{format} string and a
1012 variable number of arguments, calculate the size of the resulting
1013 Python unicode string and return a string with the values formatted into
1014 it. The variable arguments must be C types and must correspond
1015 exactly to the format characters in the \var{format} string. The
1016 following format characters are allowed:
1017
1018 % The descriptions for %zd and %zu are wrong, but the truth is complicated
1019 % because not all compilers support the %z width modifier -- we fake it
1020 % when necessary via interpolating PY_FORMAT_SIZE_T.
1021
Walter Dörwaldc0aa45f2007-06-11 16:43:18 +00001022 \begin{tableiii}{l|l|l}{member}{Format Characters}{Type}{Comment}
1023 \lineiii{\%\%}{\emph{n/a}}{The literal \% character.}
1024 \lineiii{\%c}{int}{A single character, represented as an C int.}
1025 \lineiii{\%d}{int}{Exactly equivalent to \code{printf("\%d")}.}
1026 \lineiii{\%u}{unsigned int}{Exactly equivalent to \code{printf("\%u")}.}
1027 \lineiii{\%ld}{long}{Exactly equivalent to \code{printf("\%ld")}.}
1028 \lineiii{\%lu}{unsigned long}{Exactly equivalent to \code{printf("\%lu")}.}
1029 \lineiii{\%zd}{Py_ssize_t}{Exactly equivalent to \code{printf("\%zd")}.}
1030 \lineiii{\%zu}{size_t}{Exactly equivalent to \code{printf("\%zu")}.}
1031 \lineiii{\%i}{int}{Exactly equivalent to \code{printf("\%i")}.}
1032 \lineiii{\%x}{int}{Exactly equivalent to \code{printf("\%x")}.}
1033 \lineiii{\%s}{char*}{A null-terminated C character array.}
1034 \lineiii{\%p}{void*}{The hex representation of a C pointer.
1035 Mostly equivalent to \code{printf("\%p")} except that it is
1036 guaranteed to start with the literal \code{0x} regardless of
1037 what the platform's \code{printf} yields.}
1038 \lineiii{\%U}{PyObject*}{A unicode object.}
1039 \lineiii{\%V}{PyObject*, char *}{A unicode object (which may be \NULL{})
1040 and a null-terminated C character array as a second parameter (which
1041 will be used, if the first parameter is \NULL{}).}
1042 \lineiii{\%S}{PyObject*}{The result of calling \function{PyObject_Unicode()}.}
1043 \lineiii{\%R}{PyObject*}{The result of calling \function{PyObject_Repr()}.}
1044 \end{tableiii}
1045
1046 An unrecognized format character causes all the rest of the format
1047 string to be copied as-is to the result string, and any extra
1048 arguments discarded.
Walter Dörwald80bfb722007-06-11 16:44:48 +00001049 \versionadded{3.0}
Walter Dörwaldc0aa45f2007-06-11 16:43:18 +00001050\end{cfuncdesc}
1051
1052\begin{cfuncdesc}{PyObject*}{PyUnicode_FromFormatV}{const char *format,
1053 va_list vargs}
1054 Identical to \function{PyUnicode_FromFormat()} except that it takes
1055 exactly two arguments.
Walter Dörwald80bfb722007-06-11 16:44:48 +00001056 \versionadded{3.0}
Walter Dörwaldc0aa45f2007-06-11 16:43:18 +00001057\end{cfuncdesc}
1058
Fred Drake3adf79e2001-10-12 19:01:43 +00001059\begin{cfuncdesc}{Py_UNICODE*}{PyUnicode_AsUnicode}{PyObject *unicode}
1060 Return a read-only pointer to the Unicode object's internal
1061 \ctype{Py_UNICODE} buffer, \NULL{} if \var{unicode} is not a Unicode
1062 object.
1063\end{cfuncdesc}
1064
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001065\begin{cfuncdesc}{Py_ssize_t}{PyUnicode_GetSize}{PyObject *unicode}
Fred Drake3adf79e2001-10-12 19:01:43 +00001066 Return the length of the Unicode object.
1067\end{cfuncdesc}
1068
1069\begin{cfuncdesc}{PyObject*}{PyUnicode_FromEncodedObject}{PyObject *obj,
1070 const char *encoding,
1071 const char *errors}
1072 Coerce an encoded object \var{obj} to an Unicode object and return a
1073 reference with incremented refcount.
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001074
1075 String and other char buffer compatible objects are decoded
1076 according to the given encoding and using the error handling
1077 defined by errors. Both can be \NULL{} to have the interface
1078 use the default values (see the next section for details).
Fred Drake3adf79e2001-10-12 19:01:43 +00001079
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001080 All other objects, including Unicode objects, cause a
1081 \exception{TypeError} to be set.
Fred Drake3adf79e2001-10-12 19:01:43 +00001082
1083 The API returns \NULL{} if there was an error. The caller is
1084 responsible for decref'ing the returned objects.
1085\end{cfuncdesc}
1086
1087\begin{cfuncdesc}{PyObject*}{PyUnicode_FromObject}{PyObject *obj}
1088 Shortcut for \code{PyUnicode_FromEncodedObject(obj, NULL, "strict")}
1089 which is used throughout the interpreter whenever coercion to
1090 Unicode is needed.
1091\end{cfuncdesc}
1092
1093% --- wchar_t support for platforms which support it ---------------------
1094
1095If the platform supports \ctype{wchar_t} and provides a header file
1096wchar.h, Python can interface directly to this type using the
1097following functions. Support is optimized if Python's own
1098\ctype{Py_UNICODE} type is identical to the system's \ctype{wchar_t}.
1099
1100\begin{cfuncdesc}{PyObject*}{PyUnicode_FromWideChar}{const wchar_t *w,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001101 Py_ssize_t size}
Thomas Heller541703b2002-04-29 17:28:43 +00001102 Create a Unicode object from the \ctype{wchar_t} buffer \var{w} of
Georg Brandl99363b62005-09-03 07:27:26 +00001103 the given size. Return \NULL{} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00001104\end{cfuncdesc}
1105
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001106\begin{cfuncdesc}{Py_ssize_t}{PyUnicode_AsWideChar}{PyUnicodeObject *unicode,
Fred Drake3adf79e2001-10-12 19:01:43 +00001107 wchar_t *w,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001108 Py_ssize_t size}
Georg Brandl99363b62005-09-03 07:27:26 +00001109 Copy the Unicode object contents into the \ctype{wchar_t} buffer
Marc-André Lemburga9cadcd2004-11-22 13:02:31 +00001110 \var{w}. At most \var{size} \ctype{wchar_t} characters are copied
Georg Brandl99363b62005-09-03 07:27:26 +00001111 (excluding a possibly trailing 0-termination character). Return
Marc-André Lemburga9cadcd2004-11-22 13:02:31 +00001112 the number of \ctype{wchar_t} characters copied or -1 in case of an
1113 error. Note that the resulting \ctype{wchar_t} string may or may
1114 not be 0-terminated. It is the responsibility of the caller to make
1115 sure that the \ctype{wchar_t} string is 0-terminated in case this is
1116 required by the application.
Fred Drake3adf79e2001-10-12 19:01:43 +00001117\end{cfuncdesc}
1118
1119
1120\subsubsection{Built-in Codecs \label{builtinCodecs}}
1121
1122Python provides a set of builtin codecs which are written in C
1123for speed. All of these codecs are directly usable via the
1124following functions.
1125
1126Many of the following APIs take two arguments encoding and
1127errors. These parameters encoding and errors have the same semantics
1128as the ones of the builtin unicode() Unicode object constructor.
1129
1130Setting encoding to \NULL{} causes the default encoding to be used
1131which is \ASCII. The file system calls should use
1132\cdata{Py_FileSystemDefaultEncoding} as the encoding for file
1133names. This variable should be treated as read-only: On some systems,
1134it will be a pointer to a static string, on others, it will change at
Raymond Hettingercb2da432003-10-12 18:24:34 +00001135run-time (such as when the application invokes setlocale).
Fred Drake3adf79e2001-10-12 19:01:43 +00001136
1137Error handling is set by errors which may also be set to \NULL{}
1138meaning to use the default handling defined for the codec. Default
1139error handling for all builtin codecs is ``strict''
1140(\exception{ValueError} is raised).
1141
1142The codecs all use a similar interface. Only deviation from the
1143following generic ones are documented for simplicity.
1144
1145% --- Generic Codecs -----------------------------------------------------
1146
1147These are the generic codec APIs:
1148
1149\begin{cfuncdesc}{PyObject*}{PyUnicode_Decode}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001150 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001151 const char *encoding,
1152 const char *errors}
1153 Create a Unicode object by decoding \var{size} bytes of the encoded
1154 string \var{s}. \var{encoding} and \var{errors} have the same
1155 meaning as the parameters of the same name in the
1156 \function{unicode()} builtin function. The codec to be used is
Georg Brandl99363b62005-09-03 07:27:26 +00001157 looked up using the Python codec registry. Return \NULL{} if an
Fred Drake3adf79e2001-10-12 19:01:43 +00001158 exception was raised by the codec.
1159\end{cfuncdesc}
1160
1161\begin{cfuncdesc}{PyObject*}{PyUnicode_Encode}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001162 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001163 const char *encoding,
1164 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001165 Encode the \ctype{Py_UNICODE} buffer of the given size and return
Fred Drake3adf79e2001-10-12 19:01:43 +00001166 a Python string object. \var{encoding} and \var{errors} have the
1167 same meaning as the parameters of the same name in the Unicode
1168 \method{encode()} method. The codec to be used is looked up using
Georg Brandl99363b62005-09-03 07:27:26 +00001169 the Python codec registry. Return \NULL{} if an exception was
Fred Drake3adf79e2001-10-12 19:01:43 +00001170 raised by the codec.
1171\end{cfuncdesc}
1172
1173\begin{cfuncdesc}{PyObject*}{PyUnicode_AsEncodedString}{PyObject *unicode,
1174 const char *encoding,
1175 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001176 Encode a Unicode object and return the result as Python string
Fred Drake3adf79e2001-10-12 19:01:43 +00001177 object. \var{encoding} and \var{errors} have the same meaning as the
1178 parameters of the same name in the Unicode \method{encode()} method.
1179 The codec to be used is looked up using the Python codec registry.
Georg Brandl99363b62005-09-03 07:27:26 +00001180 Return \NULL{} if an exception was raised by the codec.
Fred Drake3adf79e2001-10-12 19:01:43 +00001181\end{cfuncdesc}
1182
1183% --- UTF-8 Codecs -------------------------------------------------------
1184
1185These are the UTF-8 codec APIs:
1186
1187\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF8}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001188 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001189 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001190 Create a Unicode object by decoding \var{size} bytes of the UTF-8
1191 encoded string \var{s}. Return \NULL{} if an exception was raised
Fred Drake3adf79e2001-10-12 19:01:43 +00001192 by the codec.
1193\end{cfuncdesc}
1194
Walter Dörwald69652032004-09-07 20:24:22 +00001195\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF8Stateful}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001196 Py_ssize_t size,
Walter Dörwald69652032004-09-07 20:24:22 +00001197 const char *errors,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001198 Py_ssize_t *consumed}
Georg Brandl99363b62005-09-03 07:27:26 +00001199 If \var{consumed} is \NULL{}, behave like \cfunction{PyUnicode_DecodeUTF8()}.
Walter Dörwald69652032004-09-07 20:24:22 +00001200 If \var{consumed} is not \NULL{}, trailing incomplete UTF-8 byte sequences
1201 will not be treated as an error. Those bytes will not be decoded and the
1202 number of bytes that have been decoded will be stored in \var{consumed}.
1203 \versionadded{2.4}
1204\end{cfuncdesc}
1205
Fred Drake3adf79e2001-10-12 19:01:43 +00001206\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeUTF8}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001207 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001208 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001209 Encode the \ctype{Py_UNICODE} buffer of the given size using UTF-8
1210 and return a Python string object. Return \NULL{} if an exception
Fred Drake3adf79e2001-10-12 19:01:43 +00001211 was raised by the codec.
1212\end{cfuncdesc}
1213
1214\begin{cfuncdesc}{PyObject*}{PyUnicode_AsUTF8String}{PyObject *unicode}
Georg Brandl99363b62005-09-03 07:27:26 +00001215 Encode a Unicode objects using UTF-8 and return the result as
1216 Python string object. Error handling is ``strict''. Return
Fred Drake3adf79e2001-10-12 19:01:43 +00001217 \NULL{} if an exception was raised by the codec.
1218\end{cfuncdesc}
1219
1220% --- UTF-16 Codecs ------------------------------------------------------ */
1221
1222These are the UTF-16 codec APIs:
1223
1224\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF16}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001225 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001226 const char *errors,
1227 int *byteorder}
Georg Brandl99363b62005-09-03 07:27:26 +00001228 Decode \var{length} bytes from a UTF-16 encoded buffer string and
1229 return the corresponding Unicode object. \var{errors} (if
Tim Peters9ddf40b2004-06-20 22:41:32 +00001230 non-\NULL{}) defines the error handling. It defaults to ``strict''.
Fred Drake3adf79e2001-10-12 19:01:43 +00001231
Tim Peters9ddf40b2004-06-20 22:41:32 +00001232 If \var{byteorder} is non-\NULL{}, the decoder starts decoding using
Fred Drake3adf79e2001-10-12 19:01:43 +00001233 the given byte order:
1234
1235\begin{verbatim}
1236 *byteorder == -1: little endian
1237 *byteorder == 0: native order
1238 *byteorder == 1: big endian
1239\end{verbatim}
1240
Guido van Rossum360e4b82007-05-14 22:51:27 +00001241 and then switches if the first two bytes of the input data are a byte order
1242 mark (BOM) and the specified byte order is native order. This BOM is not
1243 copied into the resulting Unicode string. After completion, \var{*byteorder}
1244 is set to the current byte order at the.
Fred Drake3adf79e2001-10-12 19:01:43 +00001245
Tim Peters9ddf40b2004-06-20 22:41:32 +00001246 If \var{byteorder} is \NULL{}, the codec starts in native order mode.
Fred Drake3adf79e2001-10-12 19:01:43 +00001247
Georg Brandl99363b62005-09-03 07:27:26 +00001248 Return \NULL{} if an exception was raised by the codec.
Fred Drake3adf79e2001-10-12 19:01:43 +00001249\end{cfuncdesc}
1250
Walter Dörwald69652032004-09-07 20:24:22 +00001251\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF16Stateful}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001252 Py_ssize_t size,
Walter Dörwald69652032004-09-07 20:24:22 +00001253 const char *errors,
1254 int *byteorder,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001255 Py_ssize_t *consumed}
Georg Brandl99363b62005-09-03 07:27:26 +00001256 If \var{consumed} is \NULL{}, behave like
Walter Dörwald69652032004-09-07 20:24:22 +00001257 \cfunction{PyUnicode_DecodeUTF16()}. If \var{consumed} is not \NULL{},
1258 \cfunction{PyUnicode_DecodeUTF16Stateful()} will not treat trailing incomplete
Raymond Hettinger0c230b92005-08-17 10:05:22 +00001259 UTF-16 byte sequences (such as an odd number of bytes or a split surrogate pair)
Walter Dörwald69652032004-09-07 20:24:22 +00001260 as an error. Those bytes will not be decoded and the number of bytes that
1261 have been decoded will be stored in \var{consumed}.
1262 \versionadded{2.4}
1263\end{cfuncdesc}
1264
Fred Drake3adf79e2001-10-12 19:01:43 +00001265\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeUTF16}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001266 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001267 const char *errors,
1268 int byteorder}
Georg Brandl99363b62005-09-03 07:27:26 +00001269 Return a Python string object holding the UTF-16 encoded value of
Fred Drake3adf79e2001-10-12 19:01:43 +00001270 the Unicode data in \var{s}. If \var{byteorder} is not \code{0},
1271 output is written according to the following byte order:
1272
1273\begin{verbatim}
1274 byteorder == -1: little endian
1275 byteorder == 0: native byte order (writes a BOM mark)
1276 byteorder == 1: big endian
1277\end{verbatim}
1278
1279 If byteorder is \code{0}, the output string will always start with
1280 the Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark
1281 is prepended.
1282
Martin v. Löwis9bc4f2d2004-06-03 09:55:28 +00001283 If \var{Py_UNICODE_WIDE} is defined, a single \ctype{Py_UNICODE}
1284 value may get represented as a surrogate pair. If it is not
1285 defined, each \ctype{Py_UNICODE} values is interpreted as an
1286 UCS-2 character.
Fred Drake3adf79e2001-10-12 19:01:43 +00001287
Georg Brandl99363b62005-09-03 07:27:26 +00001288 Return \NULL{} if an exception was raised by the codec.
Fred Drake3adf79e2001-10-12 19:01:43 +00001289\end{cfuncdesc}
1290
1291\begin{cfuncdesc}{PyObject*}{PyUnicode_AsUTF16String}{PyObject *unicode}
Georg Brandl99363b62005-09-03 07:27:26 +00001292 Return a Python string using the UTF-16 encoding in native byte
Fred Drake3adf79e2001-10-12 19:01:43 +00001293 order. The string always starts with a BOM mark. Error handling is
Georg Brandl99363b62005-09-03 07:27:26 +00001294 ``strict''. Return \NULL{} if an exception was raised by the
Fred Drake3adf79e2001-10-12 19:01:43 +00001295 codec.
1296\end{cfuncdesc}
1297
1298% --- Unicode-Escape Codecs ----------------------------------------------
1299
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001300These are the ``Unicode Escape'' codec APIs:
Fred Drake3adf79e2001-10-12 19:01:43 +00001301
1302\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUnicodeEscape}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001303 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001304 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001305 Create a Unicode object by decoding \var{size} bytes of the
1306 Unicode-Escape encoded string \var{s}. Return \NULL{} if an
Fred Drake3adf79e2001-10-12 19:01:43 +00001307 exception was raised by the codec.
1308\end{cfuncdesc}
1309
1310\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeUnicodeEscape}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001311 Py_ssize_t size}
Georg Brandl99363b62005-09-03 07:27:26 +00001312 Encode the \ctype{Py_UNICODE} buffer of the given size using
1313 Unicode-Escape and return a Python string object. Return \NULL{}
Fred Drake3adf79e2001-10-12 19:01:43 +00001314 if an exception was raised by the codec.
1315\end{cfuncdesc}
1316
1317\begin{cfuncdesc}{PyObject*}{PyUnicode_AsUnicodeEscapeString}{PyObject *unicode}
Georg Brandl99363b62005-09-03 07:27:26 +00001318 Encode a Unicode objects using Unicode-Escape and return the
Fred Drake3adf79e2001-10-12 19:01:43 +00001319 result as Python string object. Error handling is ``strict''.
Georg Brandl99363b62005-09-03 07:27:26 +00001320 Return \NULL{} if an exception was raised by the codec.
Fred Drake3adf79e2001-10-12 19:01:43 +00001321\end{cfuncdesc}
1322
1323% --- Raw-Unicode-Escape Codecs ------------------------------------------
1324
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001325These are the ``Raw Unicode Escape'' codec APIs:
Fred Drake3adf79e2001-10-12 19:01:43 +00001326
1327\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeRawUnicodeEscape}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001328 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001329 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001330 Create a Unicode object by decoding \var{size} bytes of the
1331 Raw-Unicode-Escape encoded string \var{s}. Return \NULL{} if an
Fred Drake3adf79e2001-10-12 19:01:43 +00001332 exception was raised by the codec.
1333\end{cfuncdesc}
1334
1335\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeRawUnicodeEscape}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001336 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001337 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001338 Encode the \ctype{Py_UNICODE} buffer of the given size using
1339 Raw-Unicode-Escape and return a Python string object. Return
Fred Drake3adf79e2001-10-12 19:01:43 +00001340 \NULL{} if an exception was raised by the codec.
1341\end{cfuncdesc}
1342
1343\begin{cfuncdesc}{PyObject*}{PyUnicode_AsRawUnicodeEscapeString}{PyObject *unicode}
Georg Brandl99363b62005-09-03 07:27:26 +00001344 Encode a Unicode objects using Raw-Unicode-Escape and return the
Fred Drake3adf79e2001-10-12 19:01:43 +00001345 result as Python string object. Error handling is ``strict''.
Georg Brandl99363b62005-09-03 07:27:26 +00001346 Return \NULL{} if an exception was raised by the codec.
Fred Drake3adf79e2001-10-12 19:01:43 +00001347\end{cfuncdesc}
1348
Tim Petersf582b822001-12-11 18:51:08 +00001349% --- Latin-1 Codecs -----------------------------------------------------
Fred Drake3adf79e2001-10-12 19:01:43 +00001350
1351These are the Latin-1 codec APIs:
1352Latin-1 corresponds to the first 256 Unicode ordinals and only these
1353are accepted by the codecs during encoding.
1354
1355\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeLatin1}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001356 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001357 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001358 Create a Unicode object by decoding \var{size} bytes of the Latin-1
1359 encoded string \var{s}. Return \NULL{} if an exception was raised
Fred Drake3adf79e2001-10-12 19:01:43 +00001360 by the codec.
1361\end{cfuncdesc}
1362
1363\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeLatin1}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001364 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001365 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001366 Encode the \ctype{Py_UNICODE} buffer of the given size using
1367 Latin-1 and return a Python string object. Return \NULL{} if an
Fred Drake3adf79e2001-10-12 19:01:43 +00001368 exception was raised by the codec.
1369\end{cfuncdesc}
1370
1371\begin{cfuncdesc}{PyObject*}{PyUnicode_AsLatin1String}{PyObject *unicode}
Georg Brandl99363b62005-09-03 07:27:26 +00001372 Encode a Unicode objects using Latin-1 and return the result as
1373 Python string object. Error handling is ``strict''. Return
Fred Drake3adf79e2001-10-12 19:01:43 +00001374 \NULL{} if an exception was raised by the codec.
1375\end{cfuncdesc}
1376
Tim Petersf582b822001-12-11 18:51:08 +00001377% --- ASCII Codecs -------------------------------------------------------
Fred Drake3adf79e2001-10-12 19:01:43 +00001378
1379These are the \ASCII{} codec APIs. Only 7-bit \ASCII{} data is
1380accepted. All other codes generate errors.
1381
1382\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeASCII}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001383 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001384 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001385 Create a Unicode object by decoding \var{size} bytes of the
1386 \ASCII{} encoded string \var{s}. Return \NULL{} if an exception
Fred Drake3adf79e2001-10-12 19:01:43 +00001387 was raised by the codec.
1388\end{cfuncdesc}
1389
1390\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeASCII}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001391 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001392 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001393 Encode the \ctype{Py_UNICODE} buffer of the given size using
1394 \ASCII{} and return a Python string object. Return \NULL{} if an
Fred Drake3adf79e2001-10-12 19:01:43 +00001395 exception was raised by the codec.
1396\end{cfuncdesc}
1397
1398\begin{cfuncdesc}{PyObject*}{PyUnicode_AsASCIIString}{PyObject *unicode}
Georg Brandl99363b62005-09-03 07:27:26 +00001399 Encode a Unicode objects using \ASCII{} and return the result as
1400 Python string object. Error handling is ``strict''. Return
Fred Drake3adf79e2001-10-12 19:01:43 +00001401 \NULL{} if an exception was raised by the codec.
1402\end{cfuncdesc}
1403
Tim Petersf582b822001-12-11 18:51:08 +00001404% --- Character Map Codecs -----------------------------------------------
Fred Drake3adf79e2001-10-12 19:01:43 +00001405
1406These are the mapping codec APIs:
1407
1408This codec is special in that it can be used to implement many
1409different codecs (and this is in fact what was done to obtain most of
1410the standard codecs included in the \module{encodings} package). The
1411codec uses mapping to encode and decode characters.
1412
1413Decoding mappings must map single string characters to single Unicode
1414characters, integers (which are then interpreted as Unicode ordinals)
Tim Petersf582b822001-12-11 18:51:08 +00001415or None (meaning "undefined mapping" and causing an error).
Fred Drake3adf79e2001-10-12 19:01:43 +00001416
1417Encoding mappings must map single Unicode characters to single string
1418characters, integers (which are then interpreted as Latin-1 ordinals)
1419or None (meaning "undefined mapping" and causing an error).
1420
1421The mapping objects provided must only support the __getitem__ mapping
1422interface.
1423
1424If a character lookup fails with a LookupError, the character is
1425copied as-is meaning that its ordinal value will be interpreted as
1426Unicode or Latin-1 ordinal resp. Because of this, mappings only need
1427to contain those mappings which map characters to different code
1428points.
1429
1430\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeCharmap}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001431 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001432 PyObject *mapping,
1433 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001434 Create a Unicode object by decoding \var{size} bytes of the encoded
1435 string \var{s} using the given \var{mapping} object. Return
Walter Dörwaldd1c1e102005-10-06 20:29:57 +00001436 \NULL{} if an exception was raised by the codec. If \var{mapping} is \NULL{}
1437 latin-1 decoding will be done. Else it can be a dictionary mapping byte or a
1438 unicode string, which is treated as a lookup table. Byte values greater
1439 that the length of the string and U+FFFE "characters" are treated as
1440 "undefined mapping".
1441 \versionchanged[Allowed unicode string as mapping argument]{2.4}
Fred Drake3adf79e2001-10-12 19:01:43 +00001442\end{cfuncdesc}
1443
1444\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeCharmap}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001445 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001446 PyObject *mapping,
1447 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001448 Encode the \ctype{Py_UNICODE} buffer of the given size using the
1449 given \var{mapping} object and return a Python string object.
1450 Return \NULL{} if an exception was raised by the codec.
Fred Drake3adf79e2001-10-12 19:01:43 +00001451\end{cfuncdesc}
1452
1453\begin{cfuncdesc}{PyObject*}{PyUnicode_AsCharmapString}{PyObject *unicode,
1454 PyObject *mapping}
Georg Brandl99363b62005-09-03 07:27:26 +00001455 Encode a Unicode objects using the given \var{mapping} object and
1456 return the result as Python string object. Error handling is
1457 ``strict''. Return \NULL{} if an exception was raised by the
Fred Drake3adf79e2001-10-12 19:01:43 +00001458 codec.
1459\end{cfuncdesc}
1460
1461The following codec API is special in that maps Unicode to Unicode.
1462
1463\begin{cfuncdesc}{PyObject*}{PyUnicode_TranslateCharmap}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001464 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001465 PyObject *table,
1466 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001467 Translate a \ctype{Py_UNICODE} buffer of the given length by
1468 applying a character mapping \var{table} to it and return the
1469 resulting Unicode object. Return \NULL{} when an exception was
Fred Drake3adf79e2001-10-12 19:01:43 +00001470 raised by the codec.
1471
1472 The \var{mapping} table must map Unicode ordinal integers to Unicode
1473 ordinal integers or None (causing deletion of the character).
1474
Thomas Wouters477c8d52006-05-27 19:21:47 +00001475 Mapping tables need only provide the \method{__getitem__()}
Fred Drake3adf79e2001-10-12 19:01:43 +00001476 interface; dictionaries and sequences work well. Unmapped character
1477 ordinals (ones which cause a \exception{LookupError}) are left
1478 untouched and are copied as-is.
1479\end{cfuncdesc}
1480
1481% --- MBCS codecs for Windows --------------------------------------------
1482
1483These are the MBCS codec APIs. They are currently only available on
1484Windows and use the Win32 MBCS converters to implement the
1485conversions. Note that MBCS (or DBCS) is a class of encodings, not
1486just one. The target encoding is defined by the user settings on the
1487machine running the codec.
1488
1489\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeMBCS}{const char *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001490 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001491 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001492 Create a Unicode object by decoding \var{size} bytes of the MBCS
1493 encoded string \var{s}. Return \NULL{} if an exception was
Fred Drake3adf79e2001-10-12 19:01:43 +00001494 raised by the codec.
1495\end{cfuncdesc}
1496
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001497\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeMBCSStateful}{const char *s,
1498 int size,
1499 const char *errors,
1500 int *consumed}
1501 If \var{consumed} is \NULL{}, behave like
1502 \cfunction{PyUnicode_DecodeMBCS()}. If \var{consumed} is not \NULL{},
1503 \cfunction{PyUnicode_DecodeMBCSStateful()} will not decode trailing lead
1504 byte and the number of bytes that have been decoded will be stored in
1505 \var{consumed}.
1506 \versionadded{2.5}
1507\end{cfuncdesc}
1508
Fred Drake3adf79e2001-10-12 19:01:43 +00001509\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeMBCS}{const Py_UNICODE *s,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001510 Py_ssize_t size,
Fred Drake3adf79e2001-10-12 19:01:43 +00001511 const char *errors}
Georg Brandl99363b62005-09-03 07:27:26 +00001512 Encode the \ctype{Py_UNICODE} buffer of the given size using MBCS
1513 and return a Python string object. Return \NULL{} if an exception
Fred Drake3adf79e2001-10-12 19:01:43 +00001514 was raised by the codec.
1515\end{cfuncdesc}
1516
1517\begin{cfuncdesc}{PyObject*}{PyUnicode_AsMBCSString}{PyObject *unicode}
Georg Brandl99363b62005-09-03 07:27:26 +00001518 Encode a Unicode objects using MBCS and return the result as
1519 Python string object. Error handling is ``strict''. Return
Fred Drake3adf79e2001-10-12 19:01:43 +00001520 \NULL{} if an exception was raised by the codec.
1521\end{cfuncdesc}
1522
1523% --- Methods & Slots ----------------------------------------------------
1524
1525\subsubsection{Methods and Slot Functions \label{unicodeMethodsAndSlots}}
1526
1527The following APIs are capable of handling Unicode objects and strings
1528on input (we refer to them as strings in the descriptions) and return
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001529Unicode objects or integers as appropriate.
Fred Drake3adf79e2001-10-12 19:01:43 +00001530
1531They all return \NULL{} or \code{-1} if an exception occurs.
1532
1533\begin{cfuncdesc}{PyObject*}{PyUnicode_Concat}{PyObject *left,
1534 PyObject *right}
1535 Concat two strings giving a new Unicode string.
1536\end{cfuncdesc}
1537
1538\begin{cfuncdesc}{PyObject*}{PyUnicode_Split}{PyObject *s,
1539 PyObject *sep,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001540 Py_ssize_t maxsplit}
Tim Peters9ddf40b2004-06-20 22:41:32 +00001541 Split a string giving a list of Unicode strings. If sep is \NULL{},
Fred Drake3adf79e2001-10-12 19:01:43 +00001542 splitting will be done at all whitespace substrings. Otherwise,
1543 splits occur at the given separator. At most \var{maxsplit} splits
1544 will be done. If negative, no limit is set. Separators are not
1545 included in the resulting list.
1546\end{cfuncdesc}
1547
1548\begin{cfuncdesc}{PyObject*}{PyUnicode_Splitlines}{PyObject *s,
Martin v. Löwis24b88812003-03-30 16:40:42 +00001549 int keepend}
Fred Drake3adf79e2001-10-12 19:01:43 +00001550 Split a Unicode string at line breaks, returning a list of Unicode
Martin v. Löwis24b88812003-03-30 16:40:42 +00001551 strings. CRLF is considered to be one line break. If \var{keepend}
1552 is 0, the Line break characters are not included in the resulting
1553 strings.
Fred Drake3adf79e2001-10-12 19:01:43 +00001554\end{cfuncdesc}
1555
1556\begin{cfuncdesc}{PyObject*}{PyUnicode_Translate}{PyObject *str,
1557 PyObject *table,
1558 const char *errors}
1559 Translate a string by applying a character mapping table to it and
1560 return the resulting Unicode object.
1561
1562 The mapping table must map Unicode ordinal integers to Unicode
1563 ordinal integers or None (causing deletion of the character).
1564
1565 Mapping tables need only provide the \method{__getitem__()}
1566 interface; dictionaries and sequences work well. Unmapped character
1567 ordinals (ones which cause a \exception{LookupError}) are left
1568 untouched and are copied as-is.
1569
1570 \var{errors} has the usual meaning for codecs. It may be \NULL{}
1571 which indicates to use the default error handling.
1572\end{cfuncdesc}
1573
1574\begin{cfuncdesc}{PyObject*}{PyUnicode_Join}{PyObject *separator,
1575 PyObject *seq}
1576 Join a sequence of strings using the given separator and return the
1577 resulting Unicode string.
1578\end{cfuncdesc}
1579
Raymond Hettinger8ef9b3e2004-12-10 17:12:32 +00001580\begin{cfuncdesc}{int}{PyUnicode_Tailmatch}{PyObject *str,
Fred Drake3adf79e2001-10-12 19:01:43 +00001581 PyObject *substr,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001582 Py_ssize_t start,
1583 Py_ssize_t end,
Fred Drake3adf79e2001-10-12 19:01:43 +00001584 int direction}
1585 Return 1 if \var{substr} matches \var{str}[\var{start}:\var{end}] at
1586 the given tail end (\var{direction} == -1 means to do a prefix
1587 match, \var{direction} == 1 a suffix match), 0 otherwise.
Thomas Wouters477c8d52006-05-27 19:21:47 +00001588 Return \code{-1} if an error occurred.
Fred Drake3adf79e2001-10-12 19:01:43 +00001589\end{cfuncdesc}
1590
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001591\begin{cfuncdesc}{Py_ssize_t}{PyUnicode_Find}{PyObject *str,
Fred Drake1d1e1db2002-06-20 22:07:04 +00001592 PyObject *substr,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001593 Py_ssize_t start,
1594 Py_ssize_t end,
Fred Drake1d1e1db2002-06-20 22:07:04 +00001595 int direction}
Fred Drake3adf79e2001-10-12 19:01:43 +00001596 Return the first position of \var{substr} in
1597 \var{str}[\var{start}:\var{end}] using the given \var{direction}
1598 (\var{direction} == 1 means to do a forward search,
Fred Drake1d1e1db2002-06-20 22:07:04 +00001599 \var{direction} == -1 a backward search). The return value is the
1600 index of the first match; a value of \code{-1} indicates that no
1601 match was found, and \code{-2} indicates that an error occurred and
1602 an exception has been set.
Fred Drake3adf79e2001-10-12 19:01:43 +00001603\end{cfuncdesc}
1604
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001605\begin{cfuncdesc}{Py_ssize_t}{PyUnicode_Count}{PyObject *str,
Fred Drake1d1e1db2002-06-20 22:07:04 +00001606 PyObject *substr,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001607 Py_ssize_t start,
1608 Py_ssize_t end}
Fred Drake1d1e1db2002-06-20 22:07:04 +00001609 Return the number of non-overlapping occurrences of \var{substr} in
Georg Brandl99363b62005-09-03 07:27:26 +00001610 \code{\var{str}[\var{start}:\var{end}]}. Return \code{-1} if an
Fred Drake1d1e1db2002-06-20 22:07:04 +00001611 error occurred.
Fred Drake3adf79e2001-10-12 19:01:43 +00001612\end{cfuncdesc}
1613
1614\begin{cfuncdesc}{PyObject*}{PyUnicode_Replace}{PyObject *str,
1615 PyObject *substr,
1616 PyObject *replstr,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001617 Py_ssize_t maxcount}
Fred Drake3adf79e2001-10-12 19:01:43 +00001618 Replace at most \var{maxcount} occurrences of \var{substr} in
1619 \var{str} with \var{replstr} and return the resulting Unicode object.
1620 \var{maxcount} == -1 means replace all occurrences.
1621\end{cfuncdesc}
1622
1623\begin{cfuncdesc}{int}{PyUnicode_Compare}{PyObject *left, PyObject *right}
1624 Compare two strings and return -1, 0, 1 for less than, equal, and
1625 greater than, respectively.
1626\end{cfuncdesc}
1627
Thomas Wouters00ee7ba2006-08-21 19:07:27 +00001628\begin{cfuncdesc}{int}{PyUnicode_RichCompare}{PyObject *left,
1629 PyObject *right,
1630 int op}
1631
1632 Rich compare two unicode strings and return one of the following:
1633 \begin{itemize}
1634 \item \code{NULL} in case an exception was raised
1635 \item \constant{Py_True} or \constant{Py_False} for successful comparisons
1636 \item \constant{Py_NotImplemented} in case the type combination is unknown
1637 \end{itemize}
1638
1639 Note that \constant{Py_EQ} and \constant{Py_NE} comparisons can cause a
1640 \exception{UnicodeWarning} in case the conversion of the arguments to
1641 Unicode fails with a \exception{UnicodeDecodeError}.
1642
1643 Possible values for \var{op} are
1644 \constant{Py_GT}, \constant{Py_GE}, \constant{Py_EQ},
1645 \constant{Py_NE}, \constant{Py_LT}, and \constant{Py_LE}.
1646\end{cfuncdesc}
1647
Fred Drake3adf79e2001-10-12 19:01:43 +00001648\begin{cfuncdesc}{PyObject*}{PyUnicode_Format}{PyObject *format,
1649 PyObject *args}
Georg Brandl99363b62005-09-03 07:27:26 +00001650 Return a new string object from \var{format} and \var{args}; this
Fred Drake3adf79e2001-10-12 19:01:43 +00001651 is analogous to \code{\var{format} \%\ \var{args}}. The
1652 \var{args} argument must be a tuple.
1653\end{cfuncdesc}
1654
1655\begin{cfuncdesc}{int}{PyUnicode_Contains}{PyObject *container,
1656 PyObject *element}
Georg Brandl99363b62005-09-03 07:27:26 +00001657 Check whether \var{element} is contained in \var{container} and
1658 return true or false accordingly.
Fred Drake3adf79e2001-10-12 19:01:43 +00001659
1660 \var{element} has to coerce to a one element Unicode
1661 string. \code{-1} is returned if there was an error.
1662\end{cfuncdesc}
1663
Walter Dörwalde65c86c2007-05-25 14:14:31 +00001664\begin{cfuncdesc}{void}{PyUnicode_InternInPlace}{PyObject **string}
1665 Intern the argument \var{*string} in place. The argument must be
1666 the address of a pointer variable pointing to a Python unicode string
1667 object. If there is an existing interned string that is the same as
1668 \var{*string}, it sets \var{*string} to it (decrementing the
1669 reference count of the old string object and incrementing the
1670 reference count of the interned string object), otherwise it leaves
1671 \var{*string} alone and interns it (incrementing its reference
1672 count). (Clarification: even though there is a lot of talk about
1673 reference counts, think of this function as reference-count-neutral;
1674 you own the object after the call if and only if you owned it before
1675 the call.)
1676\end{cfuncdesc}
1677
1678\begin{cfuncdesc}{PyObject*}{PyUnicode_InternFromString}{const char *v}
1679 A combination of \cfunction{PyUnicode_FromString()} and
1680 \cfunction{PyUnicode_InternInPlace()}, returning either a new unicode
1681 string object that has been interned, or a new (``owned'') reference to
1682 an earlier interned string object with the same value.
1683\end{cfuncdesc}
1684
Fred Drake3adf79e2001-10-12 19:01:43 +00001685
1686\subsection{Buffer Objects \label{bufferObjects}}
1687\sectionauthor{Greg Stein}{gstein@lyra.org}
1688
1689\obindex{buffer}
1690Python objects implemented in C can export a group of functions called
1691the ``buffer\index{buffer interface} interface.'' These functions can
1692be used by an object to expose its data in a raw, byte-oriented
1693format. Clients of the object can use the buffer interface to access
1694the object data directly, without needing to copy it first.
1695
Tim Petersf582b822001-12-11 18:51:08 +00001696Two examples of objects that support
1697the buffer interface are strings and arrays. The string object exposes
Fred Drake3adf79e2001-10-12 19:01:43 +00001698the character contents in the buffer interface's byte-oriented
1699form. An array can also expose its contents, but it should be noted
1700that array elements may be multi-byte values.
1701
1702An example user of the buffer interface is the file object's
1703\method{write()} method. Any object that can export a series of bytes
1704through the buffer interface can be written to a file. There are a
Tim Petersf582b822001-12-11 18:51:08 +00001705number of format codes to \cfunction{PyArg_ParseTuple()} that operate
Fred Drake3adf79e2001-10-12 19:01:43 +00001706against an object's buffer interface, returning data from the target
1707object.
1708
1709More information on the buffer interface is provided in the section
Fred Drake54e62942001-12-11 19:40:16 +00001710``Buffer Object Structures'' (section~\ref{buffer-structs}), under
Fred Drake3adf79e2001-10-12 19:01:43 +00001711the description for \ctype{PyBufferProcs}\ttindex{PyBufferProcs}.
1712
1713A ``buffer object'' is defined in the \file{bufferobject.h} header
1714(included by \file{Python.h}). These objects look very similar to
1715string objects at the Python programming level: they support slicing,
1716indexing, concatenation, and some other standard string
1717operations. However, their data can come from one of two sources: from
1718a block of memory, or from another object which exports the buffer
1719interface.
1720
1721Buffer objects are useful as a way to expose the data from another
1722object's buffer interface to the Python programmer. They can also be
1723used as a zero-copy slicing mechanism. Using their ability to
1724reference a block of memory, it is possible to expose any data to the
1725Python programmer quite easily. The memory could be a large, constant
1726array in a C extension, it could be a raw block of memory for
1727manipulation before passing to an operating system library, or it
1728could be used to pass around structured data in its native, in-memory
1729format.
1730
1731\begin{ctypedesc}{PyBufferObject}
1732 This subtype of \ctype{PyObject} represents a buffer object.
1733\end{ctypedesc}
1734
1735\begin{cvardesc}{PyTypeObject}{PyBuffer_Type}
1736 The instance of \ctype{PyTypeObject} which represents the Python
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001737 buffer type; it is the same object as \code{buffer} and
1738 \code{types.BufferType} in the Python layer.
1739 \withsubitem{(in module types)}{\ttindex{BufferType}}.
Fred Drake3adf79e2001-10-12 19:01:43 +00001740\end{cvardesc}
1741
1742\begin{cvardesc}{int}{Py_END_OF_BUFFER}
1743 This constant may be passed as the \var{size} parameter to
1744 \cfunction{PyBuffer_FromObject()} or
1745 \cfunction{PyBuffer_FromReadWriteObject()}. It indicates that the
1746 new \ctype{PyBufferObject} should refer to \var{base} object from
1747 the specified \var{offset} to the end of its exported buffer. Using
1748 this enables the caller to avoid querying the \var{base} object for
1749 its length.
1750\end{cvardesc}
1751
1752\begin{cfuncdesc}{int}{PyBuffer_Check}{PyObject *p}
1753 Return true if the argument has type \cdata{PyBuffer_Type}.
1754\end{cfuncdesc}
1755
1756\begin{cfuncdesc}{PyObject*}{PyBuffer_FromObject}{PyObject *base,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001757 Py_ssize_t offset, Py_ssize_t size}
Fred Drake3adf79e2001-10-12 19:01:43 +00001758 Return a new read-only buffer object. This raises
1759 \exception{TypeError} if \var{base} doesn't support the read-only
1760 buffer protocol or doesn't provide exactly one buffer segment, or it
1761 raises \exception{ValueError} if \var{offset} is less than zero. The
1762 buffer will hold a reference to the \var{base} object, and the
1763 buffer's contents will refer to the \var{base} object's buffer
1764 interface, starting as position \var{offset} and extending for
1765 \var{size} bytes. If \var{size} is \constant{Py_END_OF_BUFFER}, then
1766 the new buffer's contents extend to the length of the \var{base}
1767 object's exported buffer data.
1768\end{cfuncdesc}
1769
1770\begin{cfuncdesc}{PyObject*}{PyBuffer_FromReadWriteObject}{PyObject *base,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001771 Py_ssize_t offset,
1772 Py_ssize_t size}
Fred Drake3adf79e2001-10-12 19:01:43 +00001773 Return a new writable buffer object. Parameters and exceptions are
1774 similar to those for \cfunction{PyBuffer_FromObject()}. If the
1775 \var{base} object does not export the writeable buffer protocol,
1776 then \exception{TypeError} is raised.
1777\end{cfuncdesc}
1778
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001779\begin{cfuncdesc}{PyObject*}{PyBuffer_FromMemory}{void *ptr, Py_ssize_t size}
Fred Drake3adf79e2001-10-12 19:01:43 +00001780 Return a new read-only buffer object that reads from a specified
1781 location in memory, with a specified size. The caller is
1782 responsible for ensuring that the memory buffer, passed in as
1783 \var{ptr}, is not deallocated while the returned buffer object
1784 exists. Raises \exception{ValueError} if \var{size} is less than
1785 zero. Note that \constant{Py_END_OF_BUFFER} may \emph{not} be
1786 passed for the \var{size} parameter; \exception{ValueError} will be
1787 raised in that case.
1788\end{cfuncdesc}
1789
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001790\begin{cfuncdesc}{PyObject*}{PyBuffer_FromReadWriteMemory}{void *ptr, Py_ssize_t size}
Fred Drake3adf79e2001-10-12 19:01:43 +00001791 Similar to \cfunction{PyBuffer_FromMemory()}, but the returned
1792 buffer is writable.
1793\end{cfuncdesc}
1794
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001795\begin{cfuncdesc}{PyObject*}{PyBuffer_New}{Py_ssize_t size}
Georg Brandl99363b62005-09-03 07:27:26 +00001796 Return a new writable buffer object that maintains its own memory
Fred Drake3adf79e2001-10-12 19:01:43 +00001797 buffer of \var{size} bytes. \exception{ValueError} is returned if
Neil Schemenauerd68d3ee2004-06-08 02:58:50 +00001798 \var{size} is not zero or positive. Note that the memory buffer (as
1799 returned by \cfunction{PyObject_AsWriteBuffer()}) is not specifically
1800 aligned.
Fred Drake3adf79e2001-10-12 19:01:43 +00001801\end{cfuncdesc}
1802
1803
1804\subsection{Tuple Objects \label{tupleObjects}}
1805
1806\obindex{tuple}
1807\begin{ctypedesc}{PyTupleObject}
1808 This subtype of \ctype{PyObject} represents a Python tuple object.
1809\end{ctypedesc}
1810
1811\begin{cvardesc}{PyTypeObject}{PyTuple_Type}
1812 This instance of \ctype{PyTypeObject} represents the Python tuple
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001813 type; it is the same object as \code{tuple} and \code{types.TupleType}
1814 in the Python layer.\withsubitem{(in module types)}{\ttindex{TupleType}}.
Fred Drake3adf79e2001-10-12 19:01:43 +00001815\end{cvardesc}
1816
1817\begin{cfuncdesc}{int}{PyTuple_Check}{PyObject *p}
1818 Return true if \var{p} is a tuple object or an instance of a subtype
1819 of the tuple type.
1820 \versionchanged[Allowed subtypes to be accepted]{2.2}
1821\end{cfuncdesc}
1822
1823\begin{cfuncdesc}{int}{PyTuple_CheckExact}{PyObject *p}
1824 Return true if \var{p} is a tuple object, but not an instance of a
1825 subtype of the tuple type.
1826 \versionadded{2.2}
1827\end{cfuncdesc}
1828
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001829\begin{cfuncdesc}{PyObject*}{PyTuple_New}{Py_ssize_t len}
Fred Drake3adf79e2001-10-12 19:01:43 +00001830 Return a new tuple object of size \var{len}, or \NULL{} on failure.
1831\end{cfuncdesc}
1832
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001833\begin{cfuncdesc}{PyObject*}{PyTuple_Pack}{Py_ssize_t n, \moreargs}
Raymond Hettingercb2da432003-10-12 18:24:34 +00001834 Return a new tuple object of size \var{n}, or \NULL{} on failure.
1835 The tuple values are initialized to the subsequent \var{n} C arguments
1836 pointing to Python objects. \samp{PyTuple_Pack(2, \var{a}, \var{b})}
1837 is equivalent to \samp{Py_BuildValue("(OO)", \var{a}, \var{b})}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00001838 \versionadded{2.4}
Raymond Hettingercb2da432003-10-12 18:24:34 +00001839\end{cfuncdesc}
1840
Fred Drake3adf79e2001-10-12 19:01:43 +00001841\begin{cfuncdesc}{int}{PyTuple_Size}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00001842 Take a pointer to a tuple object, and return the size of that
Fred Drake3adf79e2001-10-12 19:01:43 +00001843 tuple.
1844\end{cfuncdesc}
1845
1846\begin{cfuncdesc}{int}{PyTuple_GET_SIZE}{PyObject *p}
1847 Return the size of the tuple \var{p}, which must be non-\NULL{} and
1848 point to a tuple; no error checking is performed.
1849\end{cfuncdesc}
1850
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001851\begin{cfuncdesc}{PyObject*}{PyTuple_GetItem}{PyObject *p, Py_ssize_t pos}
Georg Brandl99363b62005-09-03 07:27:26 +00001852 Return the object at position \var{pos} in the tuple pointed to by
1853 \var{p}. If \var{pos} is out of bounds, return \NULL{} and sets an
Fred Drake3adf79e2001-10-12 19:01:43 +00001854 \exception{IndexError} exception.
1855\end{cfuncdesc}
1856
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001857\begin{cfuncdesc}{PyObject*}{PyTuple_GET_ITEM}{PyObject *p, Py_ssize_t pos}
Fred Drake3adf79e2001-10-12 19:01:43 +00001858 Like \cfunction{PyTuple_GetItem()}, but does no checking of its
1859 arguments.
1860\end{cfuncdesc}
1861
1862\begin{cfuncdesc}{PyObject*}{PyTuple_GetSlice}{PyObject *p,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001863 Py_ssize_t low, Py_ssize_t high}
Georg Brandl99363b62005-09-03 07:27:26 +00001864 Take a slice of the tuple pointed to by \var{p} from \var{low} to
1865 \var{high} and return it as a new tuple.
Fred Drake3adf79e2001-10-12 19:01:43 +00001866\end{cfuncdesc}
1867
1868\begin{cfuncdesc}{int}{PyTuple_SetItem}{PyObject *p,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001869 Py_ssize_t pos, PyObject *o}
Georg Brandl99363b62005-09-03 07:27:26 +00001870 Insert a reference to object \var{o} at position \var{pos} of the
1871 tuple pointed to by \var{p}. Return \code{0} on success.
Fred Drake3adf79e2001-10-12 19:01:43 +00001872 \note{This function ``steals'' a reference to \var{o}.}
1873\end{cfuncdesc}
1874
1875\begin{cfuncdesc}{void}{PyTuple_SET_ITEM}{PyObject *p,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001876 Py_ssize_t pos, PyObject *o}
Fred Drake3adf79e2001-10-12 19:01:43 +00001877 Like \cfunction{PyTuple_SetItem()}, but does no error checking, and
1878 should \emph{only} be used to fill in brand new tuples. \note{This
1879 function ``steals'' a reference to \var{o}.}
1880\end{cfuncdesc}
1881
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001882\begin{cfuncdesc}{int}{_PyTuple_Resize}{PyObject **p, Py_ssize_t newsize}
Fred Drake3adf79e2001-10-12 19:01:43 +00001883 Can be used to resize a tuple. \var{newsize} will be the new length
1884 of the tuple. Because tuples are \emph{supposed} to be immutable,
1885 this should only be used if there is only one reference to the
1886 object. Do \emph{not} use this if the tuple may already be known to
1887 some other part of the code. The tuple will always grow or shrink
1888 at the end. Think of this as destroying the old tuple and creating
1889 a new one, only more efficiently. Returns \code{0} on success.
1890 Client code should never assume that the resulting value of
1891 \code{*\var{p}} will be the same as before calling this function.
1892 If the object referenced by \code{*\var{p}} is replaced, the
1893 original \code{*\var{p}} is destroyed. On failure, returns
Tim Peters9ddf40b2004-06-20 22:41:32 +00001894 \code{-1} and sets \code{*\var{p}} to \NULL{}, and raises
Fred Drake3adf79e2001-10-12 19:01:43 +00001895 \exception{MemoryError} or
1896 \exception{SystemError}.
Tim Petersf582b822001-12-11 18:51:08 +00001897 \versionchanged[Removed unused third parameter, \var{last_is_sticky}]{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001898\end{cfuncdesc}
1899
1900
1901\subsection{List Objects \label{listObjects}}
1902
1903\obindex{list}
1904\begin{ctypedesc}{PyListObject}
1905 This subtype of \ctype{PyObject} represents a Python list object.
1906\end{ctypedesc}
1907
1908\begin{cvardesc}{PyTypeObject}{PyList_Type}
1909 This instance of \ctype{PyTypeObject} represents the Python list
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001910 type. This is the same object as \code{list} and \code{types.ListType}
1911 in the Python layer.\withsubitem{(in module types)}{\ttindex{ListType}}
Fred Drake3adf79e2001-10-12 19:01:43 +00001912\end{cvardesc}
1913
1914\begin{cfuncdesc}{int}{PyList_Check}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00001915 Return true if \var{p} is a list object or an instance of a
Andrew MacIntyre13cd8892003-12-25 23:57:52 +00001916 subtype of the list type.
1917 \versionchanged[Allowed subtypes to be accepted]{2.2}
1918\end{cfuncdesc}
1919
1920\begin{cfuncdesc}{int}{PyList_CheckExact}{PyObject *p}
1921 Return true if \var{p} is a list object, but not an instance of a
1922 subtype of the list type.
1923 \versionadded{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001924\end{cfuncdesc}
1925
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001926\begin{cfuncdesc}{PyObject*}{PyList_New}{Py_ssize_t len}
Georg Brandl99363b62005-09-03 07:27:26 +00001927 Return a new list of length \var{len} on success, or \NULL{} on
Fred Drake3adf79e2001-10-12 19:01:43 +00001928 failure.
Thomas Wouters00ee7ba2006-08-21 19:07:27 +00001929 \note{If \var{length} is greater than zero, the returned list object's
1930 items are set to \code{NULL}. Thus you cannot use abstract
1931 API functions such as \cfunction{PySequence_SetItem()}
1932 or expose the object to Python code before setting all items to a
1933 real object with \cfunction{PyList_SetItem()}.}
Fred Drake3adf79e2001-10-12 19:01:43 +00001934\end{cfuncdesc}
1935
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001936\begin{cfuncdesc}{Py_ssize_t}{PyList_Size}{PyObject *list}
Georg Brandl99363b62005-09-03 07:27:26 +00001937 Return the length of the list object in \var{list}; this is
Fred Drake3adf79e2001-10-12 19:01:43 +00001938 equivalent to \samp{len(\var{list})} on a list object.
1939 \bifuncindex{len}
1940\end{cfuncdesc}
1941
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001942\begin{cfuncdesc}{Py_ssize_t}{PyList_GET_SIZE}{PyObject *list}
Fred Drake3adf79e2001-10-12 19:01:43 +00001943 Macro form of \cfunction{PyList_Size()} without error checking.
1944\end{cfuncdesc}
1945
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001946\begin{cfuncdesc}{PyObject*}{PyList_GetItem}{PyObject *list, Py_ssize_t index}
Georg Brandl99363b62005-09-03 07:27:26 +00001947 Return the object at position \var{pos} in the list pointed to by
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001948 \var{p}. The position must be positive, indexing from the end of the
1949 list is not supported. If \var{pos} is out of bounds, return \NULL{}
1950 and set an \exception{IndexError} exception.
Fred Drake3adf79e2001-10-12 19:01:43 +00001951\end{cfuncdesc}
1952
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001953\begin{cfuncdesc}{PyObject*}{PyList_GET_ITEM}{PyObject *list, Py_ssize_t i}
Fred Drake3adf79e2001-10-12 19:01:43 +00001954 Macro form of \cfunction{PyList_GetItem()} without error checking.
1955\end{cfuncdesc}
1956
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001957\begin{cfuncdesc}{int}{PyList_SetItem}{PyObject *list, Py_ssize_t index,
Fred Drake3adf79e2001-10-12 19:01:43 +00001958 PyObject *item}
Georg Brandl99363b62005-09-03 07:27:26 +00001959 Set the item at index \var{index} in list to \var{item}. Return
Fred Drake3adf79e2001-10-12 19:01:43 +00001960 \code{0} on success or \code{-1} on failure. \note{This function
1961 ``steals'' a reference to \var{item} and discards a reference to an
1962 item already in the list at the affected position.}
1963\end{cfuncdesc}
1964
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001965\begin{cfuncdesc}{void}{PyList_SET_ITEM}{PyObject *list, Py_ssize_t i,
Fred Drake3adf79e2001-10-12 19:01:43 +00001966 PyObject *o}
1967 Macro form of \cfunction{PyList_SetItem()} without error checking.
1968 This is normally only used to fill in new lists where there is no
1969 previous content.
1970 \note{This function ``steals'' a reference to \var{item}, and,
1971 unlike \cfunction{PyList_SetItem()}, does \emph{not} discard a
1972 reference to any item that it being replaced; any reference in
1973 \var{list} at position \var{i} will be leaked.}
1974\end{cfuncdesc}
1975
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001976\begin{cfuncdesc}{int}{PyList_Insert}{PyObject *list, Py_ssize_t index,
Fred Drake3adf79e2001-10-12 19:01:43 +00001977 PyObject *item}
Georg Brandl99363b62005-09-03 07:27:26 +00001978 Insert the item \var{item} into list \var{list} in front of index
1979 \var{index}. Return \code{0} if successful; return \code{-1} and
1980 set an exception if unsuccessful. Analogous to
Fred Drake3adf79e2001-10-12 19:01:43 +00001981 \code{\var{list}.insert(\var{index}, \var{item})}.
1982\end{cfuncdesc}
1983
1984\begin{cfuncdesc}{int}{PyList_Append}{PyObject *list, PyObject *item}
Georg Brandl99363b62005-09-03 07:27:26 +00001985 Append the object \var{item} at the end of list \var{list}.
1986 Return \code{0} if successful; return \code{-1} and set an
Fred Drake3adf79e2001-10-12 19:01:43 +00001987 exception if unsuccessful. Analogous to
1988 \code{\var{list}.append(\var{item})}.
1989\end{cfuncdesc}
1990
1991\begin{cfuncdesc}{PyObject*}{PyList_GetSlice}{PyObject *list,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00001992 Py_ssize_t low, Py_ssize_t high}
Georg Brandl99363b62005-09-03 07:27:26 +00001993 Return a list of the objects in \var{list} containing the objects
1994 \emph{between} \var{low} and \var{high}. Return \NULL{} and set
Fred Drake3adf79e2001-10-12 19:01:43 +00001995 an exception if unsuccessful.
1996 Analogous to \code{\var{list}[\var{low}:\var{high}]}.
1997\end{cfuncdesc}
1998
1999\begin{cfuncdesc}{int}{PyList_SetSlice}{PyObject *list,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002000 Py_ssize_t low, Py_ssize_t high,
Fred Drake3adf79e2001-10-12 19:01:43 +00002001 PyObject *itemlist}
Georg Brandl99363b62005-09-03 07:27:26 +00002002 Set the slice of \var{list} between \var{low} and \var{high} to the
Fred Drake3adf79e2001-10-12 19:01:43 +00002003 contents of \var{itemlist}. Analogous to
Raymond Hettinger9c7ed4c2003-10-26 17:20:07 +00002004 \code{\var{list}[\var{low}:\var{high}] = \var{itemlist}}.
2005 The \var{itemlist} may be \NULL{}, indicating the assignment
2006 of an empty list (slice deletion).
Georg Brandl99363b62005-09-03 07:27:26 +00002007 Return \code{0} on success, \code{-1} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00002008\end{cfuncdesc}
2009
2010\begin{cfuncdesc}{int}{PyList_Sort}{PyObject *list}
Georg Brandl99363b62005-09-03 07:27:26 +00002011 Sort the items of \var{list} in place. Return \code{0} on
Fred Drake3adf79e2001-10-12 19:01:43 +00002012 success, \code{-1} on failure. This is equivalent to
2013 \samp{\var{list}.sort()}.
2014\end{cfuncdesc}
2015
2016\begin{cfuncdesc}{int}{PyList_Reverse}{PyObject *list}
Georg Brandl99363b62005-09-03 07:27:26 +00002017 Reverse the items of \var{list} in place. Return \code{0} on
Fred Drake3adf79e2001-10-12 19:01:43 +00002018 success, \code{-1} on failure. This is the equivalent of
2019 \samp{\var{list}.reverse()}.
2020\end{cfuncdesc}
2021
2022\begin{cfuncdesc}{PyObject*}{PyList_AsTuple}{PyObject *list}
Georg Brandl99363b62005-09-03 07:27:26 +00002023 Return a new tuple object containing the contents of \var{list};
Fred Drake3adf79e2001-10-12 19:01:43 +00002024 equivalent to \samp{tuple(\var{list})}.\bifuncindex{tuple}
2025\end{cfuncdesc}
2026
2027
2028\section{Mapping Objects \label{mapObjects}}
2029
2030\obindex{mapping}
2031
2032
2033\subsection{Dictionary Objects \label{dictObjects}}
2034
2035\obindex{dictionary}
2036\begin{ctypedesc}{PyDictObject}
2037 This subtype of \ctype{PyObject} represents a Python dictionary
2038 object.
2039\end{ctypedesc}
2040
2041\begin{cvardesc}{PyTypeObject}{PyDict_Type}
2042 This instance of \ctype{PyTypeObject} represents the Python
2043 dictionary type. This is exposed to Python programs as
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002044 \code{dict} and \code{types.DictType}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002045 \withsubitem{(in module types)}{\ttindex{DictType}\ttindex{DictionaryType}}
2046\end{cvardesc}
2047
2048\begin{cfuncdesc}{int}{PyDict_Check}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002049 Return true if \var{p} is a dict object or an instance of a
Andrew MacIntyre13cd8892003-12-25 23:57:52 +00002050 subtype of the dict type.
2051 \versionchanged[Allowed subtypes to be accepted]{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00002052\end{cfuncdesc}
2053
Andrew MacIntyref72af652003-12-26 00:07:51 +00002054\begin{cfuncdesc}{int}{PyDict_CheckExact}{PyObject *p}
2055 Return true if \var{p} is a dict object, but not an instance of a
2056 subtype of the dict type.
2057 \versionadded{2.4}
2058\end{cfuncdesc}
2059
Fred Drake3adf79e2001-10-12 19:01:43 +00002060\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
Georg Brandl99363b62005-09-03 07:27:26 +00002061 Return a new empty dictionary, or \NULL{} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00002062\end{cfuncdesc}
2063
2064\begin{cfuncdesc}{PyObject*}{PyDictProxy_New}{PyObject *dict}
2065 Return a proxy object for a mapping which enforces read-only
2066 behavior. This is normally used to create a proxy to prevent
2067 modification of the dictionary for non-dynamic class types.
2068 \versionadded{2.2}
2069\end{cfuncdesc}
2070
2071\begin{cfuncdesc}{void}{PyDict_Clear}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002072 Empty an existing dictionary of all key-value pairs.
Fred Drake3adf79e2001-10-12 19:01:43 +00002073\end{cfuncdesc}
2074
Raymond Hettingerbc0f2ab2003-11-25 21:12:14 +00002075\begin{cfuncdesc}{int}{PyDict_Contains}{PyObject *p, PyObject *key}
2076 Determine if dictionary \var{p} contains \var{key}. If an item
2077 in \var{p} is matches \var{key}, return \code{1}, otherwise return
2078 \code{0}. On error, return \code{-1}. This is equivalent to the
2079 Python expression \samp{\var{key} in \var{p}}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002080 \versionadded{2.4}
Raymond Hettingerbc0f2ab2003-11-25 21:12:14 +00002081\end{cfuncdesc}
2082
Fred Drake3adf79e2001-10-12 19:01:43 +00002083\begin{cfuncdesc}{PyObject*}{PyDict_Copy}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002084 Return a new dictionary that contains the same key-value pairs as
Fred Drake3adf79e2001-10-12 19:01:43 +00002085 \var{p}.
2086 \versionadded{1.6}
2087\end{cfuncdesc}
2088
2089\begin{cfuncdesc}{int}{PyDict_SetItem}{PyObject *p, PyObject *key,
2090 PyObject *val}
Georg Brandl99363b62005-09-03 07:27:26 +00002091 Insert \var{value} into the dictionary \var{p} with a key of
Fred Drake3adf79e2001-10-12 19:01:43 +00002092 \var{key}. \var{key} must be hashable; if it isn't,
2093 \exception{TypeError} will be raised.
Georg Brandl99363b62005-09-03 07:27:26 +00002094 Return \code{0} on success or \code{-1} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00002095\end{cfuncdesc}
2096
2097\begin{cfuncdesc}{int}{PyDict_SetItemString}{PyObject *p,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002098 const char *key,
Fred Drake3adf79e2001-10-12 19:01:43 +00002099 PyObject *val}
Georg Brandl99363b62005-09-03 07:27:26 +00002100 Insert \var{value} into the dictionary \var{p} using \var{key} as a
Fred Drake3adf79e2001-10-12 19:01:43 +00002101 key. \var{key} should be a \ctype{char*}. The key object is created
Georg Brandl99363b62005-09-03 07:27:26 +00002102 using \code{PyString_FromString(\var{key})}. Return \code{0} on
Fred Drake3adf79e2001-10-12 19:01:43 +00002103 success or \code{-1} on failure.
2104 \ttindex{PyString_FromString()}
2105\end{cfuncdesc}
2106
2107\begin{cfuncdesc}{int}{PyDict_DelItem}{PyObject *p, PyObject *key}
Georg Brandl99363b62005-09-03 07:27:26 +00002108 Remove the entry in dictionary \var{p} with key \var{key}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002109 \var{key} must be hashable; if it isn't, \exception{TypeError} is
Georg Brandl99363b62005-09-03 07:27:26 +00002110 raised. Return \code{0} on success or \code{-1} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00002111\end{cfuncdesc}
2112
2113\begin{cfuncdesc}{int}{PyDict_DelItemString}{PyObject *p, char *key}
Georg Brandl99363b62005-09-03 07:27:26 +00002114 Remove the entry in dictionary \var{p} which has a key specified by
2115 the string \var{key}. Return \code{0} on success or \code{-1} on
Fred Drake3adf79e2001-10-12 19:01:43 +00002116 failure.
2117\end{cfuncdesc}
2118
2119\begin{cfuncdesc}{PyObject*}{PyDict_GetItem}{PyObject *p, PyObject *key}
Georg Brandl99363b62005-09-03 07:27:26 +00002120 Return the object from dictionary \var{p} which has a key
2121 \var{key}. Return \NULL{} if the key \var{key} is not present, but
Fred Drake3adf79e2001-10-12 19:01:43 +00002122 \emph{without} setting an exception.
2123\end{cfuncdesc}
2124
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002125\begin{cfuncdesc}{PyObject*}{PyDict_GetItemString}{PyObject *p, const char *key}
Fred Drake3adf79e2001-10-12 19:01:43 +00002126 This is the same as \cfunction{PyDict_GetItem()}, but \var{key} is
2127 specified as a \ctype{char*}, rather than a \ctype{PyObject*}.
2128\end{cfuncdesc}
2129
2130\begin{cfuncdesc}{PyObject*}{PyDict_Items}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002131 Return a \ctype{PyListObject} containing all the items from the
Nicholas Bastin975e7252004-09-29 21:39:26 +00002132 dictionary, as in the dictionary method \method{items()} (see the
Fred Drake3adf79e2001-10-12 19:01:43 +00002133 \citetitle[../lib/lib.html]{Python Library Reference}).
2134\end{cfuncdesc}
2135
2136\begin{cfuncdesc}{PyObject*}{PyDict_Keys}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002137 Return a \ctype{PyListObject} containing all the keys from the
Fred Drake3adf79e2001-10-12 19:01:43 +00002138 dictionary, as in the dictionary method \method{keys()} (see the
2139 \citetitle[../lib/lib.html]{Python Library Reference}).
2140\end{cfuncdesc}
2141
2142\begin{cfuncdesc}{PyObject*}{PyDict_Values}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002143 Return a \ctype{PyListObject} containing all the values from the
Fred Drake3adf79e2001-10-12 19:01:43 +00002144 dictionary \var{p}, as in the dictionary method \method{values()}
2145 (see the \citetitle[../lib/lib.html]{Python Library Reference}).
2146\end{cfuncdesc}
2147
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002148\begin{cfuncdesc}{Py_ssize_t}{PyDict_Size}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002149 Return the number of items in the dictionary. This is equivalent
Fred Drake3adf79e2001-10-12 19:01:43 +00002150 to \samp{len(\var{p})} on a dictionary.\bifuncindex{len}
2151\end{cfuncdesc}
2152
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002153\begin{cfuncdesc}{int}{PyDict_Next}{PyObject *p, Py_ssize_t *ppos,
Fred Drake3adf79e2001-10-12 19:01:43 +00002154 PyObject **pkey, PyObject **pvalue}
2155 Iterate over all key-value pairs in the dictionary \var{p}. The
2156 \ctype{int} referred to by \var{ppos} must be initialized to
2157 \code{0} prior to the first call to this function to start the
2158 iteration; the function returns true for each pair in the
2159 dictionary, and false once all pairs have been reported. The
2160 parameters \var{pkey} and \var{pvalue} should either point to
2161 \ctype{PyObject*} variables that will be filled in with each key and
Tim Peters9ddf40b2004-06-20 22:41:32 +00002162 value, respectively, or may be \NULL{}. Any references returned through
Raymond Hettinger54693242003-12-13 19:48:41 +00002163 them are borrowed. \var{ppos} should not be altered during iteration.
2164 Its value represents offsets within the internal dictionary structure,
2165 and since the structure is sparse, the offsets are not consecutive.
Fred Drake3adf79e2001-10-12 19:01:43 +00002166
2167 For example:
2168
2169\begin{verbatim}
2170PyObject *key, *value;
Thomas Woutersb2137042007-02-01 18:02:27 +00002171Py_ssize_t pos = 0;
Fred Drake3adf79e2001-10-12 19:01:43 +00002172
2173while (PyDict_Next(self->dict, &pos, &key, &value)) {
2174 /* do something interesting with the values... */
2175 ...
2176}
2177\end{verbatim}
2178
2179 The dictionary \var{p} should not be mutated during iteration. It
2180 is safe (since Python 2.1) to modify the values of the keys as you
2181 iterate over the dictionary, but only so long as the set of keys
2182 does not change. For example:
2183
2184\begin{verbatim}
2185PyObject *key, *value;
Thomas Woutersb2137042007-02-01 18:02:27 +00002186Py_ssize_t pos = 0;
Fred Drake3adf79e2001-10-12 19:01:43 +00002187
2188while (PyDict_Next(self->dict, &pos, &key, &value)) {
2189 int i = PyInt_AS_LONG(value) + 1;
2190 PyObject *o = PyInt_FromLong(i);
2191 if (o == NULL)
2192 return -1;
2193 if (PyDict_SetItem(self->dict, key, o) < 0) {
2194 Py_DECREF(o);
2195 return -1;
2196 }
2197 Py_DECREF(o);
2198}
2199\end{verbatim}
2200\end{cfuncdesc}
2201
2202\begin{cfuncdesc}{int}{PyDict_Merge}{PyObject *a, PyObject *b, int override}
Tim Petersf582b822001-12-11 18:51:08 +00002203 Iterate over mapping object \var{b} adding key-value pairs to dictionary
2204 \var{a}.
2205 \var{b} may be a dictionary, or any object supporting
2206 \function{PyMapping_Keys()} and \function{PyObject_GetItem()}.
2207 If \var{override} is true, existing pairs in \var{a} will
Fred Drake3adf79e2001-10-12 19:01:43 +00002208 be replaced if a matching key is found in \var{b}, otherwise pairs
2209 will only be added if there is not a matching key in \var{a}.
Tim Petersf582b822001-12-11 18:51:08 +00002210 Return \code{0} on success or \code{-1} if an exception was
Fred Drake3adf79e2001-10-12 19:01:43 +00002211 raised.
2212\versionadded{2.2}
2213\end{cfuncdesc}
2214
2215\begin{cfuncdesc}{int}{PyDict_Update}{PyObject *a, PyObject *b}
2216 This is the same as \code{PyDict_Merge(\var{a}, \var{b}, 1)} in C,
Tim Petersf582b822001-12-11 18:51:08 +00002217 or \code{\var{a}.update(\var{b})} in Python. Return \code{0} on
Fred Drake3adf79e2001-10-12 19:01:43 +00002218 success or \code{-1} if an exception was raised.
2219 \versionadded{2.2}
2220\end{cfuncdesc}
2221
Tim Petersf582b822001-12-11 18:51:08 +00002222\begin{cfuncdesc}{int}{PyDict_MergeFromSeq2}{PyObject *a, PyObject *seq2,
2223 int override}
2224 Update or merge into dictionary \var{a}, from the key-value pairs in
2225 \var{seq2}. \var{seq2} must be an iterable object producing
2226 iterable objects of length 2, viewed as key-value pairs. In case of
2227 duplicate keys, the last wins if \var{override} is true, else the
2228 first wins.
2229 Return \code{0} on success or \code{-1} if an exception
2230 was raised.
2231 Equivalent Python (except for the return value):
2232
2233\begin{verbatim}
2234def PyDict_MergeFromSeq2(a, seq2, override):
2235 for key, value in seq2:
2236 if override or key not in a:
2237 a[key] = value
2238\end{verbatim}
2239
2240 \versionadded{2.2}
2241\end{cfuncdesc}
Fred Drake3adf79e2001-10-12 19:01:43 +00002242
Fred Drake54e62942001-12-11 19:40:16 +00002243
Fred Drake3adf79e2001-10-12 19:01:43 +00002244\section{Other Objects \label{otherObjects}}
2245
Guido van Rossumd8faa362007-04-27 19:54:29 +00002246\subsection{Class Objects \label{classObjects}}
2247
2248\obindex{class}
2249Note that the class objects described here represent old-style classes,
2250which will go away in Python 3. When creating new types for extension
2251modules, you will want to work with type objects (section
2252\ref{typeObjects}).
2253
2254\begin{ctypedesc}{PyClassObject}
2255 The C structure of the objects used to describe built-in classes.
2256\end{ctypedesc}
2257
2258\begin{cvardesc}{PyObject*}{PyClass_Type}
2259 This is the type object for class objects; it is the same object as
2260 \code{types.ClassType} in the Python layer.
2261 \withsubitem{(in module types)}{\ttindex{ClassType}}
2262\end{cvardesc}
2263
2264\begin{cfuncdesc}{int}{PyClass_Check}{PyObject *o}
2265 Return true if the object \var{o} is a class object, including
2266 instances of types derived from the standard class object. Return
2267 false in all other cases.
2268\end{cfuncdesc}
2269
2270\begin{cfuncdesc}{int}{PyClass_IsSubclass}{PyObject *klass, PyObject *base}
2271 Return true if \var{klass} is a subclass of \var{base}. Return false in
2272 all other cases.
2273\end{cfuncdesc}
2274
Fred Drake3adf79e2001-10-12 19:01:43 +00002275\subsection{File Objects \label{fileObjects}}
2276
2277\obindex{file}
2278Python's built-in file objects are implemented entirely on the
2279\ctype{FILE*} support from the C standard library. This is an
2280implementation detail and may change in future releases of Python.
2281
2282\begin{ctypedesc}{PyFileObject}
2283 This subtype of \ctype{PyObject} represents a Python file object.
2284\end{ctypedesc}
2285
2286\begin{cvardesc}{PyTypeObject}{PyFile_Type}
2287 This instance of \ctype{PyTypeObject} represents the Python file
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002288 type. This is exposed to Python programs as \code{file} and
2289 \code{types.FileType}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002290 \withsubitem{(in module types)}{\ttindex{FileType}}
2291\end{cvardesc}
2292
2293\begin{cfuncdesc}{int}{PyFile_Check}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002294 Return true if its argument is a \ctype{PyFileObject} or a subtype
Fred Drake3adf79e2001-10-12 19:01:43 +00002295 of \ctype{PyFileObject}.
2296 \versionchanged[Allowed subtypes to be accepted]{2.2}
2297\end{cfuncdesc}
2298
2299\begin{cfuncdesc}{int}{PyFile_CheckExact}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002300 Return true if its argument is a \ctype{PyFileObject}, but not a
Fred Drake3adf79e2001-10-12 19:01:43 +00002301 subtype of \ctype{PyFileObject}.
2302 \versionadded{2.2}
2303\end{cfuncdesc}
2304
2305\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *filename, char *mode}
Georg Brandl99363b62005-09-03 07:27:26 +00002306 On success, return a new file object that is opened on the file
Fred Drake3adf79e2001-10-12 19:01:43 +00002307 given by \var{filename}, with a file mode given by \var{mode}, where
2308 \var{mode} has the same semantics as the standard C routine
Georg Brandl99363b62005-09-03 07:27:26 +00002309 \cfunction{fopen()}\ttindex{fopen()}. On failure, return \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002310\end{cfuncdesc}
2311
2312\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp,
2313 char *name, char *mode,
2314 int (*close)(FILE*)}
Georg Brandl99363b62005-09-03 07:27:26 +00002315 Create a new \ctype{PyFileObject} from the already-open standard C
Fred Drake3adf79e2001-10-12 19:01:43 +00002316 file pointer, \var{fp}. The function \var{close} will be called
Georg Brandl99363b62005-09-03 07:27:26 +00002317 when the file should be closed. Return \NULL{} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00002318\end{cfuncdesc}
2319
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002320\begin{cfuncdesc}{FILE*}{PyFile_AsFile}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002321 Return the file object associated with \var{p} as a \ctype{FILE*}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002322\end{cfuncdesc}
2323
2324\begin{cfuncdesc}{PyObject*}{PyFile_GetLine}{PyObject *p, int n}
2325 Equivalent to \code{\var{p}.readline(\optional{\var{n}})}, this
2326 function reads one line from the object \var{p}. \var{p} may be a
2327 file object or any object with a \method{readline()} method. If
2328 \var{n} is \code{0}, exactly one line is read, regardless of the
2329 length of the line. If \var{n} is greater than \code{0}, no more
2330 than \var{n} bytes will be read from the file; a partial line can be
2331 returned. In both cases, an empty string is returned if the end of
2332 the file is reached immediately. If \var{n} is less than \code{0},
2333 however, one line is read regardless of length, but
2334 \exception{EOFError} is raised if the end of the file is reached
2335 immediately.
2336 \withsubitem{(built-in exception)}{\ttindex{EOFError}}
2337\end{cfuncdesc}
2338
2339\begin{cfuncdesc}{PyObject*}{PyFile_Name}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002340 Return the name of the file specified by \var{p} as a string
Fred Drake3adf79e2001-10-12 19:01:43 +00002341 object.
2342\end{cfuncdesc}
2343
2344\begin{cfuncdesc}{void}{PyFile_SetBufSize}{PyFileObject *p, int n}
2345 Available on systems with \cfunction{setvbuf()}\ttindex{setvbuf()}
2346 only. This should only be called immediately after file object
2347 creation.
2348\end{cfuncdesc}
2349
Martin v. Löwis5467d4c2003-05-10 07:10:12 +00002350\begin{cfuncdesc}{int}{PyFile_Encoding}{PyFileObject *p, char *enc}
2351 Set the file's encoding for Unicode output to \var{enc}. Return
2352 1 on success and 0 on failure.
2353 \versionadded{2.3}
2354\end{cfuncdesc}
2355
Fred Drake3adf79e2001-10-12 19:01:43 +00002356\begin{cfuncdesc}{int}{PyFile_SoftSpace}{PyObject *p, int newflag}
Georg Brandl99363b62005-09-03 07:27:26 +00002357 This function exists for internal use by the interpreter. Set the
Fred Drake3adf79e2001-10-12 19:01:43 +00002358 \member{softspace} attribute of \var{p} to \var{newflag} and
Georg Brandl99363b62005-09-03 07:27:26 +00002359 \withsubitem{(file attribute)}{\ttindex{softspace}}return the
Fred Drake3adf79e2001-10-12 19:01:43 +00002360 previous value. \var{p} does not have to be a file object for this
2361 function to work properly; any object is supported (thought its only
2362 interesting if the \member{softspace} attribute can be set). This
2363 function clears any errors, and will return \code{0} as the previous
2364 value if the attribute either does not exist or if there were errors
2365 in retrieving it. There is no way to detect errors from this
2366 function, but doing so should not be needed.
2367\end{cfuncdesc}
2368
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002369\begin{cfuncdesc}{int}{PyFile_WriteObject}{PyObject *obj, PyObject *p,
Fred Drake3adf79e2001-10-12 19:01:43 +00002370 int flags}
Georg Brandl99363b62005-09-03 07:27:26 +00002371 Write object \var{obj} to file object \var{p}. The only supported
Fred Drake3adf79e2001-10-12 19:01:43 +00002372 flag for \var{flags} is
2373 \constant{Py_PRINT_RAW}\ttindex{Py_PRINT_RAW}; if given, the
2374 \function{str()} of the object is written instead of the
Georg Brandl99363b62005-09-03 07:27:26 +00002375 \function{repr()}. Return \code{0} on success or \code{-1} on
Fred Drake3adf79e2001-10-12 19:01:43 +00002376 failure; the appropriate exception will be set.
2377\end{cfuncdesc}
2378
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002379\begin{cfuncdesc}{int}{PyFile_WriteString}{const char *s, PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002380 Write string \var{s} to file object \var{p}. Return \code{0} on
Fred Drake3adf79e2001-10-12 19:01:43 +00002381 success or \code{-1} on failure; the appropriate exception will be
2382 set.
2383\end{cfuncdesc}
2384
2385
2386\subsection{Instance Objects \label{instanceObjects}}
2387
2388\obindex{instance}
2389There are very few functions specific to instance objects.
2390
2391\begin{cvardesc}{PyTypeObject}{PyInstance_Type}
2392 Type object for class instances.
2393\end{cvardesc}
2394
2395\begin{cfuncdesc}{int}{PyInstance_Check}{PyObject *obj}
Georg Brandl99363b62005-09-03 07:27:26 +00002396 Return true if \var{obj} is an instance.
Fred Drake3adf79e2001-10-12 19:01:43 +00002397\end{cfuncdesc}
2398
2399\begin{cfuncdesc}{PyObject*}{PyInstance_New}{PyObject *class,
2400 PyObject *arg,
2401 PyObject *kw}
2402 Create a new instance of a specific class. The parameters \var{arg}
2403 and \var{kw} are used as the positional and keyword parameters to
2404 the object's constructor.
2405\end{cfuncdesc}
2406
2407\begin{cfuncdesc}{PyObject*}{PyInstance_NewRaw}{PyObject *class,
2408 PyObject *dict}
Neil Schemenauerc4932292005-06-18 17:54:13 +00002409 Create a new instance of a specific class without calling its
Fred Drake3adf79e2001-10-12 19:01:43 +00002410 constructor. \var{class} is the class of new object. The
2411 \var{dict} parameter will be used as the object's \member{__dict__};
Tim Peters9ddf40b2004-06-20 22:41:32 +00002412 if \NULL{}, a new dictionary will be created for the instance.
Fred Drake3adf79e2001-10-12 19:01:43 +00002413\end{cfuncdesc}
2414
2415
Georg Brandl9b743f52006-02-20 12:57:53 +00002416\subsection{Function Objects \label{function-objects}}
2417
2418\obindex{function}
2419There are a few functions specific to Python functions.
2420
2421\begin{ctypedesc}{PyFunctionObject}
2422 The C structure used for functions.
2423\end{ctypedesc}
2424
2425\begin{cvardesc}{PyTypeObject}{PyFunction_Type}
2426 This is an instance of \ctype{PyTypeObject} and represents the
2427 Python function type. It is exposed to Python programmers as
2428 \code{types.FunctionType}.
2429 \withsubitem{(in module types)}{\ttindex{MethodType}}
2430\end{cvardesc}
2431
2432\begin{cfuncdesc}{int}{PyFunction_Check}{PyObject *o}
2433 Return true if \var{o} is a function object (has type
2434 \cdata{PyFunction_Type}). The parameter must not be \NULL{}.
2435\end{cfuncdesc}
2436
2437\begin{cfuncdesc}{PyObject*}{PyFunction_New}{PyObject *code,
2438 PyObject *globals}
2439 Return a new function object associated with the code object
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002440 \var{code}. \var{globals} must be a dictionary with the global
2441 variables accessible to the function.
Georg Brandl9b743f52006-02-20 12:57:53 +00002442
2443 The function's docstring, name and \var{__module__} are retrieved
2444 from the code object, the argument defaults and closure are set to
2445 \NULL{}.
2446\end{cfuncdesc}
2447
2448\begin{cfuncdesc}{PyObject*}{PyFunction_GetCode}{PyObject *op}
2449 Return the code object associated with the function object \var{op}.
2450\end{cfuncdesc}
2451
2452\begin{cfuncdesc}{PyObject*}{PyFunction_GetGlobals}{PyObject *op}
2453 Return the globals dictionary associated with the function object
2454 \var{op}.
2455\end{cfuncdesc}
2456
2457\begin{cfuncdesc}{PyObject*}{PyFunction_GetModule}{PyObject *op}
2458 Return the \var{__module__} attribute of the function object \var{op}.
2459 This is normally a string containing the module name, but can be set
2460 to any other object by Python code.
2461\end{cfuncdesc}
2462
2463\begin{cfuncdesc}{PyObject*}{PyFunction_GetDefaults}{PyObject *op}
2464 Return the argument default values of the function object \var{op}.
2465 This can be a tuple of arguments or \NULL{}.
2466\end{cfuncdesc}
2467
2468\begin{cfuncdesc}{int}{PyFunction_SetDefaults}{PyObject *op,
2469 PyObject *defaults}
2470 Set the argument default values for the function object \var{op}.
2471 \var{defaults} must be \var{Py_None} or a tuple.
2472
2473 Raises \exception{SystemError} and returns \code{-1} on failure.
2474\end{cfuncdesc}
2475
2476\begin{cfuncdesc}{PyObject*}{PyFunction_GetClosure}{PyObject *op}
2477 Return the closure associated with the function object \var{op}.
2478 This can be \NULL{} or a tuple of cell objects.
2479\end{cfuncdesc}
2480
2481\begin{cfuncdesc}{int}{PyFunction_SetClosure}{PyObject *op,
2482 PyObject *closure}
2483 Set the closure associated with the function object \var{op}.
2484 \var{closure} must be \var{Py_None} or a tuple of cell objects.
2485
2486 Raises \exception{SystemError} and returns \code{-1} on failure.
2487\end{cfuncdesc}
2488
2489
Fred Drake3adf79e2001-10-12 19:01:43 +00002490\subsection{Method Objects \label{method-objects}}
2491
2492\obindex{method}
2493There are some useful functions that are useful for working with
2494method objects.
2495
2496\begin{cvardesc}{PyTypeObject}{PyMethod_Type}
2497 This instance of \ctype{PyTypeObject} represents the Python method
2498 type. This is exposed to Python programs as \code{types.MethodType}.
2499 \withsubitem{(in module types)}{\ttindex{MethodType}}
2500\end{cvardesc}
2501
2502\begin{cfuncdesc}{int}{PyMethod_Check}{PyObject *o}
2503 Return true if \var{o} is a method object (has type
Tim Peters9ddf40b2004-06-20 22:41:32 +00002504 \cdata{PyMethod_Type}). The parameter must not be \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002505\end{cfuncdesc}
2506
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002507\begin{cfuncdesc}{PyObject*}{PyMethod_New}{PyObject *func,
Fred Drake3adf79e2001-10-12 19:01:43 +00002508 PyObject *self, PyObject *class}
2509 Return a new method object, with \var{func} being any callable
2510 object; this is the function that will be called when the method is
2511 called. If this method should be bound to an instance, \var{self}
2512 should be the instance and \var{class} should be the class of
2513 \var{self}, otherwise \var{self} should be \NULL{} and \var{class}
2514 should be the class which provides the unbound method..
2515\end{cfuncdesc}
2516
2517\begin{cfuncdesc}{PyObject*}{PyMethod_Class}{PyObject *meth}
2518 Return the class object from which the method \var{meth} was
2519 created; if this was created from an instance, it will be the class
2520 of the instance.
2521\end{cfuncdesc}
2522
2523\begin{cfuncdesc}{PyObject*}{PyMethod_GET_CLASS}{PyObject *meth}
2524 Macro version of \cfunction{PyMethod_Class()} which avoids error
2525 checking.
2526\end{cfuncdesc}
2527
2528\begin{cfuncdesc}{PyObject*}{PyMethod_Function}{PyObject *meth}
2529 Return the function object associated with the method \var{meth}.
2530\end{cfuncdesc}
2531
2532\begin{cfuncdesc}{PyObject*}{PyMethod_GET_FUNCTION}{PyObject *meth}
2533 Macro version of \cfunction{PyMethod_Function()} which avoids error
2534 checking.
2535\end{cfuncdesc}
2536
2537\begin{cfuncdesc}{PyObject*}{PyMethod_Self}{PyObject *meth}
2538 Return the instance associated with the method \var{meth} if it is
Tim Peters9ddf40b2004-06-20 22:41:32 +00002539 bound, otherwise return \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002540\end{cfuncdesc}
2541
2542\begin{cfuncdesc}{PyObject*}{PyMethod_GET_SELF}{PyObject *meth}
2543 Macro version of \cfunction{PyMethod_Self()} which avoids error
2544 checking.
2545\end{cfuncdesc}
2546
2547
2548\subsection{Module Objects \label{moduleObjects}}
2549
2550\obindex{module}
2551There are only a few functions special to module objects.
2552
2553\begin{cvardesc}{PyTypeObject}{PyModule_Type}
2554 This instance of \ctype{PyTypeObject} represents the Python module
2555 type. This is exposed to Python programs as
2556 \code{types.ModuleType}.
2557 \withsubitem{(in module types)}{\ttindex{ModuleType}}
2558\end{cvardesc}
2559
2560\begin{cfuncdesc}{int}{PyModule_Check}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002561 Return true if \var{p} is a module object, or a subtype of a module
Fred Drake3adf79e2001-10-12 19:01:43 +00002562 object.
2563 \versionchanged[Allowed subtypes to be accepted]{2.2}
2564\end{cfuncdesc}
2565
2566\begin{cfuncdesc}{int}{PyModule_CheckExact}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00002567 Return true if \var{p} is a module object, but not a subtype of
Fred Drake3adf79e2001-10-12 19:01:43 +00002568 \cdata{PyModule_Type}.
2569 \versionadded{2.2}
2570\end{cfuncdesc}
2571
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002572\begin{cfuncdesc}{PyObject*}{PyModule_New}{const char *name}
Fred Drake3adf79e2001-10-12 19:01:43 +00002573 Return a new module object with the \member{__name__} attribute set
2574 to \var{name}. Only the module's \member{__doc__} and
2575 \member{__name__} attributes are filled in; the caller is
2576 responsible for providing a \member{__file__} attribute.
2577 \withsubitem{(module attribute)}{
2578 \ttindex{__name__}\ttindex{__doc__}\ttindex{__file__}}
2579\end{cfuncdesc}
2580
2581\begin{cfuncdesc}{PyObject*}{PyModule_GetDict}{PyObject *module}
2582 Return the dictionary object that implements \var{module}'s
2583 namespace; this object is the same as the \member{__dict__}
2584 attribute of the module object. This function never fails.
2585 \withsubitem{(module attribute)}{\ttindex{__dict__}}
Fred Drakef495ef72002-04-12 19:32:07 +00002586 It is recommended extensions use other \cfunction{PyModule_*()}
2587 and \cfunction{PyObject_*()} functions rather than directly
2588 manipulate a module's \member{__dict__}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002589\end{cfuncdesc}
2590
2591\begin{cfuncdesc}{char*}{PyModule_GetName}{PyObject *module}
2592 Return \var{module}'s \member{__name__} value. If the module does
2593 not provide one, or if it is not a string, \exception{SystemError}
2594 is raised and \NULL{} is returned.
2595 \withsubitem{(module attribute)}{\ttindex{__name__}}
2596 \withsubitem{(built-in exception)}{\ttindex{SystemError}}
2597\end{cfuncdesc}
2598
2599\begin{cfuncdesc}{char*}{PyModule_GetFilename}{PyObject *module}
2600 Return the name of the file from which \var{module} was loaded using
2601 \var{module}'s \member{__file__} attribute. If this is not defined,
2602 or if it is not a string, raise \exception{SystemError} and return
Tim Peters9ddf40b2004-06-20 22:41:32 +00002603 \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002604 \withsubitem{(module attribute)}{\ttindex{__file__}}
2605 \withsubitem{(built-in exception)}{\ttindex{SystemError}}
2606\end{cfuncdesc}
2607
2608\begin{cfuncdesc}{int}{PyModule_AddObject}{PyObject *module,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002609 const char *name, PyObject *value}
Fred Drake3adf79e2001-10-12 19:01:43 +00002610 Add an object to \var{module} as \var{name}. This is a convenience
2611 function which can be used from the module's initialization
Georg Brandl99363b62005-09-03 07:27:26 +00002612 function. This steals a reference to \var{value}. Return
Fred Drake3adf79e2001-10-12 19:01:43 +00002613 \code{-1} on error, \code{0} on success.
2614 \versionadded{2.0}
2615\end{cfuncdesc}
2616
2617\begin{cfuncdesc}{int}{PyModule_AddIntConstant}{PyObject *module,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002618 const char *name, long value}
Fred Drake3adf79e2001-10-12 19:01:43 +00002619 Add an integer constant to \var{module} as \var{name}. This
2620 convenience function can be used from the module's initialization
Georg Brandl99363b62005-09-03 07:27:26 +00002621 function. Return \code{-1} on error, \code{0} on success.
Fred Drake3adf79e2001-10-12 19:01:43 +00002622 \versionadded{2.0}
2623\end{cfuncdesc}
2624
2625\begin{cfuncdesc}{int}{PyModule_AddStringConstant}{PyObject *module,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002626 const char *name, const char *value}
Fred Drake3adf79e2001-10-12 19:01:43 +00002627 Add a string constant to \var{module} as \var{name}. This
2628 convenience function can be used from the module's initialization
Georg Brandl99363b62005-09-03 07:27:26 +00002629 function. The string \var{value} must be null-terminated. Return
Fred Drake3adf79e2001-10-12 19:01:43 +00002630 \code{-1} on error, \code{0} on success.
2631 \versionadded{2.0}
2632\end{cfuncdesc}
2633
2634
2635\subsection{Iterator Objects \label{iterator-objects}}
2636
2637Python provides two general-purpose iterator objects. The first, a
2638sequence iterator, works with an arbitrary sequence supporting the
2639\method{__getitem__()} method. The second works with a callable
2640object and a sentinel value, calling the callable for each item in the
2641sequence, and ending the iteration when the sentinel value is
2642returned.
2643
2644\begin{cvardesc}{PyTypeObject}{PySeqIter_Type}
2645 Type object for iterator objects returned by
2646 \cfunction{PySeqIter_New()} and the one-argument form of the
2647 \function{iter()} built-in function for built-in sequence types.
2648 \versionadded{2.2}
2649\end{cvardesc}
2650
2651\begin{cfuncdesc}{int}{PySeqIter_Check}{op}
2652 Return true if the type of \var{op} is \cdata{PySeqIter_Type}.
2653 \versionadded{2.2}
2654\end{cfuncdesc}
2655
2656\begin{cfuncdesc}{PyObject*}{PySeqIter_New}{PyObject *seq}
2657 Return an iterator that works with a general sequence object,
2658 \var{seq}. The iteration ends when the sequence raises
2659 \exception{IndexError} for the subscripting operation.
2660 \versionadded{2.2}
2661\end{cfuncdesc}
2662
2663\begin{cvardesc}{PyTypeObject}{PyCallIter_Type}
2664 Type object for iterator objects returned by
2665 \cfunction{PyCallIter_New()} and the two-argument form of the
2666 \function{iter()} built-in function.
2667 \versionadded{2.2}
2668\end{cvardesc}
2669
2670\begin{cfuncdesc}{int}{PyCallIter_Check}{op}
2671 Return true if the type of \var{op} is \cdata{PyCallIter_Type}.
2672 \versionadded{2.2}
2673\end{cfuncdesc}
2674
2675\begin{cfuncdesc}{PyObject*}{PyCallIter_New}{PyObject *callable,
2676 PyObject *sentinel}
2677 Return a new iterator. The first parameter, \var{callable}, can be
2678 any Python callable object that can be called with no parameters;
2679 each call to it should return the next item in the iteration. When
2680 \var{callable} returns a value equal to \var{sentinel}, the
2681 iteration will be terminated.
2682 \versionadded{2.2}
2683\end{cfuncdesc}
2684
2685
2686\subsection{Descriptor Objects \label{descriptor-objects}}
2687
Fred Drake54e62942001-12-11 19:40:16 +00002688``Descriptors'' are objects that describe some attribute of an object.
2689They are found in the dictionary of type objects.
2690
Fred Drake3adf79e2001-10-12 19:01:43 +00002691\begin{cvardesc}{PyTypeObject}{PyProperty_Type}
Fred Drake54e62942001-12-11 19:40:16 +00002692 The type object for the built-in descriptor types.
Fred Drake3adf79e2001-10-12 19:01:43 +00002693 \versionadded{2.2}
2694\end{cvardesc}
2695
2696\begin{cfuncdesc}{PyObject*}{PyDescr_NewGetSet}{PyTypeObject *type,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002697 struct PyGetSetDef *getset}
Fred Drake3adf79e2001-10-12 19:01:43 +00002698 \versionadded{2.2}
2699\end{cfuncdesc}
2700
2701\begin{cfuncdesc}{PyObject*}{PyDescr_NewMember}{PyTypeObject *type,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002702 struct PyMemberDef *meth}
Fred Drake3adf79e2001-10-12 19:01:43 +00002703 \versionadded{2.2}
2704\end{cfuncdesc}
2705
2706\begin{cfuncdesc}{PyObject*}{PyDescr_NewMethod}{PyTypeObject *type,
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002707 struct PyMethodDef *meth}
Fred Drake3adf79e2001-10-12 19:01:43 +00002708 \versionadded{2.2}
2709\end{cfuncdesc}
2710
2711\begin{cfuncdesc}{PyObject*}{PyDescr_NewWrapper}{PyTypeObject *type,
2712 struct wrapperbase *wrapper,
2713 void *wrapped}
2714 \versionadded{2.2}
2715\end{cfuncdesc}
2716
Thomas Heller8178a222004-02-09 10:47:11 +00002717\begin{cfuncdesc}{PyObject*}{PyDescr_NewClassMethod}{PyTypeObject *type,
2718 PyMethodDef *method}
2719 \versionadded{2.3}
2720\end{cfuncdesc}
2721
Fred Drake3adf79e2001-10-12 19:01:43 +00002722\begin{cfuncdesc}{int}{PyDescr_IsData}{PyObject *descr}
Georg Brandl99363b62005-09-03 07:27:26 +00002723 Return true if the descriptor objects \var{descr} describes a data
Fred Drake3adf79e2001-10-12 19:01:43 +00002724 attribute, or false if it describes a method. \var{descr} must be a
2725 descriptor object; there is no error checking.
2726 \versionadded{2.2}
2727\end{cfuncdesc}
2728
2729\begin{cfuncdesc}{PyObject*}{PyWrapper_New}{PyObject *, PyObject *}
2730 \versionadded{2.2}
2731\end{cfuncdesc}
2732
2733
2734\subsection{Slice Objects \label{slice-objects}}
2735
2736\begin{cvardesc}{PyTypeObject}{PySlice_Type}
2737 The type object for slice objects. This is the same as
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002738 \code{slice} and \code{types.SliceType}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002739 \withsubitem{(in module types)}{\ttindex{SliceType}}
2740\end{cvardesc}
2741
2742\begin{cfuncdesc}{int}{PySlice_Check}{PyObject *ob}
Georg Brandl99363b62005-09-03 07:27:26 +00002743 Return true if \var{ob} is a slice object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002744 \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002745\end{cfuncdesc}
2746
2747\begin{cfuncdesc}{PyObject*}{PySlice_New}{PyObject *start, PyObject *stop,
2748 PyObject *step}
2749 Return a new slice object with the given values. The \var{start},
2750 \var{stop}, and \var{step} parameters are used as the values of the
2751 slice object attributes of the same names. Any of the values may be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002752 \NULL{}, in which case the \code{None} will be used for the
Georg Brandl99363b62005-09-03 07:27:26 +00002753 corresponding attribute. Return \NULL{} if the new object could
Fred Drake3adf79e2001-10-12 19:01:43 +00002754 not be allocated.
2755\end{cfuncdesc}
2756
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002757\begin{cfuncdesc}{int}{PySlice_GetIndices}{PySliceObject *slice, Py_ssize_t length,
2758 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step}
Michael W. Hudson5efaf7e2002-06-11 10:55:12 +00002759Retrieve the start, stop and step indices from the slice object
2760\var{slice}, assuming a sequence of length \var{length}. Treats
2761indices greater than \var{length} as errors.
2762
2763Returns 0 on success and -1 on error with no exception set (unless one
2764of the indices was not \constant{None} and failed to be converted to
2765an integer, in which case -1 is returned with an exception set).
2766
2767You probably do not want to use this function. If you want to use
2768slice objects in versions of Python prior to 2.3, you would probably
2769do well to incorporate the source of \cfunction{PySlice_GetIndicesEx},
2770suitably renamed, in the source of your extension.
2771\end{cfuncdesc}
2772
Martin v. Löwis29fafd82006-03-01 05:16:03 +00002773\begin{cfuncdesc}{int}{PySlice_GetIndicesEx}{PySliceObject *slice, Py_ssize_t length,
2774 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step,
2775 Py_ssize_t *slicelength}
Michael W. Hudson5efaf7e2002-06-11 10:55:12 +00002776Usable replacement for \cfunction{PySlice_GetIndices}. Retrieve the
2777start, stop, and step indices from the slice object \var{slice}
2778assuming a sequence of length \var{length}, and store the length of
2779the slice in \var{slicelength}. Out of bounds indices are clipped in
2780a manner consistent with the handling of normal slices.
2781
2782Returns 0 on success and -1 on error with exception set.
2783
2784\versionadded{2.3}
Fred Drake3adf79e2001-10-12 19:01:43 +00002785\end{cfuncdesc}
2786
2787
2788\subsection{Weak Reference Objects \label{weakref-objects}}
2789
2790Python supports \emph{weak references} as first-class objects. There
2791are two specific object types which directly implement weak
2792references. The first is a simple reference object, and the second
2793acts as a proxy for the original object as much as it can.
2794
2795\begin{cfuncdesc}{int}{PyWeakref_Check}{ob}
2796 Return true if \var{ob} is either a reference or proxy object.
2797 \versionadded{2.2}
2798\end{cfuncdesc}
2799
2800\begin{cfuncdesc}{int}{PyWeakref_CheckRef}{ob}
2801 Return true if \var{ob} is a reference object.
2802 \versionadded{2.2}
2803\end{cfuncdesc}
2804
2805\begin{cfuncdesc}{int}{PyWeakref_CheckProxy}{ob}
2806 Return true if \var{ob} is a proxy object.
2807 \versionadded{2.2}
2808\end{cfuncdesc}
2809
2810\begin{cfuncdesc}{PyObject*}{PyWeakref_NewRef}{PyObject *ob,
2811 PyObject *callback}
2812 Return a weak reference object for the object \var{ob}. This will
2813 always return a new reference, but is not guaranteed to create a new
2814 object; an existing reference object may be returned. The second
2815 parameter, \var{callback}, can be a callable object that receives
2816 notification when \var{ob} is garbage collected; it should accept a
Raymond Hettinger5232f502004-03-25 08:51:36 +00002817 single parameter, which will be the weak reference object itself.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002818 \var{callback} may also be \code{None} or \NULL{}. If \var{ob}
Fred Drake3adf79e2001-10-12 19:01:43 +00002819 is not a weakly-referencable object, or if \var{callback} is not
Tim Peters9ddf40b2004-06-20 22:41:32 +00002820 callable, \code{None}, or \NULL{}, this will return \NULL{} and
Fred Drake3adf79e2001-10-12 19:01:43 +00002821 raise \exception{TypeError}.
2822 \versionadded{2.2}
2823\end{cfuncdesc}
2824
2825\begin{cfuncdesc}{PyObject*}{PyWeakref_NewProxy}{PyObject *ob,
2826 PyObject *callback}
2827 Return a weak reference proxy object for the object \var{ob}. This
2828 will always return a new reference, but is not guaranteed to create
2829 a new object; an existing proxy object may be returned. The second
2830 parameter, \var{callback}, can be a callable object that receives
2831 notification when \var{ob} is garbage collected; it should accept a
Raymond Hettinger5232f502004-03-25 08:51:36 +00002832 single parameter, which will be the weak reference object itself.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002833 \var{callback} may also be \code{None} or \NULL{}. If \var{ob} is not
Fred Drake3adf79e2001-10-12 19:01:43 +00002834 a weakly-referencable object, or if \var{callback} is not callable,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002835 \code{None}, or \NULL{}, this will return \NULL{} and raise
Fred Drake3adf79e2001-10-12 19:01:43 +00002836 \exception{TypeError}.
2837 \versionadded{2.2}
2838\end{cfuncdesc}
2839
2840\begin{cfuncdesc}{PyObject*}{PyWeakref_GetObject}{PyObject *ref}
Georg Brandl99363b62005-09-03 07:27:26 +00002841 Return the referenced object from a weak reference, \var{ref}. If
Ka-Ping Yeebd379e92003-03-28 18:07:16 +00002842 the referent is no longer live, returns \code{None}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002843 \versionadded{2.2}
2844\end{cfuncdesc}
2845
2846\begin{cfuncdesc}{PyObject*}{PyWeakref_GET_OBJECT}{PyObject *ref}
2847 Similar to \cfunction{PyWeakref_GetObject()}, but implemented as a
2848 macro that does no error checking.
2849 \versionadded{2.2}
2850\end{cfuncdesc}
2851
2852
2853\subsection{CObjects \label{cObjects}}
2854
2855\obindex{CObject}
2856Refer to \emph{Extending and Embedding the Python Interpreter},
Fred Drake54e62942001-12-11 19:40:16 +00002857section~1.12, ``Providing a C API for an Extension Module,'' for more
Fred Drake3adf79e2001-10-12 19:01:43 +00002858information on using these objects.
2859
2860
2861\begin{ctypedesc}{PyCObject}
2862 This subtype of \ctype{PyObject} represents an opaque value, useful
2863 for C extension modules who need to pass an opaque value (as a
2864 \ctype{void*} pointer) through Python code to other C code. It is
2865 often used to make a C function pointer defined in one module
2866 available to other modules, so the regular import mechanism can be
2867 used to access C APIs defined in dynamically loaded modules.
2868\end{ctypedesc}
2869
2870\begin{cfuncdesc}{int}{PyCObject_Check}{PyObject *p}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002871 Return true if its argument is a \ctype{PyCObject}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002872\end{cfuncdesc}
2873
Tim Petersf582b822001-12-11 18:51:08 +00002874\begin{cfuncdesc}{PyObject*}{PyCObject_FromVoidPtr}{void* cobj,
Fred Drake54e62942001-12-11 19:40:16 +00002875 void (*destr)(void *)}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002876 Create a \ctype{PyCObject} from the \code{void *}\var{cobj}. The
Fred Drake3adf79e2001-10-12 19:01:43 +00002877 \var{destr} function will be called when the object is reclaimed,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002878 unless it is \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002879\end{cfuncdesc}
2880
2881\begin{cfuncdesc}{PyObject*}{PyCObject_FromVoidPtrAndDesc}{void* cobj,
2882 void* desc, void (*destr)(void *, void *)}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002883 Create a \ctype{PyCObject} from the \ctype{void *}\var{cobj}. The
Fred Drake3adf79e2001-10-12 19:01:43 +00002884 \var{destr} function will be called when the object is reclaimed.
2885 The \var{desc} argument can be used to pass extra callback data for
2886 the destructor function.
2887\end{cfuncdesc}
2888
2889\begin{cfuncdesc}{void*}{PyCObject_AsVoidPtr}{PyObject* self}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002890 Return the object \ctype{void *} that the \ctype{PyCObject}
Fred Drake3adf79e2001-10-12 19:01:43 +00002891 \var{self} was created with.
2892\end{cfuncdesc}
2893
2894\begin{cfuncdesc}{void*}{PyCObject_GetDesc}{PyObject* self}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002895 Return the description \ctype{void *} that the \ctype{PyCObject}
Fred Drake3adf79e2001-10-12 19:01:43 +00002896 \var{self} was created with.
2897\end{cfuncdesc}
Fred Drakecd8474e2001-11-26 21:29:17 +00002898
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002899\begin{cfuncdesc}{int}{PyCObject_SetVoidPtr}{PyObject* self, void* cobj}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002900 Set the void pointer inside \var{self} to \var{cobj}.
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002901 The \ctype{PyCObject} must not have an associated destructor.
2902 Return true on success, false on failure.
2903\end{cfuncdesc}
2904
Fred Drakecd8474e2001-11-26 21:29:17 +00002905
2906\subsection{Cell Objects \label{cell-objects}}
2907
2908``Cell'' objects are used to implement variables referenced by
2909multiple scopes. For each such variable, a cell object is created to
2910store the value; the local variables of each stack frame that
2911references the value contains a reference to the cells from outer
2912scopes which also use that variable. When the value is accessed, the
2913value contained in the cell is used instead of the cell object
2914itself. This de-referencing of the cell object requires support from
2915the generated byte-code; these are not automatically de-referenced
2916when accessed. Cell objects are not likely to be useful elsewhere.
2917
Fred Drake54e62942001-12-11 19:40:16 +00002918\begin{ctypedesc}{PyCellObject}
2919 The C structure used for cell objects.
2920\end{ctypedesc}
2921
Fred Drakecd8474e2001-11-26 21:29:17 +00002922\begin{cvardesc}{PyTypeObject}{PyCell_Type}
Georg Brandl9b743f52006-02-20 12:57:53 +00002923 The type object corresponding to cell objects.
Fred Drakecd8474e2001-11-26 21:29:17 +00002924\end{cvardesc}
2925
2926\begin{cfuncdesc}{int}{PyCell_Check}{ob}
2927 Return true if \var{ob} is a cell object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002928 \NULL{}.
Fred Drakecd8474e2001-11-26 21:29:17 +00002929\end{cfuncdesc}
2930
2931\begin{cfuncdesc}{PyObject*}{PyCell_New}{PyObject *ob}
2932 Create and return a new cell object containing the value \var{ob}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002933 The parameter may be \NULL{}.
Fred Drakecd8474e2001-11-26 21:29:17 +00002934\end{cfuncdesc}
2935
2936\begin{cfuncdesc}{PyObject*}{PyCell_Get}{PyObject *cell}
2937 Return the contents of the cell \var{cell}.
2938\end{cfuncdesc}
2939
2940\begin{cfuncdesc}{PyObject*}{PyCell_GET}{PyObject *cell}
2941 Return the contents of the cell \var{cell}, but without checking
Raymond Hettingerf4bb1f92003-08-23 03:38:11 +00002942 that \var{cell} is non-\NULL{} and a cell object.
Fred Drakecd8474e2001-11-26 21:29:17 +00002943\end{cfuncdesc}
2944
2945\begin{cfuncdesc}{int}{PyCell_Set}{PyObject *cell, PyObject *value}
2946 Set the contents of the cell object \var{cell} to \var{value}. This
2947 releases the reference to any current content of the cell.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002948 \var{value} may be \NULL{}. \var{cell} must be non-\NULL{}; if it is
Fred Drakecd8474e2001-11-26 21:29:17 +00002949 not a cell object, \code{-1} will be returned. On success, \code{0}
2950 will be returned.
2951\end{cfuncdesc}
2952
2953\begin{cfuncdesc}{void}{PyCell_SET}{PyObject *cell, PyObject *value}
2954 Sets the value of the cell object \var{cell} to \var{value}. No
2955 reference counts are adjusted, and no checks are made for safety;
2956 \var{cell} must be non-\NULL{} and must be a cell object.
2957\end{cfuncdesc}
Martin v. Löwise440e472004-06-01 15:22:42 +00002958
2959
2960\subsection{Generator Objects \label{gen-objects}}
2961
2962Generator objects are what Python uses to implement generator iterators.
2963They are normally created by iterating over a function that yields values,
2964rather than explicitly calling \cfunction{PyGen_New}.
2965
2966\begin{ctypedesc}{PyGenObject}
2967 The C structure used for generator objects.
2968\end{ctypedesc}
2969
2970\begin{cvardesc}{PyTypeObject}{PyGen_Type}
2971 The type object corresponding to generator objects
2972\end{cvardesc}
2973
2974\begin{cfuncdesc}{int}{PyGen_Check}{ob}
2975 Return true if \var{ob} is a generator object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002976 \NULL{}.
Martin v. Löwise440e472004-06-01 15:22:42 +00002977\end{cfuncdesc}
2978
2979\begin{cfuncdesc}{int}{PyGen_CheckExact}{ob}
2980 Return true if \var{ob}'s type is \var{PyGen_Type}
2981 is a generator object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002982 \NULL{}.
Martin v. Löwise440e472004-06-01 15:22:42 +00002983\end{cfuncdesc}
2984
2985\begin{cfuncdesc}{PyObject*}{PyGen_New}{PyFrameObject *frame}
2986 Create and return a new generator object based on the \var{frame} object.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002987 A reference to \var{frame} is stolen by this function.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002988 The parameter must not be \NULL{}.
2989\end{cfuncdesc}
2990
2991
2992\subsection{DateTime Objects \label{datetime-objects}}
2993
2994Various date and time objects are supplied by the \module{datetime}
2995module. Before using any of these functions, the header file
2996\file{datetime.h} must be included in your source (note that this is
Thomas Wouters89f507f2006-12-13 04:49:30 +00002997not included by \file{Python.h}), and the macro
2998\cfunction{PyDateTime_IMPORT} must be invoked. The macro puts a
2999pointer to a C structure into a static variable,
3000\code{PyDateTimeAPI}, that is used by the following macros.
Tim Peters9ddf40b2004-06-20 22:41:32 +00003001
Tim Peters183dabc2004-07-11 19:26:19 +00003002Type-check macros:
3003
3004\begin{cfuncdesc}{int}{PyDate_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00003005 Return true if \var{ob} is of type \cdata{PyDateTime_DateType} or
3006 a subtype of \cdata{PyDateTime_DateType}. \var{ob} must not be
3007 \NULL{}.
3008 \versionadded{2.4}
3009\end{cfuncdesc}
3010
Tim Peters183dabc2004-07-11 19:26:19 +00003011\begin{cfuncdesc}{int}{PyDate_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00003012 Return true if \var{ob} is of type \cdata{PyDateTime_DateType}.
3013 \var{ob} must not be \NULL{}.
3014 \versionadded{2.4}
3015\end{cfuncdesc}
3016
Tim Peters183dabc2004-07-11 19:26:19 +00003017\begin{cfuncdesc}{int}{PyDateTime_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00003018 Return true if \var{ob} is of type \cdata{PyDateTime_DateTimeType} or
3019 a subtype of \cdata{PyDateTime_DateTimeType}. \var{ob} must not be
3020 \NULL{}.
3021 \versionadded{2.4}
3022\end{cfuncdesc}
3023
Tim Peters183dabc2004-07-11 19:26:19 +00003024\begin{cfuncdesc}{int}{PyDateTime_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00003025 Return true if \var{ob} is of type \cdata{PyDateTime_DateTimeType}.
3026 \var{ob} must not be \NULL{}.
3027 \versionadded{2.4}
3028\end{cfuncdesc}
3029
Tim Peters183dabc2004-07-11 19:26:19 +00003030\begin{cfuncdesc}{int}{PyTime_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00003031 Return true if \var{ob} is of type \cdata{PyDateTime_TimeType} or
3032 a subtype of \cdata{PyDateTime_TimeType}. \var{ob} must not be
3033 \NULL{}.
3034 \versionadded{2.4}
3035\end{cfuncdesc}
3036
Tim Peters183dabc2004-07-11 19:26:19 +00003037\begin{cfuncdesc}{int}{PyTime_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00003038 Return true if \var{ob} is of type \cdata{PyDateTime_TimeType}.
3039 \var{ob} must not be \NULL{}.
3040 \versionadded{2.4}
3041\end{cfuncdesc}
3042
Tim Peters183dabc2004-07-11 19:26:19 +00003043\begin{cfuncdesc}{int}{PyDelta_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00003044 Return true if \var{ob} is of type \cdata{PyDateTime_DeltaType} or
3045 a subtype of \cdata{PyDateTime_DeltaType}. \var{ob} must not be
3046 \NULL{}.
3047 \versionadded{2.4}
3048\end{cfuncdesc}
3049
Tim Peters183dabc2004-07-11 19:26:19 +00003050\begin{cfuncdesc}{int}{PyDelta_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00003051 Return true if \var{ob} is of type \cdata{PyDateTime_DeltaType}.
3052 \var{ob} must not be \NULL{}.
3053 \versionadded{2.4}
3054\end{cfuncdesc}
3055
Tim Peters183dabc2004-07-11 19:26:19 +00003056\begin{cfuncdesc}{int}{PyTZInfo_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00003057 Return true if \var{ob} is of type \cdata{PyDateTime_TZInfoType} or
3058 a subtype of \cdata{PyDateTime_TZInfoType}. \var{ob} must not be
3059 \NULL{}.
3060 \versionadded{2.4}
3061\end{cfuncdesc}
3062
Tim Peters183dabc2004-07-11 19:26:19 +00003063\begin{cfuncdesc}{int}{PyTZInfo_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00003064 Return true if \var{ob} is of type \cdata{PyDateTime_TZInfoType}.
3065 \var{ob} must not be \NULL{}.
3066 \versionadded{2.4}
3067\end{cfuncdesc}
3068
Tim Peters183dabc2004-07-11 19:26:19 +00003069Macros to create objects:
3070
Tim Peters9ddf40b2004-06-20 22:41:32 +00003071\begin{cfuncdesc}{PyObject*}{PyDate_FromDate}{int year, int month, int day}
3072 Return a \code{datetime.date} object with the specified year, month
3073 and day.
3074 \versionadded{2.4}
3075\end{cfuncdesc}
3076
Brett Cannon5bbe6ad2005-02-17 05:17:17 +00003077\begin{cfuncdesc}{PyObject*}{PyDateTime_FromDateAndTime}{int year, int month,
Tim Peters9ddf40b2004-06-20 22:41:32 +00003078 int day, int hour, int minute, int second, int usecond}
3079 Return a \code{datetime.datetime} object with the specified year, month,
3080 day, hour, minute, second and microsecond.
3081 \versionadded{2.4}
3082\end{cfuncdesc}
3083
3084\begin{cfuncdesc}{PyObject*}{PyTime_FromTime}{int hour, int minute,
3085 int second, int usecond}
3086 Return a \code{datetime.time} object with the specified hour, minute,
3087 second and microsecond.
3088 \versionadded{2.4}
3089\end{cfuncdesc}
3090
3091\begin{cfuncdesc}{PyObject*}{PyDelta_FromDSU}{int days, int seconds,
3092 int useconds}
3093 Return a \code{datetime.timedelta} object representing the given number
3094 of days, seconds and microseconds. Normalization is performed so that
3095 the resulting number of microseconds and seconds lie in the ranges
3096 documented for \code{datetime.timedelta} objects.
3097 \versionadded{2.4}
3098\end{cfuncdesc}
3099
Tim Peters8ff9f9f2004-07-17 01:42:26 +00003100Macros to extract fields from date objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00003101instance of \cdata{PyDateTime_Date}, including subclasses (such as
3102\cdata{PyDateTime_DateTime}). The argument must not be \NULL{}, and
3103the type is not checked:
3104
3105\begin{cfuncdesc}{int}{PyDateTime_GET_YEAR}{PyDateTime_Date *o}
3106 Return the year, as a positive int.
3107 \versionadded{2.4}
3108\end{cfuncdesc}
3109
3110\begin{cfuncdesc}{int}{PyDateTime_GET_MONTH}{PyDateTime_Date *o}
3111 Return the month, as an int from 1 through 12.
3112 \versionadded{2.4}
3113\end{cfuncdesc}
3114
3115\begin{cfuncdesc}{int}{PyDateTime_GET_DAY}{PyDateTime_Date *o}
3116 Return the day, as an int from 1 through 31.
3117 \versionadded{2.4}
3118\end{cfuncdesc}
3119
Tim Peters8ff9f9f2004-07-17 01:42:26 +00003120Macros to extract fields from datetime objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00003121instance of \cdata{PyDateTime_DateTime}, including subclasses.
3122The argument must not be \NULL{}, and the type is not checked:
3123
3124\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_HOUR}{PyDateTime_DateTime *o}
Neal Norwitz7fdd92f2004-08-02 21:56:33 +00003125 Return the hour, as an int from 0 through 23.
Tim Peters183dabc2004-07-11 19:26:19 +00003126 \versionadded{2.4}
3127\end{cfuncdesc}
3128
3129\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_MINUTE}{PyDateTime_DateTime *o}
3130 Return the minute, as an int from 0 through 59.
3131 \versionadded{2.4}
3132\end{cfuncdesc}
3133
3134\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_SECOND}{PyDateTime_DateTime *o}
3135 Return the second, as an int from 0 through 59.
3136 \versionadded{2.4}
3137\end{cfuncdesc}
3138
3139\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_MICROSECOND}{PyDateTime_DateTime *o}
3140 Return the microsecond, as an int from 0 through 999999.
3141 \versionadded{2.4}
3142\end{cfuncdesc}
3143
Tim Peters8ff9f9f2004-07-17 01:42:26 +00003144Macros to extract fields from time objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00003145instance of \cdata{PyDateTime_Time}, including subclasses.
3146The argument must not be \NULL{}, and the type is not checked:
3147
3148\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_HOUR}{PyDateTime_Time *o}
Neal Norwitz7fdd92f2004-08-02 21:56:33 +00003149 Return the hour, as an int from 0 through 23.
Tim Peters183dabc2004-07-11 19:26:19 +00003150 \versionadded{2.4}
3151\end{cfuncdesc}
3152
3153\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_MINUTE}{PyDateTime_Time *o}
3154 Return the minute, as an int from 0 through 59.
3155 \versionadded{2.4}
3156\end{cfuncdesc}
3157
3158\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_SECOND}{PyDateTime_Time *o}
3159 Return the second, as an int from 0 through 59.
3160 \versionadded{2.4}
3161\end{cfuncdesc}
3162
3163\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_MICROSECOND}{PyDateTime_Time *o}
3164 Return the microsecond, as an int from 0 through 999999.
3165 \versionadded{2.4}
3166\end{cfuncdesc}
3167
3168Macros for the convenience of modules implementing the DB API:
3169
Tim Peters9ddf40b2004-06-20 22:41:32 +00003170\begin{cfuncdesc}{PyObject*}{PyDateTime_FromTimestamp}{PyObject *args}
3171 Create and return a new \code{datetime.datetime} object given an argument
3172 tuple suitable for passing to \code{datetime.datetime.fromtimestamp()}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00003173 \versionadded{2.4}
3174\end{cfuncdesc}
3175
3176\begin{cfuncdesc}{PyObject*}{PyDate_FromTimestamp}{PyObject *args}
3177 Create and return a new \code{datetime.date} object given an argument
3178 tuple suitable for passing to \code{datetime.date.fromtimestamp()}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00003179 \versionadded{2.4}
Martin v. Löwise440e472004-06-01 15:22:42 +00003180\end{cfuncdesc}
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003181
3182
3183\subsection{Set Objects \label{setObjects}}
Thomas Wouters477c8d52006-05-27 19:21:47 +00003184\sectionauthor{Raymond D. Hettinger}{python@rcn.com}
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003185
3186\obindex{set}
3187\obindex{frozenset}
3188\versionadded{2.5}
3189
3190This section details the public API for \class{set} and \class{frozenset}
3191objects. Any functionality not listed below is best accessed using the
Raymond Hettinger0c230b92005-08-17 10:05:22 +00003192either the abstract object protocol (including
Thomas Wouters477c8d52006-05-27 19:21:47 +00003193\cfunction{PyObject_CallMethod()}, \cfunction{PyObject_RichCompareBool()},
3194\cfunction{PyObject_Hash()}, \cfunction{PyObject_Repr()},
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003195\cfunction{PyObject_IsTrue()}, \cfunction{PyObject_Print()}, and
Raymond Hettinger0c230b92005-08-17 10:05:22 +00003196\cfunction{PyObject_GetIter()})
3197or the abstract number protocol (including
Thomas Wouters89f507f2006-12-13 04:49:30 +00003198\cfunction{PyNumber_And()}, \cfunction{PyNumber_Subtract()},
Raymond Hettinger0c230b92005-08-17 10:05:22 +00003199\cfunction{PyNumber_Or()}, \cfunction{PyNumber_Xor()},
Thomas Wouters89f507f2006-12-13 04:49:30 +00003200\cfunction{PyNumber_InPlaceAnd()}, \cfunction{PyNumber_InPlaceSubtract()},
Georg Brandlb518d8c2006-02-22 11:46:55 +00003201\cfunction{PyNumber_InPlaceOr()}, and \cfunction{PyNumber_InPlaceXor()}).
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003202
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003203\begin{ctypedesc}{PySetObject}
3204 This subtype of \ctype{PyObject} is used to hold the internal data for
3205 both \class{set} and \class{frozenset} objects. It is like a
3206 \ctype{PyDictObject} in that it is a fixed size for small sets
3207 (much like tuple storage) and will point to a separate, variable sized
3208 block of memory for medium and large sized sets (much like list storage).
3209 None of the fields of this structure should be considered public and
3210 are subject to change. All access should be done through the
Thomas Wouters477c8d52006-05-27 19:21:47 +00003211 documented API rather than by manipulating the values in the structure.
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003212
3213\end{ctypedesc}
3214
3215\begin{cvardesc}{PyTypeObject}{PySet_Type}
3216 This is an instance of \ctype{PyTypeObject} representing the Python
3217 \class{set} type.
3218\end{cvardesc}
3219
3220\begin{cvardesc}{PyTypeObject}{PyFrozenSet_Type}
3221 This is an instance of \ctype{PyTypeObject} representing the Python
3222 \class{frozenset} type.
3223\end{cvardesc}
3224
3225
3226The following type check macros work on pointers to any Python object.
3227Likewise, the constructor functions work with any iterable Python object.
3228
3229\begin{cfuncdesc}{int}{PyAnySet_Check}{PyObject *p}
Thomas Wouters477c8d52006-05-27 19:21:47 +00003230 Return true if \var{p} is a \class{set} object, a \class{frozenset}
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003231 object, or an instance of a subtype.
3232\end{cfuncdesc}
3233
3234\begin{cfuncdesc}{int}{PyAnySet_CheckExact}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00003235 Return true if \var{p} is a \class{set} object or a \class{frozenset}
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003236 object but not an instance of a subtype.
3237\end{cfuncdesc}
3238
3239\begin{cfuncdesc}{int}{PyFrozenSet_CheckExact}{PyObject *p}
Georg Brandl99363b62005-09-03 07:27:26 +00003240 Return true if \var{p} is a \class{frozenset} object
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003241 but not an instance of a subtype.
3242\end{cfuncdesc}
3243
3244\begin{cfuncdesc}{PyObject*}{PySet_New}{PyObject *iterable}
Georg Brandl99363b62005-09-03 07:27:26 +00003245 Return a new \class{set} containing objects returned by the
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003246 \var{iterable}. The \var{iterable} may be \NULL{} to create a
Georg Brandl99363b62005-09-03 07:27:26 +00003247 new empty set. Return the new set on success or \NULL{} on
3248 failure. Raise \exception{TypeError} if \var{iterable} is
Raymond Hettinger94fedf92005-08-17 12:23:45 +00003249 not actually iterable. The constructor is also useful for
3250 copying a set (\code{c=set(s)}).
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003251\end{cfuncdesc}
3252
3253\begin{cfuncdesc}{PyObject*}{PyFrozenSet_New}{PyObject *iterable}
Georg Brandl99363b62005-09-03 07:27:26 +00003254 Return a new \class{frozenset} containing objects returned by the
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003255 \var{iterable}. The \var{iterable} may be \NULL{} to create a
Georg Brandl99363b62005-09-03 07:27:26 +00003256 new empty frozenset. Return the new set on success or \NULL{} on
3257 failure. Raise \exception{TypeError} if \var{iterable} is
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003258 not actually iterable.
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003259\end{cfuncdesc}
3260
3261
3262The following functions and macros are available for instances of
3263\class{set} or \class{frozenset} or instances of their subtypes.
3264
3265\begin{cfuncdesc}{int}{PySet_Size}{PyObject *anyset}
Georg Brandl99363b62005-09-03 07:27:26 +00003266 Return the length of a \class{set} or \class{frozenset} object.
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003267 Equivalent to \samp{len(\var{anyset})}. Raises a
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003268 \exception{PyExc_SystemError} if \var{anyset} is not a \class{set},
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003269 \class{frozenset}, or an instance of a subtype.
3270 \bifuncindex{len}
3271\end{cfuncdesc}
3272
3273\begin{cfuncdesc}{int}{PySet_GET_SIZE}{PyObject *anyset}
3274 Macro form of \cfunction{PySet_Size()} without error checking.
3275\end{cfuncdesc}
3276
3277\begin{cfuncdesc}{int}{PySet_Contains}{PyObject *anyset, PyObject *key}
Georg Brandl99363b62005-09-03 07:27:26 +00003278 Return 1 if found, 0 if not found, and -1 if an error is
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003279 encountered. Unlike the Python \method{__contains__()} method, this
3280 function does not automatically convert unhashable sets into temporary
Georg Brandl99363b62005-09-03 07:27:26 +00003281 frozensets. Raise a \exception{TypeError} if the \var{key} is unhashable.
3282 Raise \exception{PyExc_SystemError} if \var{anyset} is not a \class{set},
Thomas Wouters477c8d52006-05-27 19:21:47 +00003283 \class{frozenset}, or an instance of a subtype.
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003284\end{cfuncdesc}
3285
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003286The following functions are available for instances of \class{set} or
3287its subtypes but not for instances of \class{frozenset} or its subtypes.
3288
3289\begin{cfuncdesc}{int}{PySet_Add}{PyObject *set, PyObject *key}
Georg Brandl99363b62005-09-03 07:27:26 +00003290 Add \var{key} to a \class{set} instance. Does not apply to
3291 \class{frozenset} instances. Return 0 on success or -1 on failure.
3292 Raise a \exception{TypeError} if the \var{key} is unhashable.
3293 Raise a \exception{MemoryError} if there is no room to grow.
3294 Raise a \exception{SystemError} if \var{set} is an not an instance
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003295 of \class{set} or its subtype.
3296\end{cfuncdesc}
3297
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003298\begin{cfuncdesc}{int}{PySet_Discard}{PyObject *set, PyObject *key}
Georg Brandl99363b62005-09-03 07:27:26 +00003299 Return 1 if found and removed, 0 if not found (no action taken),
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003300 and -1 if an error is encountered. Does not raise \exception{KeyError}
Georg Brandl99363b62005-09-03 07:27:26 +00003301 for missing keys. Raise a \exception{TypeError} if the \var{key} is
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003302 unhashable. Unlike the Python \method{discard()} method, this function
3303 does not automatically convert unhashable sets into temporary frozensets.
Georg Brandl99363b62005-09-03 07:27:26 +00003304 Raise \exception{PyExc_SystemError} if \var{set} is an not an instance
Thomas Wouters477c8d52006-05-27 19:21:47 +00003305 of \class{set} or its subtype.
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003306\end{cfuncdesc}
3307
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003308\begin{cfuncdesc}{PyObject*}{PySet_Pop}{PyObject *set}
Georg Brandl99363b62005-09-03 07:27:26 +00003309 Return a new reference to an arbitrary object in the \var{set},
3310 and removes the object from the \var{set}. Return \NULL{} on
3311 failure. Raise \exception{KeyError} if the set is empty.
3312 Raise a \exception{SystemError} if \var{set} is an not an instance
Thomas Wouters477c8d52006-05-27 19:21:47 +00003313 of \class{set} or its subtype.
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003314\end{cfuncdesc}
3315
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003316\begin{cfuncdesc}{int}{PySet_Clear}{PyObject *set}
3317 Empty an existing set of all elements.
3318\end{cfuncdesc}