blob: 001d0ad214410b0fc4001c7b9804721a6497dd0b [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
1147 UTF-16 byte sequences (i.e. an odd number of bytes or a split surrogate pair)
1148 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
1452\begin{cfuncdesc}{PyObject*}{PyUnicode_Tailmatch}{PyObject *str,
1453 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.
1460\end{cfuncdesc}
1461
Fred Drake1d1e1db2002-06-20 22:07:04 +00001462\begin{cfuncdesc}{int}{PyUnicode_Find}{PyObject *str,
1463 PyObject *substr,
1464 int start,
1465 int end,
1466 int direction}
Fred Drake3adf79e2001-10-12 19:01:43 +00001467 Return the first position of \var{substr} in
1468 \var{str}[\var{start}:\var{end}] using the given \var{direction}
1469 (\var{direction} == 1 means to do a forward search,
Fred Drake1d1e1db2002-06-20 22:07:04 +00001470 \var{direction} == -1 a backward search). The return value is the
1471 index of the first match; a value of \code{-1} indicates that no
1472 match was found, and \code{-2} indicates that an error occurred and
1473 an exception has been set.
Fred Drake3adf79e2001-10-12 19:01:43 +00001474\end{cfuncdesc}
1475
Fred Drake1d1e1db2002-06-20 22:07:04 +00001476\begin{cfuncdesc}{int}{PyUnicode_Count}{PyObject *str,
1477 PyObject *substr,
1478 int start,
1479 int end}
1480 Return the number of non-overlapping occurrences of \var{substr} in
1481 \code{\var{str}[\var{start}:\var{end}]}. Returns \code{-1} if an
1482 error occurred.
Fred Drake3adf79e2001-10-12 19:01:43 +00001483\end{cfuncdesc}
1484
1485\begin{cfuncdesc}{PyObject*}{PyUnicode_Replace}{PyObject *str,
1486 PyObject *substr,
1487 PyObject *replstr,
1488 int maxcount}
1489 Replace at most \var{maxcount} occurrences of \var{substr} in
1490 \var{str} with \var{replstr} and return the resulting Unicode object.
1491 \var{maxcount} == -1 means replace all occurrences.
1492\end{cfuncdesc}
1493
1494\begin{cfuncdesc}{int}{PyUnicode_Compare}{PyObject *left, PyObject *right}
1495 Compare two strings and return -1, 0, 1 for less than, equal, and
1496 greater than, respectively.
1497\end{cfuncdesc}
1498
1499\begin{cfuncdesc}{PyObject*}{PyUnicode_Format}{PyObject *format,
1500 PyObject *args}
1501 Returns a new string object from \var{format} and \var{args}; this
1502 is analogous to \code{\var{format} \%\ \var{args}}. The
1503 \var{args} argument must be a tuple.
1504\end{cfuncdesc}
1505
1506\begin{cfuncdesc}{int}{PyUnicode_Contains}{PyObject *container,
1507 PyObject *element}
1508 Checks whether \var{element} is contained in \var{container} and
1509 returns true or false accordingly.
1510
1511 \var{element} has to coerce to a one element Unicode
1512 string. \code{-1} is returned if there was an error.
1513\end{cfuncdesc}
1514
1515
1516\subsection{Buffer Objects \label{bufferObjects}}
1517\sectionauthor{Greg Stein}{gstein@lyra.org}
1518
1519\obindex{buffer}
1520Python objects implemented in C can export a group of functions called
1521the ``buffer\index{buffer interface} interface.'' These functions can
1522be used by an object to expose its data in a raw, byte-oriented
1523format. Clients of the object can use the buffer interface to access
1524the object data directly, without needing to copy it first.
1525
Tim Petersf582b822001-12-11 18:51:08 +00001526Two examples of objects that support
1527the buffer interface are strings and arrays. The string object exposes
Fred Drake3adf79e2001-10-12 19:01:43 +00001528the character contents in the buffer interface's byte-oriented
1529form. An array can also expose its contents, but it should be noted
1530that array elements may be multi-byte values.
1531
1532An example user of the buffer interface is the file object's
1533\method{write()} method. Any object that can export a series of bytes
1534through the buffer interface can be written to a file. There are a
Tim Petersf582b822001-12-11 18:51:08 +00001535number of format codes to \cfunction{PyArg_ParseTuple()} that operate
Fred Drake3adf79e2001-10-12 19:01:43 +00001536against an object's buffer interface, returning data from the target
1537object.
1538
1539More information on the buffer interface is provided in the section
Fred Drake54e62942001-12-11 19:40:16 +00001540``Buffer Object Structures'' (section~\ref{buffer-structs}), under
Fred Drake3adf79e2001-10-12 19:01:43 +00001541the description for \ctype{PyBufferProcs}\ttindex{PyBufferProcs}.
1542
1543A ``buffer object'' is defined in the \file{bufferobject.h} header
1544(included by \file{Python.h}). These objects look very similar to
1545string objects at the Python programming level: they support slicing,
1546indexing, concatenation, and some other standard string
1547operations. However, their data can come from one of two sources: from
1548a block of memory, or from another object which exports the buffer
1549interface.
1550
1551Buffer objects are useful as a way to expose the data from another
1552object's buffer interface to the Python programmer. They can also be
1553used as a zero-copy slicing mechanism. Using their ability to
1554reference a block of memory, it is possible to expose any data to the
1555Python programmer quite easily. The memory could be a large, constant
1556array in a C extension, it could be a raw block of memory for
1557manipulation before passing to an operating system library, or it
1558could be used to pass around structured data in its native, in-memory
1559format.
1560
1561\begin{ctypedesc}{PyBufferObject}
1562 This subtype of \ctype{PyObject} represents a buffer object.
1563\end{ctypedesc}
1564
1565\begin{cvardesc}{PyTypeObject}{PyBuffer_Type}
1566 The instance of \ctype{PyTypeObject} which represents the Python
1567 buffer type; it is the same object as \code{types.BufferType} in the
1568 Python layer.\withsubitem{(in module types)}{\ttindex{BufferType}}.
1569\end{cvardesc}
1570
1571\begin{cvardesc}{int}{Py_END_OF_BUFFER}
1572 This constant may be passed as the \var{size} parameter to
1573 \cfunction{PyBuffer_FromObject()} or
1574 \cfunction{PyBuffer_FromReadWriteObject()}. It indicates that the
1575 new \ctype{PyBufferObject} should refer to \var{base} object from
1576 the specified \var{offset} to the end of its exported buffer. Using
1577 this enables the caller to avoid querying the \var{base} object for
1578 its length.
1579\end{cvardesc}
1580
1581\begin{cfuncdesc}{int}{PyBuffer_Check}{PyObject *p}
1582 Return true if the argument has type \cdata{PyBuffer_Type}.
1583\end{cfuncdesc}
1584
1585\begin{cfuncdesc}{PyObject*}{PyBuffer_FromObject}{PyObject *base,
1586 int offset, int size}
1587 Return a new read-only buffer object. This raises
1588 \exception{TypeError} if \var{base} doesn't support the read-only
1589 buffer protocol or doesn't provide exactly one buffer segment, or it
1590 raises \exception{ValueError} if \var{offset} is less than zero. The
1591 buffer will hold a reference to the \var{base} object, and the
1592 buffer's contents will refer to the \var{base} object's buffer
1593 interface, starting as position \var{offset} and extending for
1594 \var{size} bytes. If \var{size} is \constant{Py_END_OF_BUFFER}, then
1595 the new buffer's contents extend to the length of the \var{base}
1596 object's exported buffer data.
1597\end{cfuncdesc}
1598
1599\begin{cfuncdesc}{PyObject*}{PyBuffer_FromReadWriteObject}{PyObject *base,
1600 int offset,
1601 int size}
1602 Return a new writable buffer object. Parameters and exceptions are
1603 similar to those for \cfunction{PyBuffer_FromObject()}. If the
1604 \var{base} object does not export the writeable buffer protocol,
1605 then \exception{TypeError} is raised.
1606\end{cfuncdesc}
1607
1608\begin{cfuncdesc}{PyObject*}{PyBuffer_FromMemory}{void *ptr, int size}
1609 Return a new read-only buffer object that reads from a specified
1610 location in memory, with a specified size. The caller is
1611 responsible for ensuring that the memory buffer, passed in as
1612 \var{ptr}, is not deallocated while the returned buffer object
1613 exists. Raises \exception{ValueError} if \var{size} is less than
1614 zero. Note that \constant{Py_END_OF_BUFFER} may \emph{not} be
1615 passed for the \var{size} parameter; \exception{ValueError} will be
1616 raised in that case.
1617\end{cfuncdesc}
1618
1619\begin{cfuncdesc}{PyObject*}{PyBuffer_FromReadWriteMemory}{void *ptr, int size}
1620 Similar to \cfunction{PyBuffer_FromMemory()}, but the returned
1621 buffer is writable.
1622\end{cfuncdesc}
1623
1624\begin{cfuncdesc}{PyObject*}{PyBuffer_New}{int size}
1625 Returns a new writable buffer object that maintains its own memory
1626 buffer of \var{size} bytes. \exception{ValueError} is returned if
Neil Schemenauerd68d3ee2004-06-08 02:58:50 +00001627 \var{size} is not zero or positive. Note that the memory buffer (as
1628 returned by \cfunction{PyObject_AsWriteBuffer()}) is not specifically
1629 aligned.
Fred Drake3adf79e2001-10-12 19:01:43 +00001630\end{cfuncdesc}
1631
1632
1633\subsection{Tuple Objects \label{tupleObjects}}
1634
1635\obindex{tuple}
1636\begin{ctypedesc}{PyTupleObject}
1637 This subtype of \ctype{PyObject} represents a Python tuple object.
1638\end{ctypedesc}
1639
1640\begin{cvardesc}{PyTypeObject}{PyTuple_Type}
1641 This instance of \ctype{PyTypeObject} represents the Python tuple
1642 type; it is the same object as \code{types.TupleType} in the Python
1643 layer.\withsubitem{(in module types)}{\ttindex{TupleType}}.
1644\end{cvardesc}
1645
1646\begin{cfuncdesc}{int}{PyTuple_Check}{PyObject *p}
1647 Return true if \var{p} is a tuple object or an instance of a subtype
1648 of the tuple type.
1649 \versionchanged[Allowed subtypes to be accepted]{2.2}
1650\end{cfuncdesc}
1651
1652\begin{cfuncdesc}{int}{PyTuple_CheckExact}{PyObject *p}
1653 Return true if \var{p} is a tuple object, but not an instance of a
1654 subtype of the tuple type.
1655 \versionadded{2.2}
1656\end{cfuncdesc}
1657
1658\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int len}
1659 Return a new tuple object of size \var{len}, or \NULL{} on failure.
1660\end{cfuncdesc}
1661
Raymond Hettingercb2da432003-10-12 18:24:34 +00001662\begin{cfuncdesc}{PyObject*}{PyTuple_Pack}{int n, \moreargs}
1663 Return a new tuple object of size \var{n}, or \NULL{} on failure.
1664 The tuple values are initialized to the subsequent \var{n} C arguments
1665 pointing to Python objects. \samp{PyTuple_Pack(2, \var{a}, \var{b})}
1666 is equivalent to \samp{Py_BuildValue("(OO)", \var{a}, \var{b})}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00001667 \versionadded{2.4}
Raymond Hettingercb2da432003-10-12 18:24:34 +00001668\end{cfuncdesc}
1669
Fred Drake3adf79e2001-10-12 19:01:43 +00001670\begin{cfuncdesc}{int}{PyTuple_Size}{PyObject *p}
1671 Takes a pointer to a tuple object, and returns the size of that
1672 tuple.
1673\end{cfuncdesc}
1674
1675\begin{cfuncdesc}{int}{PyTuple_GET_SIZE}{PyObject *p}
1676 Return the size of the tuple \var{p}, which must be non-\NULL{} and
1677 point to a tuple; no error checking is performed.
1678\end{cfuncdesc}
1679
1680\begin{cfuncdesc}{PyObject*}{PyTuple_GetItem}{PyObject *p, int pos}
1681 Returns the object at position \var{pos} in the tuple pointed to by
1682 \var{p}. If \var{pos} is out of bounds, returns \NULL{} and sets an
1683 \exception{IndexError} exception.
1684\end{cfuncdesc}
1685
1686\begin{cfuncdesc}{PyObject*}{PyTuple_GET_ITEM}{PyObject *p, int pos}
1687 Like \cfunction{PyTuple_GetItem()}, but does no checking of its
1688 arguments.
1689\end{cfuncdesc}
1690
1691\begin{cfuncdesc}{PyObject*}{PyTuple_GetSlice}{PyObject *p,
1692 int low, int high}
1693 Takes a slice of the tuple pointed to by \var{p} from \var{low} to
1694 \var{high} and returns it as a new tuple.
1695\end{cfuncdesc}
1696
1697\begin{cfuncdesc}{int}{PyTuple_SetItem}{PyObject *p,
1698 int pos, PyObject *o}
1699 Inserts a reference to object \var{o} at position \var{pos} of the
1700 tuple pointed to by \var{p}. It returns \code{0} on success.
1701 \note{This function ``steals'' a reference to \var{o}.}
1702\end{cfuncdesc}
1703
1704\begin{cfuncdesc}{void}{PyTuple_SET_ITEM}{PyObject *p,
1705 int pos, PyObject *o}
1706 Like \cfunction{PyTuple_SetItem()}, but does no error checking, and
1707 should \emph{only} be used to fill in brand new tuples. \note{This
1708 function ``steals'' a reference to \var{o}.}
1709\end{cfuncdesc}
1710
1711\begin{cfuncdesc}{int}{_PyTuple_Resize}{PyObject **p, int newsize}
1712 Can be used to resize a tuple. \var{newsize} will be the new length
1713 of the tuple. Because tuples are \emph{supposed} to be immutable,
1714 this should only be used if there is only one reference to the
1715 object. Do \emph{not} use this if the tuple may already be known to
1716 some other part of the code. The tuple will always grow or shrink
1717 at the end. Think of this as destroying the old tuple and creating
1718 a new one, only more efficiently. Returns \code{0} on success.
1719 Client code should never assume that the resulting value of
1720 \code{*\var{p}} will be the same as before calling this function.
1721 If the object referenced by \code{*\var{p}} is replaced, the
1722 original \code{*\var{p}} is destroyed. On failure, returns
Tim Peters9ddf40b2004-06-20 22:41:32 +00001723 \code{-1} and sets \code{*\var{p}} to \NULL{}, and raises
Fred Drake3adf79e2001-10-12 19:01:43 +00001724 \exception{MemoryError} or
1725 \exception{SystemError}.
Tim Petersf582b822001-12-11 18:51:08 +00001726 \versionchanged[Removed unused third parameter, \var{last_is_sticky}]{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001727\end{cfuncdesc}
1728
1729
1730\subsection{List Objects \label{listObjects}}
1731
1732\obindex{list}
1733\begin{ctypedesc}{PyListObject}
1734 This subtype of \ctype{PyObject} represents a Python list object.
1735\end{ctypedesc}
1736
1737\begin{cvardesc}{PyTypeObject}{PyList_Type}
1738 This instance of \ctype{PyTypeObject} represents the Python list
1739 type. This is the same object as \code{types.ListType}.
1740 \withsubitem{(in module types)}{\ttindex{ListType}}
1741\end{cvardesc}
1742
1743\begin{cfuncdesc}{int}{PyList_Check}{PyObject *p}
Andrew MacIntyre13cd8892003-12-25 23:57:52 +00001744 Returns true if \var{p} is a list object or an instance of a
1745 subtype of the list type.
1746 \versionchanged[Allowed subtypes to be accepted]{2.2}
1747\end{cfuncdesc}
1748
1749\begin{cfuncdesc}{int}{PyList_CheckExact}{PyObject *p}
1750 Return true if \var{p} is a list object, but not an instance of a
1751 subtype of the list type.
1752 \versionadded{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001753\end{cfuncdesc}
1754
1755\begin{cfuncdesc}{PyObject*}{PyList_New}{int len}
1756 Returns a new list of length \var{len} on success, or \NULL{} on
1757 failure.
1758\end{cfuncdesc}
1759
1760\begin{cfuncdesc}{int}{PyList_Size}{PyObject *list}
1761 Returns the length of the list object in \var{list}; this is
1762 equivalent to \samp{len(\var{list})} on a list object.
1763 \bifuncindex{len}
1764\end{cfuncdesc}
1765
1766\begin{cfuncdesc}{int}{PyList_GET_SIZE}{PyObject *list}
1767 Macro form of \cfunction{PyList_Size()} without error checking.
1768\end{cfuncdesc}
1769
1770\begin{cfuncdesc}{PyObject*}{PyList_GetItem}{PyObject *list, int index}
1771 Returns the object at position \var{pos} in the list pointed to by
1772 \var{p}. If \var{pos} is out of bounds, returns \NULL{} and sets an
1773 \exception{IndexError} exception.
1774\end{cfuncdesc}
1775
1776\begin{cfuncdesc}{PyObject*}{PyList_GET_ITEM}{PyObject *list, int i}
1777 Macro form of \cfunction{PyList_GetItem()} without error checking.
1778\end{cfuncdesc}
1779
1780\begin{cfuncdesc}{int}{PyList_SetItem}{PyObject *list, int index,
1781 PyObject *item}
1782 Sets the item at index \var{index} in list to \var{item}. Returns
1783 \code{0} on success or \code{-1} on failure. \note{This function
1784 ``steals'' a reference to \var{item} and discards a reference to an
1785 item already in the list at the affected position.}
1786\end{cfuncdesc}
1787
1788\begin{cfuncdesc}{void}{PyList_SET_ITEM}{PyObject *list, int i,
1789 PyObject *o}
1790 Macro form of \cfunction{PyList_SetItem()} without error checking.
1791 This is normally only used to fill in new lists where there is no
1792 previous content.
1793 \note{This function ``steals'' a reference to \var{item}, and,
1794 unlike \cfunction{PyList_SetItem()}, does \emph{not} discard a
1795 reference to any item that it being replaced; any reference in
1796 \var{list} at position \var{i} will be leaked.}
1797\end{cfuncdesc}
1798
1799\begin{cfuncdesc}{int}{PyList_Insert}{PyObject *list, int index,
1800 PyObject *item}
1801 Inserts the item \var{item} into list \var{list} in front of index
1802 \var{index}. Returns \code{0} if successful; returns \code{-1} and
1803 raises an exception if unsuccessful. Analogous to
1804 \code{\var{list}.insert(\var{index}, \var{item})}.
1805\end{cfuncdesc}
1806
1807\begin{cfuncdesc}{int}{PyList_Append}{PyObject *list, PyObject *item}
1808 Appends the object \var{item} at the end of list \var{list}.
1809 Returns \code{0} if successful; returns \code{-1} and sets an
1810 exception if unsuccessful. Analogous to
1811 \code{\var{list}.append(\var{item})}.
1812\end{cfuncdesc}
1813
1814\begin{cfuncdesc}{PyObject*}{PyList_GetSlice}{PyObject *list,
1815 int low, int high}
1816 Returns a list of the objects in \var{list} containing the objects
1817 \emph{between} \var{low} and \var{high}. Returns \NULL{} and sets
1818 an exception if unsuccessful.
1819 Analogous to \code{\var{list}[\var{low}:\var{high}]}.
1820\end{cfuncdesc}
1821
1822\begin{cfuncdesc}{int}{PyList_SetSlice}{PyObject *list,
1823 int low, int high,
1824 PyObject *itemlist}
1825 Sets the slice of \var{list} between \var{low} and \var{high} to the
1826 contents of \var{itemlist}. Analogous to
Raymond Hettinger9c7ed4c2003-10-26 17:20:07 +00001827 \code{\var{list}[\var{low}:\var{high}] = \var{itemlist}}.
1828 The \var{itemlist} may be \NULL{}, indicating the assignment
1829 of an empty list (slice deletion).
1830 Returns \code{0} on success, \code{-1} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00001831\end{cfuncdesc}
1832
1833\begin{cfuncdesc}{int}{PyList_Sort}{PyObject *list}
1834 Sorts the items of \var{list} in place. Returns \code{0} on
1835 success, \code{-1} on failure. This is equivalent to
1836 \samp{\var{list}.sort()}.
1837\end{cfuncdesc}
1838
1839\begin{cfuncdesc}{int}{PyList_Reverse}{PyObject *list}
1840 Reverses the items of \var{list} in place. Returns \code{0} on
1841 success, \code{-1} on failure. This is the equivalent of
1842 \samp{\var{list}.reverse()}.
1843\end{cfuncdesc}
1844
1845\begin{cfuncdesc}{PyObject*}{PyList_AsTuple}{PyObject *list}
1846 Returns a new tuple object containing the contents of \var{list};
1847 equivalent to \samp{tuple(\var{list})}.\bifuncindex{tuple}
1848\end{cfuncdesc}
1849
1850
1851\section{Mapping Objects \label{mapObjects}}
1852
1853\obindex{mapping}
1854
1855
1856\subsection{Dictionary Objects \label{dictObjects}}
1857
1858\obindex{dictionary}
1859\begin{ctypedesc}{PyDictObject}
1860 This subtype of \ctype{PyObject} represents a Python dictionary
1861 object.
1862\end{ctypedesc}
1863
1864\begin{cvardesc}{PyTypeObject}{PyDict_Type}
1865 This instance of \ctype{PyTypeObject} represents the Python
1866 dictionary type. This is exposed to Python programs as
1867 \code{types.DictType} and \code{types.DictionaryType}.
1868 \withsubitem{(in module types)}{\ttindex{DictType}\ttindex{DictionaryType}}
1869\end{cvardesc}
1870
1871\begin{cfuncdesc}{int}{PyDict_Check}{PyObject *p}
Andrew MacIntyre13cd8892003-12-25 23:57:52 +00001872 Returns true if \var{p} is a dict object or an instance of a
1873 subtype of the dict type.
1874 \versionchanged[Allowed subtypes to be accepted]{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001875\end{cfuncdesc}
1876
Andrew MacIntyref72af652003-12-26 00:07:51 +00001877\begin{cfuncdesc}{int}{PyDict_CheckExact}{PyObject *p}
1878 Return true if \var{p} is a dict object, but not an instance of a
1879 subtype of the dict type.
1880 \versionadded{2.4}
1881\end{cfuncdesc}
1882
Fred Drake3adf79e2001-10-12 19:01:43 +00001883\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
1884 Returns a new empty dictionary, or \NULL{} on failure.
1885\end{cfuncdesc}
1886
1887\begin{cfuncdesc}{PyObject*}{PyDictProxy_New}{PyObject *dict}
1888 Return a proxy object for a mapping which enforces read-only
1889 behavior. This is normally used to create a proxy to prevent
1890 modification of the dictionary for non-dynamic class types.
1891 \versionadded{2.2}
1892\end{cfuncdesc}
1893
1894\begin{cfuncdesc}{void}{PyDict_Clear}{PyObject *p}
1895 Empties an existing dictionary of all key-value pairs.
1896\end{cfuncdesc}
1897
Raymond Hettingerbc0f2ab2003-11-25 21:12:14 +00001898\begin{cfuncdesc}{int}{PyDict_Contains}{PyObject *p, PyObject *key}
1899 Determine if dictionary \var{p} contains \var{key}. If an item
1900 in \var{p} is matches \var{key}, return \code{1}, otherwise return
1901 \code{0}. On error, return \code{-1}. This is equivalent to the
1902 Python expression \samp{\var{key} in \var{p}}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00001903 \versionadded{2.4}
Raymond Hettingerbc0f2ab2003-11-25 21:12:14 +00001904\end{cfuncdesc}
1905
Fred Drake3adf79e2001-10-12 19:01:43 +00001906\begin{cfuncdesc}{PyObject*}{PyDict_Copy}{PyObject *p}
1907 Returns a new dictionary that contains the same key-value pairs as
1908 \var{p}.
1909 \versionadded{1.6}
1910\end{cfuncdesc}
1911
1912\begin{cfuncdesc}{int}{PyDict_SetItem}{PyObject *p, PyObject *key,
1913 PyObject *val}
1914 Inserts \var{value} into the dictionary \var{p} with a key of
1915 \var{key}. \var{key} must be hashable; if it isn't,
1916 \exception{TypeError} will be raised.
1917 Returns \code{0} on success or \code{-1} on failure.
1918\end{cfuncdesc}
1919
1920\begin{cfuncdesc}{int}{PyDict_SetItemString}{PyObject *p,
1921 char *key,
1922 PyObject *val}
1923 Inserts \var{value} into the dictionary \var{p} using \var{key} as a
1924 key. \var{key} should be a \ctype{char*}. The key object is created
1925 using \code{PyString_FromString(\var{key})}. Returns \code{0} on
1926 success or \code{-1} on failure.
1927 \ttindex{PyString_FromString()}
1928\end{cfuncdesc}
1929
1930\begin{cfuncdesc}{int}{PyDict_DelItem}{PyObject *p, PyObject *key}
1931 Removes the entry in dictionary \var{p} with key \var{key}.
1932 \var{key} must be hashable; if it isn't, \exception{TypeError} is
Skip Montanaroa23bc422002-01-23 08:18:30 +00001933 raised. Returns \code{0} on success or \code{-1} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00001934\end{cfuncdesc}
1935
1936\begin{cfuncdesc}{int}{PyDict_DelItemString}{PyObject *p, char *key}
1937 Removes the entry in dictionary \var{p} which has a key specified by
1938 the string \var{key}. Returns \code{0} on success or \code{-1} on
1939 failure.
1940\end{cfuncdesc}
1941
1942\begin{cfuncdesc}{PyObject*}{PyDict_GetItem}{PyObject *p, PyObject *key}
1943 Returns the object from dictionary \var{p} which has a key
1944 \var{key}. Returns \NULL{} if the key \var{key} is not present, but
1945 \emph{without} setting an exception.
1946\end{cfuncdesc}
1947
1948\begin{cfuncdesc}{PyObject*}{PyDict_GetItemString}{PyObject *p, char *key}
1949 This is the same as \cfunction{PyDict_GetItem()}, but \var{key} is
1950 specified as a \ctype{char*}, rather than a \ctype{PyObject*}.
1951\end{cfuncdesc}
1952
1953\begin{cfuncdesc}{PyObject*}{PyDict_Items}{PyObject *p}
1954 Returns a \ctype{PyListObject} containing all the items from the
Nicholas Bastin975e7252004-09-29 21:39:26 +00001955 dictionary, as in the dictionary method \method{items()} (see the
Fred Drake3adf79e2001-10-12 19:01:43 +00001956 \citetitle[../lib/lib.html]{Python Library Reference}).
1957\end{cfuncdesc}
1958
1959\begin{cfuncdesc}{PyObject*}{PyDict_Keys}{PyObject *p}
1960 Returns a \ctype{PyListObject} containing all the keys from the
1961 dictionary, as in the dictionary method \method{keys()} (see the
1962 \citetitle[../lib/lib.html]{Python Library Reference}).
1963\end{cfuncdesc}
1964
1965\begin{cfuncdesc}{PyObject*}{PyDict_Values}{PyObject *p}
1966 Returns a \ctype{PyListObject} containing all the values from the
1967 dictionary \var{p}, as in the dictionary method \method{values()}
1968 (see the \citetitle[../lib/lib.html]{Python Library Reference}).
1969\end{cfuncdesc}
1970
1971\begin{cfuncdesc}{int}{PyDict_Size}{PyObject *p}
1972 Returns the number of items in the dictionary. This is equivalent
1973 to \samp{len(\var{p})} on a dictionary.\bifuncindex{len}
1974\end{cfuncdesc}
1975
1976\begin{cfuncdesc}{int}{PyDict_Next}{PyObject *p, int *ppos,
1977 PyObject **pkey, PyObject **pvalue}
1978 Iterate over all key-value pairs in the dictionary \var{p}. The
1979 \ctype{int} referred to by \var{ppos} must be initialized to
1980 \code{0} prior to the first call to this function to start the
1981 iteration; the function returns true for each pair in the
1982 dictionary, and false once all pairs have been reported. The
1983 parameters \var{pkey} and \var{pvalue} should either point to
1984 \ctype{PyObject*} variables that will be filled in with each key and
Tim Peters9ddf40b2004-06-20 22:41:32 +00001985 value, respectively, or may be \NULL{}. Any references returned through
Raymond Hettinger54693242003-12-13 19:48:41 +00001986 them are borrowed. \var{ppos} should not be altered during iteration.
1987 Its value represents offsets within the internal dictionary structure,
1988 and since the structure is sparse, the offsets are not consecutive.
Fred Drake3adf79e2001-10-12 19:01:43 +00001989
1990 For example:
1991
1992\begin{verbatim}
1993PyObject *key, *value;
1994int pos = 0;
1995
1996while (PyDict_Next(self->dict, &pos, &key, &value)) {
1997 /* do something interesting with the values... */
1998 ...
1999}
2000\end{verbatim}
2001
2002 The dictionary \var{p} should not be mutated during iteration. It
2003 is safe (since Python 2.1) to modify the values of the keys as you
2004 iterate over the dictionary, but only so long as the set of keys
2005 does not change. For example:
2006
2007\begin{verbatim}
2008PyObject *key, *value;
2009int pos = 0;
2010
2011while (PyDict_Next(self->dict, &pos, &key, &value)) {
2012 int i = PyInt_AS_LONG(value) + 1;
2013 PyObject *o = PyInt_FromLong(i);
2014 if (o == NULL)
2015 return -1;
2016 if (PyDict_SetItem(self->dict, key, o) < 0) {
2017 Py_DECREF(o);
2018 return -1;
2019 }
2020 Py_DECREF(o);
2021}
2022\end{verbatim}
2023\end{cfuncdesc}
2024
2025\begin{cfuncdesc}{int}{PyDict_Merge}{PyObject *a, PyObject *b, int override}
Tim Petersf582b822001-12-11 18:51:08 +00002026 Iterate over mapping object \var{b} adding key-value pairs to dictionary
2027 \var{a}.
2028 \var{b} may be a dictionary, or any object supporting
2029 \function{PyMapping_Keys()} and \function{PyObject_GetItem()}.
2030 If \var{override} is true, existing pairs in \var{a} will
Fred Drake3adf79e2001-10-12 19:01:43 +00002031 be replaced if a matching key is found in \var{b}, otherwise pairs
2032 will only be added if there is not a matching key in \var{a}.
Tim Petersf582b822001-12-11 18:51:08 +00002033 Return \code{0} on success or \code{-1} if an exception was
Fred Drake3adf79e2001-10-12 19:01:43 +00002034 raised.
2035\versionadded{2.2}
2036\end{cfuncdesc}
2037
2038\begin{cfuncdesc}{int}{PyDict_Update}{PyObject *a, PyObject *b}
2039 This is the same as \code{PyDict_Merge(\var{a}, \var{b}, 1)} in C,
Tim Petersf582b822001-12-11 18:51:08 +00002040 or \code{\var{a}.update(\var{b})} in Python. Return \code{0} on
Fred Drake3adf79e2001-10-12 19:01:43 +00002041 success or \code{-1} if an exception was raised.
2042 \versionadded{2.2}
2043\end{cfuncdesc}
2044
Tim Petersf582b822001-12-11 18:51:08 +00002045\begin{cfuncdesc}{int}{PyDict_MergeFromSeq2}{PyObject *a, PyObject *seq2,
2046 int override}
2047 Update or merge into dictionary \var{a}, from the key-value pairs in
2048 \var{seq2}. \var{seq2} must be an iterable object producing
2049 iterable objects of length 2, viewed as key-value pairs. In case of
2050 duplicate keys, the last wins if \var{override} is true, else the
2051 first wins.
2052 Return \code{0} on success or \code{-1} if an exception
2053 was raised.
2054 Equivalent Python (except for the return value):
2055
2056\begin{verbatim}
2057def PyDict_MergeFromSeq2(a, seq2, override):
2058 for key, value in seq2:
2059 if override or key not in a:
2060 a[key] = value
2061\end{verbatim}
2062
2063 \versionadded{2.2}
2064\end{cfuncdesc}
Fred Drake3adf79e2001-10-12 19:01:43 +00002065
Fred Drake54e62942001-12-11 19:40:16 +00002066
Fred Drake3adf79e2001-10-12 19:01:43 +00002067\section{Other Objects \label{otherObjects}}
2068
2069\subsection{File Objects \label{fileObjects}}
2070
2071\obindex{file}
2072Python's built-in file objects are implemented entirely on the
2073\ctype{FILE*} support from the C standard library. This is an
2074implementation detail and may change in future releases of Python.
2075
2076\begin{ctypedesc}{PyFileObject}
2077 This subtype of \ctype{PyObject} represents a Python file object.
2078\end{ctypedesc}
2079
2080\begin{cvardesc}{PyTypeObject}{PyFile_Type}
2081 This instance of \ctype{PyTypeObject} represents the Python file
2082 type. This is exposed to Python programs as \code{types.FileType}.
2083 \withsubitem{(in module types)}{\ttindex{FileType}}
2084\end{cvardesc}
2085
2086\begin{cfuncdesc}{int}{PyFile_Check}{PyObject *p}
2087 Returns true if its argument is a \ctype{PyFileObject} or a subtype
2088 of \ctype{PyFileObject}.
2089 \versionchanged[Allowed subtypes to be accepted]{2.2}
2090\end{cfuncdesc}
2091
2092\begin{cfuncdesc}{int}{PyFile_CheckExact}{PyObject *p}
2093 Returns true if its argument is a \ctype{PyFileObject}, but not a
2094 subtype of \ctype{PyFileObject}.
2095 \versionadded{2.2}
2096\end{cfuncdesc}
2097
2098\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *filename, char *mode}
2099 On success, returns a new file object that is opened on the file
2100 given by \var{filename}, with a file mode given by \var{mode}, where
2101 \var{mode} has the same semantics as the standard C routine
Tim Peters9ddf40b2004-06-20 22:41:32 +00002102 \cfunction{fopen()}\ttindex{fopen()}. On failure, returns \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002103\end{cfuncdesc}
2104
2105\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp,
2106 char *name, char *mode,
2107 int (*close)(FILE*)}
2108 Creates a new \ctype{PyFileObject} from the already-open standard C
2109 file pointer, \var{fp}. The function \var{close} will be called
2110 when the file should be closed. Returns \NULL{} on failure.
2111\end{cfuncdesc}
2112
2113\begin{cfuncdesc}{FILE*}{PyFile_AsFile}{PyFileObject *p}
2114 Returns the file object associated with \var{p} as a \ctype{FILE*}.
2115\end{cfuncdesc}
2116
2117\begin{cfuncdesc}{PyObject*}{PyFile_GetLine}{PyObject *p, int n}
2118 Equivalent to \code{\var{p}.readline(\optional{\var{n}})}, this
2119 function reads one line from the object \var{p}. \var{p} may be a
2120 file object or any object with a \method{readline()} method. If
2121 \var{n} is \code{0}, exactly one line is read, regardless of the
2122 length of the line. If \var{n} is greater than \code{0}, no more
2123 than \var{n} bytes will be read from the file; a partial line can be
2124 returned. In both cases, an empty string is returned if the end of
2125 the file is reached immediately. If \var{n} is less than \code{0},
2126 however, one line is read regardless of length, but
2127 \exception{EOFError} is raised if the end of the file is reached
2128 immediately.
2129 \withsubitem{(built-in exception)}{\ttindex{EOFError}}
2130\end{cfuncdesc}
2131
2132\begin{cfuncdesc}{PyObject*}{PyFile_Name}{PyObject *p}
2133 Returns the name of the file specified by \var{p} as a string
2134 object.
2135\end{cfuncdesc}
2136
2137\begin{cfuncdesc}{void}{PyFile_SetBufSize}{PyFileObject *p, int n}
2138 Available on systems with \cfunction{setvbuf()}\ttindex{setvbuf()}
2139 only. This should only be called immediately after file object
2140 creation.
2141\end{cfuncdesc}
2142
Martin v. Löwis5467d4c2003-05-10 07:10:12 +00002143\begin{cfuncdesc}{int}{PyFile_Encoding}{PyFileObject *p, char *enc}
2144 Set the file's encoding for Unicode output to \var{enc}. Return
2145 1 on success and 0 on failure.
2146 \versionadded{2.3}
2147\end{cfuncdesc}
2148
Fred Drake3adf79e2001-10-12 19:01:43 +00002149\begin{cfuncdesc}{int}{PyFile_SoftSpace}{PyObject *p, int newflag}
2150 This function exists for internal use by the interpreter. Sets the
2151 \member{softspace} attribute of \var{p} to \var{newflag} and
2152 \withsubitem{(file attribute)}{\ttindex{softspace}}returns the
2153 previous value. \var{p} does not have to be a file object for this
2154 function to work properly; any object is supported (thought its only
2155 interesting if the \member{softspace} attribute can be set). This
2156 function clears any errors, and will return \code{0} as the previous
2157 value if the attribute either does not exist or if there were errors
2158 in retrieving it. There is no way to detect errors from this
2159 function, but doing so should not be needed.
2160\end{cfuncdesc}
2161
2162\begin{cfuncdesc}{int}{PyFile_WriteObject}{PyObject *obj, PyFileObject *p,
2163 int flags}
2164 Writes object \var{obj} to file object \var{p}. The only supported
2165 flag for \var{flags} is
2166 \constant{Py_PRINT_RAW}\ttindex{Py_PRINT_RAW}; if given, the
2167 \function{str()} of the object is written instead of the
2168 \function{repr()}. Returns \code{0} on success or \code{-1} on
2169 failure; the appropriate exception will be set.
2170\end{cfuncdesc}
2171
Fred Drake454af892001-11-29 22:42:59 +00002172\begin{cfuncdesc}{int}{PyFile_WriteString}{const char *s, PyFileObject *p}
Fred Drake3adf79e2001-10-12 19:01:43 +00002173 Writes string \var{s} to file object \var{p}. Returns \code{0} on
2174 success or \code{-1} on failure; the appropriate exception will be
2175 set.
2176\end{cfuncdesc}
2177
2178
2179\subsection{Instance Objects \label{instanceObjects}}
2180
2181\obindex{instance}
2182There are very few functions specific to instance objects.
2183
2184\begin{cvardesc}{PyTypeObject}{PyInstance_Type}
2185 Type object for class instances.
2186\end{cvardesc}
2187
2188\begin{cfuncdesc}{int}{PyInstance_Check}{PyObject *obj}
2189 Returns true if \var{obj} is an instance.
2190\end{cfuncdesc}
2191
2192\begin{cfuncdesc}{PyObject*}{PyInstance_New}{PyObject *class,
2193 PyObject *arg,
2194 PyObject *kw}
2195 Create a new instance of a specific class. The parameters \var{arg}
2196 and \var{kw} are used as the positional and keyword parameters to
2197 the object's constructor.
2198\end{cfuncdesc}
2199
2200\begin{cfuncdesc}{PyObject*}{PyInstance_NewRaw}{PyObject *class,
2201 PyObject *dict}
2202 Create a new instance of a specific class without calling it's
2203 constructor. \var{class} is the class of new object. The
2204 \var{dict} parameter will be used as the object's \member{__dict__};
Tim Peters9ddf40b2004-06-20 22:41:32 +00002205 if \NULL{}, a new dictionary will be created for the instance.
Fred Drake3adf79e2001-10-12 19:01:43 +00002206\end{cfuncdesc}
2207
2208
2209\subsection{Method Objects \label{method-objects}}
2210
2211\obindex{method}
2212There are some useful functions that are useful for working with
2213method objects.
2214
2215\begin{cvardesc}{PyTypeObject}{PyMethod_Type}
2216 This instance of \ctype{PyTypeObject} represents the Python method
2217 type. This is exposed to Python programs as \code{types.MethodType}.
2218 \withsubitem{(in module types)}{\ttindex{MethodType}}
2219\end{cvardesc}
2220
2221\begin{cfuncdesc}{int}{PyMethod_Check}{PyObject *o}
2222 Return true if \var{o} is a method object (has type
Tim Peters9ddf40b2004-06-20 22:41:32 +00002223 \cdata{PyMethod_Type}). The parameter must not be \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002224\end{cfuncdesc}
2225
2226\begin{cfuncdesc}{PyObject*}{PyMethod_New}{PyObject *func.
2227 PyObject *self, PyObject *class}
2228 Return a new method object, with \var{func} being any callable
2229 object; this is the function that will be called when the method is
2230 called. If this method should be bound to an instance, \var{self}
2231 should be the instance and \var{class} should be the class of
2232 \var{self}, otherwise \var{self} should be \NULL{} and \var{class}
2233 should be the class which provides the unbound method..
2234\end{cfuncdesc}
2235
2236\begin{cfuncdesc}{PyObject*}{PyMethod_Class}{PyObject *meth}
2237 Return the class object from which the method \var{meth} was
2238 created; if this was created from an instance, it will be the class
2239 of the instance.
2240\end{cfuncdesc}
2241
2242\begin{cfuncdesc}{PyObject*}{PyMethod_GET_CLASS}{PyObject *meth}
2243 Macro version of \cfunction{PyMethod_Class()} which avoids error
2244 checking.
2245\end{cfuncdesc}
2246
2247\begin{cfuncdesc}{PyObject*}{PyMethod_Function}{PyObject *meth}
2248 Return the function object associated with the method \var{meth}.
2249\end{cfuncdesc}
2250
2251\begin{cfuncdesc}{PyObject*}{PyMethod_GET_FUNCTION}{PyObject *meth}
2252 Macro version of \cfunction{PyMethod_Function()} which avoids error
2253 checking.
2254\end{cfuncdesc}
2255
2256\begin{cfuncdesc}{PyObject*}{PyMethod_Self}{PyObject *meth}
2257 Return the instance associated with the method \var{meth} if it is
Tim Peters9ddf40b2004-06-20 22:41:32 +00002258 bound, otherwise return \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002259\end{cfuncdesc}
2260
2261\begin{cfuncdesc}{PyObject*}{PyMethod_GET_SELF}{PyObject *meth}
2262 Macro version of \cfunction{PyMethod_Self()} which avoids error
2263 checking.
2264\end{cfuncdesc}
2265
2266
2267\subsection{Module Objects \label{moduleObjects}}
2268
2269\obindex{module}
2270There are only a few functions special to module objects.
2271
2272\begin{cvardesc}{PyTypeObject}{PyModule_Type}
2273 This instance of \ctype{PyTypeObject} represents the Python module
2274 type. This is exposed to Python programs as
2275 \code{types.ModuleType}.
2276 \withsubitem{(in module types)}{\ttindex{ModuleType}}
2277\end{cvardesc}
2278
2279\begin{cfuncdesc}{int}{PyModule_Check}{PyObject *p}
2280 Returns true if \var{p} is a module object, or a subtype of a module
2281 object.
2282 \versionchanged[Allowed subtypes to be accepted]{2.2}
2283\end{cfuncdesc}
2284
2285\begin{cfuncdesc}{int}{PyModule_CheckExact}{PyObject *p}
2286 Returns true if \var{p} is a module object, but not a subtype of
2287 \cdata{PyModule_Type}.
2288 \versionadded{2.2}
2289\end{cfuncdesc}
2290
2291\begin{cfuncdesc}{PyObject*}{PyModule_New}{char *name}
2292 Return a new module object with the \member{__name__} attribute set
2293 to \var{name}. Only the module's \member{__doc__} and
2294 \member{__name__} attributes are filled in; the caller is
2295 responsible for providing a \member{__file__} attribute.
2296 \withsubitem{(module attribute)}{
2297 \ttindex{__name__}\ttindex{__doc__}\ttindex{__file__}}
2298\end{cfuncdesc}
2299
2300\begin{cfuncdesc}{PyObject*}{PyModule_GetDict}{PyObject *module}
2301 Return the dictionary object that implements \var{module}'s
2302 namespace; this object is the same as the \member{__dict__}
2303 attribute of the module object. This function never fails.
2304 \withsubitem{(module attribute)}{\ttindex{__dict__}}
Fred Drakef495ef72002-04-12 19:32:07 +00002305 It is recommended extensions use other \cfunction{PyModule_*()}
2306 and \cfunction{PyObject_*()} functions rather than directly
2307 manipulate a module's \member{__dict__}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002308\end{cfuncdesc}
2309
2310\begin{cfuncdesc}{char*}{PyModule_GetName}{PyObject *module}
2311 Return \var{module}'s \member{__name__} value. If the module does
2312 not provide one, or if it is not a string, \exception{SystemError}
2313 is raised and \NULL{} is returned.
2314 \withsubitem{(module attribute)}{\ttindex{__name__}}
2315 \withsubitem{(built-in exception)}{\ttindex{SystemError}}
2316\end{cfuncdesc}
2317
2318\begin{cfuncdesc}{char*}{PyModule_GetFilename}{PyObject *module}
2319 Return the name of the file from which \var{module} was loaded using
2320 \var{module}'s \member{__file__} attribute. If this is not defined,
2321 or if it is not a string, raise \exception{SystemError} and return
Tim Peters9ddf40b2004-06-20 22:41:32 +00002322 \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002323 \withsubitem{(module attribute)}{\ttindex{__file__}}
2324 \withsubitem{(built-in exception)}{\ttindex{SystemError}}
2325\end{cfuncdesc}
2326
2327\begin{cfuncdesc}{int}{PyModule_AddObject}{PyObject *module,
2328 char *name, PyObject *value}
2329 Add an object to \var{module} as \var{name}. This is a convenience
2330 function which can be used from the module's initialization
2331 function. This steals a reference to \var{value}. Returns
2332 \code{-1} on error, \code{0} on success.
2333 \versionadded{2.0}
2334\end{cfuncdesc}
2335
2336\begin{cfuncdesc}{int}{PyModule_AddIntConstant}{PyObject *module,
Martin v. Löwisdd07e592004-06-02 12:45:27 +00002337 char *name, long value}
Fred Drake3adf79e2001-10-12 19:01:43 +00002338 Add an integer constant to \var{module} as \var{name}. This
2339 convenience function can be used from the module's initialization
2340 function. Returns \code{-1} on error, \code{0} on success.
2341 \versionadded{2.0}
2342\end{cfuncdesc}
2343
2344\begin{cfuncdesc}{int}{PyModule_AddStringConstant}{PyObject *module,
2345 char *name, char *value}
2346 Add a string constant to \var{module} as \var{name}. This
2347 convenience function can be used from the module's initialization
2348 function. The string \var{value} must be null-terminated. Returns
2349 \code{-1} on error, \code{0} on success.
2350 \versionadded{2.0}
2351\end{cfuncdesc}
2352
2353
2354\subsection{Iterator Objects \label{iterator-objects}}
2355
2356Python provides two general-purpose iterator objects. The first, a
2357sequence iterator, works with an arbitrary sequence supporting the
2358\method{__getitem__()} method. The second works with a callable
2359object and a sentinel value, calling the callable for each item in the
2360sequence, and ending the iteration when the sentinel value is
2361returned.
2362
2363\begin{cvardesc}{PyTypeObject}{PySeqIter_Type}
2364 Type object for iterator objects returned by
2365 \cfunction{PySeqIter_New()} and the one-argument form of the
2366 \function{iter()} built-in function for built-in sequence types.
2367 \versionadded{2.2}
2368\end{cvardesc}
2369
2370\begin{cfuncdesc}{int}{PySeqIter_Check}{op}
2371 Return true if the type of \var{op} is \cdata{PySeqIter_Type}.
2372 \versionadded{2.2}
2373\end{cfuncdesc}
2374
2375\begin{cfuncdesc}{PyObject*}{PySeqIter_New}{PyObject *seq}
2376 Return an iterator that works with a general sequence object,
2377 \var{seq}. The iteration ends when the sequence raises
2378 \exception{IndexError} for the subscripting operation.
2379 \versionadded{2.2}
2380\end{cfuncdesc}
2381
2382\begin{cvardesc}{PyTypeObject}{PyCallIter_Type}
2383 Type object for iterator objects returned by
2384 \cfunction{PyCallIter_New()} and the two-argument form of the
2385 \function{iter()} built-in function.
2386 \versionadded{2.2}
2387\end{cvardesc}
2388
2389\begin{cfuncdesc}{int}{PyCallIter_Check}{op}
2390 Return true if the type of \var{op} is \cdata{PyCallIter_Type}.
2391 \versionadded{2.2}
2392\end{cfuncdesc}
2393
2394\begin{cfuncdesc}{PyObject*}{PyCallIter_New}{PyObject *callable,
2395 PyObject *sentinel}
2396 Return a new iterator. The first parameter, \var{callable}, can be
2397 any Python callable object that can be called with no parameters;
2398 each call to it should return the next item in the iteration. When
2399 \var{callable} returns a value equal to \var{sentinel}, the
2400 iteration will be terminated.
2401 \versionadded{2.2}
2402\end{cfuncdesc}
2403
2404
2405\subsection{Descriptor Objects \label{descriptor-objects}}
2406
Fred Drake54e62942001-12-11 19:40:16 +00002407``Descriptors'' are objects that describe some attribute of an object.
2408They are found in the dictionary of type objects.
2409
Fred Drake3adf79e2001-10-12 19:01:43 +00002410\begin{cvardesc}{PyTypeObject}{PyProperty_Type}
Fred Drake54e62942001-12-11 19:40:16 +00002411 The type object for the built-in descriptor types.
Fred Drake3adf79e2001-10-12 19:01:43 +00002412 \versionadded{2.2}
2413\end{cvardesc}
2414
2415\begin{cfuncdesc}{PyObject*}{PyDescr_NewGetSet}{PyTypeObject *type,
2416 PyGetSetDef *getset}
2417 \versionadded{2.2}
2418\end{cfuncdesc}
2419
2420\begin{cfuncdesc}{PyObject*}{PyDescr_NewMember}{PyTypeObject *type,
2421 PyMemberDef *meth}
2422 \versionadded{2.2}
2423\end{cfuncdesc}
2424
2425\begin{cfuncdesc}{PyObject*}{PyDescr_NewMethod}{PyTypeObject *type,
2426 PyMethodDef *meth}
2427 \versionadded{2.2}
2428\end{cfuncdesc}
2429
2430\begin{cfuncdesc}{PyObject*}{PyDescr_NewWrapper}{PyTypeObject *type,
2431 struct wrapperbase *wrapper,
2432 void *wrapped}
2433 \versionadded{2.2}
2434\end{cfuncdesc}
2435
Thomas Heller8178a222004-02-09 10:47:11 +00002436\begin{cfuncdesc}{PyObject*}{PyDescr_NewClassMethod}{PyTypeObject *type,
2437 PyMethodDef *method}
2438 \versionadded{2.3}
2439\end{cfuncdesc}
2440
Fred Drake3adf79e2001-10-12 19:01:43 +00002441\begin{cfuncdesc}{int}{PyDescr_IsData}{PyObject *descr}
2442 Returns true if the descriptor objects \var{descr} describes a data
2443 attribute, or false if it describes a method. \var{descr} must be a
2444 descriptor object; there is no error checking.
2445 \versionadded{2.2}
2446\end{cfuncdesc}
2447
2448\begin{cfuncdesc}{PyObject*}{PyWrapper_New}{PyObject *, PyObject *}
2449 \versionadded{2.2}
2450\end{cfuncdesc}
2451
2452
2453\subsection{Slice Objects \label{slice-objects}}
2454
2455\begin{cvardesc}{PyTypeObject}{PySlice_Type}
2456 The type object for slice objects. This is the same as
2457 \code{types.SliceType}.
2458 \withsubitem{(in module types)}{\ttindex{SliceType}}
2459\end{cvardesc}
2460
2461\begin{cfuncdesc}{int}{PySlice_Check}{PyObject *ob}
2462 Returns true if \var{ob} is a slice object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002463 \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002464\end{cfuncdesc}
2465
2466\begin{cfuncdesc}{PyObject*}{PySlice_New}{PyObject *start, PyObject *stop,
2467 PyObject *step}
2468 Return a new slice object with the given values. The \var{start},
2469 \var{stop}, and \var{step} parameters are used as the values of the
2470 slice object attributes of the same names. Any of the values may be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002471 \NULL{}, in which case the \code{None} will be used for the
Fred Drake3adf79e2001-10-12 19:01:43 +00002472 corresponding attribute. Returns \NULL{} if the new object could
2473 not be allocated.
2474\end{cfuncdesc}
2475
2476\begin{cfuncdesc}{int}{PySlice_GetIndices}{PySliceObject *slice, int length,
2477 int *start, int *stop, int *step}
Michael W. Hudson5efaf7e2002-06-11 10:55:12 +00002478Retrieve the start, stop and step indices from the slice object
2479\var{slice}, assuming a sequence of length \var{length}. Treats
2480indices greater than \var{length} as errors.
2481
2482Returns 0 on success and -1 on error with no exception set (unless one
2483of the indices was not \constant{None} and failed to be converted to
2484an integer, in which case -1 is returned with an exception set).
2485
2486You probably do not want to use this function. If you want to use
2487slice objects in versions of Python prior to 2.3, you would probably
2488do well to incorporate the source of \cfunction{PySlice_GetIndicesEx},
2489suitably renamed, in the source of your extension.
2490\end{cfuncdesc}
2491
2492\begin{cfuncdesc}{int}{PySlice_GetIndicesEx}{PySliceObject *slice, int length,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002493 int *start, int *stop, int *step,
Michael W. Hudson5efaf7e2002-06-11 10:55:12 +00002494 int *slicelength}
2495Usable replacement for \cfunction{PySlice_GetIndices}. Retrieve the
2496start, stop, and step indices from the slice object \var{slice}
2497assuming a sequence of length \var{length}, and store the length of
2498the slice in \var{slicelength}. Out of bounds indices are clipped in
2499a manner consistent with the handling of normal slices.
2500
2501Returns 0 on success and -1 on error with exception set.
2502
2503\versionadded{2.3}
Fred Drake3adf79e2001-10-12 19:01:43 +00002504\end{cfuncdesc}
2505
2506
2507\subsection{Weak Reference Objects \label{weakref-objects}}
2508
2509Python supports \emph{weak references} as first-class objects. There
2510are two specific object types which directly implement weak
2511references. The first is a simple reference object, and the second
2512acts as a proxy for the original object as much as it can.
2513
2514\begin{cfuncdesc}{int}{PyWeakref_Check}{ob}
2515 Return true if \var{ob} is either a reference or proxy object.
2516 \versionadded{2.2}
2517\end{cfuncdesc}
2518
2519\begin{cfuncdesc}{int}{PyWeakref_CheckRef}{ob}
2520 Return true if \var{ob} is a reference object.
2521 \versionadded{2.2}
2522\end{cfuncdesc}
2523
2524\begin{cfuncdesc}{int}{PyWeakref_CheckProxy}{ob}
2525 Return true if \var{ob} is a proxy object.
2526 \versionadded{2.2}
2527\end{cfuncdesc}
2528
2529\begin{cfuncdesc}{PyObject*}{PyWeakref_NewRef}{PyObject *ob,
2530 PyObject *callback}
2531 Return a weak reference object for the object \var{ob}. This will
2532 always return a new reference, but is not guaranteed to create a new
2533 object; an existing reference object may be returned. The second
2534 parameter, \var{callback}, can be a callable object that receives
2535 notification when \var{ob} is garbage collected; it should accept a
Raymond Hettinger5232f502004-03-25 08:51:36 +00002536 single parameter, which will be the weak reference object itself.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002537 \var{callback} may also be \code{None} or \NULL{}. If \var{ob}
Fred Drake3adf79e2001-10-12 19:01:43 +00002538 is not a weakly-referencable object, or if \var{callback} is not
Tim Peters9ddf40b2004-06-20 22:41:32 +00002539 callable, \code{None}, or \NULL{}, this will return \NULL{} and
Fred Drake3adf79e2001-10-12 19:01:43 +00002540 raise \exception{TypeError}.
2541 \versionadded{2.2}
2542\end{cfuncdesc}
2543
2544\begin{cfuncdesc}{PyObject*}{PyWeakref_NewProxy}{PyObject *ob,
2545 PyObject *callback}
2546 Return a weak reference proxy object for the object \var{ob}. This
2547 will always return a new reference, but is not guaranteed to create
2548 a new object; an existing proxy object may be returned. The second
2549 parameter, \var{callback}, can be a callable object that receives
2550 notification when \var{ob} is garbage collected; it should accept a
Raymond Hettinger5232f502004-03-25 08:51:36 +00002551 single parameter, which will be the weak reference object itself.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002552 \var{callback} may also be \code{None} or \NULL{}. If \var{ob} is not
Fred Drake3adf79e2001-10-12 19:01:43 +00002553 a weakly-referencable object, or if \var{callback} is not callable,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002554 \code{None}, or \NULL{}, this will return \NULL{} and raise
Fred Drake3adf79e2001-10-12 19:01:43 +00002555 \exception{TypeError}.
2556 \versionadded{2.2}
2557\end{cfuncdesc}
2558
2559\begin{cfuncdesc}{PyObject*}{PyWeakref_GetObject}{PyObject *ref}
2560 Returns the referenced object from a weak reference, \var{ref}. If
Ka-Ping Yeebd379e92003-03-28 18:07:16 +00002561 the referent is no longer live, returns \code{None}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002562 \versionadded{2.2}
2563\end{cfuncdesc}
2564
2565\begin{cfuncdesc}{PyObject*}{PyWeakref_GET_OBJECT}{PyObject *ref}
2566 Similar to \cfunction{PyWeakref_GetObject()}, but implemented as a
2567 macro that does no error checking.
2568 \versionadded{2.2}
2569\end{cfuncdesc}
2570
2571
2572\subsection{CObjects \label{cObjects}}
2573
2574\obindex{CObject}
2575Refer to \emph{Extending and Embedding the Python Interpreter},
Fred Drake54e62942001-12-11 19:40:16 +00002576section~1.12, ``Providing a C API for an Extension Module,'' for more
Fred Drake3adf79e2001-10-12 19:01:43 +00002577information on using these objects.
2578
2579
2580\begin{ctypedesc}{PyCObject}
2581 This subtype of \ctype{PyObject} represents an opaque value, useful
2582 for C extension modules who need to pass an opaque value (as a
2583 \ctype{void*} pointer) through Python code to other C code. It is
2584 often used to make a C function pointer defined in one module
2585 available to other modules, so the regular import mechanism can be
2586 used to access C APIs defined in dynamically loaded modules.
2587\end{ctypedesc}
2588
2589\begin{cfuncdesc}{int}{PyCObject_Check}{PyObject *p}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002590 Return true if its argument is a \ctype{PyCObject}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002591\end{cfuncdesc}
2592
Tim Petersf582b822001-12-11 18:51:08 +00002593\begin{cfuncdesc}{PyObject*}{PyCObject_FromVoidPtr}{void* cobj,
Fred Drake54e62942001-12-11 19:40:16 +00002594 void (*destr)(void *)}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002595 Create a \ctype{PyCObject} from the \code{void *}\var{cobj}. The
Fred Drake3adf79e2001-10-12 19:01:43 +00002596 \var{destr} function will be called when the object is reclaimed,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002597 unless it is \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002598\end{cfuncdesc}
2599
2600\begin{cfuncdesc}{PyObject*}{PyCObject_FromVoidPtrAndDesc}{void* cobj,
2601 void* desc, void (*destr)(void *, void *)}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002602 Create a \ctype{PyCObject} from the \ctype{void *}\var{cobj}. The
Fred Drake3adf79e2001-10-12 19:01:43 +00002603 \var{destr} function will be called when the object is reclaimed.
2604 The \var{desc} argument can be used to pass extra callback data for
2605 the destructor function.
2606\end{cfuncdesc}
2607
2608\begin{cfuncdesc}{void*}{PyCObject_AsVoidPtr}{PyObject* self}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002609 Return the object \ctype{void *} that the \ctype{PyCObject}
Fred Drake3adf79e2001-10-12 19:01:43 +00002610 \var{self} was created with.
2611\end{cfuncdesc}
2612
2613\begin{cfuncdesc}{void*}{PyCObject_GetDesc}{PyObject* self}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002614 Return the description \ctype{void *} that the \ctype{PyCObject}
Fred Drake3adf79e2001-10-12 19:01:43 +00002615 \var{self} was created with.
2616\end{cfuncdesc}
Fred Drakecd8474e2001-11-26 21:29:17 +00002617
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002618\begin{cfuncdesc}{int}{PyCObject_SetVoidPtr}{PyObject* self, void* cobj}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002619 Set the void pointer inside \var{self} to \var{cobj}.
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002620 The \ctype{PyCObject} must not have an associated destructor.
2621 Return true on success, false on failure.
2622\end{cfuncdesc}
2623
Fred Drakecd8474e2001-11-26 21:29:17 +00002624
2625\subsection{Cell Objects \label{cell-objects}}
2626
2627``Cell'' objects are used to implement variables referenced by
2628multiple scopes. For each such variable, a cell object is created to
2629store the value; the local variables of each stack frame that
2630references the value contains a reference to the cells from outer
2631scopes which also use that variable. When the value is accessed, the
2632value contained in the cell is used instead of the cell object
2633itself. This de-referencing of the cell object requires support from
2634the generated byte-code; these are not automatically de-referenced
2635when accessed. Cell objects are not likely to be useful elsewhere.
2636
Fred Drake54e62942001-12-11 19:40:16 +00002637\begin{ctypedesc}{PyCellObject}
2638 The C structure used for cell objects.
2639\end{ctypedesc}
2640
Fred Drakecd8474e2001-11-26 21:29:17 +00002641\begin{cvardesc}{PyTypeObject}{PyCell_Type}
2642 The type object corresponding to cell objects
2643\end{cvardesc}
2644
2645\begin{cfuncdesc}{int}{PyCell_Check}{ob}
2646 Return true if \var{ob} is a cell object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002647 \NULL{}.
Fred Drakecd8474e2001-11-26 21:29:17 +00002648\end{cfuncdesc}
2649
2650\begin{cfuncdesc}{PyObject*}{PyCell_New}{PyObject *ob}
2651 Create and return a new cell object containing the value \var{ob}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002652 The parameter may be \NULL{}.
Fred Drakecd8474e2001-11-26 21:29:17 +00002653\end{cfuncdesc}
2654
2655\begin{cfuncdesc}{PyObject*}{PyCell_Get}{PyObject *cell}
2656 Return the contents of the cell \var{cell}.
2657\end{cfuncdesc}
2658
2659\begin{cfuncdesc}{PyObject*}{PyCell_GET}{PyObject *cell}
2660 Return the contents of the cell \var{cell}, but without checking
Raymond Hettingerf4bb1f92003-08-23 03:38:11 +00002661 that \var{cell} is non-\NULL{} and a cell object.
Fred Drakecd8474e2001-11-26 21:29:17 +00002662\end{cfuncdesc}
2663
2664\begin{cfuncdesc}{int}{PyCell_Set}{PyObject *cell, PyObject *value}
2665 Set the contents of the cell object \var{cell} to \var{value}. This
2666 releases the reference to any current content of the cell.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002667 \var{value} may be \NULL{}. \var{cell} must be non-\NULL{}; if it is
Fred Drakecd8474e2001-11-26 21:29:17 +00002668 not a cell object, \code{-1} will be returned. On success, \code{0}
2669 will be returned.
2670\end{cfuncdesc}
2671
2672\begin{cfuncdesc}{void}{PyCell_SET}{PyObject *cell, PyObject *value}
2673 Sets the value of the cell object \var{cell} to \var{value}. No
2674 reference counts are adjusted, and no checks are made for safety;
2675 \var{cell} must be non-\NULL{} and must be a cell object.
2676\end{cfuncdesc}
Martin v. Löwise440e472004-06-01 15:22:42 +00002677
2678
2679\subsection{Generator Objects \label{gen-objects}}
2680
2681Generator objects are what Python uses to implement generator iterators.
2682They are normally created by iterating over a function that yields values,
2683rather than explicitly calling \cfunction{PyGen_New}.
2684
2685\begin{ctypedesc}{PyGenObject}
2686 The C structure used for generator objects.
2687\end{ctypedesc}
2688
2689\begin{cvardesc}{PyTypeObject}{PyGen_Type}
2690 The type object corresponding to generator objects
2691\end{cvardesc}
2692
2693\begin{cfuncdesc}{int}{PyGen_Check}{ob}
2694 Return true if \var{ob} is a generator object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002695 \NULL{}.
Martin v. Löwise440e472004-06-01 15:22:42 +00002696\end{cfuncdesc}
2697
2698\begin{cfuncdesc}{int}{PyGen_CheckExact}{ob}
2699 Return true if \var{ob}'s type is \var{PyGen_Type}
2700 is a generator object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002701 \NULL{}.
Martin v. Löwise440e472004-06-01 15:22:42 +00002702\end{cfuncdesc}
2703
2704\begin{cfuncdesc}{PyObject*}{PyGen_New}{PyFrameObject *frame}
2705 Create and return a new generator object based on the \var{frame} object.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002706 The parameter must not be \NULL{}.
2707\end{cfuncdesc}
2708
2709
2710\subsection{DateTime Objects \label{datetime-objects}}
2711
2712Various date and time objects are supplied by the \module{datetime}
2713module. Before using any of these functions, the header file
2714\file{datetime.h} must be included in your source (note that this is
2715not include by \file{Python.h}), and macro \cfunction{PyDateTime_IMPORT()}
2716must be invoked. The macro arranges to put a pointer to a C structure
2717in a static variable \code{PyDateTimeAPI}, which is used by the following
Tim Peters183dabc2004-07-11 19:26:19 +00002718macros.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002719
Tim Peters183dabc2004-07-11 19:26:19 +00002720Type-check macros:
2721
2722\begin{cfuncdesc}{int}{PyDate_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002723 Return true if \var{ob} is of type \cdata{PyDateTime_DateType} or
2724 a subtype of \cdata{PyDateTime_DateType}. \var{ob} must not be
2725 \NULL{}.
2726 \versionadded{2.4}
2727\end{cfuncdesc}
2728
Tim Peters183dabc2004-07-11 19:26:19 +00002729\begin{cfuncdesc}{int}{PyDate_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002730 Return true if \var{ob} is of type \cdata{PyDateTime_DateType}.
2731 \var{ob} must not be \NULL{}.
2732 \versionadded{2.4}
2733\end{cfuncdesc}
2734
Tim Peters183dabc2004-07-11 19:26:19 +00002735\begin{cfuncdesc}{int}{PyDateTime_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002736 Return true if \var{ob} is of type \cdata{PyDateTime_DateTimeType} or
2737 a subtype of \cdata{PyDateTime_DateTimeType}. \var{ob} must not be
2738 \NULL{}.
2739 \versionadded{2.4}
2740\end{cfuncdesc}
2741
Tim Peters183dabc2004-07-11 19:26:19 +00002742\begin{cfuncdesc}{int}{PyDateTime_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002743 Return true if \var{ob} is of type \cdata{PyDateTime_DateTimeType}.
2744 \var{ob} must not be \NULL{}.
2745 \versionadded{2.4}
2746\end{cfuncdesc}
2747
Tim Peters183dabc2004-07-11 19:26:19 +00002748\begin{cfuncdesc}{int}{PyTime_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002749 Return true if \var{ob} is of type \cdata{PyDateTime_TimeType} or
2750 a subtype of \cdata{PyDateTime_TimeType}. \var{ob} must not be
2751 \NULL{}.
2752 \versionadded{2.4}
2753\end{cfuncdesc}
2754
Tim Peters183dabc2004-07-11 19:26:19 +00002755\begin{cfuncdesc}{int}{PyTime_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002756 Return true if \var{ob} is of type \cdata{PyDateTime_TimeType}.
2757 \var{ob} must not be \NULL{}.
2758 \versionadded{2.4}
2759\end{cfuncdesc}
2760
Tim Peters183dabc2004-07-11 19:26:19 +00002761\begin{cfuncdesc}{int}{PyDelta_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002762 Return true if \var{ob} is of type \cdata{PyDateTime_DeltaType} or
2763 a subtype of \cdata{PyDateTime_DeltaType}. \var{ob} must not be
2764 \NULL{}.
2765 \versionadded{2.4}
2766\end{cfuncdesc}
2767
Tim Peters183dabc2004-07-11 19:26:19 +00002768\begin{cfuncdesc}{int}{PyDelta_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002769 Return true if \var{ob} is of type \cdata{PyDateTime_DeltaType}.
2770 \var{ob} must not be \NULL{}.
2771 \versionadded{2.4}
2772\end{cfuncdesc}
2773
Tim Peters183dabc2004-07-11 19:26:19 +00002774\begin{cfuncdesc}{int}{PyTZInfo_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002775 Return true if \var{ob} is of type \cdata{PyDateTime_TZInfoType} or
2776 a subtype of \cdata{PyDateTime_TZInfoType}. \var{ob} must not be
2777 \NULL{}.
2778 \versionadded{2.4}
2779\end{cfuncdesc}
2780
Tim Peters183dabc2004-07-11 19:26:19 +00002781\begin{cfuncdesc}{int}{PyTZInfo_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002782 Return true if \var{ob} is of type \cdata{PyDateTime_TZInfoType}.
2783 \var{ob} must not be \NULL{}.
2784 \versionadded{2.4}
2785\end{cfuncdesc}
2786
Tim Peters183dabc2004-07-11 19:26:19 +00002787Macros to create objects:
2788
Tim Peters9ddf40b2004-06-20 22:41:32 +00002789\begin{cfuncdesc}{PyObject*}{PyDate_FromDate}{int year, int month, int day}
2790 Return a \code{datetime.date} object with the specified year, month
2791 and day.
2792 \versionadded{2.4}
2793\end{cfuncdesc}
2794
2795\begin{cfuncdesc}{PyObject*}{PyDate_FromDateAndTime}{int year, int month,
2796 int day, int hour, int minute, int second, int usecond}
2797 Return a \code{datetime.datetime} object with the specified year, month,
2798 day, hour, minute, second and microsecond.
2799 \versionadded{2.4}
2800\end{cfuncdesc}
2801
2802\begin{cfuncdesc}{PyObject*}{PyTime_FromTime}{int hour, int minute,
2803 int second, int usecond}
2804 Return a \code{datetime.time} object with the specified hour, minute,
2805 second and microsecond.
2806 \versionadded{2.4}
2807\end{cfuncdesc}
2808
2809\begin{cfuncdesc}{PyObject*}{PyDelta_FromDSU}{int days, int seconds,
2810 int useconds}
2811 Return a \code{datetime.timedelta} object representing the given number
2812 of days, seconds and microseconds. Normalization is performed so that
2813 the resulting number of microseconds and seconds lie in the ranges
2814 documented for \code{datetime.timedelta} objects.
2815 \versionadded{2.4}
2816\end{cfuncdesc}
2817
Tim Peters8ff9f9f2004-07-17 01:42:26 +00002818Macros to extract fields from date objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00002819instance of \cdata{PyDateTime_Date}, including subclasses (such as
2820\cdata{PyDateTime_DateTime}). The argument must not be \NULL{}, and
2821the type is not checked:
2822
2823\begin{cfuncdesc}{int}{PyDateTime_GET_YEAR}{PyDateTime_Date *o}
2824 Return the year, as a positive int.
2825 \versionadded{2.4}
2826\end{cfuncdesc}
2827
2828\begin{cfuncdesc}{int}{PyDateTime_GET_MONTH}{PyDateTime_Date *o}
2829 Return the month, as an int from 1 through 12.
2830 \versionadded{2.4}
2831\end{cfuncdesc}
2832
2833\begin{cfuncdesc}{int}{PyDateTime_GET_DAY}{PyDateTime_Date *o}
2834 Return the day, as an int from 1 through 31.
2835 \versionadded{2.4}
2836\end{cfuncdesc}
2837
Tim Peters8ff9f9f2004-07-17 01:42:26 +00002838Macros to extract fields from datetime objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00002839instance of \cdata{PyDateTime_DateTime}, including subclasses.
2840The argument must not be \NULL{}, and the type is not checked:
2841
2842\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_HOUR}{PyDateTime_DateTime *o}
Neal Norwitz7fdd92f2004-08-02 21:56:33 +00002843 Return the hour, as an int from 0 through 23.
Tim Peters183dabc2004-07-11 19:26:19 +00002844 \versionadded{2.4}
2845\end{cfuncdesc}
2846
2847\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_MINUTE}{PyDateTime_DateTime *o}
2848 Return the minute, as an int from 0 through 59.
2849 \versionadded{2.4}
2850\end{cfuncdesc}
2851
2852\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_SECOND}{PyDateTime_DateTime *o}
2853 Return the second, as an int from 0 through 59.
2854 \versionadded{2.4}
2855\end{cfuncdesc}
2856
2857\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_MICROSECOND}{PyDateTime_DateTime *o}
2858 Return the microsecond, as an int from 0 through 999999.
2859 \versionadded{2.4}
2860\end{cfuncdesc}
2861
Tim Peters8ff9f9f2004-07-17 01:42:26 +00002862Macros to extract fields from time objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00002863instance of \cdata{PyDateTime_Time}, including subclasses.
2864The argument must not be \NULL{}, and the type is not checked:
2865
2866\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_HOUR}{PyDateTime_Time *o}
Neal Norwitz7fdd92f2004-08-02 21:56:33 +00002867 Return the hour, as an int from 0 through 23.
Tim Peters183dabc2004-07-11 19:26:19 +00002868 \versionadded{2.4}
2869\end{cfuncdesc}
2870
2871\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_MINUTE}{PyDateTime_Time *o}
2872 Return the minute, as an int from 0 through 59.
2873 \versionadded{2.4}
2874\end{cfuncdesc}
2875
2876\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_SECOND}{PyDateTime_Time *o}
2877 Return the second, as an int from 0 through 59.
2878 \versionadded{2.4}
2879\end{cfuncdesc}
2880
2881\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_MICROSECOND}{PyDateTime_Time *o}
2882 Return the microsecond, as an int from 0 through 999999.
2883 \versionadded{2.4}
2884\end{cfuncdesc}
2885
2886Macros for the convenience of modules implementing the DB API:
2887
Tim Peters9ddf40b2004-06-20 22:41:32 +00002888\begin{cfuncdesc}{PyObject*}{PyDateTime_FromTimestamp}{PyObject *args}
2889 Create and return a new \code{datetime.datetime} object given an argument
2890 tuple suitable for passing to \code{datetime.datetime.fromtimestamp()}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002891 \versionadded{2.4}
2892\end{cfuncdesc}
2893
2894\begin{cfuncdesc}{PyObject*}{PyDate_FromTimestamp}{PyObject *args}
2895 Create and return a new \code{datetime.date} object given an argument
2896 tuple suitable for passing to \code{datetime.date.fromtimestamp()}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002897 \versionadded{2.4}
Martin v. Löwise440e472004-06-01 15:22:42 +00002898\end{cfuncdesc}