blob: a77a584a4ec7a9cccfc9548c216de89e42089294 [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
998 \var{w}. At most \var{size} \ctype{wchar_t} characters are copied.
999 Returns the number of \ctype{wchar_t} characters copied or -1 in
Fred Drake3adf79e2001-10-12 19:01:43 +00001000 case of an error.
1001\end{cfuncdesc}
1002
1003
1004\subsubsection{Built-in Codecs \label{builtinCodecs}}
1005
1006Python provides a set of builtin codecs which are written in C
1007for speed. All of these codecs are directly usable via the
1008following functions.
1009
1010Many of the following APIs take two arguments encoding and
1011errors. These parameters encoding and errors have the same semantics
1012as the ones of the builtin unicode() Unicode object constructor.
1013
1014Setting encoding to \NULL{} causes the default encoding to be used
1015which is \ASCII. The file system calls should use
1016\cdata{Py_FileSystemDefaultEncoding} as the encoding for file
1017names. This variable should be treated as read-only: On some systems,
1018it will be a pointer to a static string, on others, it will change at
Raymond Hettingercb2da432003-10-12 18:24:34 +00001019run-time (such as when the application invokes setlocale).
Fred Drake3adf79e2001-10-12 19:01:43 +00001020
1021Error handling is set by errors which may also be set to \NULL{}
1022meaning to use the default handling defined for the codec. Default
1023error handling for all builtin codecs is ``strict''
1024(\exception{ValueError} is raised).
1025
1026The codecs all use a similar interface. Only deviation from the
1027following generic ones are documented for simplicity.
1028
1029% --- Generic Codecs -----------------------------------------------------
1030
1031These are the generic codec APIs:
1032
1033\begin{cfuncdesc}{PyObject*}{PyUnicode_Decode}{const char *s,
1034 int size,
1035 const char *encoding,
1036 const char *errors}
1037 Create a Unicode object by decoding \var{size} bytes of the encoded
1038 string \var{s}. \var{encoding} and \var{errors} have the same
1039 meaning as the parameters of the same name in the
1040 \function{unicode()} builtin function. The codec to be used is
1041 looked up using the Python codec registry. Returns \NULL{} if an
1042 exception was raised by the codec.
1043\end{cfuncdesc}
1044
1045\begin{cfuncdesc}{PyObject*}{PyUnicode_Encode}{const Py_UNICODE *s,
1046 int size,
1047 const char *encoding,
1048 const char *errors}
1049 Encodes the \ctype{Py_UNICODE} buffer of the given size and returns
1050 a Python string object. \var{encoding} and \var{errors} have the
1051 same meaning as the parameters of the same name in the Unicode
1052 \method{encode()} method. The codec to be used is looked up using
1053 the Python codec registry. Returns \NULL{} if an exception was
1054 raised by the codec.
1055\end{cfuncdesc}
1056
1057\begin{cfuncdesc}{PyObject*}{PyUnicode_AsEncodedString}{PyObject *unicode,
1058 const char *encoding,
1059 const char *errors}
1060 Encodes a Unicode object and returns the result as Python string
1061 object. \var{encoding} and \var{errors} have the same meaning as the
1062 parameters of the same name in the Unicode \method{encode()} method.
1063 The codec to be used is looked up using the Python codec registry.
1064 Returns \NULL{} if an exception was raised by the codec.
1065\end{cfuncdesc}
1066
1067% --- UTF-8 Codecs -------------------------------------------------------
1068
1069These are the UTF-8 codec APIs:
1070
1071\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF8}{const char *s,
1072 int size,
1073 const char *errors}
1074 Creates a Unicode object by decoding \var{size} bytes of the UTF-8
1075 encoded string \var{s}. Returns \NULL{} if an exception was raised
1076 by the codec.
1077\end{cfuncdesc}
1078
1079\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeUTF8}{const Py_UNICODE *s,
1080 int size,
1081 const char *errors}
1082 Encodes the \ctype{Py_UNICODE} buffer of the given size using UTF-8
1083 and returns a Python string object. Returns \NULL{} if an exception
1084 was raised by the codec.
1085\end{cfuncdesc}
1086
1087\begin{cfuncdesc}{PyObject*}{PyUnicode_AsUTF8String}{PyObject *unicode}
1088 Encodes a Unicode objects using UTF-8 and returns the result as
1089 Python string object. Error handling is ``strict''. Returns
1090 \NULL{} if an exception was raised by the codec.
1091\end{cfuncdesc}
1092
1093% --- UTF-16 Codecs ------------------------------------------------------ */
1094
1095These are the UTF-16 codec APIs:
1096
1097\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF16}{const char *s,
1098 int size,
1099 const char *errors,
1100 int *byteorder}
1101 Decodes \var{length} bytes from a UTF-16 encoded buffer string and
1102 returns the corresponding Unicode object. \var{errors} (if
Tim Peters9ddf40b2004-06-20 22:41:32 +00001103 non-\NULL{}) defines the error handling. It defaults to ``strict''.
Fred Drake3adf79e2001-10-12 19:01:43 +00001104
Tim Peters9ddf40b2004-06-20 22:41:32 +00001105 If \var{byteorder} is non-\NULL{}, the decoder starts decoding using
Fred Drake3adf79e2001-10-12 19:01:43 +00001106 the given byte order:
1107
1108\begin{verbatim}
1109 *byteorder == -1: little endian
1110 *byteorder == 0: native order
1111 *byteorder == 1: big endian
1112\end{verbatim}
1113
1114 and then switches according to all byte order marks (BOM) it finds
1115 in the input data. BOMs are not copied into the resulting Unicode
1116 string. After completion, \var{*byteorder} is set to the current
1117 byte order at the end of input data.
1118
Tim Peters9ddf40b2004-06-20 22:41:32 +00001119 If \var{byteorder} is \NULL{}, the codec starts in native order mode.
Fred Drake3adf79e2001-10-12 19:01:43 +00001120
1121 Returns \NULL{} if an exception was raised by the codec.
1122\end{cfuncdesc}
1123
1124\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeUTF16}{const Py_UNICODE *s,
1125 int size,
1126 const char *errors,
1127 int byteorder}
1128 Returns a Python string object holding the UTF-16 encoded value of
1129 the Unicode data in \var{s}. If \var{byteorder} is not \code{0},
1130 output is written according to the following byte order:
1131
1132\begin{verbatim}
1133 byteorder == -1: little endian
1134 byteorder == 0: native byte order (writes a BOM mark)
1135 byteorder == 1: big endian
1136\end{verbatim}
1137
1138 If byteorder is \code{0}, the output string will always start with
1139 the Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark
1140 is prepended.
1141
Martin v. Löwis9bc4f2d2004-06-03 09:55:28 +00001142 If \var{Py_UNICODE_WIDE} is defined, a single \ctype{Py_UNICODE}
1143 value may get represented as a surrogate pair. If it is not
1144 defined, each \ctype{Py_UNICODE} values is interpreted as an
1145 UCS-2 character.
Fred Drake3adf79e2001-10-12 19:01:43 +00001146
1147 Returns \NULL{} if an exception was raised by the codec.
1148\end{cfuncdesc}
1149
1150\begin{cfuncdesc}{PyObject*}{PyUnicode_AsUTF16String}{PyObject *unicode}
1151 Returns a Python string using the UTF-16 encoding in native byte
1152 order. The string always starts with a BOM mark. Error handling is
1153 ``strict''. Returns \NULL{} if an exception was raised by the
1154 codec.
1155\end{cfuncdesc}
1156
1157% --- Unicode-Escape Codecs ----------------------------------------------
1158
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001159These are the ``Unicode Escape'' codec APIs:
Fred Drake3adf79e2001-10-12 19:01:43 +00001160
1161\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUnicodeEscape}{const char *s,
1162 int size,
1163 const char *errors}
1164 Creates a Unicode object by decoding \var{size} bytes of the
1165 Unicode-Escape encoded string \var{s}. Returns \NULL{} if an
1166 exception was raised by the codec.
1167\end{cfuncdesc}
1168
1169\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeUnicodeEscape}{const Py_UNICODE *s,
1170 int size,
1171 const char *errors}
1172 Encodes the \ctype{Py_UNICODE} buffer of the given size using
1173 Unicode-Escape and returns a Python string object. Returns \NULL{}
1174 if an exception was raised by the codec.
1175\end{cfuncdesc}
1176
1177\begin{cfuncdesc}{PyObject*}{PyUnicode_AsUnicodeEscapeString}{PyObject *unicode}
1178 Encodes a Unicode objects using Unicode-Escape and returns the
1179 result as Python string object. Error handling is ``strict''.
1180 Returns \NULL{} if an exception was raised by the codec.
1181\end{cfuncdesc}
1182
1183% --- Raw-Unicode-Escape Codecs ------------------------------------------
1184
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001185These are the ``Raw Unicode Escape'' codec APIs:
Fred Drake3adf79e2001-10-12 19:01:43 +00001186
1187\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeRawUnicodeEscape}{const char *s,
1188 int size,
1189 const char *errors}
1190 Creates a Unicode object by decoding \var{size} bytes of the
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001191 Raw-Unicode-Escape encoded string \var{s}. Returns \NULL{} if an
Fred Drake3adf79e2001-10-12 19:01:43 +00001192 exception was raised by the codec.
1193\end{cfuncdesc}
1194
1195\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeRawUnicodeEscape}{const Py_UNICODE *s,
1196 int size,
1197 const char *errors}
1198 Encodes the \ctype{Py_UNICODE} buffer of the given size using
1199 Raw-Unicode-Escape and returns a Python string object. Returns
1200 \NULL{} if an exception was raised by the codec.
1201\end{cfuncdesc}
1202
1203\begin{cfuncdesc}{PyObject*}{PyUnicode_AsRawUnicodeEscapeString}{PyObject *unicode}
1204 Encodes a Unicode objects using Raw-Unicode-Escape and returns the
1205 result as Python string object. Error handling is ``strict''.
1206 Returns \NULL{} if an exception was raised by the codec.
1207\end{cfuncdesc}
1208
Tim Petersf582b822001-12-11 18:51:08 +00001209% --- Latin-1 Codecs -----------------------------------------------------
Fred Drake3adf79e2001-10-12 19:01:43 +00001210
1211These are the Latin-1 codec APIs:
1212Latin-1 corresponds to the first 256 Unicode ordinals and only these
1213are accepted by the codecs during encoding.
1214
1215\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeLatin1}{const char *s,
1216 int size,
1217 const char *errors}
1218 Creates a Unicode object by decoding \var{size} bytes of the Latin-1
1219 encoded string \var{s}. Returns \NULL{} if an exception was raised
1220 by the codec.
1221\end{cfuncdesc}
1222
1223\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeLatin1}{const Py_UNICODE *s,
1224 int size,
1225 const char *errors}
1226 Encodes the \ctype{Py_UNICODE} buffer of the given size using
1227 Latin-1 and returns a Python string object. Returns \NULL{} if an
1228 exception was raised by the codec.
1229\end{cfuncdesc}
1230
1231\begin{cfuncdesc}{PyObject*}{PyUnicode_AsLatin1String}{PyObject *unicode}
1232 Encodes a Unicode objects using Latin-1 and returns the result as
1233 Python string object. Error handling is ``strict''. Returns
1234 \NULL{} if an exception was raised by the codec.
1235\end{cfuncdesc}
1236
Tim Petersf582b822001-12-11 18:51:08 +00001237% --- ASCII Codecs -------------------------------------------------------
Fred Drake3adf79e2001-10-12 19:01:43 +00001238
1239These are the \ASCII{} codec APIs. Only 7-bit \ASCII{} data is
1240accepted. All other codes generate errors.
1241
1242\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeASCII}{const char *s,
1243 int size,
1244 const char *errors}
1245 Creates a Unicode object by decoding \var{size} bytes of the
1246 \ASCII{} encoded string \var{s}. Returns \NULL{} if an exception
1247 was raised by the codec.
1248\end{cfuncdesc}
1249
1250\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeASCII}{const Py_UNICODE *s,
1251 int size,
1252 const char *errors}
1253 Encodes the \ctype{Py_UNICODE} buffer of the given size using
1254 \ASCII{} and returns a Python string object. Returns \NULL{} if an
1255 exception was raised by the codec.
1256\end{cfuncdesc}
1257
1258\begin{cfuncdesc}{PyObject*}{PyUnicode_AsASCIIString}{PyObject *unicode}
1259 Encodes a Unicode objects using \ASCII{} and returns the result as
1260 Python string object. Error handling is ``strict''. Returns
1261 \NULL{} if an exception was raised by the codec.
1262\end{cfuncdesc}
1263
Tim Petersf582b822001-12-11 18:51:08 +00001264% --- Character Map Codecs -----------------------------------------------
Fred Drake3adf79e2001-10-12 19:01:43 +00001265
1266These are the mapping codec APIs:
1267
1268This codec is special in that it can be used to implement many
1269different codecs (and this is in fact what was done to obtain most of
1270the standard codecs included in the \module{encodings} package). The
1271codec uses mapping to encode and decode characters.
1272
1273Decoding mappings must map single string characters to single Unicode
1274characters, integers (which are then interpreted as Unicode ordinals)
Tim Petersf582b822001-12-11 18:51:08 +00001275or None (meaning "undefined mapping" and causing an error).
Fred Drake3adf79e2001-10-12 19:01:43 +00001276
1277Encoding mappings must map single Unicode characters to single string
1278characters, integers (which are then interpreted as Latin-1 ordinals)
1279or None (meaning "undefined mapping" and causing an error).
1280
1281The mapping objects provided must only support the __getitem__ mapping
1282interface.
1283
1284If a character lookup fails with a LookupError, the character is
1285copied as-is meaning that its ordinal value will be interpreted as
1286Unicode or Latin-1 ordinal resp. Because of this, mappings only need
1287to contain those mappings which map characters to different code
1288points.
1289
1290\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeCharmap}{const char *s,
1291 int size,
1292 PyObject *mapping,
1293 const char *errors}
1294 Creates a Unicode object by decoding \var{size} bytes of the encoded
1295 string \var{s} using the given \var{mapping} object. Returns
1296 \NULL{} if an exception was raised by the codec.
1297\end{cfuncdesc}
1298
1299\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeCharmap}{const Py_UNICODE *s,
1300 int size,
1301 PyObject *mapping,
1302 const char *errors}
1303 Encodes the \ctype{Py_UNICODE} buffer of the given size using the
1304 given \var{mapping} object and returns a Python string object.
1305 Returns \NULL{} if an exception was raised by the codec.
1306\end{cfuncdesc}
1307
1308\begin{cfuncdesc}{PyObject*}{PyUnicode_AsCharmapString}{PyObject *unicode,
1309 PyObject *mapping}
1310 Encodes a Unicode objects using the given \var{mapping} object and
1311 returns the result as Python string object. Error handling is
1312 ``strict''. Returns \NULL{} if an exception was raised by the
1313 codec.
1314\end{cfuncdesc}
1315
1316The following codec API is special in that maps Unicode to Unicode.
1317
1318\begin{cfuncdesc}{PyObject*}{PyUnicode_TranslateCharmap}{const Py_UNICODE *s,
1319 int size,
1320 PyObject *table,
1321 const char *errors}
1322 Translates a \ctype{Py_UNICODE} buffer of the given length by
1323 applying a character mapping \var{table} to it and returns the
1324 resulting Unicode object. Returns \NULL{} when an exception was
1325 raised by the codec.
1326
1327 The \var{mapping} table must map Unicode ordinal integers to Unicode
1328 ordinal integers or None (causing deletion of the character).
1329
1330 Mapping tables need only provide the method{__getitem__()}
1331 interface; dictionaries and sequences work well. Unmapped character
1332 ordinals (ones which cause a \exception{LookupError}) are left
1333 untouched and are copied as-is.
1334\end{cfuncdesc}
1335
1336% --- MBCS codecs for Windows --------------------------------------------
1337
1338These are the MBCS codec APIs. They are currently only available on
1339Windows and use the Win32 MBCS converters to implement the
1340conversions. Note that MBCS (or DBCS) is a class of encodings, not
1341just one. The target encoding is defined by the user settings on the
1342machine running the codec.
1343
1344\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeMBCS}{const char *s,
1345 int size,
1346 const char *errors}
1347 Creates a Unicode object by decoding \var{size} bytes of the MBCS
1348 encoded string \var{s}. Returns \NULL{} if an exception was
1349 raised by the codec.
1350\end{cfuncdesc}
1351
1352\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeMBCS}{const Py_UNICODE *s,
1353 int size,
1354 const char *errors}
1355 Encodes the \ctype{Py_UNICODE} buffer of the given size using MBCS
1356 and returns a Python string object. Returns \NULL{} if an exception
1357 was raised by the codec.
1358\end{cfuncdesc}
1359
1360\begin{cfuncdesc}{PyObject*}{PyUnicode_AsMBCSString}{PyObject *unicode}
1361 Encodes a Unicode objects using MBCS and returns the result as
1362 Python string object. Error handling is ``strict''. Returns
1363 \NULL{} if an exception was raised by the codec.
1364\end{cfuncdesc}
1365
1366% --- Methods & Slots ----------------------------------------------------
1367
1368\subsubsection{Methods and Slot Functions \label{unicodeMethodsAndSlots}}
1369
1370The following APIs are capable of handling Unicode objects and strings
1371on input (we refer to them as strings in the descriptions) and return
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001372Unicode objects or integers as appropriate.
Fred Drake3adf79e2001-10-12 19:01:43 +00001373
1374They all return \NULL{} or \code{-1} if an exception occurs.
1375
1376\begin{cfuncdesc}{PyObject*}{PyUnicode_Concat}{PyObject *left,
1377 PyObject *right}
1378 Concat two strings giving a new Unicode string.
1379\end{cfuncdesc}
1380
1381\begin{cfuncdesc}{PyObject*}{PyUnicode_Split}{PyObject *s,
1382 PyObject *sep,
1383 int maxsplit}
Tim Peters9ddf40b2004-06-20 22:41:32 +00001384 Split a string giving a list of Unicode strings. If sep is \NULL{},
Fred Drake3adf79e2001-10-12 19:01:43 +00001385 splitting will be done at all whitespace substrings. Otherwise,
1386 splits occur at the given separator. At most \var{maxsplit} splits
1387 will be done. If negative, no limit is set. Separators are not
1388 included in the resulting list.
1389\end{cfuncdesc}
1390
1391\begin{cfuncdesc}{PyObject*}{PyUnicode_Splitlines}{PyObject *s,
Martin v. Löwis24b88812003-03-30 16:40:42 +00001392 int keepend}
Fred Drake3adf79e2001-10-12 19:01:43 +00001393 Split a Unicode string at line breaks, returning a list of Unicode
Martin v. Löwis24b88812003-03-30 16:40:42 +00001394 strings. CRLF is considered to be one line break. If \var{keepend}
1395 is 0, the Line break characters are not included in the resulting
1396 strings.
Fred Drake3adf79e2001-10-12 19:01:43 +00001397\end{cfuncdesc}
1398
1399\begin{cfuncdesc}{PyObject*}{PyUnicode_Translate}{PyObject *str,
1400 PyObject *table,
1401 const char *errors}
1402 Translate a string by applying a character mapping table to it and
1403 return the resulting Unicode object.
1404
1405 The mapping table must map Unicode ordinal integers to Unicode
1406 ordinal integers or None (causing deletion of the character).
1407
1408 Mapping tables need only provide the \method{__getitem__()}
1409 interface; dictionaries and sequences work well. Unmapped character
1410 ordinals (ones which cause a \exception{LookupError}) are left
1411 untouched and are copied as-is.
1412
1413 \var{errors} has the usual meaning for codecs. It may be \NULL{}
1414 which indicates to use the default error handling.
1415\end{cfuncdesc}
1416
1417\begin{cfuncdesc}{PyObject*}{PyUnicode_Join}{PyObject *separator,
1418 PyObject *seq}
1419 Join a sequence of strings using the given separator and return the
1420 resulting Unicode string.
1421\end{cfuncdesc}
1422
1423\begin{cfuncdesc}{PyObject*}{PyUnicode_Tailmatch}{PyObject *str,
1424 PyObject *substr,
1425 int start,
1426 int end,
1427 int direction}
1428 Return 1 if \var{substr} matches \var{str}[\var{start}:\var{end}] at
1429 the given tail end (\var{direction} == -1 means to do a prefix
1430 match, \var{direction} == 1 a suffix match), 0 otherwise.
1431\end{cfuncdesc}
1432
Fred Drake1d1e1db2002-06-20 22:07:04 +00001433\begin{cfuncdesc}{int}{PyUnicode_Find}{PyObject *str,
1434 PyObject *substr,
1435 int start,
1436 int end,
1437 int direction}
Fred Drake3adf79e2001-10-12 19:01:43 +00001438 Return the first position of \var{substr} in
1439 \var{str}[\var{start}:\var{end}] using the given \var{direction}
1440 (\var{direction} == 1 means to do a forward search,
Fred Drake1d1e1db2002-06-20 22:07:04 +00001441 \var{direction} == -1 a backward search). The return value is the
1442 index of the first match; a value of \code{-1} indicates that no
1443 match was found, and \code{-2} indicates that an error occurred and
1444 an exception has been set.
Fred Drake3adf79e2001-10-12 19:01:43 +00001445\end{cfuncdesc}
1446
Fred Drake1d1e1db2002-06-20 22:07:04 +00001447\begin{cfuncdesc}{int}{PyUnicode_Count}{PyObject *str,
1448 PyObject *substr,
1449 int start,
1450 int end}
1451 Return the number of non-overlapping occurrences of \var{substr} in
1452 \code{\var{str}[\var{start}:\var{end}]}. Returns \code{-1} if an
1453 error occurred.
Fred Drake3adf79e2001-10-12 19:01:43 +00001454\end{cfuncdesc}
1455
1456\begin{cfuncdesc}{PyObject*}{PyUnicode_Replace}{PyObject *str,
1457 PyObject *substr,
1458 PyObject *replstr,
1459 int maxcount}
1460 Replace at most \var{maxcount} occurrences of \var{substr} in
1461 \var{str} with \var{replstr} and return the resulting Unicode object.
1462 \var{maxcount} == -1 means replace all occurrences.
1463\end{cfuncdesc}
1464
1465\begin{cfuncdesc}{int}{PyUnicode_Compare}{PyObject *left, PyObject *right}
1466 Compare two strings and return -1, 0, 1 for less than, equal, and
1467 greater than, respectively.
1468\end{cfuncdesc}
1469
1470\begin{cfuncdesc}{PyObject*}{PyUnicode_Format}{PyObject *format,
1471 PyObject *args}
1472 Returns a new string object from \var{format} and \var{args}; this
1473 is analogous to \code{\var{format} \%\ \var{args}}. The
1474 \var{args} argument must be a tuple.
1475\end{cfuncdesc}
1476
1477\begin{cfuncdesc}{int}{PyUnicode_Contains}{PyObject *container,
1478 PyObject *element}
1479 Checks whether \var{element} is contained in \var{container} and
1480 returns true or false accordingly.
1481
1482 \var{element} has to coerce to a one element Unicode
1483 string. \code{-1} is returned if there was an error.
1484\end{cfuncdesc}
1485
1486
1487\subsection{Buffer Objects \label{bufferObjects}}
1488\sectionauthor{Greg Stein}{gstein@lyra.org}
1489
1490\obindex{buffer}
1491Python objects implemented in C can export a group of functions called
1492the ``buffer\index{buffer interface} interface.'' These functions can
1493be used by an object to expose its data in a raw, byte-oriented
1494format. Clients of the object can use the buffer interface to access
1495the object data directly, without needing to copy it first.
1496
Tim Petersf582b822001-12-11 18:51:08 +00001497Two examples of objects that support
1498the buffer interface are strings and arrays. The string object exposes
Fred Drake3adf79e2001-10-12 19:01:43 +00001499the character contents in the buffer interface's byte-oriented
1500form. An array can also expose its contents, but it should be noted
1501that array elements may be multi-byte values.
1502
1503An example user of the buffer interface is the file object's
1504\method{write()} method. Any object that can export a series of bytes
1505through the buffer interface can be written to a file. There are a
Tim Petersf582b822001-12-11 18:51:08 +00001506number of format codes to \cfunction{PyArg_ParseTuple()} that operate
Fred Drake3adf79e2001-10-12 19:01:43 +00001507against an object's buffer interface, returning data from the target
1508object.
1509
1510More information on the buffer interface is provided in the section
Fred Drake54e62942001-12-11 19:40:16 +00001511``Buffer Object Structures'' (section~\ref{buffer-structs}), under
Fred Drake3adf79e2001-10-12 19:01:43 +00001512the description for \ctype{PyBufferProcs}\ttindex{PyBufferProcs}.
1513
1514A ``buffer object'' is defined in the \file{bufferobject.h} header
1515(included by \file{Python.h}). These objects look very similar to
1516string objects at the Python programming level: they support slicing,
1517indexing, concatenation, and some other standard string
1518operations. However, their data can come from one of two sources: from
1519a block of memory, or from another object which exports the buffer
1520interface.
1521
1522Buffer objects are useful as a way to expose the data from another
1523object's buffer interface to the Python programmer. They can also be
1524used as a zero-copy slicing mechanism. Using their ability to
1525reference a block of memory, it is possible to expose any data to the
1526Python programmer quite easily. The memory could be a large, constant
1527array in a C extension, it could be a raw block of memory for
1528manipulation before passing to an operating system library, or it
1529could be used to pass around structured data in its native, in-memory
1530format.
1531
1532\begin{ctypedesc}{PyBufferObject}
1533 This subtype of \ctype{PyObject} represents a buffer object.
1534\end{ctypedesc}
1535
1536\begin{cvardesc}{PyTypeObject}{PyBuffer_Type}
1537 The instance of \ctype{PyTypeObject} which represents the Python
1538 buffer type; it is the same object as \code{types.BufferType} in the
1539 Python layer.\withsubitem{(in module types)}{\ttindex{BufferType}}.
1540\end{cvardesc}
1541
1542\begin{cvardesc}{int}{Py_END_OF_BUFFER}
1543 This constant may be passed as the \var{size} parameter to
1544 \cfunction{PyBuffer_FromObject()} or
1545 \cfunction{PyBuffer_FromReadWriteObject()}. It indicates that the
1546 new \ctype{PyBufferObject} should refer to \var{base} object from
1547 the specified \var{offset} to the end of its exported buffer. Using
1548 this enables the caller to avoid querying the \var{base} object for
1549 its length.
1550\end{cvardesc}
1551
1552\begin{cfuncdesc}{int}{PyBuffer_Check}{PyObject *p}
1553 Return true if the argument has type \cdata{PyBuffer_Type}.
1554\end{cfuncdesc}
1555
1556\begin{cfuncdesc}{PyObject*}{PyBuffer_FromObject}{PyObject *base,
1557 int offset, int size}
1558 Return a new read-only buffer object. This raises
1559 \exception{TypeError} if \var{base} doesn't support the read-only
1560 buffer protocol or doesn't provide exactly one buffer segment, or it
1561 raises \exception{ValueError} if \var{offset} is less than zero. The
1562 buffer will hold a reference to the \var{base} object, and the
1563 buffer's contents will refer to the \var{base} object's buffer
1564 interface, starting as position \var{offset} and extending for
1565 \var{size} bytes. If \var{size} is \constant{Py_END_OF_BUFFER}, then
1566 the new buffer's contents extend to the length of the \var{base}
1567 object's exported buffer data.
1568\end{cfuncdesc}
1569
1570\begin{cfuncdesc}{PyObject*}{PyBuffer_FromReadWriteObject}{PyObject *base,
1571 int offset,
1572 int size}
1573 Return a new writable buffer object. Parameters and exceptions are
1574 similar to those for \cfunction{PyBuffer_FromObject()}. If the
1575 \var{base} object does not export the writeable buffer protocol,
1576 then \exception{TypeError} is raised.
1577\end{cfuncdesc}
1578
1579\begin{cfuncdesc}{PyObject*}{PyBuffer_FromMemory}{void *ptr, int size}
1580 Return a new read-only buffer object that reads from a specified
1581 location in memory, with a specified size. The caller is
1582 responsible for ensuring that the memory buffer, passed in as
1583 \var{ptr}, is not deallocated while the returned buffer object
1584 exists. Raises \exception{ValueError} if \var{size} is less than
1585 zero. Note that \constant{Py_END_OF_BUFFER} may \emph{not} be
1586 passed for the \var{size} parameter; \exception{ValueError} will be
1587 raised in that case.
1588\end{cfuncdesc}
1589
1590\begin{cfuncdesc}{PyObject*}{PyBuffer_FromReadWriteMemory}{void *ptr, int size}
1591 Similar to \cfunction{PyBuffer_FromMemory()}, but the returned
1592 buffer is writable.
1593\end{cfuncdesc}
1594
1595\begin{cfuncdesc}{PyObject*}{PyBuffer_New}{int size}
1596 Returns a new writable buffer object that maintains its own memory
1597 buffer of \var{size} bytes. \exception{ValueError} is returned if
Neil Schemenauerd68d3ee2004-06-08 02:58:50 +00001598 \var{size} is not zero or positive. Note that the memory buffer (as
1599 returned by \cfunction{PyObject_AsWriteBuffer()}) is not specifically
1600 aligned.
Fred Drake3adf79e2001-10-12 19:01:43 +00001601\end{cfuncdesc}
1602
1603
1604\subsection{Tuple Objects \label{tupleObjects}}
1605
1606\obindex{tuple}
1607\begin{ctypedesc}{PyTupleObject}
1608 This subtype of \ctype{PyObject} represents a Python tuple object.
1609\end{ctypedesc}
1610
1611\begin{cvardesc}{PyTypeObject}{PyTuple_Type}
1612 This instance of \ctype{PyTypeObject} represents the Python tuple
1613 type; it is the same object as \code{types.TupleType} in the Python
1614 layer.\withsubitem{(in module types)}{\ttindex{TupleType}}.
1615\end{cvardesc}
1616
1617\begin{cfuncdesc}{int}{PyTuple_Check}{PyObject *p}
1618 Return true if \var{p} is a tuple object or an instance of a subtype
1619 of the tuple type.
1620 \versionchanged[Allowed subtypes to be accepted]{2.2}
1621\end{cfuncdesc}
1622
1623\begin{cfuncdesc}{int}{PyTuple_CheckExact}{PyObject *p}
1624 Return true if \var{p} is a tuple object, but not an instance of a
1625 subtype of the tuple type.
1626 \versionadded{2.2}
1627\end{cfuncdesc}
1628
1629\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int len}
1630 Return a new tuple object of size \var{len}, or \NULL{} on failure.
1631\end{cfuncdesc}
1632
Raymond Hettingercb2da432003-10-12 18:24:34 +00001633\begin{cfuncdesc}{PyObject*}{PyTuple_Pack}{int n, \moreargs}
1634 Return a new tuple object of size \var{n}, or \NULL{} on failure.
1635 The tuple values are initialized to the subsequent \var{n} C arguments
1636 pointing to Python objects. \samp{PyTuple_Pack(2, \var{a}, \var{b})}
1637 is equivalent to \samp{Py_BuildValue("(OO)", \var{a}, \var{b})}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00001638 \versionadded{2.4}
Raymond Hettingercb2da432003-10-12 18:24:34 +00001639\end{cfuncdesc}
1640
Fred Drake3adf79e2001-10-12 19:01:43 +00001641\begin{cfuncdesc}{int}{PyTuple_Size}{PyObject *p}
1642 Takes a pointer to a tuple object, and returns the size of that
1643 tuple.
1644\end{cfuncdesc}
1645
1646\begin{cfuncdesc}{int}{PyTuple_GET_SIZE}{PyObject *p}
1647 Return the size of the tuple \var{p}, which must be non-\NULL{} and
1648 point to a tuple; no error checking is performed.
1649\end{cfuncdesc}
1650
1651\begin{cfuncdesc}{PyObject*}{PyTuple_GetItem}{PyObject *p, int pos}
1652 Returns the object at position \var{pos} in the tuple pointed to by
1653 \var{p}. If \var{pos} is out of bounds, returns \NULL{} and sets an
1654 \exception{IndexError} exception.
1655\end{cfuncdesc}
1656
1657\begin{cfuncdesc}{PyObject*}{PyTuple_GET_ITEM}{PyObject *p, int pos}
1658 Like \cfunction{PyTuple_GetItem()}, but does no checking of its
1659 arguments.
1660\end{cfuncdesc}
1661
1662\begin{cfuncdesc}{PyObject*}{PyTuple_GetSlice}{PyObject *p,
1663 int low, int high}
1664 Takes a slice of the tuple pointed to by \var{p} from \var{low} to
1665 \var{high} and returns it as a new tuple.
1666\end{cfuncdesc}
1667
1668\begin{cfuncdesc}{int}{PyTuple_SetItem}{PyObject *p,
1669 int pos, PyObject *o}
1670 Inserts a reference to object \var{o} at position \var{pos} of the
1671 tuple pointed to by \var{p}. It returns \code{0} on success.
1672 \note{This function ``steals'' a reference to \var{o}.}
1673\end{cfuncdesc}
1674
1675\begin{cfuncdesc}{void}{PyTuple_SET_ITEM}{PyObject *p,
1676 int pos, PyObject *o}
1677 Like \cfunction{PyTuple_SetItem()}, but does no error checking, and
1678 should \emph{only} be used to fill in brand new tuples. \note{This
1679 function ``steals'' a reference to \var{o}.}
1680\end{cfuncdesc}
1681
1682\begin{cfuncdesc}{int}{_PyTuple_Resize}{PyObject **p, int newsize}
1683 Can be used to resize a tuple. \var{newsize} will be the new length
1684 of the tuple. Because tuples are \emph{supposed} to be immutable,
1685 this should only be used if there is only one reference to the
1686 object. Do \emph{not} use this if the tuple may already be known to
1687 some other part of the code. The tuple will always grow or shrink
1688 at the end. Think of this as destroying the old tuple and creating
1689 a new one, only more efficiently. Returns \code{0} on success.
1690 Client code should never assume that the resulting value of
1691 \code{*\var{p}} will be the same as before calling this function.
1692 If the object referenced by \code{*\var{p}} is replaced, the
1693 original \code{*\var{p}} is destroyed. On failure, returns
Tim Peters9ddf40b2004-06-20 22:41:32 +00001694 \code{-1} and sets \code{*\var{p}} to \NULL{}, and raises
Fred Drake3adf79e2001-10-12 19:01:43 +00001695 \exception{MemoryError} or
1696 \exception{SystemError}.
Tim Petersf582b822001-12-11 18:51:08 +00001697 \versionchanged[Removed unused third parameter, \var{last_is_sticky}]{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001698\end{cfuncdesc}
1699
1700
1701\subsection{List Objects \label{listObjects}}
1702
1703\obindex{list}
1704\begin{ctypedesc}{PyListObject}
1705 This subtype of \ctype{PyObject} represents a Python list object.
1706\end{ctypedesc}
1707
1708\begin{cvardesc}{PyTypeObject}{PyList_Type}
1709 This instance of \ctype{PyTypeObject} represents the Python list
1710 type. This is the same object as \code{types.ListType}.
1711 \withsubitem{(in module types)}{\ttindex{ListType}}
1712\end{cvardesc}
1713
1714\begin{cfuncdesc}{int}{PyList_Check}{PyObject *p}
Andrew MacIntyre13cd8892003-12-25 23:57:52 +00001715 Returns true if \var{p} is a list object or an instance of a
1716 subtype of the list type.
1717 \versionchanged[Allowed subtypes to be accepted]{2.2}
1718\end{cfuncdesc}
1719
1720\begin{cfuncdesc}{int}{PyList_CheckExact}{PyObject *p}
1721 Return true if \var{p} is a list object, but not an instance of a
1722 subtype of the list type.
1723 \versionadded{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001724\end{cfuncdesc}
1725
1726\begin{cfuncdesc}{PyObject*}{PyList_New}{int len}
1727 Returns a new list of length \var{len} on success, or \NULL{} on
1728 failure.
1729\end{cfuncdesc}
1730
1731\begin{cfuncdesc}{int}{PyList_Size}{PyObject *list}
1732 Returns the length of the list object in \var{list}; this is
1733 equivalent to \samp{len(\var{list})} on a list object.
1734 \bifuncindex{len}
1735\end{cfuncdesc}
1736
1737\begin{cfuncdesc}{int}{PyList_GET_SIZE}{PyObject *list}
1738 Macro form of \cfunction{PyList_Size()} without error checking.
1739\end{cfuncdesc}
1740
1741\begin{cfuncdesc}{PyObject*}{PyList_GetItem}{PyObject *list, int index}
1742 Returns the object at position \var{pos} in the list pointed to by
1743 \var{p}. If \var{pos} is out of bounds, returns \NULL{} and sets an
1744 \exception{IndexError} exception.
1745\end{cfuncdesc}
1746
1747\begin{cfuncdesc}{PyObject*}{PyList_GET_ITEM}{PyObject *list, int i}
1748 Macro form of \cfunction{PyList_GetItem()} without error checking.
1749\end{cfuncdesc}
1750
1751\begin{cfuncdesc}{int}{PyList_SetItem}{PyObject *list, int index,
1752 PyObject *item}
1753 Sets the item at index \var{index} in list to \var{item}. Returns
1754 \code{0} on success or \code{-1} on failure. \note{This function
1755 ``steals'' a reference to \var{item} and discards a reference to an
1756 item already in the list at the affected position.}
1757\end{cfuncdesc}
1758
1759\begin{cfuncdesc}{void}{PyList_SET_ITEM}{PyObject *list, int i,
1760 PyObject *o}
1761 Macro form of \cfunction{PyList_SetItem()} without error checking.
1762 This is normally only used to fill in new lists where there is no
1763 previous content.
1764 \note{This function ``steals'' a reference to \var{item}, and,
1765 unlike \cfunction{PyList_SetItem()}, does \emph{not} discard a
1766 reference to any item that it being replaced; any reference in
1767 \var{list} at position \var{i} will be leaked.}
1768\end{cfuncdesc}
1769
1770\begin{cfuncdesc}{int}{PyList_Insert}{PyObject *list, int index,
1771 PyObject *item}
1772 Inserts the item \var{item} into list \var{list} in front of index
1773 \var{index}. Returns \code{0} if successful; returns \code{-1} and
1774 raises an exception if unsuccessful. Analogous to
1775 \code{\var{list}.insert(\var{index}, \var{item})}.
1776\end{cfuncdesc}
1777
1778\begin{cfuncdesc}{int}{PyList_Append}{PyObject *list, PyObject *item}
1779 Appends the object \var{item} at the end of list \var{list}.
1780 Returns \code{0} if successful; returns \code{-1} and sets an
1781 exception if unsuccessful. Analogous to
1782 \code{\var{list}.append(\var{item})}.
1783\end{cfuncdesc}
1784
1785\begin{cfuncdesc}{PyObject*}{PyList_GetSlice}{PyObject *list,
1786 int low, int high}
1787 Returns a list of the objects in \var{list} containing the objects
1788 \emph{between} \var{low} and \var{high}. Returns \NULL{} and sets
1789 an exception if unsuccessful.
1790 Analogous to \code{\var{list}[\var{low}:\var{high}]}.
1791\end{cfuncdesc}
1792
1793\begin{cfuncdesc}{int}{PyList_SetSlice}{PyObject *list,
1794 int low, int high,
1795 PyObject *itemlist}
1796 Sets the slice of \var{list} between \var{low} and \var{high} to the
1797 contents of \var{itemlist}. Analogous to
Raymond Hettinger9c7ed4c2003-10-26 17:20:07 +00001798 \code{\var{list}[\var{low}:\var{high}] = \var{itemlist}}.
1799 The \var{itemlist} may be \NULL{}, indicating the assignment
1800 of an empty list (slice deletion).
1801 Returns \code{0} on success, \code{-1} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00001802\end{cfuncdesc}
1803
1804\begin{cfuncdesc}{int}{PyList_Sort}{PyObject *list}
1805 Sorts the items of \var{list} in place. Returns \code{0} on
1806 success, \code{-1} on failure. This is equivalent to
1807 \samp{\var{list}.sort()}.
1808\end{cfuncdesc}
1809
1810\begin{cfuncdesc}{int}{PyList_Reverse}{PyObject *list}
1811 Reverses the items of \var{list} in place. Returns \code{0} on
1812 success, \code{-1} on failure. This is the equivalent of
1813 \samp{\var{list}.reverse()}.
1814\end{cfuncdesc}
1815
1816\begin{cfuncdesc}{PyObject*}{PyList_AsTuple}{PyObject *list}
1817 Returns a new tuple object containing the contents of \var{list};
1818 equivalent to \samp{tuple(\var{list})}.\bifuncindex{tuple}
1819\end{cfuncdesc}
1820
1821
1822\section{Mapping Objects \label{mapObjects}}
1823
1824\obindex{mapping}
1825
1826
1827\subsection{Dictionary Objects \label{dictObjects}}
1828
1829\obindex{dictionary}
1830\begin{ctypedesc}{PyDictObject}
1831 This subtype of \ctype{PyObject} represents a Python dictionary
1832 object.
1833\end{ctypedesc}
1834
1835\begin{cvardesc}{PyTypeObject}{PyDict_Type}
1836 This instance of \ctype{PyTypeObject} represents the Python
1837 dictionary type. This is exposed to Python programs as
1838 \code{types.DictType} and \code{types.DictionaryType}.
1839 \withsubitem{(in module types)}{\ttindex{DictType}\ttindex{DictionaryType}}
1840\end{cvardesc}
1841
1842\begin{cfuncdesc}{int}{PyDict_Check}{PyObject *p}
Andrew MacIntyre13cd8892003-12-25 23:57:52 +00001843 Returns true if \var{p} is a dict object or an instance of a
1844 subtype of the dict type.
1845 \versionchanged[Allowed subtypes to be accepted]{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001846\end{cfuncdesc}
1847
Andrew MacIntyref72af652003-12-26 00:07:51 +00001848\begin{cfuncdesc}{int}{PyDict_CheckExact}{PyObject *p}
1849 Return true if \var{p} is a dict object, but not an instance of a
1850 subtype of the dict type.
1851 \versionadded{2.4}
1852\end{cfuncdesc}
1853
Fred Drake3adf79e2001-10-12 19:01:43 +00001854\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
1855 Returns a new empty dictionary, or \NULL{} on failure.
1856\end{cfuncdesc}
1857
1858\begin{cfuncdesc}{PyObject*}{PyDictProxy_New}{PyObject *dict}
1859 Return a proxy object for a mapping which enforces read-only
1860 behavior. This is normally used to create a proxy to prevent
1861 modification of the dictionary for non-dynamic class types.
1862 \versionadded{2.2}
1863\end{cfuncdesc}
1864
1865\begin{cfuncdesc}{void}{PyDict_Clear}{PyObject *p}
1866 Empties an existing dictionary of all key-value pairs.
1867\end{cfuncdesc}
1868
Raymond Hettingerbc0f2ab2003-11-25 21:12:14 +00001869\begin{cfuncdesc}{int}{PyDict_Contains}{PyObject *p, PyObject *key}
1870 Determine if dictionary \var{p} contains \var{key}. If an item
1871 in \var{p} is matches \var{key}, return \code{1}, otherwise return
1872 \code{0}. On error, return \code{-1}. This is equivalent to the
1873 Python expression \samp{\var{key} in \var{p}}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00001874 \versionadded{2.4}
Raymond Hettingerbc0f2ab2003-11-25 21:12:14 +00001875\end{cfuncdesc}
1876
Fred Drake3adf79e2001-10-12 19:01:43 +00001877\begin{cfuncdesc}{PyObject*}{PyDict_Copy}{PyObject *p}
1878 Returns a new dictionary that contains the same key-value pairs as
1879 \var{p}.
1880 \versionadded{1.6}
1881\end{cfuncdesc}
1882
1883\begin{cfuncdesc}{int}{PyDict_SetItem}{PyObject *p, PyObject *key,
1884 PyObject *val}
1885 Inserts \var{value} into the dictionary \var{p} with a key of
1886 \var{key}. \var{key} must be hashable; if it isn't,
1887 \exception{TypeError} will be raised.
1888 Returns \code{0} on success or \code{-1} on failure.
1889\end{cfuncdesc}
1890
1891\begin{cfuncdesc}{int}{PyDict_SetItemString}{PyObject *p,
1892 char *key,
1893 PyObject *val}
1894 Inserts \var{value} into the dictionary \var{p} using \var{key} as a
1895 key. \var{key} should be a \ctype{char*}. The key object is created
1896 using \code{PyString_FromString(\var{key})}. Returns \code{0} on
1897 success or \code{-1} on failure.
1898 \ttindex{PyString_FromString()}
1899\end{cfuncdesc}
1900
1901\begin{cfuncdesc}{int}{PyDict_DelItem}{PyObject *p, PyObject *key}
1902 Removes the entry in dictionary \var{p} with key \var{key}.
1903 \var{key} must be hashable; if it isn't, \exception{TypeError} is
Skip Montanaroa23bc422002-01-23 08:18:30 +00001904 raised. Returns \code{0} on success or \code{-1} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00001905\end{cfuncdesc}
1906
1907\begin{cfuncdesc}{int}{PyDict_DelItemString}{PyObject *p, char *key}
1908 Removes the entry in dictionary \var{p} which has a key specified by
1909 the string \var{key}. Returns \code{0} on success or \code{-1} on
1910 failure.
1911\end{cfuncdesc}
1912
1913\begin{cfuncdesc}{PyObject*}{PyDict_GetItem}{PyObject *p, PyObject *key}
1914 Returns the object from dictionary \var{p} which has a key
1915 \var{key}. Returns \NULL{} if the key \var{key} is not present, but
1916 \emph{without} setting an exception.
1917\end{cfuncdesc}
1918
1919\begin{cfuncdesc}{PyObject*}{PyDict_GetItemString}{PyObject *p, char *key}
1920 This is the same as \cfunction{PyDict_GetItem()}, but \var{key} is
1921 specified as a \ctype{char*}, rather than a \ctype{PyObject*}.
1922\end{cfuncdesc}
1923
1924\begin{cfuncdesc}{PyObject*}{PyDict_Items}{PyObject *p}
1925 Returns a \ctype{PyListObject} containing all the items from the
1926 dictionary, as in the dictinoary method \method{items()} (see the
1927 \citetitle[../lib/lib.html]{Python Library Reference}).
1928\end{cfuncdesc}
1929
1930\begin{cfuncdesc}{PyObject*}{PyDict_Keys}{PyObject *p}
1931 Returns a \ctype{PyListObject} containing all the keys from the
1932 dictionary, as in the dictionary method \method{keys()} (see the
1933 \citetitle[../lib/lib.html]{Python Library Reference}).
1934\end{cfuncdesc}
1935
1936\begin{cfuncdesc}{PyObject*}{PyDict_Values}{PyObject *p}
1937 Returns a \ctype{PyListObject} containing all the values from the
1938 dictionary \var{p}, as in the dictionary method \method{values()}
1939 (see the \citetitle[../lib/lib.html]{Python Library Reference}).
1940\end{cfuncdesc}
1941
1942\begin{cfuncdesc}{int}{PyDict_Size}{PyObject *p}
1943 Returns the number of items in the dictionary. This is equivalent
1944 to \samp{len(\var{p})} on a dictionary.\bifuncindex{len}
1945\end{cfuncdesc}
1946
1947\begin{cfuncdesc}{int}{PyDict_Next}{PyObject *p, int *ppos,
1948 PyObject **pkey, PyObject **pvalue}
1949 Iterate over all key-value pairs in the dictionary \var{p}. The
1950 \ctype{int} referred to by \var{ppos} must be initialized to
1951 \code{0} prior to the first call to this function to start the
1952 iteration; the function returns true for each pair in the
1953 dictionary, and false once all pairs have been reported. The
1954 parameters \var{pkey} and \var{pvalue} should either point to
1955 \ctype{PyObject*} variables that will be filled in with each key and
Tim Peters9ddf40b2004-06-20 22:41:32 +00001956 value, respectively, or may be \NULL{}. Any references returned through
Raymond Hettinger54693242003-12-13 19:48:41 +00001957 them are borrowed. \var{ppos} should not be altered during iteration.
1958 Its value represents offsets within the internal dictionary structure,
1959 and since the structure is sparse, the offsets are not consecutive.
Fred Drake3adf79e2001-10-12 19:01:43 +00001960
1961 For example:
1962
1963\begin{verbatim}
1964PyObject *key, *value;
1965int pos = 0;
1966
1967while (PyDict_Next(self->dict, &pos, &key, &value)) {
1968 /* do something interesting with the values... */
1969 ...
1970}
1971\end{verbatim}
1972
1973 The dictionary \var{p} should not be mutated during iteration. It
1974 is safe (since Python 2.1) to modify the values of the keys as you
1975 iterate over the dictionary, but only so long as the set of keys
1976 does not change. For example:
1977
1978\begin{verbatim}
1979PyObject *key, *value;
1980int pos = 0;
1981
1982while (PyDict_Next(self->dict, &pos, &key, &value)) {
1983 int i = PyInt_AS_LONG(value) + 1;
1984 PyObject *o = PyInt_FromLong(i);
1985 if (o == NULL)
1986 return -1;
1987 if (PyDict_SetItem(self->dict, key, o) < 0) {
1988 Py_DECREF(o);
1989 return -1;
1990 }
1991 Py_DECREF(o);
1992}
1993\end{verbatim}
1994\end{cfuncdesc}
1995
1996\begin{cfuncdesc}{int}{PyDict_Merge}{PyObject *a, PyObject *b, int override}
Tim Petersf582b822001-12-11 18:51:08 +00001997 Iterate over mapping object \var{b} adding key-value pairs to dictionary
1998 \var{a}.
1999 \var{b} may be a dictionary, or any object supporting
2000 \function{PyMapping_Keys()} and \function{PyObject_GetItem()}.
2001 If \var{override} is true, existing pairs in \var{a} will
Fred Drake3adf79e2001-10-12 19:01:43 +00002002 be replaced if a matching key is found in \var{b}, otherwise pairs
2003 will only be added if there is not a matching key in \var{a}.
Tim Petersf582b822001-12-11 18:51:08 +00002004 Return \code{0} on success or \code{-1} if an exception was
Fred Drake3adf79e2001-10-12 19:01:43 +00002005 raised.
2006\versionadded{2.2}
2007\end{cfuncdesc}
2008
2009\begin{cfuncdesc}{int}{PyDict_Update}{PyObject *a, PyObject *b}
2010 This is the same as \code{PyDict_Merge(\var{a}, \var{b}, 1)} in C,
Tim Petersf582b822001-12-11 18:51:08 +00002011 or \code{\var{a}.update(\var{b})} in Python. Return \code{0} on
Fred Drake3adf79e2001-10-12 19:01:43 +00002012 success or \code{-1} if an exception was raised.
2013 \versionadded{2.2}
2014\end{cfuncdesc}
2015
Tim Petersf582b822001-12-11 18:51:08 +00002016\begin{cfuncdesc}{int}{PyDict_MergeFromSeq2}{PyObject *a, PyObject *seq2,
2017 int override}
2018 Update or merge into dictionary \var{a}, from the key-value pairs in
2019 \var{seq2}. \var{seq2} must be an iterable object producing
2020 iterable objects of length 2, viewed as key-value pairs. In case of
2021 duplicate keys, the last wins if \var{override} is true, else the
2022 first wins.
2023 Return \code{0} on success or \code{-1} if an exception
2024 was raised.
2025 Equivalent Python (except for the return value):
2026
2027\begin{verbatim}
2028def PyDict_MergeFromSeq2(a, seq2, override):
2029 for key, value in seq2:
2030 if override or key not in a:
2031 a[key] = value
2032\end{verbatim}
2033
2034 \versionadded{2.2}
2035\end{cfuncdesc}
Fred Drake3adf79e2001-10-12 19:01:43 +00002036
Fred Drake54e62942001-12-11 19:40:16 +00002037
Fred Drake3adf79e2001-10-12 19:01:43 +00002038\section{Other Objects \label{otherObjects}}
2039
2040\subsection{File Objects \label{fileObjects}}
2041
2042\obindex{file}
2043Python's built-in file objects are implemented entirely on the
2044\ctype{FILE*} support from the C standard library. This is an
2045implementation detail and may change in future releases of Python.
2046
2047\begin{ctypedesc}{PyFileObject}
2048 This subtype of \ctype{PyObject} represents a Python file object.
2049\end{ctypedesc}
2050
2051\begin{cvardesc}{PyTypeObject}{PyFile_Type}
2052 This instance of \ctype{PyTypeObject} represents the Python file
2053 type. This is exposed to Python programs as \code{types.FileType}.
2054 \withsubitem{(in module types)}{\ttindex{FileType}}
2055\end{cvardesc}
2056
2057\begin{cfuncdesc}{int}{PyFile_Check}{PyObject *p}
2058 Returns true if its argument is a \ctype{PyFileObject} or a subtype
2059 of \ctype{PyFileObject}.
2060 \versionchanged[Allowed subtypes to be accepted]{2.2}
2061\end{cfuncdesc}
2062
2063\begin{cfuncdesc}{int}{PyFile_CheckExact}{PyObject *p}
2064 Returns true if its argument is a \ctype{PyFileObject}, but not a
2065 subtype of \ctype{PyFileObject}.
2066 \versionadded{2.2}
2067\end{cfuncdesc}
2068
2069\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *filename, char *mode}
2070 On success, returns a new file object that is opened on the file
2071 given by \var{filename}, with a file mode given by \var{mode}, where
2072 \var{mode} has the same semantics as the standard C routine
Tim Peters9ddf40b2004-06-20 22:41:32 +00002073 \cfunction{fopen()}\ttindex{fopen()}. On failure, returns \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002074\end{cfuncdesc}
2075
2076\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp,
2077 char *name, char *mode,
2078 int (*close)(FILE*)}
2079 Creates a new \ctype{PyFileObject} from the already-open standard C
2080 file pointer, \var{fp}. The function \var{close} will be called
2081 when the file should be closed. Returns \NULL{} on failure.
2082\end{cfuncdesc}
2083
2084\begin{cfuncdesc}{FILE*}{PyFile_AsFile}{PyFileObject *p}
2085 Returns the file object associated with \var{p} as a \ctype{FILE*}.
2086\end{cfuncdesc}
2087
2088\begin{cfuncdesc}{PyObject*}{PyFile_GetLine}{PyObject *p, int n}
2089 Equivalent to \code{\var{p}.readline(\optional{\var{n}})}, this
2090 function reads one line from the object \var{p}. \var{p} may be a
2091 file object or any object with a \method{readline()} method. If
2092 \var{n} is \code{0}, exactly one line is read, regardless of the
2093 length of the line. If \var{n} is greater than \code{0}, no more
2094 than \var{n} bytes will be read from the file; a partial line can be
2095 returned. In both cases, an empty string is returned if the end of
2096 the file is reached immediately. If \var{n} is less than \code{0},
2097 however, one line is read regardless of length, but
2098 \exception{EOFError} is raised if the end of the file is reached
2099 immediately.
2100 \withsubitem{(built-in exception)}{\ttindex{EOFError}}
2101\end{cfuncdesc}
2102
2103\begin{cfuncdesc}{PyObject*}{PyFile_Name}{PyObject *p}
2104 Returns the name of the file specified by \var{p} as a string
2105 object.
2106\end{cfuncdesc}
2107
2108\begin{cfuncdesc}{void}{PyFile_SetBufSize}{PyFileObject *p, int n}
2109 Available on systems with \cfunction{setvbuf()}\ttindex{setvbuf()}
2110 only. This should only be called immediately after file object
2111 creation.
2112\end{cfuncdesc}
2113
Martin v. Löwis5467d4c2003-05-10 07:10:12 +00002114\begin{cfuncdesc}{int}{PyFile_Encoding}{PyFileObject *p, char *enc}
2115 Set the file's encoding for Unicode output to \var{enc}. Return
2116 1 on success and 0 on failure.
2117 \versionadded{2.3}
2118\end{cfuncdesc}
2119
Fred Drake3adf79e2001-10-12 19:01:43 +00002120\begin{cfuncdesc}{int}{PyFile_SoftSpace}{PyObject *p, int newflag}
2121 This function exists for internal use by the interpreter. Sets the
2122 \member{softspace} attribute of \var{p} to \var{newflag} and
2123 \withsubitem{(file attribute)}{\ttindex{softspace}}returns the
2124 previous value. \var{p} does not have to be a file object for this
2125 function to work properly; any object is supported (thought its only
2126 interesting if the \member{softspace} attribute can be set). This
2127 function clears any errors, and will return \code{0} as the previous
2128 value if the attribute either does not exist or if there were errors
2129 in retrieving it. There is no way to detect errors from this
2130 function, but doing so should not be needed.
2131\end{cfuncdesc}
2132
2133\begin{cfuncdesc}{int}{PyFile_WriteObject}{PyObject *obj, PyFileObject *p,
2134 int flags}
2135 Writes object \var{obj} to file object \var{p}. The only supported
2136 flag for \var{flags} is
2137 \constant{Py_PRINT_RAW}\ttindex{Py_PRINT_RAW}; if given, the
2138 \function{str()} of the object is written instead of the
2139 \function{repr()}. Returns \code{0} on success or \code{-1} on
2140 failure; the appropriate exception will be set.
2141\end{cfuncdesc}
2142
Fred Drake454af892001-11-29 22:42:59 +00002143\begin{cfuncdesc}{int}{PyFile_WriteString}{const char *s, PyFileObject *p}
Fred Drake3adf79e2001-10-12 19:01:43 +00002144 Writes string \var{s} to file object \var{p}. Returns \code{0} on
2145 success or \code{-1} on failure; the appropriate exception will be
2146 set.
2147\end{cfuncdesc}
2148
2149
2150\subsection{Instance Objects \label{instanceObjects}}
2151
2152\obindex{instance}
2153There are very few functions specific to instance objects.
2154
2155\begin{cvardesc}{PyTypeObject}{PyInstance_Type}
2156 Type object for class instances.
2157\end{cvardesc}
2158
2159\begin{cfuncdesc}{int}{PyInstance_Check}{PyObject *obj}
2160 Returns true if \var{obj} is an instance.
2161\end{cfuncdesc}
2162
2163\begin{cfuncdesc}{PyObject*}{PyInstance_New}{PyObject *class,
2164 PyObject *arg,
2165 PyObject *kw}
2166 Create a new instance of a specific class. The parameters \var{arg}
2167 and \var{kw} are used as the positional and keyword parameters to
2168 the object's constructor.
2169\end{cfuncdesc}
2170
2171\begin{cfuncdesc}{PyObject*}{PyInstance_NewRaw}{PyObject *class,
2172 PyObject *dict}
2173 Create a new instance of a specific class without calling it's
2174 constructor. \var{class} is the class of new object. The
2175 \var{dict} parameter will be used as the object's \member{__dict__};
Tim Peters9ddf40b2004-06-20 22:41:32 +00002176 if \NULL{}, a new dictionary will be created for the instance.
Fred Drake3adf79e2001-10-12 19:01:43 +00002177\end{cfuncdesc}
2178
2179
2180\subsection{Method Objects \label{method-objects}}
2181
2182\obindex{method}
2183There are some useful functions that are useful for working with
2184method objects.
2185
2186\begin{cvardesc}{PyTypeObject}{PyMethod_Type}
2187 This instance of \ctype{PyTypeObject} represents the Python method
2188 type. This is exposed to Python programs as \code{types.MethodType}.
2189 \withsubitem{(in module types)}{\ttindex{MethodType}}
2190\end{cvardesc}
2191
2192\begin{cfuncdesc}{int}{PyMethod_Check}{PyObject *o}
2193 Return true if \var{o} is a method object (has type
Tim Peters9ddf40b2004-06-20 22:41:32 +00002194 \cdata{PyMethod_Type}). The parameter must not be \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002195\end{cfuncdesc}
2196
2197\begin{cfuncdesc}{PyObject*}{PyMethod_New}{PyObject *func.
2198 PyObject *self, PyObject *class}
2199 Return a new method object, with \var{func} being any callable
2200 object; this is the function that will be called when the method is
2201 called. If this method should be bound to an instance, \var{self}
2202 should be the instance and \var{class} should be the class of
2203 \var{self}, otherwise \var{self} should be \NULL{} and \var{class}
2204 should be the class which provides the unbound method..
2205\end{cfuncdesc}
2206
2207\begin{cfuncdesc}{PyObject*}{PyMethod_Class}{PyObject *meth}
2208 Return the class object from which the method \var{meth} was
2209 created; if this was created from an instance, it will be the class
2210 of the instance.
2211\end{cfuncdesc}
2212
2213\begin{cfuncdesc}{PyObject*}{PyMethod_GET_CLASS}{PyObject *meth}
2214 Macro version of \cfunction{PyMethod_Class()} which avoids error
2215 checking.
2216\end{cfuncdesc}
2217
2218\begin{cfuncdesc}{PyObject*}{PyMethod_Function}{PyObject *meth}
2219 Return the function object associated with the method \var{meth}.
2220\end{cfuncdesc}
2221
2222\begin{cfuncdesc}{PyObject*}{PyMethod_GET_FUNCTION}{PyObject *meth}
2223 Macro version of \cfunction{PyMethod_Function()} which avoids error
2224 checking.
2225\end{cfuncdesc}
2226
2227\begin{cfuncdesc}{PyObject*}{PyMethod_Self}{PyObject *meth}
2228 Return the instance associated with the method \var{meth} if it is
Tim Peters9ddf40b2004-06-20 22:41:32 +00002229 bound, otherwise return \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002230\end{cfuncdesc}
2231
2232\begin{cfuncdesc}{PyObject*}{PyMethod_GET_SELF}{PyObject *meth}
2233 Macro version of \cfunction{PyMethod_Self()} which avoids error
2234 checking.
2235\end{cfuncdesc}
2236
2237
2238\subsection{Module Objects \label{moduleObjects}}
2239
2240\obindex{module}
2241There are only a few functions special to module objects.
2242
2243\begin{cvardesc}{PyTypeObject}{PyModule_Type}
2244 This instance of \ctype{PyTypeObject} represents the Python module
2245 type. This is exposed to Python programs as
2246 \code{types.ModuleType}.
2247 \withsubitem{(in module types)}{\ttindex{ModuleType}}
2248\end{cvardesc}
2249
2250\begin{cfuncdesc}{int}{PyModule_Check}{PyObject *p}
2251 Returns true if \var{p} is a module object, or a subtype of a module
2252 object.
2253 \versionchanged[Allowed subtypes to be accepted]{2.2}
2254\end{cfuncdesc}
2255
2256\begin{cfuncdesc}{int}{PyModule_CheckExact}{PyObject *p}
2257 Returns true if \var{p} is a module object, but not a subtype of
2258 \cdata{PyModule_Type}.
2259 \versionadded{2.2}
2260\end{cfuncdesc}
2261
2262\begin{cfuncdesc}{PyObject*}{PyModule_New}{char *name}
2263 Return a new module object with the \member{__name__} attribute set
2264 to \var{name}. Only the module's \member{__doc__} and
2265 \member{__name__} attributes are filled in; the caller is
2266 responsible for providing a \member{__file__} attribute.
2267 \withsubitem{(module attribute)}{
2268 \ttindex{__name__}\ttindex{__doc__}\ttindex{__file__}}
2269\end{cfuncdesc}
2270
2271\begin{cfuncdesc}{PyObject*}{PyModule_GetDict}{PyObject *module}
2272 Return the dictionary object that implements \var{module}'s
2273 namespace; this object is the same as the \member{__dict__}
2274 attribute of the module object. This function never fails.
2275 \withsubitem{(module attribute)}{\ttindex{__dict__}}
Fred Drakef495ef72002-04-12 19:32:07 +00002276 It is recommended extensions use other \cfunction{PyModule_*()}
2277 and \cfunction{PyObject_*()} functions rather than directly
2278 manipulate a module's \member{__dict__}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002279\end{cfuncdesc}
2280
2281\begin{cfuncdesc}{char*}{PyModule_GetName}{PyObject *module}
2282 Return \var{module}'s \member{__name__} value. If the module does
2283 not provide one, or if it is not a string, \exception{SystemError}
2284 is raised and \NULL{} is returned.
2285 \withsubitem{(module attribute)}{\ttindex{__name__}}
2286 \withsubitem{(built-in exception)}{\ttindex{SystemError}}
2287\end{cfuncdesc}
2288
2289\begin{cfuncdesc}{char*}{PyModule_GetFilename}{PyObject *module}
2290 Return the name of the file from which \var{module} was loaded using
2291 \var{module}'s \member{__file__} attribute. If this is not defined,
2292 or if it is not a string, raise \exception{SystemError} and return
Tim Peters9ddf40b2004-06-20 22:41:32 +00002293 \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002294 \withsubitem{(module attribute)}{\ttindex{__file__}}
2295 \withsubitem{(built-in exception)}{\ttindex{SystemError}}
2296\end{cfuncdesc}
2297
2298\begin{cfuncdesc}{int}{PyModule_AddObject}{PyObject *module,
2299 char *name, PyObject *value}
2300 Add an object to \var{module} as \var{name}. This is a convenience
2301 function which can be used from the module's initialization
2302 function. This steals a reference to \var{value}. Returns
2303 \code{-1} on error, \code{0} on success.
2304 \versionadded{2.0}
2305\end{cfuncdesc}
2306
2307\begin{cfuncdesc}{int}{PyModule_AddIntConstant}{PyObject *module,
Martin v. Löwisdd07e592004-06-02 12:45:27 +00002308 char *name, long value}
Fred Drake3adf79e2001-10-12 19:01:43 +00002309 Add an integer constant to \var{module} as \var{name}. This
2310 convenience function can be used from the module's initialization
2311 function. Returns \code{-1} on error, \code{0} on success.
2312 \versionadded{2.0}
2313\end{cfuncdesc}
2314
2315\begin{cfuncdesc}{int}{PyModule_AddStringConstant}{PyObject *module,
2316 char *name, char *value}
2317 Add a string constant to \var{module} as \var{name}. This
2318 convenience function can be used from the module's initialization
2319 function. The string \var{value} must be null-terminated. Returns
2320 \code{-1} on error, \code{0} on success.
2321 \versionadded{2.0}
2322\end{cfuncdesc}
2323
2324
2325\subsection{Iterator Objects \label{iterator-objects}}
2326
2327Python provides two general-purpose iterator objects. The first, a
2328sequence iterator, works with an arbitrary sequence supporting the
2329\method{__getitem__()} method. The second works with a callable
2330object and a sentinel value, calling the callable for each item in the
2331sequence, and ending the iteration when the sentinel value is
2332returned.
2333
2334\begin{cvardesc}{PyTypeObject}{PySeqIter_Type}
2335 Type object for iterator objects returned by
2336 \cfunction{PySeqIter_New()} and the one-argument form of the
2337 \function{iter()} built-in function for built-in sequence types.
2338 \versionadded{2.2}
2339\end{cvardesc}
2340
2341\begin{cfuncdesc}{int}{PySeqIter_Check}{op}
2342 Return true if the type of \var{op} is \cdata{PySeqIter_Type}.
2343 \versionadded{2.2}
2344\end{cfuncdesc}
2345
2346\begin{cfuncdesc}{PyObject*}{PySeqIter_New}{PyObject *seq}
2347 Return an iterator that works with a general sequence object,
2348 \var{seq}. The iteration ends when the sequence raises
2349 \exception{IndexError} for the subscripting operation.
2350 \versionadded{2.2}
2351\end{cfuncdesc}
2352
2353\begin{cvardesc}{PyTypeObject}{PyCallIter_Type}
2354 Type object for iterator objects returned by
2355 \cfunction{PyCallIter_New()} and the two-argument form of the
2356 \function{iter()} built-in function.
2357 \versionadded{2.2}
2358\end{cvardesc}
2359
2360\begin{cfuncdesc}{int}{PyCallIter_Check}{op}
2361 Return true if the type of \var{op} is \cdata{PyCallIter_Type}.
2362 \versionadded{2.2}
2363\end{cfuncdesc}
2364
2365\begin{cfuncdesc}{PyObject*}{PyCallIter_New}{PyObject *callable,
2366 PyObject *sentinel}
2367 Return a new iterator. The first parameter, \var{callable}, can be
2368 any Python callable object that can be called with no parameters;
2369 each call to it should return the next item in the iteration. When
2370 \var{callable} returns a value equal to \var{sentinel}, the
2371 iteration will be terminated.
2372 \versionadded{2.2}
2373\end{cfuncdesc}
2374
2375
2376\subsection{Descriptor Objects \label{descriptor-objects}}
2377
Fred Drake54e62942001-12-11 19:40:16 +00002378``Descriptors'' are objects that describe some attribute of an object.
2379They are found in the dictionary of type objects.
2380
Fred Drake3adf79e2001-10-12 19:01:43 +00002381\begin{cvardesc}{PyTypeObject}{PyProperty_Type}
Fred Drake54e62942001-12-11 19:40:16 +00002382 The type object for the built-in descriptor types.
Fred Drake3adf79e2001-10-12 19:01:43 +00002383 \versionadded{2.2}
2384\end{cvardesc}
2385
2386\begin{cfuncdesc}{PyObject*}{PyDescr_NewGetSet}{PyTypeObject *type,
2387 PyGetSetDef *getset}
2388 \versionadded{2.2}
2389\end{cfuncdesc}
2390
2391\begin{cfuncdesc}{PyObject*}{PyDescr_NewMember}{PyTypeObject *type,
2392 PyMemberDef *meth}
2393 \versionadded{2.2}
2394\end{cfuncdesc}
2395
2396\begin{cfuncdesc}{PyObject*}{PyDescr_NewMethod}{PyTypeObject *type,
2397 PyMethodDef *meth}
2398 \versionadded{2.2}
2399\end{cfuncdesc}
2400
2401\begin{cfuncdesc}{PyObject*}{PyDescr_NewWrapper}{PyTypeObject *type,
2402 struct wrapperbase *wrapper,
2403 void *wrapped}
2404 \versionadded{2.2}
2405\end{cfuncdesc}
2406
Thomas Heller8178a222004-02-09 10:47:11 +00002407\begin{cfuncdesc}{PyObject*}{PyDescr_NewClassMethod}{PyTypeObject *type,
2408 PyMethodDef *method}
2409 \versionadded{2.3}
2410\end{cfuncdesc}
2411
Fred Drake3adf79e2001-10-12 19:01:43 +00002412\begin{cfuncdesc}{int}{PyDescr_IsData}{PyObject *descr}
2413 Returns true if the descriptor objects \var{descr} describes a data
2414 attribute, or false if it describes a method. \var{descr} must be a
2415 descriptor object; there is no error checking.
2416 \versionadded{2.2}
2417\end{cfuncdesc}
2418
2419\begin{cfuncdesc}{PyObject*}{PyWrapper_New}{PyObject *, PyObject *}
2420 \versionadded{2.2}
2421\end{cfuncdesc}
2422
2423
2424\subsection{Slice Objects \label{slice-objects}}
2425
2426\begin{cvardesc}{PyTypeObject}{PySlice_Type}
2427 The type object for slice objects. This is the same as
2428 \code{types.SliceType}.
2429 \withsubitem{(in module types)}{\ttindex{SliceType}}
2430\end{cvardesc}
2431
2432\begin{cfuncdesc}{int}{PySlice_Check}{PyObject *ob}
2433 Returns true if \var{ob} is a slice object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002434 \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002435\end{cfuncdesc}
2436
2437\begin{cfuncdesc}{PyObject*}{PySlice_New}{PyObject *start, PyObject *stop,
2438 PyObject *step}
2439 Return a new slice object with the given values. The \var{start},
2440 \var{stop}, and \var{step} parameters are used as the values of the
2441 slice object attributes of the same names. Any of the values may be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002442 \NULL{}, in which case the \code{None} will be used for the
Fred Drake3adf79e2001-10-12 19:01:43 +00002443 corresponding attribute. Returns \NULL{} if the new object could
2444 not be allocated.
2445\end{cfuncdesc}
2446
2447\begin{cfuncdesc}{int}{PySlice_GetIndices}{PySliceObject *slice, int length,
2448 int *start, int *stop, int *step}
Michael W. Hudson5efaf7e2002-06-11 10:55:12 +00002449Retrieve the start, stop and step indices from the slice object
2450\var{slice}, assuming a sequence of length \var{length}. Treats
2451indices greater than \var{length} as errors.
2452
2453Returns 0 on success and -1 on error with no exception set (unless one
2454of the indices was not \constant{None} and failed to be converted to
2455an integer, in which case -1 is returned with an exception set).
2456
2457You probably do not want to use this function. If you want to use
2458slice objects in versions of Python prior to 2.3, you would probably
2459do well to incorporate the source of \cfunction{PySlice_GetIndicesEx},
2460suitably renamed, in the source of your extension.
2461\end{cfuncdesc}
2462
2463\begin{cfuncdesc}{int}{PySlice_GetIndicesEx}{PySliceObject *slice, int length,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002464 int *start, int *stop, int *step,
Michael W. Hudson5efaf7e2002-06-11 10:55:12 +00002465 int *slicelength}
2466Usable replacement for \cfunction{PySlice_GetIndices}. Retrieve the
2467start, stop, and step indices from the slice object \var{slice}
2468assuming a sequence of length \var{length}, and store the length of
2469the slice in \var{slicelength}. Out of bounds indices are clipped in
2470a manner consistent with the handling of normal slices.
2471
2472Returns 0 on success and -1 on error with exception set.
2473
2474\versionadded{2.3}
Fred Drake3adf79e2001-10-12 19:01:43 +00002475\end{cfuncdesc}
2476
2477
2478\subsection{Weak Reference Objects \label{weakref-objects}}
2479
2480Python supports \emph{weak references} as first-class objects. There
2481are two specific object types which directly implement weak
2482references. The first is a simple reference object, and the second
2483acts as a proxy for the original object as much as it can.
2484
2485\begin{cfuncdesc}{int}{PyWeakref_Check}{ob}
2486 Return true if \var{ob} is either a reference or proxy object.
2487 \versionadded{2.2}
2488\end{cfuncdesc}
2489
2490\begin{cfuncdesc}{int}{PyWeakref_CheckRef}{ob}
2491 Return true if \var{ob} is a reference object.
2492 \versionadded{2.2}
2493\end{cfuncdesc}
2494
2495\begin{cfuncdesc}{int}{PyWeakref_CheckProxy}{ob}
2496 Return true if \var{ob} is a proxy object.
2497 \versionadded{2.2}
2498\end{cfuncdesc}
2499
2500\begin{cfuncdesc}{PyObject*}{PyWeakref_NewRef}{PyObject *ob,
2501 PyObject *callback}
2502 Return a weak reference object for the object \var{ob}. This will
2503 always return a new reference, but is not guaranteed to create a new
2504 object; an existing reference object may be returned. The second
2505 parameter, \var{callback}, can be a callable object that receives
2506 notification when \var{ob} is garbage collected; it should accept a
Raymond Hettinger5232f502004-03-25 08:51:36 +00002507 single parameter, which will be the weak reference object itself.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002508 \var{callback} may also be \code{None} or \NULL{}. If \var{ob}
Fred Drake3adf79e2001-10-12 19:01:43 +00002509 is not a weakly-referencable object, or if \var{callback} is not
Tim Peters9ddf40b2004-06-20 22:41:32 +00002510 callable, \code{None}, or \NULL{}, this will return \NULL{} and
Fred Drake3adf79e2001-10-12 19:01:43 +00002511 raise \exception{TypeError}.
2512 \versionadded{2.2}
2513\end{cfuncdesc}
2514
2515\begin{cfuncdesc}{PyObject*}{PyWeakref_NewProxy}{PyObject *ob,
2516 PyObject *callback}
2517 Return a weak reference proxy object for the object \var{ob}. This
2518 will always return a new reference, but is not guaranteed to create
2519 a new object; an existing proxy object may be returned. The second
2520 parameter, \var{callback}, can be a callable object that receives
2521 notification when \var{ob} is garbage collected; it should accept a
Raymond Hettinger5232f502004-03-25 08:51:36 +00002522 single parameter, which will be the weak reference object itself.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002523 \var{callback} may also be \code{None} or \NULL{}. If \var{ob} is not
Fred Drake3adf79e2001-10-12 19:01:43 +00002524 a weakly-referencable object, or if \var{callback} is not callable,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002525 \code{None}, or \NULL{}, this will return \NULL{} and raise
Fred Drake3adf79e2001-10-12 19:01:43 +00002526 \exception{TypeError}.
2527 \versionadded{2.2}
2528\end{cfuncdesc}
2529
2530\begin{cfuncdesc}{PyObject*}{PyWeakref_GetObject}{PyObject *ref}
2531 Returns the referenced object from a weak reference, \var{ref}. If
Ka-Ping Yeebd379e92003-03-28 18:07:16 +00002532 the referent is no longer live, returns \code{None}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002533 \versionadded{2.2}
2534\end{cfuncdesc}
2535
2536\begin{cfuncdesc}{PyObject*}{PyWeakref_GET_OBJECT}{PyObject *ref}
2537 Similar to \cfunction{PyWeakref_GetObject()}, but implemented as a
2538 macro that does no error checking.
2539 \versionadded{2.2}
2540\end{cfuncdesc}
2541
2542
2543\subsection{CObjects \label{cObjects}}
2544
2545\obindex{CObject}
2546Refer to \emph{Extending and Embedding the Python Interpreter},
Fred Drake54e62942001-12-11 19:40:16 +00002547section~1.12, ``Providing a C API for an Extension Module,'' for more
Fred Drake3adf79e2001-10-12 19:01:43 +00002548information on using these objects.
2549
2550
2551\begin{ctypedesc}{PyCObject}
2552 This subtype of \ctype{PyObject} represents an opaque value, useful
2553 for C extension modules who need to pass an opaque value (as a
2554 \ctype{void*} pointer) through Python code to other C code. It is
2555 often used to make a C function pointer defined in one module
2556 available to other modules, so the regular import mechanism can be
2557 used to access C APIs defined in dynamically loaded modules.
2558\end{ctypedesc}
2559
2560\begin{cfuncdesc}{int}{PyCObject_Check}{PyObject *p}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002561 Return true if its argument is a \ctype{PyCObject}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002562\end{cfuncdesc}
2563
Tim Petersf582b822001-12-11 18:51:08 +00002564\begin{cfuncdesc}{PyObject*}{PyCObject_FromVoidPtr}{void* cobj,
Fred Drake54e62942001-12-11 19:40:16 +00002565 void (*destr)(void *)}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002566 Create a \ctype{PyCObject} from the \code{void *}\var{cobj}. The
Fred Drake3adf79e2001-10-12 19:01:43 +00002567 \var{destr} function will be called when the object is reclaimed,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002568 unless it is \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002569\end{cfuncdesc}
2570
2571\begin{cfuncdesc}{PyObject*}{PyCObject_FromVoidPtrAndDesc}{void* cobj,
2572 void* desc, void (*destr)(void *, void *)}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002573 Create a \ctype{PyCObject} from the \ctype{void *}\var{cobj}. The
Fred Drake3adf79e2001-10-12 19:01:43 +00002574 \var{destr} function will be called when the object is reclaimed.
2575 The \var{desc} argument can be used to pass extra callback data for
2576 the destructor function.
2577\end{cfuncdesc}
2578
2579\begin{cfuncdesc}{void*}{PyCObject_AsVoidPtr}{PyObject* self}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002580 Return the object \ctype{void *} that the \ctype{PyCObject}
Fred Drake3adf79e2001-10-12 19:01:43 +00002581 \var{self} was created with.
2582\end{cfuncdesc}
2583
2584\begin{cfuncdesc}{void*}{PyCObject_GetDesc}{PyObject* self}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002585 Return the description \ctype{void *} that the \ctype{PyCObject}
Fred Drake3adf79e2001-10-12 19:01:43 +00002586 \var{self} was created with.
2587\end{cfuncdesc}
Fred Drakecd8474e2001-11-26 21:29:17 +00002588
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002589\begin{cfuncdesc}{int}{PyCObject_SetVoidPtr}{PyObject* self, void* cobj}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002590 Set the void pointer inside \var{self} to \var{cobj}.
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002591 The \ctype{PyCObject} must not have an associated destructor.
2592 Return true on success, false on failure.
2593\end{cfuncdesc}
2594
Fred Drakecd8474e2001-11-26 21:29:17 +00002595
2596\subsection{Cell Objects \label{cell-objects}}
2597
2598``Cell'' objects are used to implement variables referenced by
2599multiple scopes. For each such variable, a cell object is created to
2600store the value; the local variables of each stack frame that
2601references the value contains a reference to the cells from outer
2602scopes which also use that variable. When the value is accessed, the
2603value contained in the cell is used instead of the cell object
2604itself. This de-referencing of the cell object requires support from
2605the generated byte-code; these are not automatically de-referenced
2606when accessed. Cell objects are not likely to be useful elsewhere.
2607
Fred Drake54e62942001-12-11 19:40:16 +00002608\begin{ctypedesc}{PyCellObject}
2609 The C structure used for cell objects.
2610\end{ctypedesc}
2611
Fred Drakecd8474e2001-11-26 21:29:17 +00002612\begin{cvardesc}{PyTypeObject}{PyCell_Type}
2613 The type object corresponding to cell objects
2614\end{cvardesc}
2615
2616\begin{cfuncdesc}{int}{PyCell_Check}{ob}
2617 Return true if \var{ob} is a cell object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002618 \NULL{}.
Fred Drakecd8474e2001-11-26 21:29:17 +00002619\end{cfuncdesc}
2620
2621\begin{cfuncdesc}{PyObject*}{PyCell_New}{PyObject *ob}
2622 Create and return a new cell object containing the value \var{ob}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002623 The parameter may be \NULL{}.
Fred Drakecd8474e2001-11-26 21:29:17 +00002624\end{cfuncdesc}
2625
2626\begin{cfuncdesc}{PyObject*}{PyCell_Get}{PyObject *cell}
2627 Return the contents of the cell \var{cell}.
2628\end{cfuncdesc}
2629
2630\begin{cfuncdesc}{PyObject*}{PyCell_GET}{PyObject *cell}
2631 Return the contents of the cell \var{cell}, but without checking
Raymond Hettingerf4bb1f92003-08-23 03:38:11 +00002632 that \var{cell} is non-\NULL{} and a cell object.
Fred Drakecd8474e2001-11-26 21:29:17 +00002633\end{cfuncdesc}
2634
2635\begin{cfuncdesc}{int}{PyCell_Set}{PyObject *cell, PyObject *value}
2636 Set the contents of the cell object \var{cell} to \var{value}. This
2637 releases the reference to any current content of the cell.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002638 \var{value} may be \NULL{}. \var{cell} must be non-\NULL{}; if it is
Fred Drakecd8474e2001-11-26 21:29:17 +00002639 not a cell object, \code{-1} will be returned. On success, \code{0}
2640 will be returned.
2641\end{cfuncdesc}
2642
2643\begin{cfuncdesc}{void}{PyCell_SET}{PyObject *cell, PyObject *value}
2644 Sets the value of the cell object \var{cell} to \var{value}. No
2645 reference counts are adjusted, and no checks are made for safety;
2646 \var{cell} must be non-\NULL{} and must be a cell object.
2647\end{cfuncdesc}
Martin v. Löwise440e472004-06-01 15:22:42 +00002648
2649
2650\subsection{Generator Objects \label{gen-objects}}
2651
2652Generator objects are what Python uses to implement generator iterators.
2653They are normally created by iterating over a function that yields values,
2654rather than explicitly calling \cfunction{PyGen_New}.
2655
2656\begin{ctypedesc}{PyGenObject}
2657 The C structure used for generator objects.
2658\end{ctypedesc}
2659
2660\begin{cvardesc}{PyTypeObject}{PyGen_Type}
2661 The type object corresponding to generator objects
2662\end{cvardesc}
2663
2664\begin{cfuncdesc}{int}{PyGen_Check}{ob}
2665 Return true if \var{ob} is a generator object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002666 \NULL{}.
Martin v. Löwise440e472004-06-01 15:22:42 +00002667\end{cfuncdesc}
2668
2669\begin{cfuncdesc}{int}{PyGen_CheckExact}{ob}
2670 Return true if \var{ob}'s type is \var{PyGen_Type}
2671 is a generator object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002672 \NULL{}.
Martin v. Löwise440e472004-06-01 15:22:42 +00002673\end{cfuncdesc}
2674
2675\begin{cfuncdesc}{PyObject*}{PyGen_New}{PyFrameObject *frame}
2676 Create and return a new generator object based on the \var{frame} object.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002677 The parameter must not be \NULL{}.
2678\end{cfuncdesc}
2679
2680
2681\subsection{DateTime Objects \label{datetime-objects}}
2682
2683Various date and time objects are supplied by the \module{datetime}
2684module. Before using any of these functions, the header file
2685\file{datetime.h} must be included in your source (note that this is
2686not include by \file{Python.h}), and macro \cfunction{PyDateTime_IMPORT()}
2687must be invoked. The macro arranges to put a pointer to a C structure
2688in a static variable \code{PyDateTimeAPI}, which is used by the following
Tim Peters183dabc2004-07-11 19:26:19 +00002689macros.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002690
Tim Peters183dabc2004-07-11 19:26:19 +00002691Type-check macros:
2692
2693\begin{cfuncdesc}{int}{PyDate_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002694 Return true if \var{ob} is of type \cdata{PyDateTime_DateType} or
2695 a subtype of \cdata{PyDateTime_DateType}. \var{ob} must not be
2696 \NULL{}.
2697 \versionadded{2.4}
2698\end{cfuncdesc}
2699
Tim Peters183dabc2004-07-11 19:26:19 +00002700\begin{cfuncdesc}{int}{PyDate_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002701 Return true if \var{ob} is of type \cdata{PyDateTime_DateType}.
2702 \var{ob} must not be \NULL{}.
2703 \versionadded{2.4}
2704\end{cfuncdesc}
2705
Tim Peters183dabc2004-07-11 19:26:19 +00002706\begin{cfuncdesc}{int}{PyDateTime_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002707 Return true if \var{ob} is of type \cdata{PyDateTime_DateTimeType} or
2708 a subtype of \cdata{PyDateTime_DateTimeType}. \var{ob} must not be
2709 \NULL{}.
2710 \versionadded{2.4}
2711\end{cfuncdesc}
2712
Tim Peters183dabc2004-07-11 19:26:19 +00002713\begin{cfuncdesc}{int}{PyDateTime_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002714 Return true if \var{ob} is of type \cdata{PyDateTime_DateTimeType}.
2715 \var{ob} must not be \NULL{}.
2716 \versionadded{2.4}
2717\end{cfuncdesc}
2718
Tim Peters183dabc2004-07-11 19:26:19 +00002719\begin{cfuncdesc}{int}{PyTime_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002720 Return true if \var{ob} is of type \cdata{PyDateTime_TimeType} or
2721 a subtype of \cdata{PyDateTime_TimeType}. \var{ob} must not be
2722 \NULL{}.
2723 \versionadded{2.4}
2724\end{cfuncdesc}
2725
Tim Peters183dabc2004-07-11 19:26:19 +00002726\begin{cfuncdesc}{int}{PyTime_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002727 Return true if \var{ob} is of type \cdata{PyDateTime_TimeType}.
2728 \var{ob} must not be \NULL{}.
2729 \versionadded{2.4}
2730\end{cfuncdesc}
2731
Tim Peters183dabc2004-07-11 19:26:19 +00002732\begin{cfuncdesc}{int}{PyDelta_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002733 Return true if \var{ob} is of type \cdata{PyDateTime_DeltaType} or
2734 a subtype of \cdata{PyDateTime_DeltaType}. \var{ob} must not be
2735 \NULL{}.
2736 \versionadded{2.4}
2737\end{cfuncdesc}
2738
Tim Peters183dabc2004-07-11 19:26:19 +00002739\begin{cfuncdesc}{int}{PyDelta_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002740 Return true if \var{ob} is of type \cdata{PyDateTime_DeltaType}.
2741 \var{ob} must not be \NULL{}.
2742 \versionadded{2.4}
2743\end{cfuncdesc}
2744
Tim Peters183dabc2004-07-11 19:26:19 +00002745\begin{cfuncdesc}{int}{PyTZInfo_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002746 Return true if \var{ob} is of type \cdata{PyDateTime_TZInfoType} or
2747 a subtype of \cdata{PyDateTime_TZInfoType}. \var{ob} must not be
2748 \NULL{}.
2749 \versionadded{2.4}
2750\end{cfuncdesc}
2751
Tim Peters183dabc2004-07-11 19:26:19 +00002752\begin{cfuncdesc}{int}{PyTZInfo_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002753 Return true if \var{ob} is of type \cdata{PyDateTime_TZInfoType}.
2754 \var{ob} must not be \NULL{}.
2755 \versionadded{2.4}
2756\end{cfuncdesc}
2757
Tim Peters183dabc2004-07-11 19:26:19 +00002758Macros to create objects:
2759
Tim Peters9ddf40b2004-06-20 22:41:32 +00002760\begin{cfuncdesc}{PyObject*}{PyDate_FromDate}{int year, int month, int day}
2761 Return a \code{datetime.date} object with the specified year, month
2762 and day.
2763 \versionadded{2.4}
2764\end{cfuncdesc}
2765
2766\begin{cfuncdesc}{PyObject*}{PyDate_FromDateAndTime}{int year, int month,
2767 int day, int hour, int minute, int second, int usecond}
2768 Return a \code{datetime.datetime} object with the specified year, month,
2769 day, hour, minute, second and microsecond.
2770 \versionadded{2.4}
2771\end{cfuncdesc}
2772
2773\begin{cfuncdesc}{PyObject*}{PyTime_FromTime}{int hour, int minute,
2774 int second, int usecond}
2775 Return a \code{datetime.time} object with the specified hour, minute,
2776 second and microsecond.
2777 \versionadded{2.4}
2778\end{cfuncdesc}
2779
2780\begin{cfuncdesc}{PyObject*}{PyDelta_FromDSU}{int days, int seconds,
2781 int useconds}
2782 Return a \code{datetime.timedelta} object representing the given number
2783 of days, seconds and microseconds. Normalization is performed so that
2784 the resulting number of microseconds and seconds lie in the ranges
2785 documented for \code{datetime.timedelta} objects.
2786 \versionadded{2.4}
2787\end{cfuncdesc}
2788
Tim Peters8ff9f9f2004-07-17 01:42:26 +00002789Macros to extract fields from date objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00002790instance of \cdata{PyDateTime_Date}, including subclasses (such as
2791\cdata{PyDateTime_DateTime}). The argument must not be \NULL{}, and
2792the type is not checked:
2793
2794\begin{cfuncdesc}{int}{PyDateTime_GET_YEAR}{PyDateTime_Date *o}
2795 Return the year, as a positive int.
2796 \versionadded{2.4}
2797\end{cfuncdesc}
2798
2799\begin{cfuncdesc}{int}{PyDateTime_GET_MONTH}{PyDateTime_Date *o}
2800 Return the month, as an int from 1 through 12.
2801 \versionadded{2.4}
2802\end{cfuncdesc}
2803
2804\begin{cfuncdesc}{int}{PyDateTime_GET_DAY}{PyDateTime_Date *o}
2805 Return the day, as an int from 1 through 31.
2806 \versionadded{2.4}
2807\end{cfuncdesc}
2808
Tim Peters8ff9f9f2004-07-17 01:42:26 +00002809Macros to extract fields from datetime objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00002810instance of \cdata{PyDateTime_DateTime}, including subclasses.
2811The argument must not be \NULL{}, and the type is not checked:
2812
2813\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_HOUR}{PyDateTime_DateTime *o}
Neal Norwitz7fdd92f2004-08-02 21:56:33 +00002814 Return the hour, as an int from 0 through 23.
Tim Peters183dabc2004-07-11 19:26:19 +00002815 \versionadded{2.4}
2816\end{cfuncdesc}
2817
2818\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_MINUTE}{PyDateTime_DateTime *o}
2819 Return the minute, as an int from 0 through 59.
2820 \versionadded{2.4}
2821\end{cfuncdesc}
2822
2823\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_SECOND}{PyDateTime_DateTime *o}
2824 Return the second, as an int from 0 through 59.
2825 \versionadded{2.4}
2826\end{cfuncdesc}
2827
2828\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_MICROSECOND}{PyDateTime_DateTime *o}
2829 Return the microsecond, as an int from 0 through 999999.
2830 \versionadded{2.4}
2831\end{cfuncdesc}
2832
Tim Peters8ff9f9f2004-07-17 01:42:26 +00002833Macros to extract fields from time objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00002834instance of \cdata{PyDateTime_Time}, including subclasses.
2835The argument must not be \NULL{}, and the type is not checked:
2836
2837\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_HOUR}{PyDateTime_Time *o}
Neal Norwitz7fdd92f2004-08-02 21:56:33 +00002838 Return the hour, as an int from 0 through 23.
Tim Peters183dabc2004-07-11 19:26:19 +00002839 \versionadded{2.4}
2840\end{cfuncdesc}
2841
2842\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_MINUTE}{PyDateTime_Time *o}
2843 Return the minute, as an int from 0 through 59.
2844 \versionadded{2.4}
2845\end{cfuncdesc}
2846
2847\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_SECOND}{PyDateTime_Time *o}
2848 Return the second, as an int from 0 through 59.
2849 \versionadded{2.4}
2850\end{cfuncdesc}
2851
2852\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_MICROSECOND}{PyDateTime_Time *o}
2853 Return the microsecond, as an int from 0 through 999999.
2854 \versionadded{2.4}
2855\end{cfuncdesc}
2856
2857Macros for the convenience of modules implementing the DB API:
2858
Tim Peters9ddf40b2004-06-20 22:41:32 +00002859\begin{cfuncdesc}{PyObject*}{PyDateTime_FromTimestamp}{PyObject *args}
2860 Create and return a new \code{datetime.datetime} object given an argument
2861 tuple suitable for passing to \code{datetime.datetime.fromtimestamp()}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002862 \versionadded{2.4}
2863\end{cfuncdesc}
2864
2865\begin{cfuncdesc}{PyObject*}{PyDate_FromTimestamp}{PyObject *args}
2866 Create and return a new \code{datetime.date} object given an argument
2867 tuple suitable for passing to \code{datetime.date.fromtimestamp()}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002868 \versionadded{2.4}
Martin v. Löwise440e472004-06-01 15:22:42 +00002869\end{cfuncdesc}