blob: a385ffdc42b52a9166547524745aeb52c26ffbac [file] [log] [blame]
Fred Drake3adf79e2001-10-12 19:01:43 +00001\chapter{Concrete Objects Layer \label{concrete}}
2
3
4The functions in this chapter are specific to certain Python object
5types. Passing them an object of the wrong type is not a good idea;
6if you receive an object from a Python program and you are not sure
7that it has the right type, you must perform a type check first;
8for example, to check that an object is a dictionary, use
9\cfunction{PyDict_Check()}. The chapter is structured like the
10``family tree'' of Python object types.
11
12\warning{While the functions described in this chapter carefully check
13the type of the objects which are passed in, many of them do not check
14for \NULL{} being passed instead of a valid object. Allowing \NULL{}
15to be passed in can cause memory access violations and immediate
16termination of the interpreter.}
17
18
19\section{Fundamental Objects \label{fundamental}}
20
Tim Petersf582b822001-12-11 18:51:08 +000021This section describes Python type objects and the singleton object
Fred Drake3adf79e2001-10-12 19:01:43 +000022\code{None}.
23
24
25\subsection{Type Objects \label{typeObjects}}
26
27\obindex{type}
28\begin{ctypedesc}{PyTypeObject}
29 The C structure of the objects used to describe built-in types.
30\end{ctypedesc}
31
32\begin{cvardesc}{PyObject*}{PyType_Type}
33 This is the type object for type objects; it is the same object as
34 \code{types.TypeType} in the Python layer.
35 \withsubitem{(in module types)}{\ttindex{TypeType}}
36\end{cvardesc}
37
38\begin{cfuncdesc}{int}{PyType_Check}{PyObject *o}
Fred Drakee3c764b2002-04-10 17:52:52 +000039 Returns true if the object \var{o} is a type object, including
40 instances of types derived from the standard type object. Returns
41 false in all other cases.
42\end{cfuncdesc}
43
44\begin{cfuncdesc}{int}{PyType_CheckExact}{PyObject *o}
45 Returns true if the object \var{o} is a type object, but not a
46 subtype of the standard type object. Returns false in all other
47 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}
52 Returns true if the type object \var{o} sets the feature
53 \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}
63 Returns true if \var{a} is a subtype of \var{b}.
64 \versionadded{2.2}
65\end{cfuncdesc}
66
67\begin{cfuncdesc}{PyObject*}{PyType_GenericAlloc}{PyTypeObject *type,
68 int nitems}
69 \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
80 adding inherited slots from a type's base class. Returns \code{0}
81 on success, or returns \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}
Fred Drake28eae082003-11-10 14:48:48 +0000101 Properly handles returning \cdata{Py_None} from within a C function.
Brett Cannon35d83602003-11-09 04:15:30 +0000102\end{csimplemacrodesc}
103
Fred Drake3adf79e2001-10-12 19:01:43 +0000104
105\section{Numeric Objects \label{numericObjects}}
106
107\obindex{numeric}
108
109
110\subsection{Plain Integer Objects \label{intObjects}}
111
112\obindex{integer}
113\begin{ctypedesc}{PyIntObject}
114 This subtype of \ctype{PyObject} represents a Python integer
115 object.
116\end{ctypedesc}
117
118\begin{cvardesc}{PyTypeObject}{PyInt_Type}
Tim Petersf582b822001-12-11 18:51:08 +0000119 This instance of \ctype{PyTypeObject} represents the Python plain
Fred Drake3adf79e2001-10-12 19:01:43 +0000120 integer type. This is the same object as \code{types.IntType}.
121 \withsubitem{(in modules types)}{\ttindex{IntType}}
122\end{cvardesc}
123
Andrew M. Kuchling4eb1a002004-08-07 20:19:24 +0000124\begin{cfuncdesc}{int}{PyInt_Check}{PyObject *o}
Fred Drake3adf79e2001-10-12 19:01:43 +0000125 Returns true if \var{o} is of type \cdata{PyInt_Type} or a subtype
126 of \cdata{PyInt_Type}.
127 \versionchanged[Allowed subtypes to be accepted]{2.2}
128\end{cfuncdesc}
129
Andrew M. Kuchling4eb1a002004-08-07 20:19:24 +0000130\begin{cfuncdesc}{int}{PyInt_CheckExact}{PyObject *o}
Fred Drake3adf79e2001-10-12 19:01:43 +0000131 Returns true if \var{o} is of type \cdata{PyInt_Type}, but not a
132 subtype of \cdata{PyInt_Type}.
133 \versionadded{2.2}
134\end{cfuncdesc}
135
Skip Montanaro1ff49a72003-02-03 05:13:24 +0000136\begin{cfuncdesc}{PyObject*}{PyInt_FromString}{char *str, char **pend,
137 int base}
138 Return a new \ctype{PyIntObject} or \ctype{PyLongObject} based on the
139 string value in \var{str}, which is interpreted according to the radix in
Tim Peters9ddf40b2004-06-20 22:41:32 +0000140 \var{base}. If \var{pend} is non-\NULL{}, \code{*\var{pend}} will point to
Skip Montanaro1ff49a72003-02-03 05:13:24 +0000141 the first character in \var{str} which follows the representation of the
142 number. If \var{base} is \code{0}, the radix will be determined based on
143 the leading characters of \var{str}: if \var{str} starts with \code{'0x'}
144 or \code{'0X'}, radix 16 will be used; if \var{str} starts with
145 \code{'0'}, radix 8 will be used; otherwise radix 10 will be used. If
146 \var{base} is not \code{0}, it must be between \code{2} and \code{36},
147 inclusive. Leading spaces are ignored. If there are no digits,
148 \exception{ValueError} will be raised. If the string represents a number
149 too large to be contained within the machine's \ctype{long int} type and
150 overflow warnings are being suppressed, a \ctype{PyLongObject} will be
151 returned. If overflow warnings are not being suppressed, \NULL{} will be
152 returned in this case.
153\end{cfuncdesc}
154
Fred Drake3adf79e2001-10-12 19:01:43 +0000155\begin{cfuncdesc}{PyObject*}{PyInt_FromLong}{long ival}
156 Creates a new integer object with a value of \var{ival}.
157
158 The current implementation keeps an array of integer objects for all
159 integers between \code{-1} and \code{100}, when you create an int in
160 that range you actually just get back a reference to the existing
161 object. So it should be possible to change the value of \code{1}. I
162 suspect the behaviour of Python in this case is undefined. :-)
163\end{cfuncdesc}
164
165\begin{cfuncdesc}{long}{PyInt_AsLong}{PyObject *io}
166 Will first attempt to cast the object to a \ctype{PyIntObject}, if
167 it is not already one, and then return its value.
168\end{cfuncdesc}
169
170\begin{cfuncdesc}{long}{PyInt_AS_LONG}{PyObject *io}
171 Returns the value of the object \var{io}. No error checking is
172 performed.
173\end{cfuncdesc}
174
Thomas Heller34d7f092003-04-23 19:51:05 +0000175\begin{cfuncdesc}{unsigned long}{PyInt_AsUnsignedLongMask}{PyObject *io}
176 Will first attempt to cast the object to a \ctype{PyIntObject} or
Fred Drakec22b2992003-04-23 20:38:41 +0000177 \ctype{PyLongObject}, if it is not already one, and then return its
Thomas Heller34d7f092003-04-23 19:51:05 +0000178 value as unsigned long. This function does not check for overflow.
179 \versionadded{2.3}
180\end{cfuncdesc}
181
Thomas Hellerfe080832004-07-23 14:49:52 +0000182\begin{cfuncdesc}{unsigned long long}{PyInt_AsUnsignedLongLongMask}{PyObject *io}
Thomas Heller34d7f092003-04-23 19:51:05 +0000183 Will first attempt to cast the object to a \ctype{PyIntObject} or
Fred Drakec22b2992003-04-23 20:38:41 +0000184 \ctype{PyLongObject}, if it is not already one, and then return its
Thomas Heller34d7f092003-04-23 19:51:05 +0000185 value as unsigned long long, without checking for overflow.
186 \versionadded{2.3}
187\end{cfuncdesc}
188
Fred Drake3adf79e2001-10-12 19:01:43 +0000189\begin{cfuncdesc}{long}{PyInt_GetMax}{}
190 Returns the system's idea of the largest integer it can handle
191 (\constant{LONG_MAX}\ttindex{LONG_MAX}, as defined in the system
192 header files).
193\end{cfuncdesc}
194
Fred Drake2be406b2004-08-03 16:02:35 +0000195\subsection{Boolean Objects \label{boolObjects}}
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000196
197Booleans in Python are implemented as a subclass of integers. There
198are only two booleans, \constant{Py_False} and \constant{Py_True}. As
199such, the normal creation and deletion functions don't apply to
200booleans. The following macros are available, however.
201
Andrew M. Kuchling4eb1a002004-08-07 20:19:24 +0000202\begin{cfuncdesc}{int}{PyBool_Check}{PyObject *o}
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000203 Returns true if \var{o} is of type \cdata{PyBool_Type}.
204 \versionadded{2.3}
205\end{cfuncdesc}
206
Skip Montanaro6d3db702004-07-29 02:16:04 +0000207\begin{cvardesc}{PyObject*}{Py_False}
208 The Python \code{False} object. This object has no methods. It needs to
209 be treated just like any other object with respect to reference counts.
210\end{cvardesc}
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000211
Skip Montanaro6d3db702004-07-29 02:16:04 +0000212\begin{cvardesc}{PyObject*}{Py_True}
213 The Python \code{True} object. This object has no methods. It needs to
214 be treated just like any other object with respect to reference counts.
215\end{cvardesc}
216
217\begin{csimplemacrodesc}{Py_RETURN_FALSE}
218 Return \constant{Py_False} from a function, properly incrementing its
219 reference count.
220\versionadded{2.4}
221\end{csimplemacrodesc}
222
223\begin{csimplemacrodesc}{Py_RETURN_TRUE}
Andrew M. Kuchling4eb1a002004-08-07 20:19:24 +0000224 Return \constant{Py_True} from a function, properly incrementing its
225 reference count.
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000226\versionadded{2.4}
Skip Montanaro6d3db702004-07-29 02:16:04 +0000227\end{csimplemacrodesc}
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000228
Skip Montanaro33ee76a2004-07-28 14:17:04 +0000229\begin{cfuncdesc}{int}{PyBool_FromLong}{long v}
230Returns \constant{Py_True} or \constant{Py_False} depending on the
231truth value of \var{v}.
232\versionadded{2.3}
233\end{cfuncdesc}
Fred Drake3adf79e2001-10-12 19:01:43 +0000234
235\subsection{Long Integer Objects \label{longObjects}}
236
237\obindex{long integer}
238\begin{ctypedesc}{PyLongObject}
239 This subtype of \ctype{PyObject} represents a Python long integer
240 object.
241\end{ctypedesc}
242
243\begin{cvardesc}{PyTypeObject}{PyLong_Type}
244 This instance of \ctype{PyTypeObject} represents the Python long
245 integer type. This is the same object as \code{types.LongType}.
246 \withsubitem{(in modules types)}{\ttindex{LongType}}
247\end{cvardesc}
248
249\begin{cfuncdesc}{int}{PyLong_Check}{PyObject *p}
250 Returns true if its argument is a \ctype{PyLongObject} or a subtype
251 of \ctype{PyLongObject}.
252 \versionchanged[Allowed subtypes to be accepted]{2.2}
253\end{cfuncdesc}
254
255\begin{cfuncdesc}{int}{PyLong_CheckExact}{PyObject *p}
256 Returns true if its argument is a \ctype{PyLongObject}, but not a
257 subtype of \ctype{PyLongObject}.
258 \versionadded{2.2}
259\end{cfuncdesc}
260
261\begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
262 Returns a new \ctype{PyLongObject} object from \var{v}, or \NULL{}
263 on failure.
264\end{cfuncdesc}
265
266\begin{cfuncdesc}{PyObject*}{PyLong_FromUnsignedLong}{unsigned long v}
267 Returns a new \ctype{PyLongObject} object from a C \ctype{unsigned
268 long}, or \NULL{} on failure.
269\end{cfuncdesc}
270
271\begin{cfuncdesc}{PyObject*}{PyLong_FromLongLong}{long long v}
272 Returns a new \ctype{PyLongObject} object from a C \ctype{long long},
273 or \NULL{} on failure.
274\end{cfuncdesc}
275
276\begin{cfuncdesc}{PyObject*}{PyLong_FromUnsignedLongLong}{unsigned long long v}
277 Returns a new \ctype{PyLongObject} object from a C \ctype{unsigned
278 long long}, or \NULL{} on failure.
279\end{cfuncdesc}
280
281\begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
282 Returns a new \ctype{PyLongObject} object from the integer part of
283 \var{v}, or \NULL{} on failure.
284\end{cfuncdesc}
285
286\begin{cfuncdesc}{PyObject*}{PyLong_FromString}{char *str, char **pend,
287 int base}
288 Return a new \ctype{PyLongObject} based on the string value in
289 \var{str}, which is interpreted according to the radix in
Tim Peters9ddf40b2004-06-20 22:41:32 +0000290 \var{base}. If \var{pend} is non-\NULL{}, \code{*\var{pend}} will
Fred Drake3adf79e2001-10-12 19:01:43 +0000291 point to the first character in \var{str} which follows the
292 representation of the number. If \var{base} is \code{0}, the radix
Skip Montanaro1ff49a72003-02-03 05:13:24 +0000293 will be determined based on the leading characters of \var{str}: if
Fred Drake3adf79e2001-10-12 19:01:43 +0000294 \var{str} starts with \code{'0x'} or \code{'0X'}, radix 16 will be
295 used; if \var{str} starts with \code{'0'}, radix 8 will be used;
296 otherwise radix 10 will be used. If \var{base} is not \code{0}, it
297 must be between \code{2} and \code{36}, inclusive. Leading spaces
298 are ignored. If there are no digits, \exception{ValueError} will be
299 raised.
300\end{cfuncdesc}
301
302\begin{cfuncdesc}{PyObject*}{PyLong_FromUnicode}{Py_UNICODE *u,
303 int length, int base}
304 Convert a sequence of Unicode digits to a Python long integer
305 value. The first parameter, \var{u}, points to the first character
306 of the Unicode string, \var{length} gives the number of characters,
307 and \var{base} is the radix for the conversion. The radix must be
308 in the range [2, 36]; if it is out of range, \exception{ValueError}
309 will be raised.
310 \versionadded{1.6}
311\end{cfuncdesc}
312
313\begin{cfuncdesc}{PyObject*}{PyLong_FromVoidPtr}{void *p}
314 Create a Python integer or long integer from the pointer \var{p}.
315 The pointer value can be retrieved from the resulting value using
316 \cfunction{PyLong_AsVoidPtr()}.
317 \versionadded{1.5.2}
318\end{cfuncdesc}
319
320\begin{cfuncdesc}{long}{PyLong_AsLong}{PyObject *pylong}
321 Returns a C \ctype{long} representation of the contents of
322 \var{pylong}. If \var{pylong} is greater than
323 \constant{LONG_MAX}\ttindex{LONG_MAX}, an \exception{OverflowError}
324 is raised.
325 \withsubitem{(built-in exception)}{\ttindex{OverflowError}}
326\end{cfuncdesc}
327
328\begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLong}{PyObject *pylong}
329 Returns a C \ctype{unsigned long} representation of the contents of
330 \var{pylong}. If \var{pylong} is greater than
331 \constant{ULONG_MAX}\ttindex{ULONG_MAX}, an
332 \exception{OverflowError} is raised.
Tim Petersf582b822001-12-11 18:51:08 +0000333 \withsubitem{(built-in exception)}{\ttindex{OverflowError}}
Fred Drake3adf79e2001-10-12 19:01:43 +0000334\end{cfuncdesc}
335
336\begin{cfuncdesc}{long long}{PyLong_AsLongLong}{PyObject *pylong}
337 Return a C \ctype{long long} from a Python long integer. If
338 \var{pylong} cannot be represented as a \ctype{long long}, an
339 \exception{OverflowError} will be raised.
340 \versionadded{2.2}
341\end{cfuncdesc}
342
343\begin{cfuncdesc}{unsigned long long}{PyLong_AsUnsignedLongLong}{PyObject
344 *pylong}
345 Return a C \ctype{unsigned long long} from a Python long integer.
346 If \var{pylong} cannot be represented as an \ctype{unsigned long
347 long}, an \exception{OverflowError} will be raised if the value is
348 positive, or a \exception{TypeError} will be raised if the value is
349 negative.
350 \versionadded{2.2}
351\end{cfuncdesc}
352
Thomas Heller34d7f092003-04-23 19:51:05 +0000353\begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLongMask}{PyObject *io}
354 Return a C \ctype{unsigned long} from a Python long integer, without
355 checking for overflow.
356 \versionadded{2.3}
357\end{cfuncdesc}
358
359\begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLongLongMask}{PyObject *io}
360 Return a C \ctype{unsigned long long} from a Python long integer, without
361 checking for overflow.
362 \versionadded{2.3}
363\end{cfuncdesc}
364
Fred Drake3adf79e2001-10-12 19:01:43 +0000365\begin{cfuncdesc}{double}{PyLong_AsDouble}{PyObject *pylong}
366 Returns a C \ctype{double} representation of the contents of
367 \var{pylong}. If \var{pylong} cannot be approximately represented
368 as a \ctype{double}, an \exception{OverflowError} exception is
369 raised and \code{-1.0} will be returned.
370\end{cfuncdesc}
371
372\begin{cfuncdesc}{void*}{PyLong_AsVoidPtr}{PyObject *pylong}
373 Convert a Python integer or long integer \var{pylong} to a C
374 \ctype{void} pointer. If \var{pylong} cannot be converted, an
375 \exception{OverflowError} will be raised. This is only assured to
376 produce a usable \ctype{void} pointer for values created with
377 \cfunction{PyLong_FromVoidPtr()}.
378 \versionadded{1.5.2}
379\end{cfuncdesc}
380
381
382\subsection{Floating Point Objects \label{floatObjects}}
383
384\obindex{floating point}
385\begin{ctypedesc}{PyFloatObject}
386 This subtype of \ctype{PyObject} represents a Python floating point
387 object.
388\end{ctypedesc}
389
390\begin{cvardesc}{PyTypeObject}{PyFloat_Type}
391 This instance of \ctype{PyTypeObject} represents the Python floating
392 point type. This is the same object as \code{types.FloatType}.
393 \withsubitem{(in modules types)}{\ttindex{FloatType}}
394\end{cvardesc}
395
396\begin{cfuncdesc}{int}{PyFloat_Check}{PyObject *p}
397 Returns true if its argument is a \ctype{PyFloatObject} or a subtype
398 of \ctype{PyFloatObject}.
399 \versionchanged[Allowed subtypes to be accepted]{2.2}
400\end{cfuncdesc}
401
402\begin{cfuncdesc}{int}{PyFloat_CheckExact}{PyObject *p}
403 Returns true if its argument is a \ctype{PyFloatObject}, but not a
404 subtype of \ctype{PyFloatObject}.
405 \versionadded{2.2}
406\end{cfuncdesc}
407
Skip Montanaro1ff49a72003-02-03 05:13:24 +0000408\begin{cfuncdesc}{PyObject*}{PyFloat_FromString}{PyObject *str, char **pend}
Skip Montanaroae31e9b2003-02-03 03:56:36 +0000409 Creates a \ctype{PyFloatObject} object based on the string value in
Skip Montanaro1ff49a72003-02-03 05:13:24 +0000410 \var{str}, or \NULL{} on failure. The \var{pend} argument is ignored. It
411 remains only for backward compatibility.
Skip Montanaroae31e9b2003-02-03 03:56:36 +0000412\end{cfuncdesc}
413
Fred Drake3adf79e2001-10-12 19:01:43 +0000414\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
415 Creates a \ctype{PyFloatObject} object from \var{v}, or \NULL{} on
416 failure.
417\end{cfuncdesc}
418
419\begin{cfuncdesc}{double}{PyFloat_AsDouble}{PyObject *pyfloat}
420 Returns a C \ctype{double} representation of the contents of
421 \var{pyfloat}.
422\end{cfuncdesc}
423
424\begin{cfuncdesc}{double}{PyFloat_AS_DOUBLE}{PyObject *pyfloat}
425 Returns a C \ctype{double} representation of the contents of
426 \var{pyfloat}, but without error checking.
427\end{cfuncdesc}
428
429
430\subsection{Complex Number Objects \label{complexObjects}}
431
432\obindex{complex number}
433Python's complex number objects are implemented as two distinct types
434when viewed from the C API: one is the Python object exposed to
435Python programs, and the other is a C structure which represents the
436actual complex number value. The API provides functions for working
437with both.
438
439\subsubsection{Complex Numbers as C Structures}
440
441Note that the functions which accept these structures as parameters
442and return them as results do so \emph{by value} rather than
443dereferencing them through pointers. This is consistent throughout
444the API.
445
446\begin{ctypedesc}{Py_complex}
447 The C structure which corresponds to the value portion of a Python
448 complex number object. Most of the functions for dealing with
449 complex number objects use structures of this type as input or
450 output values, as appropriate. It is defined as:
451
452\begin{verbatim}
453typedef struct {
454 double real;
455 double imag;
456} Py_complex;
457\end{verbatim}
458\end{ctypedesc}
459
460\begin{cfuncdesc}{Py_complex}{_Py_c_sum}{Py_complex left, Py_complex right}
461 Return the sum of two complex numbers, using the C
462 \ctype{Py_complex} representation.
463\end{cfuncdesc}
464
465\begin{cfuncdesc}{Py_complex}{_Py_c_diff}{Py_complex left, Py_complex right}
466 Return the difference between two complex numbers, using the C
467 \ctype{Py_complex} representation.
468\end{cfuncdesc}
469
470\begin{cfuncdesc}{Py_complex}{_Py_c_neg}{Py_complex complex}
471 Return the negation of the complex number \var{complex}, using the C
472 \ctype{Py_complex} representation.
473\end{cfuncdesc}
474
475\begin{cfuncdesc}{Py_complex}{_Py_c_prod}{Py_complex left, Py_complex right}
476 Return the product of two complex numbers, using the C
477 \ctype{Py_complex} representation.
478\end{cfuncdesc}
479
480\begin{cfuncdesc}{Py_complex}{_Py_c_quot}{Py_complex dividend,
481 Py_complex divisor}
482 Return the quotient of two complex numbers, using the C
483 \ctype{Py_complex} representation.
484\end{cfuncdesc}
485
486\begin{cfuncdesc}{Py_complex}{_Py_c_pow}{Py_complex num, Py_complex exp}
487 Return the exponentiation of \var{num} by \var{exp}, using the C
488 \ctype{Py_complex} representation.
489\end{cfuncdesc}
490
491
492\subsubsection{Complex Numbers as Python Objects}
493
494\begin{ctypedesc}{PyComplexObject}
495 This subtype of \ctype{PyObject} represents a Python complex number
496 object.
497\end{ctypedesc}
498
499\begin{cvardesc}{PyTypeObject}{PyComplex_Type}
500 This instance of \ctype{PyTypeObject} represents the Python complex
501 number type.
502\end{cvardesc}
503
504\begin{cfuncdesc}{int}{PyComplex_Check}{PyObject *p}
505 Returns true if its argument is a \ctype{PyComplexObject} or a
506 subtype of \ctype{PyComplexObject}.
507 \versionchanged[Allowed subtypes to be accepted]{2.2}
508\end{cfuncdesc}
509
510\begin{cfuncdesc}{int}{PyComplex_CheckExact}{PyObject *p}
511 Returns true if its argument is a \ctype{PyComplexObject}, but not a
512 subtype of \ctype{PyComplexObject}.
513 \versionadded{2.2}
514\end{cfuncdesc}
515
516\begin{cfuncdesc}{PyObject*}{PyComplex_FromCComplex}{Py_complex v}
517 Create a new Python complex number object from a C
518 \ctype{Py_complex} value.
519\end{cfuncdesc}
520
521\begin{cfuncdesc}{PyObject*}{PyComplex_FromDoubles}{double real, double imag}
522 Returns a new \ctype{PyComplexObject} object from \var{real} and
523 \var{imag}.
524\end{cfuncdesc}
525
526\begin{cfuncdesc}{double}{PyComplex_RealAsDouble}{PyObject *op}
527 Returns the real part of \var{op} as a C \ctype{double}.
528\end{cfuncdesc}
529
530\begin{cfuncdesc}{double}{PyComplex_ImagAsDouble}{PyObject *op}
531 Returns the imaginary part of \var{op} as a C \ctype{double}.
532\end{cfuncdesc}
533
534\begin{cfuncdesc}{Py_complex}{PyComplex_AsCComplex}{PyObject *op}
535 Returns the \ctype{Py_complex} value of the complex number
536 \var{op}.
537\end{cfuncdesc}
538
539
540
541\section{Sequence Objects \label{sequenceObjects}}
542
543\obindex{sequence}
Tim Petersf582b822001-12-11 18:51:08 +0000544Generic operations on sequence objects were discussed in the previous
545chapter; this section deals with the specific kinds of sequence
Fred Drake3adf79e2001-10-12 19:01:43 +0000546objects that are intrinsic to the Python language.
547
548
549\subsection{String Objects \label{stringObjects}}
550
551These functions raise \exception{TypeError} when expecting a string
552parameter and are called with a non-string parameter.
553
554\obindex{string}
555\begin{ctypedesc}{PyStringObject}
556 This subtype of \ctype{PyObject} represents a Python string object.
557\end{ctypedesc}
558
559\begin{cvardesc}{PyTypeObject}{PyString_Type}
560 This instance of \ctype{PyTypeObject} represents the Python string
561 type; it is the same object as \code{types.TypeType} in the Python
562 layer.
563 \withsubitem{(in module types)}{\ttindex{StringType}}.
564\end{cvardesc}
565
566\begin{cfuncdesc}{int}{PyString_Check}{PyObject *o}
567 Returns true if the object \var{o} is a string object or an instance
568 of a subtype of the string type.
569 \versionchanged[Allowed subtypes to be accepted]{2.2}
570\end{cfuncdesc}
571
572\begin{cfuncdesc}{int}{PyString_CheckExact}{PyObject *o}
573 Returns true if the object \var{o} is a string object, but not an
574 instance of a subtype of the string type.
575 \versionadded{2.2}
576\end{cfuncdesc}
577
578\begin{cfuncdesc}{PyObject*}{PyString_FromString}{const char *v}
579 Returns a new string object with the value \var{v} on success, and
Tim Peters9ddf40b2004-06-20 22:41:32 +0000580 \NULL{} on failure. The parameter \var{v} must not be \NULL{}; it
Fred Drake32a35872001-12-06 20:38:15 +0000581 will not be checked.
Fred Drake3adf79e2001-10-12 19:01:43 +0000582\end{cfuncdesc}
583
584\begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{const char *v,
585 int len}
586 Returns a new string object with the value \var{v} and length
587 \var{len} on success, and \NULL{} on failure. If \var{v} is
Tim Peters9ddf40b2004-06-20 22:41:32 +0000588 \NULL{}, the contents of the string are uninitialized.
Fred Drake3adf79e2001-10-12 19:01:43 +0000589\end{cfuncdesc}
590
591\begin{cfuncdesc}{PyObject*}{PyString_FromFormat}{const char *format, ...}
592 Takes a C \cfunction{printf()}-style \var{format} string and a
593 variable number of arguments, calculates the size of the resulting
594 Python string and returns a string with the values formatted into
595 it. The variable arguments must be C types and must correspond
596 exactly to the format characters in the \var{format} string. The
597 following format characters are allowed:
598
599 \begin{tableiii}{l|l|l}{member}{Format Characters}{Type}{Comment}
600 \lineiii{\%\%}{\emph{n/a}}{The literal \% character.}
601 \lineiii{\%c}{int}{A single character, represented as an C int.}
602 \lineiii{\%d}{int}{Exactly equivalent to \code{printf("\%d")}.}
603 \lineiii{\%ld}{long}{Exactly equivalent to \code{printf("\%ld")}.}
604 \lineiii{\%i}{int}{Exactly equivalent to \code{printf("\%i")}.}
605 \lineiii{\%x}{int}{Exactly equivalent to \code{printf("\%x")}.}
606 \lineiii{\%s}{char*}{A null-terminated C character array.}
607 \lineiii{\%p}{void*}{The hex representation of a C pointer.
608 Mostly equivalent to \code{printf("\%p")} except that it is
609 guaranteed to start with the literal \code{0x} regardless of
610 what the platform's \code{printf} yields.}
611 \end{tableiii}
612\end{cfuncdesc}
613
614\begin{cfuncdesc}{PyObject*}{PyString_FromFormatV}{const char *format,
615 va_list vargs}
616 Identical to \function{PyString_FromFormat()} except that it takes
617 exactly two arguments.
618\end{cfuncdesc}
619
620\begin{cfuncdesc}{int}{PyString_Size}{PyObject *string}
621 Returns the length of the string in string object \var{string}.
622\end{cfuncdesc}
623
624\begin{cfuncdesc}{int}{PyString_GET_SIZE}{PyObject *string}
625 Macro form of \cfunction{PyString_Size()} but without error
626 checking.
627\end{cfuncdesc}
628
629\begin{cfuncdesc}{char*}{PyString_AsString}{PyObject *string}
Fred Drake4b247262002-10-22 20:20:20 +0000630 Returns a NUL-terminated representation of the contents of
Fred Drake3adf79e2001-10-12 19:01:43 +0000631 \var{string}. The pointer refers to the internal buffer of
632 \var{string}, not a copy. The data must not be modified in any way,
633 unless the string was just created using
634 \code{PyString_FromStringAndSize(NULL, \var{size})}.
Fred Drake4b247262002-10-22 20:20:20 +0000635 It must not be deallocated. If \var{string} is a Unicode object,
636 this function computes the default encoding of \var{string} and
637 operates on that. If \var{string} is not a string object at all,
638 \cfunction{PyString_AsString()} returns \NULL{} and raises
639 \exception{TypeError}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000640\end{cfuncdesc}
641
642\begin{cfuncdesc}{char*}{PyString_AS_STRING}{PyObject *string}
643 Macro form of \cfunction{PyString_AsString()} but without error
Fred Drake4b247262002-10-22 20:20:20 +0000644 checking. Only string objects are supported; no Unicode objects
645 should be passed.
Fred Drake3adf79e2001-10-12 19:01:43 +0000646\end{cfuncdesc}
647
648\begin{cfuncdesc}{int}{PyString_AsStringAndSize}{PyObject *obj,
649 char **buffer,
650 int *length}
Fred Drake4b247262002-10-22 20:20:20 +0000651 Returns a NUL-terminated representation of the contents of the
Fred Drake3adf79e2001-10-12 19:01:43 +0000652 object \var{obj} through the output variables \var{buffer} and
653 \var{length}.
654
655 The function accepts both string and Unicode objects as input. For
656 Unicode objects it returns the default encoded version of the
Tim Peters9ddf40b2004-06-20 22:41:32 +0000657 object. If \var{length} is \NULL{}, the resulting buffer may not
Fred Drake4b247262002-10-22 20:20:20 +0000658 contain NUL characters; if it does, the function returns \code{-1}
659 and a \exception{TypeError} is raised.
Fred Drake3adf79e2001-10-12 19:01:43 +0000660
661 The buffer refers to an internal string buffer of \var{obj}, not a
662 copy. The data must not be modified in any way, unless the string
663 was just created using \code{PyString_FromStringAndSize(NULL,
Fred Drake4b247262002-10-22 20:20:20 +0000664 \var{size})}. It must not be deallocated. If \var{string} is a
665 Unicode object, this function computes the default encoding of
666 \var{string} and operates on that. If \var{string} is not a string
667 object at all, \cfunction{PyString_AsString()} returns \NULL{} and
668 raises \exception{TypeError}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000669\end{cfuncdesc}
670
671\begin{cfuncdesc}{void}{PyString_Concat}{PyObject **string,
672 PyObject *newpart}
673 Creates a new string object in \var{*string} containing the contents
674 of \var{newpart} appended to \var{string}; the caller will own the
675 new reference. The reference to the old value of \var{string} will
676 be stolen. If the new string cannot be created, the old reference
677 to \var{string} will still be discarded and the value of
Tim Peters9ddf40b2004-06-20 22:41:32 +0000678 \var{*string} will be set to \NULL{}; the appropriate exception will
Fred Drake3adf79e2001-10-12 19:01:43 +0000679 be set.
680\end{cfuncdesc}
681
682\begin{cfuncdesc}{void}{PyString_ConcatAndDel}{PyObject **string,
683 PyObject *newpart}
684 Creates a new string object in \var{*string} containing the contents
685 of \var{newpart} appended to \var{string}. This version decrements
686 the reference count of \var{newpart}.
687\end{cfuncdesc}
688
689\begin{cfuncdesc}{int}{_PyString_Resize}{PyObject **string, int newsize}
690 A way to resize a string object even though it is ``immutable''.
691 Only use this to build up a brand new string object; don't use this
Tim Peters5de98422002-04-27 18:44:32 +0000692 if the string may already be known in other parts of the code. It
693 is an error to call this function if the refcount on the input string
694 object is not one.
695 Pass the address of an existing string object as an lvalue (it may
696 be written into), and the new size desired. On success, \var{*string}
Fred Drake432425e2002-04-29 15:17:16 +0000697 holds the resized string object and \code{0} is returned; the address in
Tim Peters5de98422002-04-27 18:44:32 +0000698 \var{*string} may differ from its input value. If the
699 reallocation fails, the original string object at \var{*string} is
700 deallocated, \var{*string} is set to \NULL{}, a memory exception is set,
Fred Drake432425e2002-04-29 15:17:16 +0000701 and \code{-1} is returned.
Fred Drake3adf79e2001-10-12 19:01:43 +0000702\end{cfuncdesc}
703
704\begin{cfuncdesc}{PyObject*}{PyString_Format}{PyObject *format,
705 PyObject *args}
706 Returns a new string object from \var{format} and \var{args}.
707 Analogous to \code{\var{format} \%\ \var{args}}. The \var{args}
708 argument must be a tuple.
709\end{cfuncdesc}
710
711\begin{cfuncdesc}{void}{PyString_InternInPlace}{PyObject **string}
712 Intern the argument \var{*string} in place. The argument must be
713 the address of a pointer variable pointing to a Python string
714 object. If there is an existing interned string that is the same as
715 \var{*string}, it sets \var{*string} to it (decrementing the
716 reference count of the old string object and incrementing the
717 reference count of the interned string object), otherwise it leaves
718 \var{*string} alone and interns it (incrementing its reference
719 count). (Clarification: even though there is a lot of talk about
720 reference counts, think of this function as reference-count-neutral;
721 you own the object after the call if and only if you owned it before
722 the call.)
723\end{cfuncdesc}
724
725\begin{cfuncdesc}{PyObject*}{PyString_InternFromString}{const char *v}
726 A combination of \cfunction{PyString_FromString()} and
727 \cfunction{PyString_InternInPlace()}, returning either a new string
728 object that has been interned, or a new (``owned'') reference to an
729 earlier interned string object with the same value.
730\end{cfuncdesc}
731
732\begin{cfuncdesc}{PyObject*}{PyString_Decode}{const char *s,
733 int size,
734 const char *encoding,
735 const char *errors}
736 Creates an object by decoding \var{size} bytes of the encoded
737 buffer \var{s} using the codec registered for
738 \var{encoding}. \var{encoding} and \var{errors} have the same
739 meaning as the parameters of the same name in the
740 \function{unicode()} built-in function. The codec to be used is
741 looked up using the Python codec registry. Returns \NULL{} if
742 an exception was raised by the codec.
743\end{cfuncdesc}
744
745\begin{cfuncdesc}{PyObject*}{PyString_AsDecodedObject}{PyObject *str,
746 const char *encoding,
747 const char *errors}
748 Decodes a string object by passing it to the codec registered for
749 \var{encoding} and returns the result as Python
750 object. \var{encoding} and \var{errors} have the same meaning as the
751 parameters of the same name in the string \method{encode()} method.
752 The codec to be used is looked up using the Python codec registry.
753 Returns \NULL{} if an exception was raised by the codec.
754\end{cfuncdesc}
755
756\begin{cfuncdesc}{PyObject*}{PyString_Encode}{const char *s,
757 int size,
758 const char *encoding,
759 const char *errors}
760 Encodes the \ctype{char} buffer of the given size by passing it to
761 the codec registered for \var{encoding} and returns a Python object.
762 \var{encoding} and \var{errors} have the same meaning as the
763 parameters of the same name in the string \method{encode()} method.
764 The codec to be used is looked up using the Python codec
765 registry. Returns \NULL{} if an exception was raised by the
766 codec.
767\end{cfuncdesc}
768
769\begin{cfuncdesc}{PyObject*}{PyString_AsEncodedObject}{PyObject *str,
770 const char *encoding,
771 const char *errors}
772 Encodes a string object using the codec registered for
773 \var{encoding} and returns the result as Python object.
774 \var{encoding} and \var{errors} have the same meaning as the
775 parameters of the same name in the string \method{encode()} method.
776 The codec to be used is looked up using the Python codec registry.
777 Returns \NULL{} if an exception was raised by the codec.
778\end{cfuncdesc}
779
780
781\subsection{Unicode Objects \label{unicodeObjects}}
782\sectionauthor{Marc-Andre Lemburg}{mal@lemburg.com}
783
784%--- Unicode Type -------------------------------------------------------
785
786These are the basic Unicode object types used for the Unicode
787implementation in Python:
788
789\begin{ctypedesc}{Py_UNICODE}
790 This type represents a 16-bit unsigned storage type which is used by
791 Python internally as basis for holding Unicode ordinals. On
792 platforms where \ctype{wchar_t} is available and also has 16-bits,
793 \ctype{Py_UNICODE} is a typedef alias for \ctype{wchar_t} to enhance
794 native platform compatibility. On all other platforms,
795 \ctype{Py_UNICODE} is a typedef alias for \ctype{unsigned short}.
796\end{ctypedesc}
797
798\begin{ctypedesc}{PyUnicodeObject}
799 This subtype of \ctype{PyObject} represents a Python Unicode object.
800\end{ctypedesc}
801
802\begin{cvardesc}{PyTypeObject}{PyUnicode_Type}
803 This instance of \ctype{PyTypeObject} represents the Python Unicode
804 type.
805\end{cvardesc}
806
807The following APIs are really C macros and can be used to do fast
808checks and to access internal read-only data of Unicode objects:
809
810\begin{cfuncdesc}{int}{PyUnicode_Check}{PyObject *o}
811 Returns true if the object \var{o} is a Unicode object or an
812 instance of a Unicode subtype.
813 \versionchanged[Allowed subtypes to be accepted]{2.2}
814\end{cfuncdesc}
815
816\begin{cfuncdesc}{int}{PyUnicode_CheckExact}{PyObject *o}
817 Returns true if the object \var{o} is a Unicode object, but not an
818 instance of a subtype.
819 \versionadded{2.2}
820\end{cfuncdesc}
821
822\begin{cfuncdesc}{int}{PyUnicode_GET_SIZE}{PyObject *o}
823 Returns the size of the object. \var{o} has to be a
824 \ctype{PyUnicodeObject} (not checked).
825\end{cfuncdesc}
826
827\begin{cfuncdesc}{int}{PyUnicode_GET_DATA_SIZE}{PyObject *o}
828 Returns the size of the object's internal buffer in bytes. \var{o}
829 has to be a \ctype{PyUnicodeObject} (not checked).
830\end{cfuncdesc}
831
832\begin{cfuncdesc}{Py_UNICODE*}{PyUnicode_AS_UNICODE}{PyObject *o}
833 Returns a pointer to the internal \ctype{Py_UNICODE} buffer of the
834 object. \var{o} has to be a \ctype{PyUnicodeObject} (not checked).
835\end{cfuncdesc}
836
837\begin{cfuncdesc}{const char*}{PyUnicode_AS_DATA}{PyObject *o}
838 Returns a pointer to the internal buffer of the object.
839 \var{o} has to be a \ctype{PyUnicodeObject} (not checked).
840\end{cfuncdesc}
841
842% --- Unicode character properties ---------------------------------------
843
844Unicode provides many different character properties. The most often
845needed ones are available through these macros which are mapped to C
846functions depending on the Python configuration.
847
848\begin{cfuncdesc}{int}{Py_UNICODE_ISSPACE}{Py_UNICODE ch}
849 Returns 1/0 depending on whether \var{ch} is a whitespace
850 character.
851\end{cfuncdesc}
852
853\begin{cfuncdesc}{int}{Py_UNICODE_ISLOWER}{Py_UNICODE ch}
854 Returns 1/0 depending on whether \var{ch} is a lowercase character.
855\end{cfuncdesc}
856
857\begin{cfuncdesc}{int}{Py_UNICODE_ISUPPER}{Py_UNICODE ch}
858 Returns 1/0 depending on whether \var{ch} is an uppercase
859 character.
860\end{cfuncdesc}
861
862\begin{cfuncdesc}{int}{Py_UNICODE_ISTITLE}{Py_UNICODE ch}
863 Returns 1/0 depending on whether \var{ch} is a titlecase character.
864\end{cfuncdesc}
865
866\begin{cfuncdesc}{int}{Py_UNICODE_ISLINEBREAK}{Py_UNICODE ch}
867 Returns 1/0 depending on whether \var{ch} is a linebreak character.
868\end{cfuncdesc}
869
870\begin{cfuncdesc}{int}{Py_UNICODE_ISDECIMAL}{Py_UNICODE ch}
871 Returns 1/0 depending on whether \var{ch} is a decimal character.
872\end{cfuncdesc}
873
874\begin{cfuncdesc}{int}{Py_UNICODE_ISDIGIT}{Py_UNICODE ch}
875 Returns 1/0 depending on whether \var{ch} is a digit character.
876\end{cfuncdesc}
877
878\begin{cfuncdesc}{int}{Py_UNICODE_ISNUMERIC}{Py_UNICODE ch}
879 Returns 1/0 depending on whether \var{ch} is a numeric character.
880\end{cfuncdesc}
881
882\begin{cfuncdesc}{int}{Py_UNICODE_ISALPHA}{Py_UNICODE ch}
883 Returns 1/0 depending on whether \var{ch} is an alphabetic
884 character.
885\end{cfuncdesc}
886
887\begin{cfuncdesc}{int}{Py_UNICODE_ISALNUM}{Py_UNICODE ch}
888 Returns 1/0 depending on whether \var{ch} is an alphanumeric
889 character.
890\end{cfuncdesc}
891
892These APIs can be used for fast direct character conversions:
893
894\begin{cfuncdesc}{Py_UNICODE}{Py_UNICODE_TOLOWER}{Py_UNICODE ch}
895 Returns the character \var{ch} converted to lower case.
896\end{cfuncdesc}
897
898\begin{cfuncdesc}{Py_UNICODE}{Py_UNICODE_TOUPPER}{Py_UNICODE ch}
899 Returns the character \var{ch} converted to upper case.
900\end{cfuncdesc}
901
902\begin{cfuncdesc}{Py_UNICODE}{Py_UNICODE_TOTITLE}{Py_UNICODE ch}
903 Returns the character \var{ch} converted to title case.
904\end{cfuncdesc}
905
906\begin{cfuncdesc}{int}{Py_UNICODE_TODECIMAL}{Py_UNICODE ch}
907 Returns the character \var{ch} converted to a decimal positive
908 integer. Returns \code{-1} if this is not possible. Does not raise
909 exceptions.
910\end{cfuncdesc}
911
912\begin{cfuncdesc}{int}{Py_UNICODE_TODIGIT}{Py_UNICODE ch}
913 Returns the character \var{ch} converted to a single digit integer.
914 Returns \code{-1} if this is not possible. Does not raise
915 exceptions.
916\end{cfuncdesc}
917
918\begin{cfuncdesc}{double}{Py_UNICODE_TONUMERIC}{Py_UNICODE ch}
919 Returns the character \var{ch} converted to a (positive) double.
920 Returns \code{-1.0} if this is not possible. Does not raise
921 exceptions.
922\end{cfuncdesc}
923
924% --- Plain Py_UNICODE ---------------------------------------------------
925
926To create Unicode objects and access their basic sequence properties,
927use these APIs:
928
929\begin{cfuncdesc}{PyObject*}{PyUnicode_FromUnicode}{const Py_UNICODE *u,
Tim Petersf582b822001-12-11 18:51:08 +0000930 int size}
Fred Drake3adf79e2001-10-12 19:01:43 +0000931 Create a Unicode Object from the Py_UNICODE buffer \var{u} of the
932 given size. \var{u} may be \NULL{} which causes the contents to be
933 undefined. It is the user's responsibility to fill in the needed
934 data. The buffer is copied into the new object. If the buffer is
Tim Peters9ddf40b2004-06-20 22:41:32 +0000935 not \NULL{}, the return value might be a shared object. Therefore,
Fred Drake3adf79e2001-10-12 19:01:43 +0000936 modification of the resulting Unicode object is only allowed when
Tim Peters9ddf40b2004-06-20 22:41:32 +0000937 \var{u} is \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000938\end{cfuncdesc}
939
940\begin{cfuncdesc}{Py_UNICODE*}{PyUnicode_AsUnicode}{PyObject *unicode}
941 Return a read-only pointer to the Unicode object's internal
942 \ctype{Py_UNICODE} buffer, \NULL{} if \var{unicode} is not a Unicode
943 object.
944\end{cfuncdesc}
945
946\begin{cfuncdesc}{int}{PyUnicode_GetSize}{PyObject *unicode}
947 Return the length of the Unicode object.
948\end{cfuncdesc}
949
950\begin{cfuncdesc}{PyObject*}{PyUnicode_FromEncodedObject}{PyObject *obj,
951 const char *encoding,
952 const char *errors}
953 Coerce an encoded object \var{obj} to an Unicode object and return a
954 reference with incremented refcount.
955
956 Coercion is done in the following way:
957
958\begin{enumerate}
959\item Unicode objects are passed back as-is with incremented
960 refcount. \note{These cannot be decoded; passing a non-\NULL{}
961 value for encoding will result in a \exception{TypeError}.}
962
963\item String and other char buffer compatible objects are decoded
964 according to the given encoding and using the error handling
965 defined by errors. Both can be \NULL{} to have the interface
966 use the default values (see the next section for details).
967
968\item All other objects cause an exception.
969\end{enumerate}
970
971 The API returns \NULL{} if there was an error. The caller is
972 responsible for decref'ing the returned objects.
973\end{cfuncdesc}
974
975\begin{cfuncdesc}{PyObject*}{PyUnicode_FromObject}{PyObject *obj}
976 Shortcut for \code{PyUnicode_FromEncodedObject(obj, NULL, "strict")}
977 which is used throughout the interpreter whenever coercion to
978 Unicode is needed.
979\end{cfuncdesc}
980
981% --- wchar_t support for platforms which support it ---------------------
982
983If the platform supports \ctype{wchar_t} and provides a header file
984wchar.h, Python can interface directly to this type using the
985following functions. Support is optimized if Python's own
986\ctype{Py_UNICODE} type is identical to the system's \ctype{wchar_t}.
987
988\begin{cfuncdesc}{PyObject*}{PyUnicode_FromWideChar}{const wchar_t *w,
989 int size}
Thomas Heller541703b2002-04-29 17:28:43 +0000990 Create a Unicode object from the \ctype{wchar_t} buffer \var{w} of
Fred Drake3adf79e2001-10-12 19:01:43 +0000991 the given size. Returns \NULL{} on failure.
992\end{cfuncdesc}
993
994\begin{cfuncdesc}{int}{PyUnicode_AsWideChar}{PyUnicodeObject *unicode,
995 wchar_t *w,
996 int size}
Thomas Heller541703b2002-04-29 17:28:43 +0000997 Copies the Unicode object contents into the \ctype{wchar_t} buffer
Marc-André Lemburga9cadcd2004-11-22 13:02:31 +0000998 \var{w}. At most \var{size} \ctype{wchar_t} characters are copied
999 (excluding a possibly trailing 0-termination character). Returns
1000 the number of \ctype{wchar_t} characters copied or -1 in case of an
1001 error. Note that the resulting \ctype{wchar_t} string may or may
1002 not be 0-terminated. It is the responsibility of the caller to make
1003 sure that the \ctype{wchar_t} string is 0-terminated in case this is
1004 required by the application.
Fred Drake3adf79e2001-10-12 19:01:43 +00001005\end{cfuncdesc}
1006
1007
1008\subsubsection{Built-in Codecs \label{builtinCodecs}}
1009
1010Python provides a set of builtin codecs which are written in C
1011for speed. All of these codecs are directly usable via the
1012following functions.
1013
1014Many of the following APIs take two arguments encoding and
1015errors. These parameters encoding and errors have the same semantics
1016as the ones of the builtin unicode() Unicode object constructor.
1017
1018Setting encoding to \NULL{} causes the default encoding to be used
1019which is \ASCII. The file system calls should use
1020\cdata{Py_FileSystemDefaultEncoding} as the encoding for file
1021names. This variable should be treated as read-only: On some systems,
1022it will be a pointer to a static string, on others, it will change at
Raymond Hettingercb2da432003-10-12 18:24:34 +00001023run-time (such as when the application invokes setlocale).
Fred Drake3adf79e2001-10-12 19:01:43 +00001024
1025Error handling is set by errors which may also be set to \NULL{}
1026meaning to use the default handling defined for the codec. Default
1027error handling for all builtin codecs is ``strict''
1028(\exception{ValueError} is raised).
1029
1030The codecs all use a similar interface. Only deviation from the
1031following generic ones are documented for simplicity.
1032
1033% --- Generic Codecs -----------------------------------------------------
1034
1035These are the generic codec APIs:
1036
1037\begin{cfuncdesc}{PyObject*}{PyUnicode_Decode}{const char *s,
1038 int size,
1039 const char *encoding,
1040 const char *errors}
1041 Create a Unicode object by decoding \var{size} bytes of the encoded
1042 string \var{s}. \var{encoding} and \var{errors} have the same
1043 meaning as the parameters of the same name in the
1044 \function{unicode()} builtin function. The codec to be used is
1045 looked up using the Python codec registry. Returns \NULL{} if an
1046 exception was raised by the codec.
1047\end{cfuncdesc}
1048
1049\begin{cfuncdesc}{PyObject*}{PyUnicode_Encode}{const Py_UNICODE *s,
1050 int size,
1051 const char *encoding,
1052 const char *errors}
1053 Encodes the \ctype{Py_UNICODE} buffer of the given size and returns
1054 a Python string object. \var{encoding} and \var{errors} have the
1055 same meaning as the parameters of the same name in the Unicode
1056 \method{encode()} method. The codec to be used is looked up using
1057 the Python codec registry. Returns \NULL{} if an exception was
1058 raised by the codec.
1059\end{cfuncdesc}
1060
1061\begin{cfuncdesc}{PyObject*}{PyUnicode_AsEncodedString}{PyObject *unicode,
1062 const char *encoding,
1063 const char *errors}
1064 Encodes a Unicode object and returns the result as Python string
1065 object. \var{encoding} and \var{errors} have the same meaning as the
1066 parameters of the same name in the Unicode \method{encode()} method.
1067 The codec to be used is looked up using the Python codec registry.
1068 Returns \NULL{} if an exception was raised by the codec.
1069\end{cfuncdesc}
1070
1071% --- UTF-8 Codecs -------------------------------------------------------
1072
1073These are the UTF-8 codec APIs:
1074
1075\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF8}{const char *s,
1076 int size,
1077 const char *errors}
1078 Creates a Unicode object by decoding \var{size} bytes of the UTF-8
1079 encoded string \var{s}. Returns \NULL{} if an exception was raised
1080 by the codec.
1081\end{cfuncdesc}
1082
Walter Dörwald69652032004-09-07 20:24:22 +00001083\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF8Stateful}{const char *s,
1084 int size,
1085 const char *errors,
1086 int *consumed}
1087 If \var{consumed} is \NULL{}, behaves like \cfunction{PyUnicode_DecodeUTF8()}.
1088 If \var{consumed} is not \NULL{}, trailing incomplete UTF-8 byte sequences
1089 will not be treated as an error. Those bytes will not be decoded and the
1090 number of bytes that have been decoded will be stored in \var{consumed}.
1091 \versionadded{2.4}
1092\end{cfuncdesc}
1093
Fred Drake3adf79e2001-10-12 19:01:43 +00001094\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeUTF8}{const Py_UNICODE *s,
1095 int size,
1096 const char *errors}
1097 Encodes the \ctype{Py_UNICODE} buffer of the given size using UTF-8
1098 and returns a Python string object. Returns \NULL{} if an exception
1099 was raised by the codec.
1100\end{cfuncdesc}
1101
1102\begin{cfuncdesc}{PyObject*}{PyUnicode_AsUTF8String}{PyObject *unicode}
1103 Encodes a Unicode objects using UTF-8 and returns the result as
1104 Python string object. Error handling is ``strict''. Returns
1105 \NULL{} if an exception was raised by the codec.
1106\end{cfuncdesc}
1107
1108% --- UTF-16 Codecs ------------------------------------------------------ */
1109
1110These are the UTF-16 codec APIs:
1111
1112\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF16}{const char *s,
1113 int size,
1114 const char *errors,
1115 int *byteorder}
1116 Decodes \var{length} bytes from a UTF-16 encoded buffer string and
1117 returns the corresponding Unicode object. \var{errors} (if
Tim Peters9ddf40b2004-06-20 22:41:32 +00001118 non-\NULL{}) defines the error handling. It defaults to ``strict''.
Fred Drake3adf79e2001-10-12 19:01:43 +00001119
Tim Peters9ddf40b2004-06-20 22:41:32 +00001120 If \var{byteorder} is non-\NULL{}, the decoder starts decoding using
Fred Drake3adf79e2001-10-12 19:01:43 +00001121 the given byte order:
1122
1123\begin{verbatim}
1124 *byteorder == -1: little endian
1125 *byteorder == 0: native order
1126 *byteorder == 1: big endian
1127\end{verbatim}
1128
1129 and then switches according to all byte order marks (BOM) it finds
1130 in the input data. BOMs are not copied into the resulting Unicode
1131 string. After completion, \var{*byteorder} is set to the current
1132 byte order at the end of input data.
1133
Tim Peters9ddf40b2004-06-20 22:41:32 +00001134 If \var{byteorder} is \NULL{}, the codec starts in native order mode.
Fred Drake3adf79e2001-10-12 19:01:43 +00001135
1136 Returns \NULL{} if an exception was raised by the codec.
1137\end{cfuncdesc}
1138
Walter Dörwald69652032004-09-07 20:24:22 +00001139\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF16Stateful}{const char *s,
1140 int size,
1141 const char *errors,
1142 int *byteorder,
1143 int *consumed}
1144 If \var{consumed} is \NULL{}, behaves like
1145 \cfunction{PyUnicode_DecodeUTF16()}. If \var{consumed} is not \NULL{},
1146 \cfunction{PyUnicode_DecodeUTF16Stateful()} will not treat trailing incomplete
Raymond Hettinger0c230b92005-08-17 10:05:22 +00001147 UTF-16 byte sequences (such as an odd number of bytes or a split surrogate pair)
Walter Dörwald69652032004-09-07 20:24:22 +00001148 as an error. Those bytes will not be decoded and the number of bytes that
1149 have been decoded will be stored in \var{consumed}.
1150 \versionadded{2.4}
1151\end{cfuncdesc}
1152
Fred Drake3adf79e2001-10-12 19:01:43 +00001153\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeUTF16}{const Py_UNICODE *s,
1154 int size,
1155 const char *errors,
1156 int byteorder}
1157 Returns a Python string object holding the UTF-16 encoded value of
1158 the Unicode data in \var{s}. If \var{byteorder} is not \code{0},
1159 output is written according to the following byte order:
1160
1161\begin{verbatim}
1162 byteorder == -1: little endian
1163 byteorder == 0: native byte order (writes a BOM mark)
1164 byteorder == 1: big endian
1165\end{verbatim}
1166
1167 If byteorder is \code{0}, the output string will always start with
1168 the Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark
1169 is prepended.
1170
Martin v. Löwis9bc4f2d2004-06-03 09:55:28 +00001171 If \var{Py_UNICODE_WIDE} is defined, a single \ctype{Py_UNICODE}
1172 value may get represented as a surrogate pair. If it is not
1173 defined, each \ctype{Py_UNICODE} values is interpreted as an
1174 UCS-2 character.
Fred Drake3adf79e2001-10-12 19:01:43 +00001175
1176 Returns \NULL{} if an exception was raised by the codec.
1177\end{cfuncdesc}
1178
1179\begin{cfuncdesc}{PyObject*}{PyUnicode_AsUTF16String}{PyObject *unicode}
1180 Returns a Python string using the UTF-16 encoding in native byte
1181 order. The string always starts with a BOM mark. Error handling is
1182 ``strict''. Returns \NULL{} if an exception was raised by the
1183 codec.
1184\end{cfuncdesc}
1185
1186% --- Unicode-Escape Codecs ----------------------------------------------
1187
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001188These are the ``Unicode Escape'' codec APIs:
Fred Drake3adf79e2001-10-12 19:01:43 +00001189
1190\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUnicodeEscape}{const char *s,
1191 int size,
1192 const char *errors}
1193 Creates a Unicode object by decoding \var{size} bytes of the
1194 Unicode-Escape encoded string \var{s}. Returns \NULL{} if an
1195 exception was raised by the codec.
1196\end{cfuncdesc}
1197
1198\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeUnicodeEscape}{const Py_UNICODE *s,
1199 int size,
1200 const char *errors}
1201 Encodes the \ctype{Py_UNICODE} buffer of the given size using
1202 Unicode-Escape and returns a Python string object. Returns \NULL{}
1203 if an exception was raised by the codec.
1204\end{cfuncdesc}
1205
1206\begin{cfuncdesc}{PyObject*}{PyUnicode_AsUnicodeEscapeString}{PyObject *unicode}
1207 Encodes a Unicode objects using Unicode-Escape and returns the
1208 result as Python string object. Error handling is ``strict''.
1209 Returns \NULL{} if an exception was raised by the codec.
1210\end{cfuncdesc}
1211
1212% --- Raw-Unicode-Escape Codecs ------------------------------------------
1213
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001214These are the ``Raw Unicode Escape'' codec APIs:
Fred Drake3adf79e2001-10-12 19:01:43 +00001215
1216\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeRawUnicodeEscape}{const char *s,
1217 int size,
1218 const char *errors}
1219 Creates a Unicode object by decoding \var{size} bytes of the
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001220 Raw-Unicode-Escape encoded string \var{s}. Returns \NULL{} if an
Fred Drake3adf79e2001-10-12 19:01:43 +00001221 exception was raised by the codec.
1222\end{cfuncdesc}
1223
1224\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeRawUnicodeEscape}{const Py_UNICODE *s,
1225 int size,
1226 const char *errors}
1227 Encodes the \ctype{Py_UNICODE} buffer of the given size using
1228 Raw-Unicode-Escape and returns a Python string object. Returns
1229 \NULL{} if an exception was raised by the codec.
1230\end{cfuncdesc}
1231
1232\begin{cfuncdesc}{PyObject*}{PyUnicode_AsRawUnicodeEscapeString}{PyObject *unicode}
1233 Encodes a Unicode objects using Raw-Unicode-Escape and returns the
1234 result as Python string object. Error handling is ``strict''.
1235 Returns \NULL{} if an exception was raised by the codec.
1236\end{cfuncdesc}
1237
Tim Petersf582b822001-12-11 18:51:08 +00001238% --- Latin-1 Codecs -----------------------------------------------------
Fred Drake3adf79e2001-10-12 19:01:43 +00001239
1240These are the Latin-1 codec APIs:
1241Latin-1 corresponds to the first 256 Unicode ordinals and only these
1242are accepted by the codecs during encoding.
1243
1244\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeLatin1}{const char *s,
1245 int size,
1246 const char *errors}
1247 Creates a Unicode object by decoding \var{size} bytes of the Latin-1
1248 encoded string \var{s}. Returns \NULL{} if an exception was raised
1249 by the codec.
1250\end{cfuncdesc}
1251
1252\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeLatin1}{const Py_UNICODE *s,
1253 int size,
1254 const char *errors}
1255 Encodes the \ctype{Py_UNICODE} buffer of the given size using
1256 Latin-1 and returns a Python string object. Returns \NULL{} if an
1257 exception was raised by the codec.
1258\end{cfuncdesc}
1259
1260\begin{cfuncdesc}{PyObject*}{PyUnicode_AsLatin1String}{PyObject *unicode}
1261 Encodes a Unicode objects using Latin-1 and returns the result as
1262 Python string object. Error handling is ``strict''. Returns
1263 \NULL{} if an exception was raised by the codec.
1264\end{cfuncdesc}
1265
Tim Petersf582b822001-12-11 18:51:08 +00001266% --- ASCII Codecs -------------------------------------------------------
Fred Drake3adf79e2001-10-12 19:01:43 +00001267
1268These are the \ASCII{} codec APIs. Only 7-bit \ASCII{} data is
1269accepted. All other codes generate errors.
1270
1271\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeASCII}{const char *s,
1272 int size,
1273 const char *errors}
1274 Creates a Unicode object by decoding \var{size} bytes of the
1275 \ASCII{} encoded string \var{s}. Returns \NULL{} if an exception
1276 was raised by the codec.
1277\end{cfuncdesc}
1278
1279\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeASCII}{const Py_UNICODE *s,
1280 int size,
1281 const char *errors}
1282 Encodes the \ctype{Py_UNICODE} buffer of the given size using
1283 \ASCII{} and returns a Python string object. Returns \NULL{} if an
1284 exception was raised by the codec.
1285\end{cfuncdesc}
1286
1287\begin{cfuncdesc}{PyObject*}{PyUnicode_AsASCIIString}{PyObject *unicode}
1288 Encodes a Unicode objects using \ASCII{} and returns the result as
1289 Python string object. Error handling is ``strict''. Returns
1290 \NULL{} if an exception was raised by the codec.
1291\end{cfuncdesc}
1292
Tim Petersf582b822001-12-11 18:51:08 +00001293% --- Character Map Codecs -----------------------------------------------
Fred Drake3adf79e2001-10-12 19:01:43 +00001294
1295These are the mapping codec APIs:
1296
1297This codec is special in that it can be used to implement many
1298different codecs (and this is in fact what was done to obtain most of
1299the standard codecs included in the \module{encodings} package). The
1300codec uses mapping to encode and decode characters.
1301
1302Decoding mappings must map single string characters to single Unicode
1303characters, integers (which are then interpreted as Unicode ordinals)
Tim Petersf582b822001-12-11 18:51:08 +00001304or None (meaning "undefined mapping" and causing an error).
Fred Drake3adf79e2001-10-12 19:01:43 +00001305
1306Encoding mappings must map single Unicode characters to single string
1307characters, integers (which are then interpreted as Latin-1 ordinals)
1308or None (meaning "undefined mapping" and causing an error).
1309
1310The mapping objects provided must only support the __getitem__ mapping
1311interface.
1312
1313If a character lookup fails with a LookupError, the character is
1314copied as-is meaning that its ordinal value will be interpreted as
1315Unicode or Latin-1 ordinal resp. Because of this, mappings only need
1316to contain those mappings which map characters to different code
1317points.
1318
1319\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeCharmap}{const char *s,
1320 int size,
1321 PyObject *mapping,
1322 const char *errors}
1323 Creates a Unicode object by decoding \var{size} bytes of the encoded
1324 string \var{s} using the given \var{mapping} object. Returns
1325 \NULL{} if an exception was raised by the codec.
1326\end{cfuncdesc}
1327
1328\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeCharmap}{const Py_UNICODE *s,
1329 int size,
1330 PyObject *mapping,
1331 const char *errors}
1332 Encodes the \ctype{Py_UNICODE} buffer of the given size using the
1333 given \var{mapping} object and returns a Python string object.
1334 Returns \NULL{} if an exception was raised by the codec.
1335\end{cfuncdesc}
1336
1337\begin{cfuncdesc}{PyObject*}{PyUnicode_AsCharmapString}{PyObject *unicode,
1338 PyObject *mapping}
1339 Encodes a Unicode objects using the given \var{mapping} object and
1340 returns the result as Python string object. Error handling is
1341 ``strict''. Returns \NULL{} if an exception was raised by the
1342 codec.
1343\end{cfuncdesc}
1344
1345The following codec API is special in that maps Unicode to Unicode.
1346
1347\begin{cfuncdesc}{PyObject*}{PyUnicode_TranslateCharmap}{const Py_UNICODE *s,
1348 int size,
1349 PyObject *table,
1350 const char *errors}
1351 Translates a \ctype{Py_UNICODE} buffer of the given length by
1352 applying a character mapping \var{table} to it and returns the
1353 resulting Unicode object. Returns \NULL{} when an exception was
1354 raised by the codec.
1355
1356 The \var{mapping} table must map Unicode ordinal integers to Unicode
1357 ordinal integers or None (causing deletion of the character).
1358
1359 Mapping tables need only provide the method{__getitem__()}
1360 interface; dictionaries and sequences work well. Unmapped character
1361 ordinals (ones which cause a \exception{LookupError}) are left
1362 untouched and are copied as-is.
1363\end{cfuncdesc}
1364
1365% --- MBCS codecs for Windows --------------------------------------------
1366
1367These are the MBCS codec APIs. They are currently only available on
1368Windows and use the Win32 MBCS converters to implement the
1369conversions. Note that MBCS (or DBCS) is a class of encodings, not
1370just one. The target encoding is defined by the user settings on the
1371machine running the codec.
1372
1373\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeMBCS}{const char *s,
1374 int size,
1375 const char *errors}
1376 Creates a Unicode object by decoding \var{size} bytes of the MBCS
1377 encoded string \var{s}. Returns \NULL{} if an exception was
1378 raised by the codec.
1379\end{cfuncdesc}
1380
1381\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeMBCS}{const Py_UNICODE *s,
1382 int size,
1383 const char *errors}
1384 Encodes the \ctype{Py_UNICODE} buffer of the given size using MBCS
1385 and returns a Python string object. Returns \NULL{} if an exception
1386 was raised by the codec.
1387\end{cfuncdesc}
1388
1389\begin{cfuncdesc}{PyObject*}{PyUnicode_AsMBCSString}{PyObject *unicode}
1390 Encodes a Unicode objects using MBCS and returns the result as
1391 Python string object. Error handling is ``strict''. Returns
1392 \NULL{} if an exception was raised by the codec.
1393\end{cfuncdesc}
1394
1395% --- Methods & Slots ----------------------------------------------------
1396
1397\subsubsection{Methods and Slot Functions \label{unicodeMethodsAndSlots}}
1398
1399The following APIs are capable of handling Unicode objects and strings
1400on input (we refer to them as strings in the descriptions) and return
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001401Unicode objects or integers as appropriate.
Fred Drake3adf79e2001-10-12 19:01:43 +00001402
1403They all return \NULL{} or \code{-1} if an exception occurs.
1404
1405\begin{cfuncdesc}{PyObject*}{PyUnicode_Concat}{PyObject *left,
1406 PyObject *right}
1407 Concat two strings giving a new Unicode string.
1408\end{cfuncdesc}
1409
1410\begin{cfuncdesc}{PyObject*}{PyUnicode_Split}{PyObject *s,
1411 PyObject *sep,
1412 int maxsplit}
Tim Peters9ddf40b2004-06-20 22:41:32 +00001413 Split a string giving a list of Unicode strings. If sep is \NULL{},
Fred Drake3adf79e2001-10-12 19:01:43 +00001414 splitting will be done at all whitespace substrings. Otherwise,
1415 splits occur at the given separator. At most \var{maxsplit} splits
1416 will be done. If negative, no limit is set. Separators are not
1417 included in the resulting list.
1418\end{cfuncdesc}
1419
1420\begin{cfuncdesc}{PyObject*}{PyUnicode_Splitlines}{PyObject *s,
Martin v. Löwis24b88812003-03-30 16:40:42 +00001421 int keepend}
Fred Drake3adf79e2001-10-12 19:01:43 +00001422 Split a Unicode string at line breaks, returning a list of Unicode
Martin v. Löwis24b88812003-03-30 16:40:42 +00001423 strings. CRLF is considered to be one line break. If \var{keepend}
1424 is 0, the Line break characters are not included in the resulting
1425 strings.
Fred Drake3adf79e2001-10-12 19:01:43 +00001426\end{cfuncdesc}
1427
1428\begin{cfuncdesc}{PyObject*}{PyUnicode_Translate}{PyObject *str,
1429 PyObject *table,
1430 const char *errors}
1431 Translate a string by applying a character mapping table to it and
1432 return the resulting Unicode object.
1433
1434 The mapping table must map Unicode ordinal integers to Unicode
1435 ordinal integers or None (causing deletion of the character).
1436
1437 Mapping tables need only provide the \method{__getitem__()}
1438 interface; dictionaries and sequences work well. Unmapped character
1439 ordinals (ones which cause a \exception{LookupError}) are left
1440 untouched and are copied as-is.
1441
1442 \var{errors} has the usual meaning for codecs. It may be \NULL{}
1443 which indicates to use the default error handling.
1444\end{cfuncdesc}
1445
1446\begin{cfuncdesc}{PyObject*}{PyUnicode_Join}{PyObject *separator,
1447 PyObject *seq}
1448 Join a sequence of strings using the given separator and return the
1449 resulting Unicode string.
1450\end{cfuncdesc}
1451
Raymond Hettinger8ef9b3e2004-12-10 17:12:32 +00001452\begin{cfuncdesc}{int}{PyUnicode_Tailmatch}{PyObject *str,
Fred Drake3adf79e2001-10-12 19:01:43 +00001453 PyObject *substr,
1454 int start,
1455 int end,
1456 int direction}
1457 Return 1 if \var{substr} matches \var{str}[\var{start}:\var{end}] at
1458 the given tail end (\var{direction} == -1 means to do a prefix
1459 match, \var{direction} == 1 a suffix match), 0 otherwise.
Raymond Hettinger8ef9b3e2004-12-10 17:12:32 +00001460 Returns \code{-1} if an error occurred.
Fred Drake3adf79e2001-10-12 19:01:43 +00001461\end{cfuncdesc}
1462
Fred Drake1d1e1db2002-06-20 22:07:04 +00001463\begin{cfuncdesc}{int}{PyUnicode_Find}{PyObject *str,
1464 PyObject *substr,
1465 int start,
1466 int end,
1467 int direction}
Fred Drake3adf79e2001-10-12 19:01:43 +00001468 Return the first position of \var{substr} in
1469 \var{str}[\var{start}:\var{end}] using the given \var{direction}
1470 (\var{direction} == 1 means to do a forward search,
Fred Drake1d1e1db2002-06-20 22:07:04 +00001471 \var{direction} == -1 a backward search). The return value is the
1472 index of the first match; a value of \code{-1} indicates that no
1473 match was found, and \code{-2} indicates that an error occurred and
1474 an exception has been set.
Fred Drake3adf79e2001-10-12 19:01:43 +00001475\end{cfuncdesc}
1476
Fred Drake1d1e1db2002-06-20 22:07:04 +00001477\begin{cfuncdesc}{int}{PyUnicode_Count}{PyObject *str,
1478 PyObject *substr,
1479 int start,
1480 int end}
1481 Return the number of non-overlapping occurrences of \var{substr} in
1482 \code{\var{str}[\var{start}:\var{end}]}. Returns \code{-1} if an
1483 error occurred.
Fred Drake3adf79e2001-10-12 19:01:43 +00001484\end{cfuncdesc}
1485
1486\begin{cfuncdesc}{PyObject*}{PyUnicode_Replace}{PyObject *str,
1487 PyObject *substr,
1488 PyObject *replstr,
1489 int maxcount}
1490 Replace at most \var{maxcount} occurrences of \var{substr} in
1491 \var{str} with \var{replstr} and return the resulting Unicode object.
1492 \var{maxcount} == -1 means replace all occurrences.
1493\end{cfuncdesc}
1494
1495\begin{cfuncdesc}{int}{PyUnicode_Compare}{PyObject *left, PyObject *right}
1496 Compare two strings and return -1, 0, 1 for less than, equal, and
1497 greater than, respectively.
1498\end{cfuncdesc}
1499
1500\begin{cfuncdesc}{PyObject*}{PyUnicode_Format}{PyObject *format,
1501 PyObject *args}
1502 Returns a new string object from \var{format} and \var{args}; this
1503 is analogous to \code{\var{format} \%\ \var{args}}. The
1504 \var{args} argument must be a tuple.
1505\end{cfuncdesc}
1506
1507\begin{cfuncdesc}{int}{PyUnicode_Contains}{PyObject *container,
1508 PyObject *element}
1509 Checks whether \var{element} is contained in \var{container} and
1510 returns true or false accordingly.
1511
1512 \var{element} has to coerce to a one element Unicode
1513 string. \code{-1} is returned if there was an error.
1514\end{cfuncdesc}
1515
1516
1517\subsection{Buffer Objects \label{bufferObjects}}
1518\sectionauthor{Greg Stein}{gstein@lyra.org}
1519
1520\obindex{buffer}
1521Python objects implemented in C can export a group of functions called
1522the ``buffer\index{buffer interface} interface.'' These functions can
1523be used by an object to expose its data in a raw, byte-oriented
1524format. Clients of the object can use the buffer interface to access
1525the object data directly, without needing to copy it first.
1526
Tim Petersf582b822001-12-11 18:51:08 +00001527Two examples of objects that support
1528the buffer interface are strings and arrays. The string object exposes
Fred Drake3adf79e2001-10-12 19:01:43 +00001529the character contents in the buffer interface's byte-oriented
1530form. An array can also expose its contents, but it should be noted
1531that array elements may be multi-byte values.
1532
1533An example user of the buffer interface is the file object's
1534\method{write()} method. Any object that can export a series of bytes
1535through the buffer interface can be written to a file. There are a
Tim Petersf582b822001-12-11 18:51:08 +00001536number of format codes to \cfunction{PyArg_ParseTuple()} that operate
Fred Drake3adf79e2001-10-12 19:01:43 +00001537against an object's buffer interface, returning data from the target
1538object.
1539
1540More information on the buffer interface is provided in the section
Fred Drake54e62942001-12-11 19:40:16 +00001541``Buffer Object Structures'' (section~\ref{buffer-structs}), under
Fred Drake3adf79e2001-10-12 19:01:43 +00001542the description for \ctype{PyBufferProcs}\ttindex{PyBufferProcs}.
1543
1544A ``buffer object'' is defined in the \file{bufferobject.h} header
1545(included by \file{Python.h}). These objects look very similar to
1546string objects at the Python programming level: they support slicing,
1547indexing, concatenation, and some other standard string
1548operations. However, their data can come from one of two sources: from
1549a block of memory, or from another object which exports the buffer
1550interface.
1551
1552Buffer objects are useful as a way to expose the data from another
1553object's buffer interface to the Python programmer. They can also be
1554used as a zero-copy slicing mechanism. Using their ability to
1555reference a block of memory, it is possible to expose any data to the
1556Python programmer quite easily. The memory could be a large, constant
1557array in a C extension, it could be a raw block of memory for
1558manipulation before passing to an operating system library, or it
1559could be used to pass around structured data in its native, in-memory
1560format.
1561
1562\begin{ctypedesc}{PyBufferObject}
1563 This subtype of \ctype{PyObject} represents a buffer object.
1564\end{ctypedesc}
1565
1566\begin{cvardesc}{PyTypeObject}{PyBuffer_Type}
1567 The instance of \ctype{PyTypeObject} which represents the Python
1568 buffer type; it is the same object as \code{types.BufferType} in the
1569 Python layer.\withsubitem{(in module types)}{\ttindex{BufferType}}.
1570\end{cvardesc}
1571
1572\begin{cvardesc}{int}{Py_END_OF_BUFFER}
1573 This constant may be passed as the \var{size} parameter to
1574 \cfunction{PyBuffer_FromObject()} or
1575 \cfunction{PyBuffer_FromReadWriteObject()}. It indicates that the
1576 new \ctype{PyBufferObject} should refer to \var{base} object from
1577 the specified \var{offset} to the end of its exported buffer. Using
1578 this enables the caller to avoid querying the \var{base} object for
1579 its length.
1580\end{cvardesc}
1581
1582\begin{cfuncdesc}{int}{PyBuffer_Check}{PyObject *p}
1583 Return true if the argument has type \cdata{PyBuffer_Type}.
1584\end{cfuncdesc}
1585
1586\begin{cfuncdesc}{PyObject*}{PyBuffer_FromObject}{PyObject *base,
1587 int offset, int size}
1588 Return a new read-only buffer object. This raises
1589 \exception{TypeError} if \var{base} doesn't support the read-only
1590 buffer protocol or doesn't provide exactly one buffer segment, or it
1591 raises \exception{ValueError} if \var{offset} is less than zero. The
1592 buffer will hold a reference to the \var{base} object, and the
1593 buffer's contents will refer to the \var{base} object's buffer
1594 interface, starting as position \var{offset} and extending for
1595 \var{size} bytes. If \var{size} is \constant{Py_END_OF_BUFFER}, then
1596 the new buffer's contents extend to the length of the \var{base}
1597 object's exported buffer data.
1598\end{cfuncdesc}
1599
1600\begin{cfuncdesc}{PyObject*}{PyBuffer_FromReadWriteObject}{PyObject *base,
1601 int offset,
1602 int size}
1603 Return a new writable buffer object. Parameters and exceptions are
1604 similar to those for \cfunction{PyBuffer_FromObject()}. If the
1605 \var{base} object does not export the writeable buffer protocol,
1606 then \exception{TypeError} is raised.
1607\end{cfuncdesc}
1608
1609\begin{cfuncdesc}{PyObject*}{PyBuffer_FromMemory}{void *ptr, int size}
1610 Return a new read-only buffer object that reads from a specified
1611 location in memory, with a specified size. The caller is
1612 responsible for ensuring that the memory buffer, passed in as
1613 \var{ptr}, is not deallocated while the returned buffer object
1614 exists. Raises \exception{ValueError} if \var{size} is less than
1615 zero. Note that \constant{Py_END_OF_BUFFER} may \emph{not} be
1616 passed for the \var{size} parameter; \exception{ValueError} will be
1617 raised in that case.
1618\end{cfuncdesc}
1619
1620\begin{cfuncdesc}{PyObject*}{PyBuffer_FromReadWriteMemory}{void *ptr, int size}
1621 Similar to \cfunction{PyBuffer_FromMemory()}, but the returned
1622 buffer is writable.
1623\end{cfuncdesc}
1624
1625\begin{cfuncdesc}{PyObject*}{PyBuffer_New}{int size}
1626 Returns a new writable buffer object that maintains its own memory
1627 buffer of \var{size} bytes. \exception{ValueError} is returned if
Neil Schemenauerd68d3ee2004-06-08 02:58:50 +00001628 \var{size} is not zero or positive. Note that the memory buffer (as
1629 returned by \cfunction{PyObject_AsWriteBuffer()}) is not specifically
1630 aligned.
Fred Drake3adf79e2001-10-12 19:01:43 +00001631\end{cfuncdesc}
1632
1633
1634\subsection{Tuple Objects \label{tupleObjects}}
1635
1636\obindex{tuple}
1637\begin{ctypedesc}{PyTupleObject}
1638 This subtype of \ctype{PyObject} represents a Python tuple object.
1639\end{ctypedesc}
1640
1641\begin{cvardesc}{PyTypeObject}{PyTuple_Type}
1642 This instance of \ctype{PyTypeObject} represents the Python tuple
1643 type; it is the same object as \code{types.TupleType} in the Python
1644 layer.\withsubitem{(in module types)}{\ttindex{TupleType}}.
1645\end{cvardesc}
1646
1647\begin{cfuncdesc}{int}{PyTuple_Check}{PyObject *p}
1648 Return true if \var{p} is a tuple object or an instance of a subtype
1649 of the tuple type.
1650 \versionchanged[Allowed subtypes to be accepted]{2.2}
1651\end{cfuncdesc}
1652
1653\begin{cfuncdesc}{int}{PyTuple_CheckExact}{PyObject *p}
1654 Return true if \var{p} is a tuple object, but not an instance of a
1655 subtype of the tuple type.
1656 \versionadded{2.2}
1657\end{cfuncdesc}
1658
1659\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int len}
1660 Return a new tuple object of size \var{len}, or \NULL{} on failure.
1661\end{cfuncdesc}
1662
Raymond Hettingercb2da432003-10-12 18:24:34 +00001663\begin{cfuncdesc}{PyObject*}{PyTuple_Pack}{int n, \moreargs}
1664 Return a new tuple object of size \var{n}, or \NULL{} on failure.
1665 The tuple values are initialized to the subsequent \var{n} C arguments
1666 pointing to Python objects. \samp{PyTuple_Pack(2, \var{a}, \var{b})}
1667 is equivalent to \samp{Py_BuildValue("(OO)", \var{a}, \var{b})}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00001668 \versionadded{2.4}
Raymond Hettingercb2da432003-10-12 18:24:34 +00001669\end{cfuncdesc}
1670
Fred Drake3adf79e2001-10-12 19:01:43 +00001671\begin{cfuncdesc}{int}{PyTuple_Size}{PyObject *p}
1672 Takes a pointer to a tuple object, and returns the size of that
1673 tuple.
1674\end{cfuncdesc}
1675
1676\begin{cfuncdesc}{int}{PyTuple_GET_SIZE}{PyObject *p}
1677 Return the size of the tuple \var{p}, which must be non-\NULL{} and
1678 point to a tuple; no error checking is performed.
1679\end{cfuncdesc}
1680
1681\begin{cfuncdesc}{PyObject*}{PyTuple_GetItem}{PyObject *p, int pos}
1682 Returns the object at position \var{pos} in the tuple pointed to by
1683 \var{p}. If \var{pos} is out of bounds, returns \NULL{} and sets an
1684 \exception{IndexError} exception.
1685\end{cfuncdesc}
1686
1687\begin{cfuncdesc}{PyObject*}{PyTuple_GET_ITEM}{PyObject *p, int pos}
1688 Like \cfunction{PyTuple_GetItem()}, but does no checking of its
1689 arguments.
1690\end{cfuncdesc}
1691
1692\begin{cfuncdesc}{PyObject*}{PyTuple_GetSlice}{PyObject *p,
1693 int low, int high}
1694 Takes a slice of the tuple pointed to by \var{p} from \var{low} to
1695 \var{high} and returns it as a new tuple.
1696\end{cfuncdesc}
1697
1698\begin{cfuncdesc}{int}{PyTuple_SetItem}{PyObject *p,
1699 int pos, PyObject *o}
1700 Inserts a reference to object \var{o} at position \var{pos} of the
1701 tuple pointed to by \var{p}. It returns \code{0} on success.
1702 \note{This function ``steals'' a reference to \var{o}.}
1703\end{cfuncdesc}
1704
1705\begin{cfuncdesc}{void}{PyTuple_SET_ITEM}{PyObject *p,
1706 int pos, PyObject *o}
1707 Like \cfunction{PyTuple_SetItem()}, but does no error checking, and
1708 should \emph{only} be used to fill in brand new tuples. \note{This
1709 function ``steals'' a reference to \var{o}.}
1710\end{cfuncdesc}
1711
1712\begin{cfuncdesc}{int}{_PyTuple_Resize}{PyObject **p, int newsize}
1713 Can be used to resize a tuple. \var{newsize} will be the new length
1714 of the tuple. Because tuples are \emph{supposed} to be immutable,
1715 this should only be used if there is only one reference to the
1716 object. Do \emph{not} use this if the tuple may already be known to
1717 some other part of the code. The tuple will always grow or shrink
1718 at the end. Think of this as destroying the old tuple and creating
1719 a new one, only more efficiently. Returns \code{0} on success.
1720 Client code should never assume that the resulting value of
1721 \code{*\var{p}} will be the same as before calling this function.
1722 If the object referenced by \code{*\var{p}} is replaced, the
1723 original \code{*\var{p}} is destroyed. On failure, returns
Tim Peters9ddf40b2004-06-20 22:41:32 +00001724 \code{-1} and sets \code{*\var{p}} to \NULL{}, and raises
Fred Drake3adf79e2001-10-12 19:01:43 +00001725 \exception{MemoryError} or
1726 \exception{SystemError}.
Tim Petersf582b822001-12-11 18:51:08 +00001727 \versionchanged[Removed unused third parameter, \var{last_is_sticky}]{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001728\end{cfuncdesc}
1729
1730
1731\subsection{List Objects \label{listObjects}}
1732
1733\obindex{list}
1734\begin{ctypedesc}{PyListObject}
1735 This subtype of \ctype{PyObject} represents a Python list object.
1736\end{ctypedesc}
1737
1738\begin{cvardesc}{PyTypeObject}{PyList_Type}
1739 This instance of \ctype{PyTypeObject} represents the Python list
1740 type. This is the same object as \code{types.ListType}.
1741 \withsubitem{(in module types)}{\ttindex{ListType}}
1742\end{cvardesc}
1743
1744\begin{cfuncdesc}{int}{PyList_Check}{PyObject *p}
Andrew MacIntyre13cd8892003-12-25 23:57:52 +00001745 Returns true if \var{p} is a list object or an instance of a
1746 subtype of the list type.
1747 \versionchanged[Allowed subtypes to be accepted]{2.2}
1748\end{cfuncdesc}
1749
1750\begin{cfuncdesc}{int}{PyList_CheckExact}{PyObject *p}
1751 Return true if \var{p} is a list object, but not an instance of a
1752 subtype of the list type.
1753 \versionadded{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001754\end{cfuncdesc}
1755
1756\begin{cfuncdesc}{PyObject*}{PyList_New}{int len}
1757 Returns a new list of length \var{len} on success, or \NULL{} on
1758 failure.
1759\end{cfuncdesc}
1760
1761\begin{cfuncdesc}{int}{PyList_Size}{PyObject *list}
1762 Returns the length of the list object in \var{list}; this is
1763 equivalent to \samp{len(\var{list})} on a list object.
1764 \bifuncindex{len}
1765\end{cfuncdesc}
1766
1767\begin{cfuncdesc}{int}{PyList_GET_SIZE}{PyObject *list}
1768 Macro form of \cfunction{PyList_Size()} without error checking.
1769\end{cfuncdesc}
1770
1771\begin{cfuncdesc}{PyObject*}{PyList_GetItem}{PyObject *list, int index}
1772 Returns the object at position \var{pos} in the list pointed to by
1773 \var{p}. If \var{pos} is out of bounds, returns \NULL{} and sets an
1774 \exception{IndexError} exception.
1775\end{cfuncdesc}
1776
1777\begin{cfuncdesc}{PyObject*}{PyList_GET_ITEM}{PyObject *list, int i}
1778 Macro form of \cfunction{PyList_GetItem()} without error checking.
1779\end{cfuncdesc}
1780
1781\begin{cfuncdesc}{int}{PyList_SetItem}{PyObject *list, int index,
1782 PyObject *item}
1783 Sets the item at index \var{index} in list to \var{item}. Returns
1784 \code{0} on success or \code{-1} on failure. \note{This function
1785 ``steals'' a reference to \var{item} and discards a reference to an
1786 item already in the list at the affected position.}
1787\end{cfuncdesc}
1788
1789\begin{cfuncdesc}{void}{PyList_SET_ITEM}{PyObject *list, int i,
1790 PyObject *o}
1791 Macro form of \cfunction{PyList_SetItem()} without error checking.
1792 This is normally only used to fill in new lists where there is no
1793 previous content.
1794 \note{This function ``steals'' a reference to \var{item}, and,
1795 unlike \cfunction{PyList_SetItem()}, does \emph{not} discard a
1796 reference to any item that it being replaced; any reference in
1797 \var{list} at position \var{i} will be leaked.}
1798\end{cfuncdesc}
1799
1800\begin{cfuncdesc}{int}{PyList_Insert}{PyObject *list, int index,
1801 PyObject *item}
1802 Inserts the item \var{item} into list \var{list} in front of index
1803 \var{index}. Returns \code{0} if successful; returns \code{-1} and
1804 raises an exception if unsuccessful. Analogous to
1805 \code{\var{list}.insert(\var{index}, \var{item})}.
1806\end{cfuncdesc}
1807
1808\begin{cfuncdesc}{int}{PyList_Append}{PyObject *list, PyObject *item}
1809 Appends the object \var{item} at the end of list \var{list}.
1810 Returns \code{0} if successful; returns \code{-1} and sets an
1811 exception if unsuccessful. Analogous to
1812 \code{\var{list}.append(\var{item})}.
1813\end{cfuncdesc}
1814
1815\begin{cfuncdesc}{PyObject*}{PyList_GetSlice}{PyObject *list,
1816 int low, int high}
1817 Returns a list of the objects in \var{list} containing the objects
1818 \emph{between} \var{low} and \var{high}. Returns \NULL{} and sets
1819 an exception if unsuccessful.
1820 Analogous to \code{\var{list}[\var{low}:\var{high}]}.
1821\end{cfuncdesc}
1822
1823\begin{cfuncdesc}{int}{PyList_SetSlice}{PyObject *list,
1824 int low, int high,
1825 PyObject *itemlist}
1826 Sets the slice of \var{list} between \var{low} and \var{high} to the
1827 contents of \var{itemlist}. Analogous to
Raymond Hettinger9c7ed4c2003-10-26 17:20:07 +00001828 \code{\var{list}[\var{low}:\var{high}] = \var{itemlist}}.
1829 The \var{itemlist} may be \NULL{}, indicating the assignment
1830 of an empty list (slice deletion).
1831 Returns \code{0} on success, \code{-1} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00001832\end{cfuncdesc}
1833
1834\begin{cfuncdesc}{int}{PyList_Sort}{PyObject *list}
1835 Sorts the items of \var{list} in place. Returns \code{0} on
1836 success, \code{-1} on failure. This is equivalent to
1837 \samp{\var{list}.sort()}.
1838\end{cfuncdesc}
1839
1840\begin{cfuncdesc}{int}{PyList_Reverse}{PyObject *list}
1841 Reverses the items of \var{list} in place. Returns \code{0} on
1842 success, \code{-1} on failure. This is the equivalent of
1843 \samp{\var{list}.reverse()}.
1844\end{cfuncdesc}
1845
1846\begin{cfuncdesc}{PyObject*}{PyList_AsTuple}{PyObject *list}
1847 Returns a new tuple object containing the contents of \var{list};
1848 equivalent to \samp{tuple(\var{list})}.\bifuncindex{tuple}
1849\end{cfuncdesc}
1850
1851
1852\section{Mapping Objects \label{mapObjects}}
1853
1854\obindex{mapping}
1855
1856
1857\subsection{Dictionary Objects \label{dictObjects}}
1858
1859\obindex{dictionary}
1860\begin{ctypedesc}{PyDictObject}
1861 This subtype of \ctype{PyObject} represents a Python dictionary
1862 object.
1863\end{ctypedesc}
1864
1865\begin{cvardesc}{PyTypeObject}{PyDict_Type}
1866 This instance of \ctype{PyTypeObject} represents the Python
1867 dictionary type. This is exposed to Python programs as
1868 \code{types.DictType} and \code{types.DictionaryType}.
1869 \withsubitem{(in module types)}{\ttindex{DictType}\ttindex{DictionaryType}}
1870\end{cvardesc}
1871
1872\begin{cfuncdesc}{int}{PyDict_Check}{PyObject *p}
Andrew MacIntyre13cd8892003-12-25 23:57:52 +00001873 Returns true if \var{p} is a dict object or an instance of a
1874 subtype of the dict type.
1875 \versionchanged[Allowed subtypes to be accepted]{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001876\end{cfuncdesc}
1877
Andrew MacIntyref72af652003-12-26 00:07:51 +00001878\begin{cfuncdesc}{int}{PyDict_CheckExact}{PyObject *p}
1879 Return true if \var{p} is a dict object, but not an instance of a
1880 subtype of the dict type.
1881 \versionadded{2.4}
1882\end{cfuncdesc}
1883
Fred Drake3adf79e2001-10-12 19:01:43 +00001884\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
1885 Returns a new empty dictionary, or \NULL{} on failure.
1886\end{cfuncdesc}
1887
1888\begin{cfuncdesc}{PyObject*}{PyDictProxy_New}{PyObject *dict}
1889 Return a proxy object for a mapping which enforces read-only
1890 behavior. This is normally used to create a proxy to prevent
1891 modification of the dictionary for non-dynamic class types.
1892 \versionadded{2.2}
1893\end{cfuncdesc}
1894
1895\begin{cfuncdesc}{void}{PyDict_Clear}{PyObject *p}
1896 Empties an existing dictionary of all key-value pairs.
1897\end{cfuncdesc}
1898
Raymond Hettingerbc0f2ab2003-11-25 21:12:14 +00001899\begin{cfuncdesc}{int}{PyDict_Contains}{PyObject *p, PyObject *key}
1900 Determine if dictionary \var{p} contains \var{key}. If an item
1901 in \var{p} is matches \var{key}, return \code{1}, otherwise return
1902 \code{0}. On error, return \code{-1}. This is equivalent to the
1903 Python expression \samp{\var{key} in \var{p}}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00001904 \versionadded{2.4}
Raymond Hettingerbc0f2ab2003-11-25 21:12:14 +00001905\end{cfuncdesc}
1906
Fred Drake3adf79e2001-10-12 19:01:43 +00001907\begin{cfuncdesc}{PyObject*}{PyDict_Copy}{PyObject *p}
1908 Returns a new dictionary that contains the same key-value pairs as
1909 \var{p}.
1910 \versionadded{1.6}
1911\end{cfuncdesc}
1912
1913\begin{cfuncdesc}{int}{PyDict_SetItem}{PyObject *p, PyObject *key,
1914 PyObject *val}
1915 Inserts \var{value} into the dictionary \var{p} with a key of
1916 \var{key}. \var{key} must be hashable; if it isn't,
1917 \exception{TypeError} will be raised.
1918 Returns \code{0} on success or \code{-1} on failure.
1919\end{cfuncdesc}
1920
1921\begin{cfuncdesc}{int}{PyDict_SetItemString}{PyObject *p,
1922 char *key,
1923 PyObject *val}
1924 Inserts \var{value} into the dictionary \var{p} using \var{key} as a
1925 key. \var{key} should be a \ctype{char*}. The key object is created
1926 using \code{PyString_FromString(\var{key})}. Returns \code{0} on
1927 success or \code{-1} on failure.
1928 \ttindex{PyString_FromString()}
1929\end{cfuncdesc}
1930
1931\begin{cfuncdesc}{int}{PyDict_DelItem}{PyObject *p, PyObject *key}
1932 Removes the entry in dictionary \var{p} with key \var{key}.
1933 \var{key} must be hashable; if it isn't, \exception{TypeError} is
Skip Montanaroa23bc422002-01-23 08:18:30 +00001934 raised. Returns \code{0} on success or \code{-1} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00001935\end{cfuncdesc}
1936
1937\begin{cfuncdesc}{int}{PyDict_DelItemString}{PyObject *p, char *key}
1938 Removes the entry in dictionary \var{p} which has a key specified by
1939 the string \var{key}. Returns \code{0} on success or \code{-1} on
1940 failure.
1941\end{cfuncdesc}
1942
1943\begin{cfuncdesc}{PyObject*}{PyDict_GetItem}{PyObject *p, PyObject *key}
1944 Returns the object from dictionary \var{p} which has a key
1945 \var{key}. Returns \NULL{} if the key \var{key} is not present, but
1946 \emph{without} setting an exception.
1947\end{cfuncdesc}
1948
1949\begin{cfuncdesc}{PyObject*}{PyDict_GetItemString}{PyObject *p, char *key}
1950 This is the same as \cfunction{PyDict_GetItem()}, but \var{key} is
1951 specified as a \ctype{char*}, rather than a \ctype{PyObject*}.
1952\end{cfuncdesc}
1953
1954\begin{cfuncdesc}{PyObject*}{PyDict_Items}{PyObject *p}
1955 Returns a \ctype{PyListObject} containing all the items from the
Nicholas Bastin975e7252004-09-29 21:39:26 +00001956 dictionary, as in the dictionary method \method{items()} (see the
Fred Drake3adf79e2001-10-12 19:01:43 +00001957 \citetitle[../lib/lib.html]{Python Library Reference}).
1958\end{cfuncdesc}
1959
1960\begin{cfuncdesc}{PyObject*}{PyDict_Keys}{PyObject *p}
1961 Returns a \ctype{PyListObject} containing all the keys from the
1962 dictionary, as in the dictionary method \method{keys()} (see the
1963 \citetitle[../lib/lib.html]{Python Library Reference}).
1964\end{cfuncdesc}
1965
1966\begin{cfuncdesc}{PyObject*}{PyDict_Values}{PyObject *p}
1967 Returns a \ctype{PyListObject} containing all the values from the
1968 dictionary \var{p}, as in the dictionary method \method{values()}
1969 (see the \citetitle[../lib/lib.html]{Python Library Reference}).
1970\end{cfuncdesc}
1971
1972\begin{cfuncdesc}{int}{PyDict_Size}{PyObject *p}
1973 Returns the number of items in the dictionary. This is equivalent
1974 to \samp{len(\var{p})} on a dictionary.\bifuncindex{len}
1975\end{cfuncdesc}
1976
1977\begin{cfuncdesc}{int}{PyDict_Next}{PyObject *p, int *ppos,
1978 PyObject **pkey, PyObject **pvalue}
1979 Iterate over all key-value pairs in the dictionary \var{p}. The
1980 \ctype{int} referred to by \var{ppos} must be initialized to
1981 \code{0} prior to the first call to this function to start the
1982 iteration; the function returns true for each pair in the
1983 dictionary, and false once all pairs have been reported. The
1984 parameters \var{pkey} and \var{pvalue} should either point to
1985 \ctype{PyObject*} variables that will be filled in with each key and
Tim Peters9ddf40b2004-06-20 22:41:32 +00001986 value, respectively, or may be \NULL{}. Any references returned through
Raymond Hettinger54693242003-12-13 19:48:41 +00001987 them are borrowed. \var{ppos} should not be altered during iteration.
1988 Its value represents offsets within the internal dictionary structure,
1989 and since the structure is sparse, the offsets are not consecutive.
Fred Drake3adf79e2001-10-12 19:01:43 +00001990
1991 For example:
1992
1993\begin{verbatim}
1994PyObject *key, *value;
1995int pos = 0;
1996
1997while (PyDict_Next(self->dict, &pos, &key, &value)) {
1998 /* do something interesting with the values... */
1999 ...
2000}
2001\end{verbatim}
2002
2003 The dictionary \var{p} should not be mutated during iteration. It
2004 is safe (since Python 2.1) to modify the values of the keys as you
2005 iterate over the dictionary, but only so long as the set of keys
2006 does not change. For example:
2007
2008\begin{verbatim}
2009PyObject *key, *value;
2010int pos = 0;
2011
2012while (PyDict_Next(self->dict, &pos, &key, &value)) {
2013 int i = PyInt_AS_LONG(value) + 1;
2014 PyObject *o = PyInt_FromLong(i);
2015 if (o == NULL)
2016 return -1;
2017 if (PyDict_SetItem(self->dict, key, o) < 0) {
2018 Py_DECREF(o);
2019 return -1;
2020 }
2021 Py_DECREF(o);
2022}
2023\end{verbatim}
2024\end{cfuncdesc}
2025
2026\begin{cfuncdesc}{int}{PyDict_Merge}{PyObject *a, PyObject *b, int override}
Tim Petersf582b822001-12-11 18:51:08 +00002027 Iterate over mapping object \var{b} adding key-value pairs to dictionary
2028 \var{a}.
2029 \var{b} may be a dictionary, or any object supporting
2030 \function{PyMapping_Keys()} and \function{PyObject_GetItem()}.
2031 If \var{override} is true, existing pairs in \var{a} will
Fred Drake3adf79e2001-10-12 19:01:43 +00002032 be replaced if a matching key is found in \var{b}, otherwise pairs
2033 will only be added if there is not a matching key in \var{a}.
Tim Petersf582b822001-12-11 18:51:08 +00002034 Return \code{0} on success or \code{-1} if an exception was
Fred Drake3adf79e2001-10-12 19:01:43 +00002035 raised.
2036\versionadded{2.2}
2037\end{cfuncdesc}
2038
2039\begin{cfuncdesc}{int}{PyDict_Update}{PyObject *a, PyObject *b}
2040 This is the same as \code{PyDict_Merge(\var{a}, \var{b}, 1)} in C,
Tim Petersf582b822001-12-11 18:51:08 +00002041 or \code{\var{a}.update(\var{b})} in Python. Return \code{0} on
Fred Drake3adf79e2001-10-12 19:01:43 +00002042 success or \code{-1} if an exception was raised.
2043 \versionadded{2.2}
2044\end{cfuncdesc}
2045
Tim Petersf582b822001-12-11 18:51:08 +00002046\begin{cfuncdesc}{int}{PyDict_MergeFromSeq2}{PyObject *a, PyObject *seq2,
2047 int override}
2048 Update or merge into dictionary \var{a}, from the key-value pairs in
2049 \var{seq2}. \var{seq2} must be an iterable object producing
2050 iterable objects of length 2, viewed as key-value pairs. In case of
2051 duplicate keys, the last wins if \var{override} is true, else the
2052 first wins.
2053 Return \code{0} on success or \code{-1} if an exception
2054 was raised.
2055 Equivalent Python (except for the return value):
2056
2057\begin{verbatim}
2058def PyDict_MergeFromSeq2(a, seq2, override):
2059 for key, value in seq2:
2060 if override or key not in a:
2061 a[key] = value
2062\end{verbatim}
2063
2064 \versionadded{2.2}
2065\end{cfuncdesc}
Fred Drake3adf79e2001-10-12 19:01:43 +00002066
Fred Drake54e62942001-12-11 19:40:16 +00002067
Fred Drake3adf79e2001-10-12 19:01:43 +00002068\section{Other Objects \label{otherObjects}}
2069
2070\subsection{File Objects \label{fileObjects}}
2071
2072\obindex{file}
2073Python's built-in file objects are implemented entirely on the
2074\ctype{FILE*} support from the C standard library. This is an
2075implementation detail and may change in future releases of Python.
2076
2077\begin{ctypedesc}{PyFileObject}
2078 This subtype of \ctype{PyObject} represents a Python file object.
2079\end{ctypedesc}
2080
2081\begin{cvardesc}{PyTypeObject}{PyFile_Type}
2082 This instance of \ctype{PyTypeObject} represents the Python file
2083 type. This is exposed to Python programs as \code{types.FileType}.
2084 \withsubitem{(in module types)}{\ttindex{FileType}}
2085\end{cvardesc}
2086
2087\begin{cfuncdesc}{int}{PyFile_Check}{PyObject *p}
2088 Returns true if its argument is a \ctype{PyFileObject} or a subtype
2089 of \ctype{PyFileObject}.
2090 \versionchanged[Allowed subtypes to be accepted]{2.2}
2091\end{cfuncdesc}
2092
2093\begin{cfuncdesc}{int}{PyFile_CheckExact}{PyObject *p}
2094 Returns true if its argument is a \ctype{PyFileObject}, but not a
2095 subtype of \ctype{PyFileObject}.
2096 \versionadded{2.2}
2097\end{cfuncdesc}
2098
2099\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *filename, char *mode}
2100 On success, returns a new file object that is opened on the file
2101 given by \var{filename}, with a file mode given by \var{mode}, where
2102 \var{mode} has the same semantics as the standard C routine
Tim Peters9ddf40b2004-06-20 22:41:32 +00002103 \cfunction{fopen()}\ttindex{fopen()}. On failure, returns \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002104\end{cfuncdesc}
2105
2106\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp,
2107 char *name, char *mode,
2108 int (*close)(FILE*)}
2109 Creates a new \ctype{PyFileObject} from the already-open standard C
2110 file pointer, \var{fp}. The function \var{close} will be called
2111 when the file should be closed. Returns \NULL{} on failure.
2112\end{cfuncdesc}
2113
2114\begin{cfuncdesc}{FILE*}{PyFile_AsFile}{PyFileObject *p}
2115 Returns the file object associated with \var{p} as a \ctype{FILE*}.
2116\end{cfuncdesc}
2117
2118\begin{cfuncdesc}{PyObject*}{PyFile_GetLine}{PyObject *p, int n}
2119 Equivalent to \code{\var{p}.readline(\optional{\var{n}})}, this
2120 function reads one line from the object \var{p}. \var{p} may be a
2121 file object or any object with a \method{readline()} method. If
2122 \var{n} is \code{0}, exactly one line is read, regardless of the
2123 length of the line. If \var{n} is greater than \code{0}, no more
2124 than \var{n} bytes will be read from the file; a partial line can be
2125 returned. In both cases, an empty string is returned if the end of
2126 the file is reached immediately. If \var{n} is less than \code{0},
2127 however, one line is read regardless of length, but
2128 \exception{EOFError} is raised if the end of the file is reached
2129 immediately.
2130 \withsubitem{(built-in exception)}{\ttindex{EOFError}}
2131\end{cfuncdesc}
2132
2133\begin{cfuncdesc}{PyObject*}{PyFile_Name}{PyObject *p}
2134 Returns the name of the file specified by \var{p} as a string
2135 object.
2136\end{cfuncdesc}
2137
2138\begin{cfuncdesc}{void}{PyFile_SetBufSize}{PyFileObject *p, int n}
2139 Available on systems with \cfunction{setvbuf()}\ttindex{setvbuf()}
2140 only. This should only be called immediately after file object
2141 creation.
2142\end{cfuncdesc}
2143
Martin v. Löwis5467d4c2003-05-10 07:10:12 +00002144\begin{cfuncdesc}{int}{PyFile_Encoding}{PyFileObject *p, char *enc}
2145 Set the file's encoding for Unicode output to \var{enc}. Return
2146 1 on success and 0 on failure.
2147 \versionadded{2.3}
2148\end{cfuncdesc}
2149
Fred Drake3adf79e2001-10-12 19:01:43 +00002150\begin{cfuncdesc}{int}{PyFile_SoftSpace}{PyObject *p, int newflag}
2151 This function exists for internal use by the interpreter. Sets the
2152 \member{softspace} attribute of \var{p} to \var{newflag} and
2153 \withsubitem{(file attribute)}{\ttindex{softspace}}returns the
2154 previous value. \var{p} does not have to be a file object for this
2155 function to work properly; any object is supported (thought its only
2156 interesting if the \member{softspace} attribute can be set). This
2157 function clears any errors, and will return \code{0} as the previous
2158 value if the attribute either does not exist or if there were errors
2159 in retrieving it. There is no way to detect errors from this
2160 function, but doing so should not be needed.
2161\end{cfuncdesc}
2162
2163\begin{cfuncdesc}{int}{PyFile_WriteObject}{PyObject *obj, PyFileObject *p,
2164 int flags}
2165 Writes object \var{obj} to file object \var{p}. The only supported
2166 flag for \var{flags} is
2167 \constant{Py_PRINT_RAW}\ttindex{Py_PRINT_RAW}; if given, the
2168 \function{str()} of the object is written instead of the
2169 \function{repr()}. Returns \code{0} on success or \code{-1} on
2170 failure; the appropriate exception will be set.
2171\end{cfuncdesc}
2172
Fred Drake454af892001-11-29 22:42:59 +00002173\begin{cfuncdesc}{int}{PyFile_WriteString}{const char *s, PyFileObject *p}
Fred Drake3adf79e2001-10-12 19:01:43 +00002174 Writes string \var{s} to file object \var{p}. Returns \code{0} on
2175 success or \code{-1} on failure; the appropriate exception will be
2176 set.
2177\end{cfuncdesc}
2178
2179
2180\subsection{Instance Objects \label{instanceObjects}}
2181
2182\obindex{instance}
2183There are very few functions specific to instance objects.
2184
2185\begin{cvardesc}{PyTypeObject}{PyInstance_Type}
2186 Type object for class instances.
2187\end{cvardesc}
2188
2189\begin{cfuncdesc}{int}{PyInstance_Check}{PyObject *obj}
2190 Returns true if \var{obj} is an instance.
2191\end{cfuncdesc}
2192
2193\begin{cfuncdesc}{PyObject*}{PyInstance_New}{PyObject *class,
2194 PyObject *arg,
2195 PyObject *kw}
2196 Create a new instance of a specific class. The parameters \var{arg}
2197 and \var{kw} are used as the positional and keyword parameters to
2198 the object's constructor.
2199\end{cfuncdesc}
2200
2201\begin{cfuncdesc}{PyObject*}{PyInstance_NewRaw}{PyObject *class,
2202 PyObject *dict}
Neil Schemenauerc4932292005-06-18 17:54:13 +00002203 Create a new instance of a specific class without calling its
Fred Drake3adf79e2001-10-12 19:01:43 +00002204 constructor. \var{class} is the class of new object. The
2205 \var{dict} parameter will be used as the object's \member{__dict__};
Tim Peters9ddf40b2004-06-20 22:41:32 +00002206 if \NULL{}, a new dictionary will be created for the instance.
Fred Drake3adf79e2001-10-12 19:01:43 +00002207\end{cfuncdesc}
2208
2209
2210\subsection{Method Objects \label{method-objects}}
2211
2212\obindex{method}
2213There are some useful functions that are useful for working with
2214method objects.
2215
2216\begin{cvardesc}{PyTypeObject}{PyMethod_Type}
2217 This instance of \ctype{PyTypeObject} represents the Python method
2218 type. This is exposed to Python programs as \code{types.MethodType}.
2219 \withsubitem{(in module types)}{\ttindex{MethodType}}
2220\end{cvardesc}
2221
2222\begin{cfuncdesc}{int}{PyMethod_Check}{PyObject *o}
2223 Return true if \var{o} is a method object (has type
Tim Peters9ddf40b2004-06-20 22:41:32 +00002224 \cdata{PyMethod_Type}). The parameter must not be \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002225\end{cfuncdesc}
2226
2227\begin{cfuncdesc}{PyObject*}{PyMethod_New}{PyObject *func.
2228 PyObject *self, PyObject *class}
2229 Return a new method object, with \var{func} being any callable
2230 object; this is the function that will be called when the method is
2231 called. If this method should be bound to an instance, \var{self}
2232 should be the instance and \var{class} should be the class of
2233 \var{self}, otherwise \var{self} should be \NULL{} and \var{class}
2234 should be the class which provides the unbound method..
2235\end{cfuncdesc}
2236
2237\begin{cfuncdesc}{PyObject*}{PyMethod_Class}{PyObject *meth}
2238 Return the class object from which the method \var{meth} was
2239 created; if this was created from an instance, it will be the class
2240 of the instance.
2241\end{cfuncdesc}
2242
2243\begin{cfuncdesc}{PyObject*}{PyMethod_GET_CLASS}{PyObject *meth}
2244 Macro version of \cfunction{PyMethod_Class()} which avoids error
2245 checking.
2246\end{cfuncdesc}
2247
2248\begin{cfuncdesc}{PyObject*}{PyMethod_Function}{PyObject *meth}
2249 Return the function object associated with the method \var{meth}.
2250\end{cfuncdesc}
2251
2252\begin{cfuncdesc}{PyObject*}{PyMethod_GET_FUNCTION}{PyObject *meth}
2253 Macro version of \cfunction{PyMethod_Function()} which avoids error
2254 checking.
2255\end{cfuncdesc}
2256
2257\begin{cfuncdesc}{PyObject*}{PyMethod_Self}{PyObject *meth}
2258 Return the instance associated with the method \var{meth} if it is
Tim Peters9ddf40b2004-06-20 22:41:32 +00002259 bound, otherwise return \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002260\end{cfuncdesc}
2261
2262\begin{cfuncdesc}{PyObject*}{PyMethod_GET_SELF}{PyObject *meth}
2263 Macro version of \cfunction{PyMethod_Self()} which avoids error
2264 checking.
2265\end{cfuncdesc}
2266
2267
2268\subsection{Module Objects \label{moduleObjects}}
2269
2270\obindex{module}
2271There are only a few functions special to module objects.
2272
2273\begin{cvardesc}{PyTypeObject}{PyModule_Type}
2274 This instance of \ctype{PyTypeObject} represents the Python module
2275 type. This is exposed to Python programs as
2276 \code{types.ModuleType}.
2277 \withsubitem{(in module types)}{\ttindex{ModuleType}}
2278\end{cvardesc}
2279
2280\begin{cfuncdesc}{int}{PyModule_Check}{PyObject *p}
2281 Returns true if \var{p} is a module object, or a subtype of a module
2282 object.
2283 \versionchanged[Allowed subtypes to be accepted]{2.2}
2284\end{cfuncdesc}
2285
2286\begin{cfuncdesc}{int}{PyModule_CheckExact}{PyObject *p}
2287 Returns true if \var{p} is a module object, but not a subtype of
2288 \cdata{PyModule_Type}.
2289 \versionadded{2.2}
2290\end{cfuncdesc}
2291
2292\begin{cfuncdesc}{PyObject*}{PyModule_New}{char *name}
2293 Return a new module object with the \member{__name__} attribute set
2294 to \var{name}. Only the module's \member{__doc__} and
2295 \member{__name__} attributes are filled in; the caller is
2296 responsible for providing a \member{__file__} attribute.
2297 \withsubitem{(module attribute)}{
2298 \ttindex{__name__}\ttindex{__doc__}\ttindex{__file__}}
2299\end{cfuncdesc}
2300
2301\begin{cfuncdesc}{PyObject*}{PyModule_GetDict}{PyObject *module}
2302 Return the dictionary object that implements \var{module}'s
2303 namespace; this object is the same as the \member{__dict__}
2304 attribute of the module object. This function never fails.
2305 \withsubitem{(module attribute)}{\ttindex{__dict__}}
Fred Drakef495ef72002-04-12 19:32:07 +00002306 It is recommended extensions use other \cfunction{PyModule_*()}
2307 and \cfunction{PyObject_*()} functions rather than directly
2308 manipulate a module's \member{__dict__}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002309\end{cfuncdesc}
2310
2311\begin{cfuncdesc}{char*}{PyModule_GetName}{PyObject *module}
2312 Return \var{module}'s \member{__name__} value. If the module does
2313 not provide one, or if it is not a string, \exception{SystemError}
2314 is raised and \NULL{} is returned.
2315 \withsubitem{(module attribute)}{\ttindex{__name__}}
2316 \withsubitem{(built-in exception)}{\ttindex{SystemError}}
2317\end{cfuncdesc}
2318
2319\begin{cfuncdesc}{char*}{PyModule_GetFilename}{PyObject *module}
2320 Return the name of the file from which \var{module} was loaded using
2321 \var{module}'s \member{__file__} attribute. If this is not defined,
2322 or if it is not a string, raise \exception{SystemError} and return
Tim Peters9ddf40b2004-06-20 22:41:32 +00002323 \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002324 \withsubitem{(module attribute)}{\ttindex{__file__}}
2325 \withsubitem{(built-in exception)}{\ttindex{SystemError}}
2326\end{cfuncdesc}
2327
2328\begin{cfuncdesc}{int}{PyModule_AddObject}{PyObject *module,
2329 char *name, PyObject *value}
2330 Add an object to \var{module} as \var{name}. This is a convenience
2331 function which can be used from the module's initialization
2332 function. This steals a reference to \var{value}. Returns
2333 \code{-1} on error, \code{0} on success.
2334 \versionadded{2.0}
2335\end{cfuncdesc}
2336
2337\begin{cfuncdesc}{int}{PyModule_AddIntConstant}{PyObject *module,
Martin v. Löwisdd07e592004-06-02 12:45:27 +00002338 char *name, long value}
Fred Drake3adf79e2001-10-12 19:01:43 +00002339 Add an integer constant to \var{module} as \var{name}. This
2340 convenience function can be used from the module's initialization
2341 function. Returns \code{-1} on error, \code{0} on success.
2342 \versionadded{2.0}
2343\end{cfuncdesc}
2344
2345\begin{cfuncdesc}{int}{PyModule_AddStringConstant}{PyObject *module,
2346 char *name, char *value}
2347 Add a string constant to \var{module} as \var{name}. This
2348 convenience function can be used from the module's initialization
2349 function. The string \var{value} must be null-terminated. Returns
2350 \code{-1} on error, \code{0} on success.
2351 \versionadded{2.0}
2352\end{cfuncdesc}
2353
2354
2355\subsection{Iterator Objects \label{iterator-objects}}
2356
2357Python provides two general-purpose iterator objects. The first, a
2358sequence iterator, works with an arbitrary sequence supporting the
2359\method{__getitem__()} method. The second works with a callable
2360object and a sentinel value, calling the callable for each item in the
2361sequence, and ending the iteration when the sentinel value is
2362returned.
2363
2364\begin{cvardesc}{PyTypeObject}{PySeqIter_Type}
2365 Type object for iterator objects returned by
2366 \cfunction{PySeqIter_New()} and the one-argument form of the
2367 \function{iter()} built-in function for built-in sequence types.
2368 \versionadded{2.2}
2369\end{cvardesc}
2370
2371\begin{cfuncdesc}{int}{PySeqIter_Check}{op}
2372 Return true if the type of \var{op} is \cdata{PySeqIter_Type}.
2373 \versionadded{2.2}
2374\end{cfuncdesc}
2375
2376\begin{cfuncdesc}{PyObject*}{PySeqIter_New}{PyObject *seq}
2377 Return an iterator that works with a general sequence object,
2378 \var{seq}. The iteration ends when the sequence raises
2379 \exception{IndexError} for the subscripting operation.
2380 \versionadded{2.2}
2381\end{cfuncdesc}
2382
2383\begin{cvardesc}{PyTypeObject}{PyCallIter_Type}
2384 Type object for iterator objects returned by
2385 \cfunction{PyCallIter_New()} and the two-argument form of the
2386 \function{iter()} built-in function.
2387 \versionadded{2.2}
2388\end{cvardesc}
2389
2390\begin{cfuncdesc}{int}{PyCallIter_Check}{op}
2391 Return true if the type of \var{op} is \cdata{PyCallIter_Type}.
2392 \versionadded{2.2}
2393\end{cfuncdesc}
2394
2395\begin{cfuncdesc}{PyObject*}{PyCallIter_New}{PyObject *callable,
2396 PyObject *sentinel}
2397 Return a new iterator. The first parameter, \var{callable}, can be
2398 any Python callable object that can be called with no parameters;
2399 each call to it should return the next item in the iteration. When
2400 \var{callable} returns a value equal to \var{sentinel}, the
2401 iteration will be terminated.
2402 \versionadded{2.2}
2403\end{cfuncdesc}
2404
2405
2406\subsection{Descriptor Objects \label{descriptor-objects}}
2407
Fred Drake54e62942001-12-11 19:40:16 +00002408``Descriptors'' are objects that describe some attribute of an object.
2409They are found in the dictionary of type objects.
2410
Fred Drake3adf79e2001-10-12 19:01:43 +00002411\begin{cvardesc}{PyTypeObject}{PyProperty_Type}
Fred Drake54e62942001-12-11 19:40:16 +00002412 The type object for the built-in descriptor types.
Fred Drake3adf79e2001-10-12 19:01:43 +00002413 \versionadded{2.2}
2414\end{cvardesc}
2415
2416\begin{cfuncdesc}{PyObject*}{PyDescr_NewGetSet}{PyTypeObject *type,
2417 PyGetSetDef *getset}
2418 \versionadded{2.2}
2419\end{cfuncdesc}
2420
2421\begin{cfuncdesc}{PyObject*}{PyDescr_NewMember}{PyTypeObject *type,
2422 PyMemberDef *meth}
2423 \versionadded{2.2}
2424\end{cfuncdesc}
2425
2426\begin{cfuncdesc}{PyObject*}{PyDescr_NewMethod}{PyTypeObject *type,
2427 PyMethodDef *meth}
2428 \versionadded{2.2}
2429\end{cfuncdesc}
2430
2431\begin{cfuncdesc}{PyObject*}{PyDescr_NewWrapper}{PyTypeObject *type,
2432 struct wrapperbase *wrapper,
2433 void *wrapped}
2434 \versionadded{2.2}
2435\end{cfuncdesc}
2436
Thomas Heller8178a222004-02-09 10:47:11 +00002437\begin{cfuncdesc}{PyObject*}{PyDescr_NewClassMethod}{PyTypeObject *type,
2438 PyMethodDef *method}
2439 \versionadded{2.3}
2440\end{cfuncdesc}
2441
Fred Drake3adf79e2001-10-12 19:01:43 +00002442\begin{cfuncdesc}{int}{PyDescr_IsData}{PyObject *descr}
2443 Returns true if the descriptor objects \var{descr} describes a data
2444 attribute, or false if it describes a method. \var{descr} must be a
2445 descriptor object; there is no error checking.
2446 \versionadded{2.2}
2447\end{cfuncdesc}
2448
2449\begin{cfuncdesc}{PyObject*}{PyWrapper_New}{PyObject *, PyObject *}
2450 \versionadded{2.2}
2451\end{cfuncdesc}
2452
2453
2454\subsection{Slice Objects \label{slice-objects}}
2455
2456\begin{cvardesc}{PyTypeObject}{PySlice_Type}
2457 The type object for slice objects. This is the same as
2458 \code{types.SliceType}.
2459 \withsubitem{(in module types)}{\ttindex{SliceType}}
2460\end{cvardesc}
2461
2462\begin{cfuncdesc}{int}{PySlice_Check}{PyObject *ob}
2463 Returns true if \var{ob} is a slice object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002464 \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002465\end{cfuncdesc}
2466
2467\begin{cfuncdesc}{PyObject*}{PySlice_New}{PyObject *start, PyObject *stop,
2468 PyObject *step}
2469 Return a new slice object with the given values. The \var{start},
2470 \var{stop}, and \var{step} parameters are used as the values of the
2471 slice object attributes of the same names. Any of the values may be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002472 \NULL{}, in which case the \code{None} will be used for the
Fred Drake3adf79e2001-10-12 19:01:43 +00002473 corresponding attribute. Returns \NULL{} if the new object could
2474 not be allocated.
2475\end{cfuncdesc}
2476
2477\begin{cfuncdesc}{int}{PySlice_GetIndices}{PySliceObject *slice, int length,
2478 int *start, int *stop, int *step}
Michael W. Hudson5efaf7e2002-06-11 10:55:12 +00002479Retrieve the start, stop and step indices from the slice object
2480\var{slice}, assuming a sequence of length \var{length}. Treats
2481indices greater than \var{length} as errors.
2482
2483Returns 0 on success and -1 on error with no exception set (unless one
2484of the indices was not \constant{None} and failed to be converted to
2485an integer, in which case -1 is returned with an exception set).
2486
2487You probably do not want to use this function. If you want to use
2488slice objects in versions of Python prior to 2.3, you would probably
2489do well to incorporate the source of \cfunction{PySlice_GetIndicesEx},
2490suitably renamed, in the source of your extension.
2491\end{cfuncdesc}
2492
2493\begin{cfuncdesc}{int}{PySlice_GetIndicesEx}{PySliceObject *slice, int length,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002494 int *start, int *stop, int *step,
Michael W. Hudson5efaf7e2002-06-11 10:55:12 +00002495 int *slicelength}
2496Usable replacement for \cfunction{PySlice_GetIndices}. Retrieve the
2497start, stop, and step indices from the slice object \var{slice}
2498assuming a sequence of length \var{length}, and store the length of
2499the slice in \var{slicelength}. Out of bounds indices are clipped in
2500a manner consistent with the handling of normal slices.
2501
2502Returns 0 on success and -1 on error with exception set.
2503
2504\versionadded{2.3}
Fred Drake3adf79e2001-10-12 19:01:43 +00002505\end{cfuncdesc}
2506
2507
2508\subsection{Weak Reference Objects \label{weakref-objects}}
2509
2510Python supports \emph{weak references} as first-class objects. There
2511are two specific object types which directly implement weak
2512references. The first is a simple reference object, and the second
2513acts as a proxy for the original object as much as it can.
2514
2515\begin{cfuncdesc}{int}{PyWeakref_Check}{ob}
2516 Return true if \var{ob} is either a reference or proxy object.
2517 \versionadded{2.2}
2518\end{cfuncdesc}
2519
2520\begin{cfuncdesc}{int}{PyWeakref_CheckRef}{ob}
2521 Return true if \var{ob} is a reference object.
2522 \versionadded{2.2}
2523\end{cfuncdesc}
2524
2525\begin{cfuncdesc}{int}{PyWeakref_CheckProxy}{ob}
2526 Return true if \var{ob} is a proxy object.
2527 \versionadded{2.2}
2528\end{cfuncdesc}
2529
2530\begin{cfuncdesc}{PyObject*}{PyWeakref_NewRef}{PyObject *ob,
2531 PyObject *callback}
2532 Return a weak reference object for the object \var{ob}. This will
2533 always return a new reference, but is not guaranteed to create a new
2534 object; an existing reference object may be returned. The second
2535 parameter, \var{callback}, can be a callable object that receives
2536 notification when \var{ob} is garbage collected; it should accept a
Raymond Hettinger5232f502004-03-25 08:51:36 +00002537 single parameter, which will be the weak reference object itself.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002538 \var{callback} may also be \code{None} or \NULL{}. If \var{ob}
Fred Drake3adf79e2001-10-12 19:01:43 +00002539 is not a weakly-referencable object, or if \var{callback} is not
Tim Peters9ddf40b2004-06-20 22:41:32 +00002540 callable, \code{None}, or \NULL{}, this will return \NULL{} and
Fred Drake3adf79e2001-10-12 19:01:43 +00002541 raise \exception{TypeError}.
2542 \versionadded{2.2}
2543\end{cfuncdesc}
2544
2545\begin{cfuncdesc}{PyObject*}{PyWeakref_NewProxy}{PyObject *ob,
2546 PyObject *callback}
2547 Return a weak reference proxy object for the object \var{ob}. This
2548 will always return a new reference, but is not guaranteed to create
2549 a new object; an existing proxy object may be returned. The second
2550 parameter, \var{callback}, can be a callable object that receives
2551 notification when \var{ob} is garbage collected; it should accept a
Raymond Hettinger5232f502004-03-25 08:51:36 +00002552 single parameter, which will be the weak reference object itself.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002553 \var{callback} may also be \code{None} or \NULL{}. If \var{ob} is not
Fred Drake3adf79e2001-10-12 19:01:43 +00002554 a weakly-referencable object, or if \var{callback} is not callable,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002555 \code{None}, or \NULL{}, this will return \NULL{} and raise
Fred Drake3adf79e2001-10-12 19:01:43 +00002556 \exception{TypeError}.
2557 \versionadded{2.2}
2558\end{cfuncdesc}
2559
2560\begin{cfuncdesc}{PyObject*}{PyWeakref_GetObject}{PyObject *ref}
2561 Returns the referenced object from a weak reference, \var{ref}. If
Ka-Ping Yeebd379e92003-03-28 18:07:16 +00002562 the referent is no longer live, returns \code{None}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002563 \versionadded{2.2}
2564\end{cfuncdesc}
2565
2566\begin{cfuncdesc}{PyObject*}{PyWeakref_GET_OBJECT}{PyObject *ref}
2567 Similar to \cfunction{PyWeakref_GetObject()}, but implemented as a
2568 macro that does no error checking.
2569 \versionadded{2.2}
2570\end{cfuncdesc}
2571
2572
2573\subsection{CObjects \label{cObjects}}
2574
2575\obindex{CObject}
2576Refer to \emph{Extending and Embedding the Python Interpreter},
Fred Drake54e62942001-12-11 19:40:16 +00002577section~1.12, ``Providing a C API for an Extension Module,'' for more
Fred Drake3adf79e2001-10-12 19:01:43 +00002578information on using these objects.
2579
2580
2581\begin{ctypedesc}{PyCObject}
2582 This subtype of \ctype{PyObject} represents an opaque value, useful
2583 for C extension modules who need to pass an opaque value (as a
2584 \ctype{void*} pointer) through Python code to other C code. It is
2585 often used to make a C function pointer defined in one module
2586 available to other modules, so the regular import mechanism can be
2587 used to access C APIs defined in dynamically loaded modules.
2588\end{ctypedesc}
2589
2590\begin{cfuncdesc}{int}{PyCObject_Check}{PyObject *p}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002591 Return true if its argument is a \ctype{PyCObject}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002592\end{cfuncdesc}
2593
Tim Petersf582b822001-12-11 18:51:08 +00002594\begin{cfuncdesc}{PyObject*}{PyCObject_FromVoidPtr}{void* cobj,
Fred Drake54e62942001-12-11 19:40:16 +00002595 void (*destr)(void *)}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002596 Create a \ctype{PyCObject} from the \code{void *}\var{cobj}. The
Fred Drake3adf79e2001-10-12 19:01:43 +00002597 \var{destr} function will be called when the object is reclaimed,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002598 unless it is \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002599\end{cfuncdesc}
2600
2601\begin{cfuncdesc}{PyObject*}{PyCObject_FromVoidPtrAndDesc}{void* cobj,
2602 void* desc, void (*destr)(void *, void *)}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002603 Create a \ctype{PyCObject} from the \ctype{void *}\var{cobj}. The
Fred Drake3adf79e2001-10-12 19:01:43 +00002604 \var{destr} function will be called when the object is reclaimed.
2605 The \var{desc} argument can be used to pass extra callback data for
2606 the destructor function.
2607\end{cfuncdesc}
2608
2609\begin{cfuncdesc}{void*}{PyCObject_AsVoidPtr}{PyObject* self}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002610 Return the object \ctype{void *} that the \ctype{PyCObject}
Fred Drake3adf79e2001-10-12 19:01:43 +00002611 \var{self} was created with.
2612\end{cfuncdesc}
2613
2614\begin{cfuncdesc}{void*}{PyCObject_GetDesc}{PyObject* self}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002615 Return the description \ctype{void *} that the \ctype{PyCObject}
Fred Drake3adf79e2001-10-12 19:01:43 +00002616 \var{self} was created with.
2617\end{cfuncdesc}
Fred Drakecd8474e2001-11-26 21:29:17 +00002618
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002619\begin{cfuncdesc}{int}{PyCObject_SetVoidPtr}{PyObject* self, void* cobj}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002620 Set the void pointer inside \var{self} to \var{cobj}.
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002621 The \ctype{PyCObject} must not have an associated destructor.
2622 Return true on success, false on failure.
2623\end{cfuncdesc}
2624
Fred Drakecd8474e2001-11-26 21:29:17 +00002625
2626\subsection{Cell Objects \label{cell-objects}}
2627
2628``Cell'' objects are used to implement variables referenced by
2629multiple scopes. For each such variable, a cell object is created to
2630store the value; the local variables of each stack frame that
2631references the value contains a reference to the cells from outer
2632scopes which also use that variable. When the value is accessed, the
2633value contained in the cell is used instead of the cell object
2634itself. This de-referencing of the cell object requires support from
2635the generated byte-code; these are not automatically de-referenced
2636when accessed. Cell objects are not likely to be useful elsewhere.
2637
Fred Drake54e62942001-12-11 19:40:16 +00002638\begin{ctypedesc}{PyCellObject}
2639 The C structure used for cell objects.
2640\end{ctypedesc}
2641
Fred Drakecd8474e2001-11-26 21:29:17 +00002642\begin{cvardesc}{PyTypeObject}{PyCell_Type}
2643 The type object corresponding to cell objects
2644\end{cvardesc}
2645
2646\begin{cfuncdesc}{int}{PyCell_Check}{ob}
2647 Return true if \var{ob} is a cell object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002648 \NULL{}.
Fred Drakecd8474e2001-11-26 21:29:17 +00002649\end{cfuncdesc}
2650
2651\begin{cfuncdesc}{PyObject*}{PyCell_New}{PyObject *ob}
2652 Create and return a new cell object containing the value \var{ob}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002653 The parameter may be \NULL{}.
Fred Drakecd8474e2001-11-26 21:29:17 +00002654\end{cfuncdesc}
2655
2656\begin{cfuncdesc}{PyObject*}{PyCell_Get}{PyObject *cell}
2657 Return the contents of the cell \var{cell}.
2658\end{cfuncdesc}
2659
2660\begin{cfuncdesc}{PyObject*}{PyCell_GET}{PyObject *cell}
2661 Return the contents of the cell \var{cell}, but without checking
Raymond Hettingerf4bb1f92003-08-23 03:38:11 +00002662 that \var{cell} is non-\NULL{} and a cell object.
Fred Drakecd8474e2001-11-26 21:29:17 +00002663\end{cfuncdesc}
2664
2665\begin{cfuncdesc}{int}{PyCell_Set}{PyObject *cell, PyObject *value}
2666 Set the contents of the cell object \var{cell} to \var{value}. This
2667 releases the reference to any current content of the cell.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002668 \var{value} may be \NULL{}. \var{cell} must be non-\NULL{}; if it is
Fred Drakecd8474e2001-11-26 21:29:17 +00002669 not a cell object, \code{-1} will be returned. On success, \code{0}
2670 will be returned.
2671\end{cfuncdesc}
2672
2673\begin{cfuncdesc}{void}{PyCell_SET}{PyObject *cell, PyObject *value}
2674 Sets the value of the cell object \var{cell} to \var{value}. No
2675 reference counts are adjusted, and no checks are made for safety;
2676 \var{cell} must be non-\NULL{} and must be a cell object.
2677\end{cfuncdesc}
Martin v. Löwise440e472004-06-01 15:22:42 +00002678
2679
2680\subsection{Generator Objects \label{gen-objects}}
2681
2682Generator objects are what Python uses to implement generator iterators.
2683They are normally created by iterating over a function that yields values,
2684rather than explicitly calling \cfunction{PyGen_New}.
2685
2686\begin{ctypedesc}{PyGenObject}
2687 The C structure used for generator objects.
2688\end{ctypedesc}
2689
2690\begin{cvardesc}{PyTypeObject}{PyGen_Type}
2691 The type object corresponding to generator objects
2692\end{cvardesc}
2693
2694\begin{cfuncdesc}{int}{PyGen_Check}{ob}
2695 Return true if \var{ob} is a generator object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002696 \NULL{}.
Martin v. Löwise440e472004-06-01 15:22:42 +00002697\end{cfuncdesc}
2698
2699\begin{cfuncdesc}{int}{PyGen_CheckExact}{ob}
2700 Return true if \var{ob}'s type is \var{PyGen_Type}
2701 is a generator object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002702 \NULL{}.
Martin v. Löwise440e472004-06-01 15:22:42 +00002703\end{cfuncdesc}
2704
2705\begin{cfuncdesc}{PyObject*}{PyGen_New}{PyFrameObject *frame}
2706 Create and return a new generator object based on the \var{frame} object.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002707 The parameter must not be \NULL{}.
2708\end{cfuncdesc}
2709
2710
2711\subsection{DateTime Objects \label{datetime-objects}}
2712
2713Various date and time objects are supplied by the \module{datetime}
2714module. Before using any of these functions, the header file
2715\file{datetime.h} must be included in your source (note that this is
2716not include by \file{Python.h}), and macro \cfunction{PyDateTime_IMPORT()}
2717must be invoked. The macro arranges to put a pointer to a C structure
2718in a static variable \code{PyDateTimeAPI}, which is used by the following
Tim Peters183dabc2004-07-11 19:26:19 +00002719macros.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002720
Tim Peters183dabc2004-07-11 19:26:19 +00002721Type-check macros:
2722
2723\begin{cfuncdesc}{int}{PyDate_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002724 Return true if \var{ob} is of type \cdata{PyDateTime_DateType} or
2725 a subtype of \cdata{PyDateTime_DateType}. \var{ob} must not be
2726 \NULL{}.
2727 \versionadded{2.4}
2728\end{cfuncdesc}
2729
Tim Peters183dabc2004-07-11 19:26:19 +00002730\begin{cfuncdesc}{int}{PyDate_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002731 Return true if \var{ob} is of type \cdata{PyDateTime_DateType}.
2732 \var{ob} must not be \NULL{}.
2733 \versionadded{2.4}
2734\end{cfuncdesc}
2735
Tim Peters183dabc2004-07-11 19:26:19 +00002736\begin{cfuncdesc}{int}{PyDateTime_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002737 Return true if \var{ob} is of type \cdata{PyDateTime_DateTimeType} or
2738 a subtype of \cdata{PyDateTime_DateTimeType}. \var{ob} must not be
2739 \NULL{}.
2740 \versionadded{2.4}
2741\end{cfuncdesc}
2742
Tim Peters183dabc2004-07-11 19:26:19 +00002743\begin{cfuncdesc}{int}{PyDateTime_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002744 Return true if \var{ob} is of type \cdata{PyDateTime_DateTimeType}.
2745 \var{ob} must not be \NULL{}.
2746 \versionadded{2.4}
2747\end{cfuncdesc}
2748
Tim Peters183dabc2004-07-11 19:26:19 +00002749\begin{cfuncdesc}{int}{PyTime_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002750 Return true if \var{ob} is of type \cdata{PyDateTime_TimeType} or
2751 a subtype of \cdata{PyDateTime_TimeType}. \var{ob} must not be
2752 \NULL{}.
2753 \versionadded{2.4}
2754\end{cfuncdesc}
2755
Tim Peters183dabc2004-07-11 19:26:19 +00002756\begin{cfuncdesc}{int}{PyTime_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002757 Return true if \var{ob} is of type \cdata{PyDateTime_TimeType}.
2758 \var{ob} must not be \NULL{}.
2759 \versionadded{2.4}
2760\end{cfuncdesc}
2761
Tim Peters183dabc2004-07-11 19:26:19 +00002762\begin{cfuncdesc}{int}{PyDelta_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002763 Return true if \var{ob} is of type \cdata{PyDateTime_DeltaType} or
2764 a subtype of \cdata{PyDateTime_DeltaType}. \var{ob} must not be
2765 \NULL{}.
2766 \versionadded{2.4}
2767\end{cfuncdesc}
2768
Tim Peters183dabc2004-07-11 19:26:19 +00002769\begin{cfuncdesc}{int}{PyDelta_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002770 Return true if \var{ob} is of type \cdata{PyDateTime_DeltaType}.
2771 \var{ob} must not be \NULL{}.
2772 \versionadded{2.4}
2773\end{cfuncdesc}
2774
Tim Peters183dabc2004-07-11 19:26:19 +00002775\begin{cfuncdesc}{int}{PyTZInfo_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002776 Return true if \var{ob} is of type \cdata{PyDateTime_TZInfoType} or
2777 a subtype of \cdata{PyDateTime_TZInfoType}. \var{ob} must not be
2778 \NULL{}.
2779 \versionadded{2.4}
2780\end{cfuncdesc}
2781
Tim Peters183dabc2004-07-11 19:26:19 +00002782\begin{cfuncdesc}{int}{PyTZInfo_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002783 Return true if \var{ob} is of type \cdata{PyDateTime_TZInfoType}.
2784 \var{ob} must not be \NULL{}.
2785 \versionadded{2.4}
2786\end{cfuncdesc}
2787
Tim Peters183dabc2004-07-11 19:26:19 +00002788Macros to create objects:
2789
Tim Peters9ddf40b2004-06-20 22:41:32 +00002790\begin{cfuncdesc}{PyObject*}{PyDate_FromDate}{int year, int month, int day}
2791 Return a \code{datetime.date} object with the specified year, month
2792 and day.
2793 \versionadded{2.4}
2794\end{cfuncdesc}
2795
Brett Cannon5bbe6ad2005-02-17 05:17:17 +00002796\begin{cfuncdesc}{PyObject*}{PyDateTime_FromDateAndTime}{int year, int month,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002797 int day, int hour, int minute, int second, int usecond}
2798 Return a \code{datetime.datetime} object with the specified year, month,
2799 day, hour, minute, second and microsecond.
2800 \versionadded{2.4}
2801\end{cfuncdesc}
2802
2803\begin{cfuncdesc}{PyObject*}{PyTime_FromTime}{int hour, int minute,
2804 int second, int usecond}
2805 Return a \code{datetime.time} object with the specified hour, minute,
2806 second and microsecond.
2807 \versionadded{2.4}
2808\end{cfuncdesc}
2809
2810\begin{cfuncdesc}{PyObject*}{PyDelta_FromDSU}{int days, int seconds,
2811 int useconds}
2812 Return a \code{datetime.timedelta} object representing the given number
2813 of days, seconds and microseconds. Normalization is performed so that
2814 the resulting number of microseconds and seconds lie in the ranges
2815 documented for \code{datetime.timedelta} objects.
2816 \versionadded{2.4}
2817\end{cfuncdesc}
2818
Tim Peters8ff9f9f2004-07-17 01:42:26 +00002819Macros to extract fields from date objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00002820instance of \cdata{PyDateTime_Date}, including subclasses (such as
2821\cdata{PyDateTime_DateTime}). The argument must not be \NULL{}, and
2822the type is not checked:
2823
2824\begin{cfuncdesc}{int}{PyDateTime_GET_YEAR}{PyDateTime_Date *o}
2825 Return the year, as a positive int.
2826 \versionadded{2.4}
2827\end{cfuncdesc}
2828
2829\begin{cfuncdesc}{int}{PyDateTime_GET_MONTH}{PyDateTime_Date *o}
2830 Return the month, as an int from 1 through 12.
2831 \versionadded{2.4}
2832\end{cfuncdesc}
2833
2834\begin{cfuncdesc}{int}{PyDateTime_GET_DAY}{PyDateTime_Date *o}
2835 Return the day, as an int from 1 through 31.
2836 \versionadded{2.4}
2837\end{cfuncdesc}
2838
Tim Peters8ff9f9f2004-07-17 01:42:26 +00002839Macros to extract fields from datetime objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00002840instance of \cdata{PyDateTime_DateTime}, including subclasses.
2841The argument must not be \NULL{}, and the type is not checked:
2842
2843\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_HOUR}{PyDateTime_DateTime *o}
Neal Norwitz7fdd92f2004-08-02 21:56:33 +00002844 Return the hour, as an int from 0 through 23.
Tim Peters183dabc2004-07-11 19:26:19 +00002845 \versionadded{2.4}
2846\end{cfuncdesc}
2847
2848\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_MINUTE}{PyDateTime_DateTime *o}
2849 Return the minute, as an int from 0 through 59.
2850 \versionadded{2.4}
2851\end{cfuncdesc}
2852
2853\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_SECOND}{PyDateTime_DateTime *o}
2854 Return the second, as an int from 0 through 59.
2855 \versionadded{2.4}
2856\end{cfuncdesc}
2857
2858\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_MICROSECOND}{PyDateTime_DateTime *o}
2859 Return the microsecond, as an int from 0 through 999999.
2860 \versionadded{2.4}
2861\end{cfuncdesc}
2862
Tim Peters8ff9f9f2004-07-17 01:42:26 +00002863Macros to extract fields from time objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00002864instance of \cdata{PyDateTime_Time}, including subclasses.
2865The argument must not be \NULL{}, and the type is not checked:
2866
2867\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_HOUR}{PyDateTime_Time *o}
Neal Norwitz7fdd92f2004-08-02 21:56:33 +00002868 Return the hour, as an int from 0 through 23.
Tim Peters183dabc2004-07-11 19:26:19 +00002869 \versionadded{2.4}
2870\end{cfuncdesc}
2871
2872\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_MINUTE}{PyDateTime_Time *o}
2873 Return the minute, as an int from 0 through 59.
2874 \versionadded{2.4}
2875\end{cfuncdesc}
2876
2877\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_SECOND}{PyDateTime_Time *o}
2878 Return the second, as an int from 0 through 59.
2879 \versionadded{2.4}
2880\end{cfuncdesc}
2881
2882\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_MICROSECOND}{PyDateTime_Time *o}
2883 Return the microsecond, as an int from 0 through 999999.
2884 \versionadded{2.4}
2885\end{cfuncdesc}
2886
2887Macros for the convenience of modules implementing the DB API:
2888
Tim Peters9ddf40b2004-06-20 22:41:32 +00002889\begin{cfuncdesc}{PyObject*}{PyDateTime_FromTimestamp}{PyObject *args}
2890 Create and return a new \code{datetime.datetime} object given an argument
2891 tuple suitable for passing to \code{datetime.datetime.fromtimestamp()}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002892 \versionadded{2.4}
2893\end{cfuncdesc}
2894
2895\begin{cfuncdesc}{PyObject*}{PyDate_FromTimestamp}{PyObject *args}
2896 Create and return a new \code{datetime.date} object given an argument
2897 tuple suitable for passing to \code{datetime.date.fromtimestamp()}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002898 \versionadded{2.4}
Martin v. Löwise440e472004-06-01 15:22:42 +00002899\end{cfuncdesc}
Raymond Hettingerbeb31012005-08-16 03:47:52 +00002900
2901
2902\subsection{Set Objects \label{setObjects}}
2903\sectionauthor{Raymond D. Hettinger}{python@rcn.com}
2904
2905\obindex{set}
2906\obindex{frozenset}
2907\versionadded{2.5}
2908
2909This section details the public API for \class{set} and \class{frozenset}
2910objects. Any functionality not listed below is best accessed using the
Raymond Hettinger0c230b92005-08-17 10:05:22 +00002911either the abstract object protocol (including
Raymond Hettingerbeb31012005-08-16 03:47:52 +00002912\cfunction{PyObject_CallMethod()}, \cfunction{PyObject_RichCompareBool()},
2913\cfunction{PyObject_Hash()}, \cfunction{PyObject_Repr()},
2914\cfunction{PyObject_IsTrue()}, \cfunction{PyObject_Print()}, and
Raymond Hettinger0c230b92005-08-17 10:05:22 +00002915\cfunction{PyObject_GetIter()})
2916or the abstract number protocol (including
2917\cfunction{PyNumber_Add()}, \cfunction{PyNumber_Subtract()},
2918\cfunction{PyNumber_Or()}, \cfunction{PyNumber_Xor()},
2919\cfunction{PyNumber_InplaceAdd()}, \cfunction{PyNumber_InplaceSubtract()},
2920\cfunction{PyNumber_InplaceOr()}, and \cfunction{PyNumber_InplaceXor()}).
2921Note, the latter are also useful for copying (\code{c=s+s}) and clearing
2922(\code{s-=s}).
Raymond Hettingerbeb31012005-08-16 03:47:52 +00002923
2924\begin{ctypedesc}{PySetObject}
2925 This subtype of \ctype{PyObject} is used to hold the internal data for
2926 both \class{set} and \class{frozenset} objects. It is like a
2927 \ctype{PyDictObject} in that it is a fixed size for small sets
2928 (much like tuple storage) and will point to a separate, variable sized
2929 block of memory for medium and large sized sets (much like list storage).
2930 None of the fields of this structure should be considered public and
2931 are subject to change. All access should be done through the
2932 documented API.
2933
2934\end{ctypedesc}
2935
2936\begin{cvardesc}{PyTypeObject}{PySet_Type}
2937 This is an instance of \ctype{PyTypeObject} representing the Python
2938 \class{set} type.
2939\end{cvardesc}
2940
2941\begin{cvardesc}{PyTypeObject}{PyFrozenSet_Type}
2942 This is an instance of \ctype{PyTypeObject} representing the Python
2943 \class{frozenset} type.
2944\end{cvardesc}
2945
2946
2947The following type check macros work on pointers to any Python object.
2948Likewise, the constructor functions work with any iterable Python object.
2949
2950\begin{cfuncdesc}{int}{PyAnySet_Check}{PyObject *p}
2951 Returns true if \var{p} is a \class{set} object, a \class{frozenset}
2952 object, or an instance of a subtype.
2953\end{cfuncdesc}
2954
2955\begin{cfuncdesc}{int}{PyAnySet_CheckExact}{PyObject *p}
2956 Returns true if \var{p} is a \class{set} object or a \class{frozenset}
2957 object but not an instance of a subtype.
2958\end{cfuncdesc}
2959
2960\begin{cfuncdesc}{int}{PyFrozenSet_CheckExact}{PyObject *p}
2961 Returns true if \var{p} is a \class{frozenset} object
2962 but not an instance of a subtype.
2963\end{cfuncdesc}
2964
2965\begin{cfuncdesc}{PyObject*}{PySet_New}{PyObject *iterable}
2966 Returns a new \class{set} containing objects returned by the
2967 \var{iterable}. The \var{iterable} may be \NULL{} to create a
2968 new empty set. Returns the new set on success or \NULL{} on
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00002969 failure. Raises \exception{TypeError} if \var{iterable} is
2970 not actually iterable.
Raymond Hettingerbeb31012005-08-16 03:47:52 +00002971\end{cfuncdesc}
2972
2973\begin{cfuncdesc}{PyObject*}{PyFrozenSet_New}{PyObject *iterable}
2974 Returns a new \class{frozenset} containing objects returned by the
2975 \var{iterable}. The \var{iterable} may be \NULL{} to create a
2976 new empty frozenset. Returns the new set on success or \NULL{} on
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00002977 failure. Raises \exception{TypeError} if \var{iterable} is
2978 not actually iterable.
Raymond Hettingerbeb31012005-08-16 03:47:52 +00002979\end{cfuncdesc}
2980
2981
2982The following functions and macros are available for instances of
2983\class{set} or \class{frozenset} or instances of their subtypes.
2984
2985\begin{cfuncdesc}{int}{PySet_Size}{PyObject *anyset}
2986 Returns the length of a \class{set} or \class{frozenset} object.
2987 Equivalent to \samp{len(\var{anyset})}. Raises a
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00002988 \exception{PyExc_SystemError} if \var{anyset} is not a \class{set},
Raymond Hettingerbeb31012005-08-16 03:47:52 +00002989 \class{frozenset}, or an instance of a subtype.
2990 \bifuncindex{len}
2991\end{cfuncdesc}
2992
2993\begin{cfuncdesc}{int}{PySet_GET_SIZE}{PyObject *anyset}
2994 Macro form of \cfunction{PySet_Size()} without error checking.
2995\end{cfuncdesc}
2996
2997\begin{cfuncdesc}{int}{PySet_Contains}{PyObject *anyset, PyObject *key}
2998 Returns 1 if found, 0 if not found, and -1 if an error is
2999 encountered. Unlike the Python \method{__contains__()} method, this
3000 function does not automatically convert unhashable sets into temporary
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003001 frozensets. Raises a \exception{TypeError} if the \var{key} is unhashable.
3002 Raises \exception{PyExc_SystemError} if \var{anyset} is not a \class{set},
3003 \class{frozenset}, or an instance of a subtype.
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003004\end{cfuncdesc}
3005
3006
3007The following functions are available for instances of \class{set} or
3008its subtypes but not for instances of \class{frozenset} or its subtypes.
3009
3010\begin{cfuncdesc}{int}{PySet_Add}{PyObject *set, PyObject *key}
3011 Adds \var{key} to a \class{set} instance. Does not apply to
3012 \class{frozenset} instances. Returns 0 on success or -1 on failure.
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003013 Raises a \exception{TypeError} if the \var{key} is unhashable.
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003014 Raises a \exception{MemoryError} if there is no room to grow.
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003015 Raises a \exception{SystemError} if \var{set} is an not an instance
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003016 of \class{set} or its subtype.
3017\end{cfuncdesc}
3018
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003019\begin{cfuncdesc}{int}{PySet_Discard}{PyObject *set, PyObject *key}
3020 Returns 1 if found and removed, 0 if not found (no action taken),
3021 and -1 if an error is encountered. Does not raise \exception{KeyError}
3022 for missing keys. Raises a \exception{TypeError} if the \var{key} is
3023 unhashable. Unlike the Python \method{discard()} method, this function
3024 does not automatically convert unhashable sets into temporary frozensets.
3025 Raises \exception{PyExc_SystemError} if \var{set} is an not an instance
3026 of \class{set} or its subtype.
3027\end{cfuncdesc}
3028
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003029\begin{cfuncdesc}{PyObject*}{PySet_Pop}{PyObject *set}
3030 Returns a new reference to an arbitrary object in the \var{set},
3031 and removes the object from the \var{set}. Returns \NULL{} on
3032 failure. Raises \exception{KeyError} if the set is empty.
Raymond Hettingerc47e01d2005-08-16 10:44:15 +00003033 Raises a \exception{SystemError} if \var{set} is an not an instance
Raymond Hettingerbeb31012005-08-16 03:47:52 +00003034 of \class{set} or its subtype.
3035\end{cfuncdesc}
3036
3037