blob: af026ff64dc60792b7cd06ced7ca44a32f01468a [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
Walter Dörwald69652032004-09-07 20:24:22 +00001079\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF8Stateful}{const char *s,
1080 int size,
1081 const char *errors,
1082 int *consumed}
1083 If \var{consumed} is \NULL{}, behaves like \cfunction{PyUnicode_DecodeUTF8()}.
1084 If \var{consumed} is not \NULL{}, trailing incomplete UTF-8 byte sequences
1085 will not be treated as an error. Those bytes will not be decoded and the
1086 number of bytes that have been decoded will be stored in \var{consumed}.
1087 \versionadded{2.4}
1088\end{cfuncdesc}
1089
Fred Drake3adf79e2001-10-12 19:01:43 +00001090\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeUTF8}{const Py_UNICODE *s,
1091 int size,
1092 const char *errors}
1093 Encodes the \ctype{Py_UNICODE} buffer of the given size using UTF-8
1094 and returns a Python string object. Returns \NULL{} if an exception
1095 was raised by the codec.
1096\end{cfuncdesc}
1097
1098\begin{cfuncdesc}{PyObject*}{PyUnicode_AsUTF8String}{PyObject *unicode}
1099 Encodes a Unicode objects using UTF-8 and returns the result as
1100 Python string object. Error handling is ``strict''. Returns
1101 \NULL{} if an exception was raised by the codec.
1102\end{cfuncdesc}
1103
1104% --- UTF-16 Codecs ------------------------------------------------------ */
1105
1106These are the UTF-16 codec APIs:
1107
1108\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF16}{const char *s,
1109 int size,
1110 const char *errors,
1111 int *byteorder}
1112 Decodes \var{length} bytes from a UTF-16 encoded buffer string and
1113 returns the corresponding Unicode object. \var{errors} (if
Tim Peters9ddf40b2004-06-20 22:41:32 +00001114 non-\NULL{}) defines the error handling. It defaults to ``strict''.
Fred Drake3adf79e2001-10-12 19:01:43 +00001115
Tim Peters9ddf40b2004-06-20 22:41:32 +00001116 If \var{byteorder} is non-\NULL{}, the decoder starts decoding using
Fred Drake3adf79e2001-10-12 19:01:43 +00001117 the given byte order:
1118
1119\begin{verbatim}
1120 *byteorder == -1: little endian
1121 *byteorder == 0: native order
1122 *byteorder == 1: big endian
1123\end{verbatim}
1124
1125 and then switches according to all byte order marks (BOM) it finds
1126 in the input data. BOMs are not copied into the resulting Unicode
1127 string. After completion, \var{*byteorder} is set to the current
1128 byte order at the end of input data.
1129
Tim Peters9ddf40b2004-06-20 22:41:32 +00001130 If \var{byteorder} is \NULL{}, the codec starts in native order mode.
Fred Drake3adf79e2001-10-12 19:01:43 +00001131
1132 Returns \NULL{} if an exception was raised by the codec.
1133\end{cfuncdesc}
1134
Walter Dörwald69652032004-09-07 20:24:22 +00001135\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUTF16Stateful}{const char *s,
1136 int size,
1137 const char *errors,
1138 int *byteorder,
1139 int *consumed}
1140 If \var{consumed} is \NULL{}, behaves like
1141 \cfunction{PyUnicode_DecodeUTF16()}. If \var{consumed} is not \NULL{},
1142 \cfunction{PyUnicode_DecodeUTF16Stateful()} will not treat trailing incomplete
1143 UTF-16 byte sequences (i.e. an odd number of bytes or a split surrogate pair)
1144 as an error. Those bytes will not be decoded and the number of bytes that
1145 have been decoded will be stored in \var{consumed}.
1146 \versionadded{2.4}
1147\end{cfuncdesc}
1148
Fred Drake3adf79e2001-10-12 19:01:43 +00001149\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeUTF16}{const Py_UNICODE *s,
1150 int size,
1151 const char *errors,
1152 int byteorder}
1153 Returns a Python string object holding the UTF-16 encoded value of
1154 the Unicode data in \var{s}. If \var{byteorder} is not \code{0},
1155 output is written according to the following byte order:
1156
1157\begin{verbatim}
1158 byteorder == -1: little endian
1159 byteorder == 0: native byte order (writes a BOM mark)
1160 byteorder == 1: big endian
1161\end{verbatim}
1162
1163 If byteorder is \code{0}, the output string will always start with
1164 the Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark
1165 is prepended.
1166
Martin v. Löwis9bc4f2d2004-06-03 09:55:28 +00001167 If \var{Py_UNICODE_WIDE} is defined, a single \ctype{Py_UNICODE}
1168 value may get represented as a surrogate pair. If it is not
1169 defined, each \ctype{Py_UNICODE} values is interpreted as an
1170 UCS-2 character.
Fred Drake3adf79e2001-10-12 19:01:43 +00001171
1172 Returns \NULL{} if an exception was raised by the codec.
1173\end{cfuncdesc}
1174
1175\begin{cfuncdesc}{PyObject*}{PyUnicode_AsUTF16String}{PyObject *unicode}
1176 Returns a Python string using the UTF-16 encoding in native byte
1177 order. The string always starts with a BOM mark. Error handling is
1178 ``strict''. Returns \NULL{} if an exception was raised by the
1179 codec.
1180\end{cfuncdesc}
1181
1182% --- Unicode-Escape Codecs ----------------------------------------------
1183
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001184These are the ``Unicode Escape'' codec APIs:
Fred Drake3adf79e2001-10-12 19:01:43 +00001185
1186\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeUnicodeEscape}{const char *s,
1187 int size,
1188 const char *errors}
1189 Creates a Unicode object by decoding \var{size} bytes of the
1190 Unicode-Escape encoded string \var{s}. Returns \NULL{} if an
1191 exception was raised by the codec.
1192\end{cfuncdesc}
1193
1194\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeUnicodeEscape}{const Py_UNICODE *s,
1195 int size,
1196 const char *errors}
1197 Encodes the \ctype{Py_UNICODE} buffer of the given size using
1198 Unicode-Escape and returns a Python string object. Returns \NULL{}
1199 if an exception was raised by the codec.
1200\end{cfuncdesc}
1201
1202\begin{cfuncdesc}{PyObject*}{PyUnicode_AsUnicodeEscapeString}{PyObject *unicode}
1203 Encodes a Unicode objects using Unicode-Escape and returns the
1204 result as Python string object. Error handling is ``strict''.
1205 Returns \NULL{} if an exception was raised by the codec.
1206\end{cfuncdesc}
1207
1208% --- Raw-Unicode-Escape Codecs ------------------------------------------
1209
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001210These are the ``Raw Unicode Escape'' codec APIs:
Fred Drake3adf79e2001-10-12 19:01:43 +00001211
1212\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeRawUnicodeEscape}{const char *s,
1213 int size,
1214 const char *errors}
1215 Creates a Unicode object by decoding \var{size} bytes of the
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001216 Raw-Unicode-Escape encoded string \var{s}. Returns \NULL{} if an
Fred Drake3adf79e2001-10-12 19:01:43 +00001217 exception was raised by the codec.
1218\end{cfuncdesc}
1219
1220\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeRawUnicodeEscape}{const Py_UNICODE *s,
1221 int size,
1222 const char *errors}
1223 Encodes the \ctype{Py_UNICODE} buffer of the given size using
1224 Raw-Unicode-Escape and returns a Python string object. Returns
1225 \NULL{} if an exception was raised by the codec.
1226\end{cfuncdesc}
1227
1228\begin{cfuncdesc}{PyObject*}{PyUnicode_AsRawUnicodeEscapeString}{PyObject *unicode}
1229 Encodes a Unicode objects using Raw-Unicode-Escape and returns the
1230 result as Python string object. Error handling is ``strict''.
1231 Returns \NULL{} if an exception was raised by the codec.
1232\end{cfuncdesc}
1233
Tim Petersf582b822001-12-11 18:51:08 +00001234% --- Latin-1 Codecs -----------------------------------------------------
Fred Drake3adf79e2001-10-12 19:01:43 +00001235
1236These are the Latin-1 codec APIs:
1237Latin-1 corresponds to the first 256 Unicode ordinals and only these
1238are accepted by the codecs during encoding.
1239
1240\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeLatin1}{const char *s,
1241 int size,
1242 const char *errors}
1243 Creates a Unicode object by decoding \var{size} bytes of the Latin-1
1244 encoded string \var{s}. Returns \NULL{} if an exception was raised
1245 by the codec.
1246\end{cfuncdesc}
1247
1248\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeLatin1}{const Py_UNICODE *s,
1249 int size,
1250 const char *errors}
1251 Encodes the \ctype{Py_UNICODE} buffer of the given size using
1252 Latin-1 and returns a Python string object. Returns \NULL{} if an
1253 exception was raised by the codec.
1254\end{cfuncdesc}
1255
1256\begin{cfuncdesc}{PyObject*}{PyUnicode_AsLatin1String}{PyObject *unicode}
1257 Encodes a Unicode objects using Latin-1 and returns the result as
1258 Python string object. Error handling is ``strict''. Returns
1259 \NULL{} if an exception was raised by the codec.
1260\end{cfuncdesc}
1261
Tim Petersf582b822001-12-11 18:51:08 +00001262% --- ASCII Codecs -------------------------------------------------------
Fred Drake3adf79e2001-10-12 19:01:43 +00001263
1264These are the \ASCII{} codec APIs. Only 7-bit \ASCII{} data is
1265accepted. All other codes generate errors.
1266
1267\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeASCII}{const char *s,
1268 int size,
1269 const char *errors}
1270 Creates a Unicode object by decoding \var{size} bytes of the
1271 \ASCII{} encoded string \var{s}. Returns \NULL{} if an exception
1272 was raised by the codec.
1273\end{cfuncdesc}
1274
1275\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeASCII}{const Py_UNICODE *s,
1276 int size,
1277 const char *errors}
1278 Encodes the \ctype{Py_UNICODE} buffer of the given size using
1279 \ASCII{} and returns a Python string object. Returns \NULL{} if an
1280 exception was raised by the codec.
1281\end{cfuncdesc}
1282
1283\begin{cfuncdesc}{PyObject*}{PyUnicode_AsASCIIString}{PyObject *unicode}
1284 Encodes a Unicode objects using \ASCII{} and returns the result as
1285 Python string object. Error handling is ``strict''. Returns
1286 \NULL{} if an exception was raised by the codec.
1287\end{cfuncdesc}
1288
Tim Petersf582b822001-12-11 18:51:08 +00001289% --- Character Map Codecs -----------------------------------------------
Fred Drake3adf79e2001-10-12 19:01:43 +00001290
1291These are the mapping codec APIs:
1292
1293This codec is special in that it can be used to implement many
1294different codecs (and this is in fact what was done to obtain most of
1295the standard codecs included in the \module{encodings} package). The
1296codec uses mapping to encode and decode characters.
1297
1298Decoding mappings must map single string characters to single Unicode
1299characters, integers (which are then interpreted as Unicode ordinals)
Tim Petersf582b822001-12-11 18:51:08 +00001300or None (meaning "undefined mapping" and causing an error).
Fred Drake3adf79e2001-10-12 19:01:43 +00001301
1302Encoding mappings must map single Unicode characters to single string
1303characters, integers (which are then interpreted as Latin-1 ordinals)
1304or None (meaning "undefined mapping" and causing an error).
1305
1306The mapping objects provided must only support the __getitem__ mapping
1307interface.
1308
1309If a character lookup fails with a LookupError, the character is
1310copied as-is meaning that its ordinal value will be interpreted as
1311Unicode or Latin-1 ordinal resp. Because of this, mappings only need
1312to contain those mappings which map characters to different code
1313points.
1314
1315\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeCharmap}{const char *s,
1316 int size,
1317 PyObject *mapping,
1318 const char *errors}
1319 Creates a Unicode object by decoding \var{size} bytes of the encoded
1320 string \var{s} using the given \var{mapping} object. Returns
1321 \NULL{} if an exception was raised by the codec.
1322\end{cfuncdesc}
1323
1324\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeCharmap}{const Py_UNICODE *s,
1325 int size,
1326 PyObject *mapping,
1327 const char *errors}
1328 Encodes the \ctype{Py_UNICODE} buffer of the given size using the
1329 given \var{mapping} object and returns a Python string object.
1330 Returns \NULL{} if an exception was raised by the codec.
1331\end{cfuncdesc}
1332
1333\begin{cfuncdesc}{PyObject*}{PyUnicode_AsCharmapString}{PyObject *unicode,
1334 PyObject *mapping}
1335 Encodes a Unicode objects using the given \var{mapping} object and
1336 returns the result as Python string object. Error handling is
1337 ``strict''. Returns \NULL{} if an exception was raised by the
1338 codec.
1339\end{cfuncdesc}
1340
1341The following codec API is special in that maps Unicode to Unicode.
1342
1343\begin{cfuncdesc}{PyObject*}{PyUnicode_TranslateCharmap}{const Py_UNICODE *s,
1344 int size,
1345 PyObject *table,
1346 const char *errors}
1347 Translates a \ctype{Py_UNICODE} buffer of the given length by
1348 applying a character mapping \var{table} to it and returns the
1349 resulting Unicode object. Returns \NULL{} when an exception was
1350 raised by the codec.
1351
1352 The \var{mapping} table must map Unicode ordinal integers to Unicode
1353 ordinal integers or None (causing deletion of the character).
1354
1355 Mapping tables need only provide the method{__getitem__()}
1356 interface; dictionaries and sequences work well. Unmapped character
1357 ordinals (ones which cause a \exception{LookupError}) are left
1358 untouched and are copied as-is.
1359\end{cfuncdesc}
1360
1361% --- MBCS codecs for Windows --------------------------------------------
1362
1363These are the MBCS codec APIs. They are currently only available on
1364Windows and use the Win32 MBCS converters to implement the
1365conversions. Note that MBCS (or DBCS) is a class of encodings, not
1366just one. The target encoding is defined by the user settings on the
1367machine running the codec.
1368
1369\begin{cfuncdesc}{PyObject*}{PyUnicode_DecodeMBCS}{const char *s,
1370 int size,
1371 const char *errors}
1372 Creates a Unicode object by decoding \var{size} bytes of the MBCS
1373 encoded string \var{s}. Returns \NULL{} if an exception was
1374 raised by the codec.
1375\end{cfuncdesc}
1376
1377\begin{cfuncdesc}{PyObject*}{PyUnicode_EncodeMBCS}{const Py_UNICODE *s,
1378 int size,
1379 const char *errors}
1380 Encodes the \ctype{Py_UNICODE} buffer of the given size using MBCS
1381 and returns a Python string object. Returns \NULL{} if an exception
1382 was raised by the codec.
1383\end{cfuncdesc}
1384
1385\begin{cfuncdesc}{PyObject*}{PyUnicode_AsMBCSString}{PyObject *unicode}
1386 Encodes a Unicode objects using MBCS and returns the result as
1387 Python string object. Error handling is ``strict''. Returns
1388 \NULL{} if an exception was raised by the codec.
1389\end{cfuncdesc}
1390
1391% --- Methods & Slots ----------------------------------------------------
1392
1393\subsubsection{Methods and Slot Functions \label{unicodeMethodsAndSlots}}
1394
1395The following APIs are capable of handling Unicode objects and strings
1396on input (we refer to them as strings in the descriptions) and return
Martin v. Löwis95cf84a2003-10-19 07:32:24 +00001397Unicode objects or integers as appropriate.
Fred Drake3adf79e2001-10-12 19:01:43 +00001398
1399They all return \NULL{} or \code{-1} if an exception occurs.
1400
1401\begin{cfuncdesc}{PyObject*}{PyUnicode_Concat}{PyObject *left,
1402 PyObject *right}
1403 Concat two strings giving a new Unicode string.
1404\end{cfuncdesc}
1405
1406\begin{cfuncdesc}{PyObject*}{PyUnicode_Split}{PyObject *s,
1407 PyObject *sep,
1408 int maxsplit}
Tim Peters9ddf40b2004-06-20 22:41:32 +00001409 Split a string giving a list of Unicode strings. If sep is \NULL{},
Fred Drake3adf79e2001-10-12 19:01:43 +00001410 splitting will be done at all whitespace substrings. Otherwise,
1411 splits occur at the given separator. At most \var{maxsplit} splits
1412 will be done. If negative, no limit is set. Separators are not
1413 included in the resulting list.
1414\end{cfuncdesc}
1415
1416\begin{cfuncdesc}{PyObject*}{PyUnicode_Splitlines}{PyObject *s,
Martin v. Löwis24b88812003-03-30 16:40:42 +00001417 int keepend}
Fred Drake3adf79e2001-10-12 19:01:43 +00001418 Split a Unicode string at line breaks, returning a list of Unicode
Martin v. Löwis24b88812003-03-30 16:40:42 +00001419 strings. CRLF is considered to be one line break. If \var{keepend}
1420 is 0, the Line break characters are not included in the resulting
1421 strings.
Fred Drake3adf79e2001-10-12 19:01:43 +00001422\end{cfuncdesc}
1423
1424\begin{cfuncdesc}{PyObject*}{PyUnicode_Translate}{PyObject *str,
1425 PyObject *table,
1426 const char *errors}
1427 Translate a string by applying a character mapping table to it and
1428 return the resulting Unicode object.
1429
1430 The mapping table must map Unicode ordinal integers to Unicode
1431 ordinal integers or None (causing deletion of the character).
1432
1433 Mapping tables need only provide the \method{__getitem__()}
1434 interface; dictionaries and sequences work well. Unmapped character
1435 ordinals (ones which cause a \exception{LookupError}) are left
1436 untouched and are copied as-is.
1437
1438 \var{errors} has the usual meaning for codecs. It may be \NULL{}
1439 which indicates to use the default error handling.
1440\end{cfuncdesc}
1441
1442\begin{cfuncdesc}{PyObject*}{PyUnicode_Join}{PyObject *separator,
1443 PyObject *seq}
1444 Join a sequence of strings using the given separator and return the
1445 resulting Unicode string.
1446\end{cfuncdesc}
1447
1448\begin{cfuncdesc}{PyObject*}{PyUnicode_Tailmatch}{PyObject *str,
1449 PyObject *substr,
1450 int start,
1451 int end,
1452 int direction}
1453 Return 1 if \var{substr} matches \var{str}[\var{start}:\var{end}] at
1454 the given tail end (\var{direction} == -1 means to do a prefix
1455 match, \var{direction} == 1 a suffix match), 0 otherwise.
1456\end{cfuncdesc}
1457
Fred Drake1d1e1db2002-06-20 22:07:04 +00001458\begin{cfuncdesc}{int}{PyUnicode_Find}{PyObject *str,
1459 PyObject *substr,
1460 int start,
1461 int end,
1462 int direction}
Fred Drake3adf79e2001-10-12 19:01:43 +00001463 Return the first position of \var{substr} in
1464 \var{str}[\var{start}:\var{end}] using the given \var{direction}
1465 (\var{direction} == 1 means to do a forward search,
Fred Drake1d1e1db2002-06-20 22:07:04 +00001466 \var{direction} == -1 a backward search). The return value is the
1467 index of the first match; a value of \code{-1} indicates that no
1468 match was found, and \code{-2} indicates that an error occurred and
1469 an exception has been set.
Fred Drake3adf79e2001-10-12 19:01:43 +00001470\end{cfuncdesc}
1471
Fred Drake1d1e1db2002-06-20 22:07:04 +00001472\begin{cfuncdesc}{int}{PyUnicode_Count}{PyObject *str,
1473 PyObject *substr,
1474 int start,
1475 int end}
1476 Return the number of non-overlapping occurrences of \var{substr} in
1477 \code{\var{str}[\var{start}:\var{end}]}. Returns \code{-1} if an
1478 error occurred.
Fred Drake3adf79e2001-10-12 19:01:43 +00001479\end{cfuncdesc}
1480
1481\begin{cfuncdesc}{PyObject*}{PyUnicode_Replace}{PyObject *str,
1482 PyObject *substr,
1483 PyObject *replstr,
1484 int maxcount}
1485 Replace at most \var{maxcount} occurrences of \var{substr} in
1486 \var{str} with \var{replstr} and return the resulting Unicode object.
1487 \var{maxcount} == -1 means replace all occurrences.
1488\end{cfuncdesc}
1489
1490\begin{cfuncdesc}{int}{PyUnicode_Compare}{PyObject *left, PyObject *right}
1491 Compare two strings and return -1, 0, 1 for less than, equal, and
1492 greater than, respectively.
1493\end{cfuncdesc}
1494
1495\begin{cfuncdesc}{PyObject*}{PyUnicode_Format}{PyObject *format,
1496 PyObject *args}
1497 Returns a new string object from \var{format} and \var{args}; this
1498 is analogous to \code{\var{format} \%\ \var{args}}. The
1499 \var{args} argument must be a tuple.
1500\end{cfuncdesc}
1501
1502\begin{cfuncdesc}{int}{PyUnicode_Contains}{PyObject *container,
1503 PyObject *element}
1504 Checks whether \var{element} is contained in \var{container} and
1505 returns true or false accordingly.
1506
1507 \var{element} has to coerce to a one element Unicode
1508 string. \code{-1} is returned if there was an error.
1509\end{cfuncdesc}
1510
1511
1512\subsection{Buffer Objects \label{bufferObjects}}
1513\sectionauthor{Greg Stein}{gstein@lyra.org}
1514
1515\obindex{buffer}
1516Python objects implemented in C can export a group of functions called
1517the ``buffer\index{buffer interface} interface.'' These functions can
1518be used by an object to expose its data in a raw, byte-oriented
1519format. Clients of the object can use the buffer interface to access
1520the object data directly, without needing to copy it first.
1521
Tim Petersf582b822001-12-11 18:51:08 +00001522Two examples of objects that support
1523the buffer interface are strings and arrays. The string object exposes
Fred Drake3adf79e2001-10-12 19:01:43 +00001524the character contents in the buffer interface's byte-oriented
1525form. An array can also expose its contents, but it should be noted
1526that array elements may be multi-byte values.
1527
1528An example user of the buffer interface is the file object's
1529\method{write()} method. Any object that can export a series of bytes
1530through the buffer interface can be written to a file. There are a
Tim Petersf582b822001-12-11 18:51:08 +00001531number of format codes to \cfunction{PyArg_ParseTuple()} that operate
Fred Drake3adf79e2001-10-12 19:01:43 +00001532against an object's buffer interface, returning data from the target
1533object.
1534
1535More information on the buffer interface is provided in the section
Fred Drake54e62942001-12-11 19:40:16 +00001536``Buffer Object Structures'' (section~\ref{buffer-structs}), under
Fred Drake3adf79e2001-10-12 19:01:43 +00001537the description for \ctype{PyBufferProcs}\ttindex{PyBufferProcs}.
1538
1539A ``buffer object'' is defined in the \file{bufferobject.h} header
1540(included by \file{Python.h}). These objects look very similar to
1541string objects at the Python programming level: they support slicing,
1542indexing, concatenation, and some other standard string
1543operations. However, their data can come from one of two sources: from
1544a block of memory, or from another object which exports the buffer
1545interface.
1546
1547Buffer objects are useful as a way to expose the data from another
1548object's buffer interface to the Python programmer. They can also be
1549used as a zero-copy slicing mechanism. Using their ability to
1550reference a block of memory, it is possible to expose any data to the
1551Python programmer quite easily. The memory could be a large, constant
1552array in a C extension, it could be a raw block of memory for
1553manipulation before passing to an operating system library, or it
1554could be used to pass around structured data in its native, in-memory
1555format.
1556
1557\begin{ctypedesc}{PyBufferObject}
1558 This subtype of \ctype{PyObject} represents a buffer object.
1559\end{ctypedesc}
1560
1561\begin{cvardesc}{PyTypeObject}{PyBuffer_Type}
1562 The instance of \ctype{PyTypeObject} which represents the Python
1563 buffer type; it is the same object as \code{types.BufferType} in the
1564 Python layer.\withsubitem{(in module types)}{\ttindex{BufferType}}.
1565\end{cvardesc}
1566
1567\begin{cvardesc}{int}{Py_END_OF_BUFFER}
1568 This constant may be passed as the \var{size} parameter to
1569 \cfunction{PyBuffer_FromObject()} or
1570 \cfunction{PyBuffer_FromReadWriteObject()}. It indicates that the
1571 new \ctype{PyBufferObject} should refer to \var{base} object from
1572 the specified \var{offset} to the end of its exported buffer. Using
1573 this enables the caller to avoid querying the \var{base} object for
1574 its length.
1575\end{cvardesc}
1576
1577\begin{cfuncdesc}{int}{PyBuffer_Check}{PyObject *p}
1578 Return true if the argument has type \cdata{PyBuffer_Type}.
1579\end{cfuncdesc}
1580
1581\begin{cfuncdesc}{PyObject*}{PyBuffer_FromObject}{PyObject *base,
1582 int offset, int size}
1583 Return a new read-only buffer object. This raises
1584 \exception{TypeError} if \var{base} doesn't support the read-only
1585 buffer protocol or doesn't provide exactly one buffer segment, or it
1586 raises \exception{ValueError} if \var{offset} is less than zero. The
1587 buffer will hold a reference to the \var{base} object, and the
1588 buffer's contents will refer to the \var{base} object's buffer
1589 interface, starting as position \var{offset} and extending for
1590 \var{size} bytes. If \var{size} is \constant{Py_END_OF_BUFFER}, then
1591 the new buffer's contents extend to the length of the \var{base}
1592 object's exported buffer data.
1593\end{cfuncdesc}
1594
1595\begin{cfuncdesc}{PyObject*}{PyBuffer_FromReadWriteObject}{PyObject *base,
1596 int offset,
1597 int size}
1598 Return a new writable buffer object. Parameters and exceptions are
1599 similar to those for \cfunction{PyBuffer_FromObject()}. If the
1600 \var{base} object does not export the writeable buffer protocol,
1601 then \exception{TypeError} is raised.
1602\end{cfuncdesc}
1603
1604\begin{cfuncdesc}{PyObject*}{PyBuffer_FromMemory}{void *ptr, int size}
1605 Return a new read-only buffer object that reads from a specified
1606 location in memory, with a specified size. The caller is
1607 responsible for ensuring that the memory buffer, passed in as
1608 \var{ptr}, is not deallocated while the returned buffer object
1609 exists. Raises \exception{ValueError} if \var{size} is less than
1610 zero. Note that \constant{Py_END_OF_BUFFER} may \emph{not} be
1611 passed for the \var{size} parameter; \exception{ValueError} will be
1612 raised in that case.
1613\end{cfuncdesc}
1614
1615\begin{cfuncdesc}{PyObject*}{PyBuffer_FromReadWriteMemory}{void *ptr, int size}
1616 Similar to \cfunction{PyBuffer_FromMemory()}, but the returned
1617 buffer is writable.
1618\end{cfuncdesc}
1619
1620\begin{cfuncdesc}{PyObject*}{PyBuffer_New}{int size}
1621 Returns a new writable buffer object that maintains its own memory
1622 buffer of \var{size} bytes. \exception{ValueError} is returned if
Neil Schemenauerd68d3ee2004-06-08 02:58:50 +00001623 \var{size} is not zero or positive. Note that the memory buffer (as
1624 returned by \cfunction{PyObject_AsWriteBuffer()}) is not specifically
1625 aligned.
Fred Drake3adf79e2001-10-12 19:01:43 +00001626\end{cfuncdesc}
1627
1628
1629\subsection{Tuple Objects \label{tupleObjects}}
1630
1631\obindex{tuple}
1632\begin{ctypedesc}{PyTupleObject}
1633 This subtype of \ctype{PyObject} represents a Python tuple object.
1634\end{ctypedesc}
1635
1636\begin{cvardesc}{PyTypeObject}{PyTuple_Type}
1637 This instance of \ctype{PyTypeObject} represents the Python tuple
1638 type; it is the same object as \code{types.TupleType} in the Python
1639 layer.\withsubitem{(in module types)}{\ttindex{TupleType}}.
1640\end{cvardesc}
1641
1642\begin{cfuncdesc}{int}{PyTuple_Check}{PyObject *p}
1643 Return true if \var{p} is a tuple object or an instance of a subtype
1644 of the tuple type.
1645 \versionchanged[Allowed subtypes to be accepted]{2.2}
1646\end{cfuncdesc}
1647
1648\begin{cfuncdesc}{int}{PyTuple_CheckExact}{PyObject *p}
1649 Return true if \var{p} is a tuple object, but not an instance of a
1650 subtype of the tuple type.
1651 \versionadded{2.2}
1652\end{cfuncdesc}
1653
1654\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int len}
1655 Return a new tuple object of size \var{len}, or \NULL{} on failure.
1656\end{cfuncdesc}
1657
Raymond Hettingercb2da432003-10-12 18:24:34 +00001658\begin{cfuncdesc}{PyObject*}{PyTuple_Pack}{int n, \moreargs}
1659 Return a new tuple object of size \var{n}, or \NULL{} on failure.
1660 The tuple values are initialized to the subsequent \var{n} C arguments
1661 pointing to Python objects. \samp{PyTuple_Pack(2, \var{a}, \var{b})}
1662 is equivalent to \samp{Py_BuildValue("(OO)", \var{a}, \var{b})}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00001663 \versionadded{2.4}
Raymond Hettingercb2da432003-10-12 18:24:34 +00001664\end{cfuncdesc}
1665
Fred Drake3adf79e2001-10-12 19:01:43 +00001666\begin{cfuncdesc}{int}{PyTuple_Size}{PyObject *p}
1667 Takes a pointer to a tuple object, and returns the size of that
1668 tuple.
1669\end{cfuncdesc}
1670
1671\begin{cfuncdesc}{int}{PyTuple_GET_SIZE}{PyObject *p}
1672 Return the size of the tuple \var{p}, which must be non-\NULL{} and
1673 point to a tuple; no error checking is performed.
1674\end{cfuncdesc}
1675
1676\begin{cfuncdesc}{PyObject*}{PyTuple_GetItem}{PyObject *p, int pos}
1677 Returns the object at position \var{pos} in the tuple pointed to by
1678 \var{p}. If \var{pos} is out of bounds, returns \NULL{} and sets an
1679 \exception{IndexError} exception.
1680\end{cfuncdesc}
1681
1682\begin{cfuncdesc}{PyObject*}{PyTuple_GET_ITEM}{PyObject *p, int pos}
1683 Like \cfunction{PyTuple_GetItem()}, but does no checking of its
1684 arguments.
1685\end{cfuncdesc}
1686
1687\begin{cfuncdesc}{PyObject*}{PyTuple_GetSlice}{PyObject *p,
1688 int low, int high}
1689 Takes a slice of the tuple pointed to by \var{p} from \var{low} to
1690 \var{high} and returns it as a new tuple.
1691\end{cfuncdesc}
1692
1693\begin{cfuncdesc}{int}{PyTuple_SetItem}{PyObject *p,
1694 int pos, PyObject *o}
1695 Inserts a reference to object \var{o} at position \var{pos} of the
1696 tuple pointed to by \var{p}. It returns \code{0} on success.
1697 \note{This function ``steals'' a reference to \var{o}.}
1698\end{cfuncdesc}
1699
1700\begin{cfuncdesc}{void}{PyTuple_SET_ITEM}{PyObject *p,
1701 int pos, PyObject *o}
1702 Like \cfunction{PyTuple_SetItem()}, but does no error checking, and
1703 should \emph{only} be used to fill in brand new tuples. \note{This
1704 function ``steals'' a reference to \var{o}.}
1705\end{cfuncdesc}
1706
1707\begin{cfuncdesc}{int}{_PyTuple_Resize}{PyObject **p, int newsize}
1708 Can be used to resize a tuple. \var{newsize} will be the new length
1709 of the tuple. Because tuples are \emph{supposed} to be immutable,
1710 this should only be used if there is only one reference to the
1711 object. Do \emph{not} use this if the tuple may already be known to
1712 some other part of the code. The tuple will always grow or shrink
1713 at the end. Think of this as destroying the old tuple and creating
1714 a new one, only more efficiently. Returns \code{0} on success.
1715 Client code should never assume that the resulting value of
1716 \code{*\var{p}} will be the same as before calling this function.
1717 If the object referenced by \code{*\var{p}} is replaced, the
1718 original \code{*\var{p}} is destroyed. On failure, returns
Tim Peters9ddf40b2004-06-20 22:41:32 +00001719 \code{-1} and sets \code{*\var{p}} to \NULL{}, and raises
Fred Drake3adf79e2001-10-12 19:01:43 +00001720 \exception{MemoryError} or
1721 \exception{SystemError}.
Tim Petersf582b822001-12-11 18:51:08 +00001722 \versionchanged[Removed unused third parameter, \var{last_is_sticky}]{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001723\end{cfuncdesc}
1724
1725
1726\subsection{List Objects \label{listObjects}}
1727
1728\obindex{list}
1729\begin{ctypedesc}{PyListObject}
1730 This subtype of \ctype{PyObject} represents a Python list object.
1731\end{ctypedesc}
1732
1733\begin{cvardesc}{PyTypeObject}{PyList_Type}
1734 This instance of \ctype{PyTypeObject} represents the Python list
1735 type. This is the same object as \code{types.ListType}.
1736 \withsubitem{(in module types)}{\ttindex{ListType}}
1737\end{cvardesc}
1738
1739\begin{cfuncdesc}{int}{PyList_Check}{PyObject *p}
Andrew MacIntyre13cd8892003-12-25 23:57:52 +00001740 Returns true if \var{p} is a list object or an instance of a
1741 subtype of the list type.
1742 \versionchanged[Allowed subtypes to be accepted]{2.2}
1743\end{cfuncdesc}
1744
1745\begin{cfuncdesc}{int}{PyList_CheckExact}{PyObject *p}
1746 Return true if \var{p} is a list object, but not an instance of a
1747 subtype of the list type.
1748 \versionadded{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001749\end{cfuncdesc}
1750
1751\begin{cfuncdesc}{PyObject*}{PyList_New}{int len}
1752 Returns a new list of length \var{len} on success, or \NULL{} on
1753 failure.
1754\end{cfuncdesc}
1755
1756\begin{cfuncdesc}{int}{PyList_Size}{PyObject *list}
1757 Returns the length of the list object in \var{list}; this is
1758 equivalent to \samp{len(\var{list})} on a list object.
1759 \bifuncindex{len}
1760\end{cfuncdesc}
1761
1762\begin{cfuncdesc}{int}{PyList_GET_SIZE}{PyObject *list}
1763 Macro form of \cfunction{PyList_Size()} without error checking.
1764\end{cfuncdesc}
1765
1766\begin{cfuncdesc}{PyObject*}{PyList_GetItem}{PyObject *list, int index}
1767 Returns the object at position \var{pos} in the list pointed to by
1768 \var{p}. If \var{pos} is out of bounds, returns \NULL{} and sets an
1769 \exception{IndexError} exception.
1770\end{cfuncdesc}
1771
1772\begin{cfuncdesc}{PyObject*}{PyList_GET_ITEM}{PyObject *list, int i}
1773 Macro form of \cfunction{PyList_GetItem()} without error checking.
1774\end{cfuncdesc}
1775
1776\begin{cfuncdesc}{int}{PyList_SetItem}{PyObject *list, int index,
1777 PyObject *item}
1778 Sets the item at index \var{index} in list to \var{item}. Returns
1779 \code{0} on success or \code{-1} on failure. \note{This function
1780 ``steals'' a reference to \var{item} and discards a reference to an
1781 item already in the list at the affected position.}
1782\end{cfuncdesc}
1783
1784\begin{cfuncdesc}{void}{PyList_SET_ITEM}{PyObject *list, int i,
1785 PyObject *o}
1786 Macro form of \cfunction{PyList_SetItem()} without error checking.
1787 This is normally only used to fill in new lists where there is no
1788 previous content.
1789 \note{This function ``steals'' a reference to \var{item}, and,
1790 unlike \cfunction{PyList_SetItem()}, does \emph{not} discard a
1791 reference to any item that it being replaced; any reference in
1792 \var{list} at position \var{i} will be leaked.}
1793\end{cfuncdesc}
1794
1795\begin{cfuncdesc}{int}{PyList_Insert}{PyObject *list, int index,
1796 PyObject *item}
1797 Inserts the item \var{item} into list \var{list} in front of index
1798 \var{index}. Returns \code{0} if successful; returns \code{-1} and
1799 raises an exception if unsuccessful. Analogous to
1800 \code{\var{list}.insert(\var{index}, \var{item})}.
1801\end{cfuncdesc}
1802
1803\begin{cfuncdesc}{int}{PyList_Append}{PyObject *list, PyObject *item}
1804 Appends the object \var{item} at the end of list \var{list}.
1805 Returns \code{0} if successful; returns \code{-1} and sets an
1806 exception if unsuccessful. Analogous to
1807 \code{\var{list}.append(\var{item})}.
1808\end{cfuncdesc}
1809
1810\begin{cfuncdesc}{PyObject*}{PyList_GetSlice}{PyObject *list,
1811 int low, int high}
1812 Returns a list of the objects in \var{list} containing the objects
1813 \emph{between} \var{low} and \var{high}. Returns \NULL{} and sets
1814 an exception if unsuccessful.
1815 Analogous to \code{\var{list}[\var{low}:\var{high}]}.
1816\end{cfuncdesc}
1817
1818\begin{cfuncdesc}{int}{PyList_SetSlice}{PyObject *list,
1819 int low, int high,
1820 PyObject *itemlist}
1821 Sets the slice of \var{list} between \var{low} and \var{high} to the
1822 contents of \var{itemlist}. Analogous to
Raymond Hettinger9c7ed4c2003-10-26 17:20:07 +00001823 \code{\var{list}[\var{low}:\var{high}] = \var{itemlist}}.
1824 The \var{itemlist} may be \NULL{}, indicating the assignment
1825 of an empty list (slice deletion).
1826 Returns \code{0} on success, \code{-1} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00001827\end{cfuncdesc}
1828
1829\begin{cfuncdesc}{int}{PyList_Sort}{PyObject *list}
1830 Sorts the items of \var{list} in place. Returns \code{0} on
1831 success, \code{-1} on failure. This is equivalent to
1832 \samp{\var{list}.sort()}.
1833\end{cfuncdesc}
1834
1835\begin{cfuncdesc}{int}{PyList_Reverse}{PyObject *list}
1836 Reverses the items of \var{list} in place. Returns \code{0} on
1837 success, \code{-1} on failure. This is the equivalent of
1838 \samp{\var{list}.reverse()}.
1839\end{cfuncdesc}
1840
1841\begin{cfuncdesc}{PyObject*}{PyList_AsTuple}{PyObject *list}
1842 Returns a new tuple object containing the contents of \var{list};
1843 equivalent to \samp{tuple(\var{list})}.\bifuncindex{tuple}
1844\end{cfuncdesc}
1845
1846
1847\section{Mapping Objects \label{mapObjects}}
1848
1849\obindex{mapping}
1850
1851
1852\subsection{Dictionary Objects \label{dictObjects}}
1853
1854\obindex{dictionary}
1855\begin{ctypedesc}{PyDictObject}
1856 This subtype of \ctype{PyObject} represents a Python dictionary
1857 object.
1858\end{ctypedesc}
1859
1860\begin{cvardesc}{PyTypeObject}{PyDict_Type}
1861 This instance of \ctype{PyTypeObject} represents the Python
1862 dictionary type. This is exposed to Python programs as
1863 \code{types.DictType} and \code{types.DictionaryType}.
1864 \withsubitem{(in module types)}{\ttindex{DictType}\ttindex{DictionaryType}}
1865\end{cvardesc}
1866
1867\begin{cfuncdesc}{int}{PyDict_Check}{PyObject *p}
Andrew MacIntyre13cd8892003-12-25 23:57:52 +00001868 Returns true if \var{p} is a dict object or an instance of a
1869 subtype of the dict type.
1870 \versionchanged[Allowed subtypes to be accepted]{2.2}
Fred Drake3adf79e2001-10-12 19:01:43 +00001871\end{cfuncdesc}
1872
Andrew MacIntyref72af652003-12-26 00:07:51 +00001873\begin{cfuncdesc}{int}{PyDict_CheckExact}{PyObject *p}
1874 Return true if \var{p} is a dict object, but not an instance of a
1875 subtype of the dict type.
1876 \versionadded{2.4}
1877\end{cfuncdesc}
1878
Fred Drake3adf79e2001-10-12 19:01:43 +00001879\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
1880 Returns a new empty dictionary, or \NULL{} on failure.
1881\end{cfuncdesc}
1882
1883\begin{cfuncdesc}{PyObject*}{PyDictProxy_New}{PyObject *dict}
1884 Return a proxy object for a mapping which enforces read-only
1885 behavior. This is normally used to create a proxy to prevent
1886 modification of the dictionary for non-dynamic class types.
1887 \versionadded{2.2}
1888\end{cfuncdesc}
1889
1890\begin{cfuncdesc}{void}{PyDict_Clear}{PyObject *p}
1891 Empties an existing dictionary of all key-value pairs.
1892\end{cfuncdesc}
1893
Raymond Hettingerbc0f2ab2003-11-25 21:12:14 +00001894\begin{cfuncdesc}{int}{PyDict_Contains}{PyObject *p, PyObject *key}
1895 Determine if dictionary \var{p} contains \var{key}. If an item
1896 in \var{p} is matches \var{key}, return \code{1}, otherwise return
1897 \code{0}. On error, return \code{-1}. This is equivalent to the
1898 Python expression \samp{\var{key} in \var{p}}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00001899 \versionadded{2.4}
Raymond Hettingerbc0f2ab2003-11-25 21:12:14 +00001900\end{cfuncdesc}
1901
Fred Drake3adf79e2001-10-12 19:01:43 +00001902\begin{cfuncdesc}{PyObject*}{PyDict_Copy}{PyObject *p}
1903 Returns a new dictionary that contains the same key-value pairs as
1904 \var{p}.
1905 \versionadded{1.6}
1906\end{cfuncdesc}
1907
1908\begin{cfuncdesc}{int}{PyDict_SetItem}{PyObject *p, PyObject *key,
1909 PyObject *val}
1910 Inserts \var{value} into the dictionary \var{p} with a key of
1911 \var{key}. \var{key} must be hashable; if it isn't,
1912 \exception{TypeError} will be raised.
1913 Returns \code{0} on success or \code{-1} on failure.
1914\end{cfuncdesc}
1915
1916\begin{cfuncdesc}{int}{PyDict_SetItemString}{PyObject *p,
1917 char *key,
1918 PyObject *val}
1919 Inserts \var{value} into the dictionary \var{p} using \var{key} as a
1920 key. \var{key} should be a \ctype{char*}. The key object is created
1921 using \code{PyString_FromString(\var{key})}. Returns \code{0} on
1922 success or \code{-1} on failure.
1923 \ttindex{PyString_FromString()}
1924\end{cfuncdesc}
1925
1926\begin{cfuncdesc}{int}{PyDict_DelItem}{PyObject *p, PyObject *key}
1927 Removes the entry in dictionary \var{p} with key \var{key}.
1928 \var{key} must be hashable; if it isn't, \exception{TypeError} is
Skip Montanaroa23bc422002-01-23 08:18:30 +00001929 raised. Returns \code{0} on success or \code{-1} on failure.
Fred Drake3adf79e2001-10-12 19:01:43 +00001930\end{cfuncdesc}
1931
1932\begin{cfuncdesc}{int}{PyDict_DelItemString}{PyObject *p, char *key}
1933 Removes the entry in dictionary \var{p} which has a key specified by
1934 the string \var{key}. Returns \code{0} on success or \code{-1} on
1935 failure.
1936\end{cfuncdesc}
1937
1938\begin{cfuncdesc}{PyObject*}{PyDict_GetItem}{PyObject *p, PyObject *key}
1939 Returns the object from dictionary \var{p} which has a key
1940 \var{key}. Returns \NULL{} if the key \var{key} is not present, but
1941 \emph{without} setting an exception.
1942\end{cfuncdesc}
1943
1944\begin{cfuncdesc}{PyObject*}{PyDict_GetItemString}{PyObject *p, char *key}
1945 This is the same as \cfunction{PyDict_GetItem()}, but \var{key} is
1946 specified as a \ctype{char*}, rather than a \ctype{PyObject*}.
1947\end{cfuncdesc}
1948
1949\begin{cfuncdesc}{PyObject*}{PyDict_Items}{PyObject *p}
1950 Returns a \ctype{PyListObject} containing all the items from the
Nicholas Bastin975e7252004-09-29 21:39:26 +00001951 dictionary, as in the dictionary method \method{items()} (see the
Fred Drake3adf79e2001-10-12 19:01:43 +00001952 \citetitle[../lib/lib.html]{Python Library Reference}).
1953\end{cfuncdesc}
1954
1955\begin{cfuncdesc}{PyObject*}{PyDict_Keys}{PyObject *p}
1956 Returns a \ctype{PyListObject} containing all the keys from the
1957 dictionary, as in the dictionary method \method{keys()} (see the
1958 \citetitle[../lib/lib.html]{Python Library Reference}).
1959\end{cfuncdesc}
1960
1961\begin{cfuncdesc}{PyObject*}{PyDict_Values}{PyObject *p}
1962 Returns a \ctype{PyListObject} containing all the values from the
1963 dictionary \var{p}, as in the dictionary method \method{values()}
1964 (see the \citetitle[../lib/lib.html]{Python Library Reference}).
1965\end{cfuncdesc}
1966
1967\begin{cfuncdesc}{int}{PyDict_Size}{PyObject *p}
1968 Returns the number of items in the dictionary. This is equivalent
1969 to \samp{len(\var{p})} on a dictionary.\bifuncindex{len}
1970\end{cfuncdesc}
1971
1972\begin{cfuncdesc}{int}{PyDict_Next}{PyObject *p, int *ppos,
1973 PyObject **pkey, PyObject **pvalue}
1974 Iterate over all key-value pairs in the dictionary \var{p}. The
1975 \ctype{int} referred to by \var{ppos} must be initialized to
1976 \code{0} prior to the first call to this function to start the
1977 iteration; the function returns true for each pair in the
1978 dictionary, and false once all pairs have been reported. The
1979 parameters \var{pkey} and \var{pvalue} should either point to
1980 \ctype{PyObject*} variables that will be filled in with each key and
Tim Peters9ddf40b2004-06-20 22:41:32 +00001981 value, respectively, or may be \NULL{}. Any references returned through
Raymond Hettinger54693242003-12-13 19:48:41 +00001982 them are borrowed. \var{ppos} should not be altered during iteration.
1983 Its value represents offsets within the internal dictionary structure,
1984 and since the structure is sparse, the offsets are not consecutive.
Fred Drake3adf79e2001-10-12 19:01:43 +00001985
1986 For example:
1987
1988\begin{verbatim}
1989PyObject *key, *value;
1990int pos = 0;
1991
1992while (PyDict_Next(self->dict, &pos, &key, &value)) {
1993 /* do something interesting with the values... */
1994 ...
1995}
1996\end{verbatim}
1997
1998 The dictionary \var{p} should not be mutated during iteration. It
1999 is safe (since Python 2.1) to modify the values of the keys as you
2000 iterate over the dictionary, but only so long as the set of keys
2001 does not change. For example:
2002
2003\begin{verbatim}
2004PyObject *key, *value;
2005int pos = 0;
2006
2007while (PyDict_Next(self->dict, &pos, &key, &value)) {
2008 int i = PyInt_AS_LONG(value) + 1;
2009 PyObject *o = PyInt_FromLong(i);
2010 if (o == NULL)
2011 return -1;
2012 if (PyDict_SetItem(self->dict, key, o) < 0) {
2013 Py_DECREF(o);
2014 return -1;
2015 }
2016 Py_DECREF(o);
2017}
2018\end{verbatim}
2019\end{cfuncdesc}
2020
2021\begin{cfuncdesc}{int}{PyDict_Merge}{PyObject *a, PyObject *b, int override}
Tim Petersf582b822001-12-11 18:51:08 +00002022 Iterate over mapping object \var{b} adding key-value pairs to dictionary
2023 \var{a}.
2024 \var{b} may be a dictionary, or any object supporting
2025 \function{PyMapping_Keys()} and \function{PyObject_GetItem()}.
2026 If \var{override} is true, existing pairs in \var{a} will
Fred Drake3adf79e2001-10-12 19:01:43 +00002027 be replaced if a matching key is found in \var{b}, otherwise pairs
2028 will only be added if there is not a matching key in \var{a}.
Tim Petersf582b822001-12-11 18:51:08 +00002029 Return \code{0} on success or \code{-1} if an exception was
Fred Drake3adf79e2001-10-12 19:01:43 +00002030 raised.
2031\versionadded{2.2}
2032\end{cfuncdesc}
2033
2034\begin{cfuncdesc}{int}{PyDict_Update}{PyObject *a, PyObject *b}
2035 This is the same as \code{PyDict_Merge(\var{a}, \var{b}, 1)} in C,
Tim Petersf582b822001-12-11 18:51:08 +00002036 or \code{\var{a}.update(\var{b})} in Python. Return \code{0} on
Fred Drake3adf79e2001-10-12 19:01:43 +00002037 success or \code{-1} if an exception was raised.
2038 \versionadded{2.2}
2039\end{cfuncdesc}
2040
Tim Petersf582b822001-12-11 18:51:08 +00002041\begin{cfuncdesc}{int}{PyDict_MergeFromSeq2}{PyObject *a, PyObject *seq2,
2042 int override}
2043 Update or merge into dictionary \var{a}, from the key-value pairs in
2044 \var{seq2}. \var{seq2} must be an iterable object producing
2045 iterable objects of length 2, viewed as key-value pairs. In case of
2046 duplicate keys, the last wins if \var{override} is true, else the
2047 first wins.
2048 Return \code{0} on success or \code{-1} if an exception
2049 was raised.
2050 Equivalent Python (except for the return value):
2051
2052\begin{verbatim}
2053def PyDict_MergeFromSeq2(a, seq2, override):
2054 for key, value in seq2:
2055 if override or key not in a:
2056 a[key] = value
2057\end{verbatim}
2058
2059 \versionadded{2.2}
2060\end{cfuncdesc}
Fred Drake3adf79e2001-10-12 19:01:43 +00002061
Fred Drake54e62942001-12-11 19:40:16 +00002062
Fred Drake3adf79e2001-10-12 19:01:43 +00002063\section{Other Objects \label{otherObjects}}
2064
2065\subsection{File Objects \label{fileObjects}}
2066
2067\obindex{file}
2068Python's built-in file objects are implemented entirely on the
2069\ctype{FILE*} support from the C standard library. This is an
2070implementation detail and may change in future releases of Python.
2071
2072\begin{ctypedesc}{PyFileObject}
2073 This subtype of \ctype{PyObject} represents a Python file object.
2074\end{ctypedesc}
2075
2076\begin{cvardesc}{PyTypeObject}{PyFile_Type}
2077 This instance of \ctype{PyTypeObject} represents the Python file
2078 type. This is exposed to Python programs as \code{types.FileType}.
2079 \withsubitem{(in module types)}{\ttindex{FileType}}
2080\end{cvardesc}
2081
2082\begin{cfuncdesc}{int}{PyFile_Check}{PyObject *p}
2083 Returns true if its argument is a \ctype{PyFileObject} or a subtype
2084 of \ctype{PyFileObject}.
2085 \versionchanged[Allowed subtypes to be accepted]{2.2}
2086\end{cfuncdesc}
2087
2088\begin{cfuncdesc}{int}{PyFile_CheckExact}{PyObject *p}
2089 Returns true if its argument is a \ctype{PyFileObject}, but not a
2090 subtype of \ctype{PyFileObject}.
2091 \versionadded{2.2}
2092\end{cfuncdesc}
2093
2094\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *filename, char *mode}
2095 On success, returns a new file object that is opened on the file
2096 given by \var{filename}, with a file mode given by \var{mode}, where
2097 \var{mode} has the same semantics as the standard C routine
Tim Peters9ddf40b2004-06-20 22:41:32 +00002098 \cfunction{fopen()}\ttindex{fopen()}. On failure, returns \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002099\end{cfuncdesc}
2100
2101\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp,
2102 char *name, char *mode,
2103 int (*close)(FILE*)}
2104 Creates a new \ctype{PyFileObject} from the already-open standard C
2105 file pointer, \var{fp}. The function \var{close} will be called
2106 when the file should be closed. Returns \NULL{} on failure.
2107\end{cfuncdesc}
2108
2109\begin{cfuncdesc}{FILE*}{PyFile_AsFile}{PyFileObject *p}
2110 Returns the file object associated with \var{p} as a \ctype{FILE*}.
2111\end{cfuncdesc}
2112
2113\begin{cfuncdesc}{PyObject*}{PyFile_GetLine}{PyObject *p, int n}
2114 Equivalent to \code{\var{p}.readline(\optional{\var{n}})}, this
2115 function reads one line from the object \var{p}. \var{p} may be a
2116 file object or any object with a \method{readline()} method. If
2117 \var{n} is \code{0}, exactly one line is read, regardless of the
2118 length of the line. If \var{n} is greater than \code{0}, no more
2119 than \var{n} bytes will be read from the file; a partial line can be
2120 returned. In both cases, an empty string is returned if the end of
2121 the file is reached immediately. If \var{n} is less than \code{0},
2122 however, one line is read regardless of length, but
2123 \exception{EOFError} is raised if the end of the file is reached
2124 immediately.
2125 \withsubitem{(built-in exception)}{\ttindex{EOFError}}
2126\end{cfuncdesc}
2127
2128\begin{cfuncdesc}{PyObject*}{PyFile_Name}{PyObject *p}
2129 Returns the name of the file specified by \var{p} as a string
2130 object.
2131\end{cfuncdesc}
2132
2133\begin{cfuncdesc}{void}{PyFile_SetBufSize}{PyFileObject *p, int n}
2134 Available on systems with \cfunction{setvbuf()}\ttindex{setvbuf()}
2135 only. This should only be called immediately after file object
2136 creation.
2137\end{cfuncdesc}
2138
Martin v. Löwis5467d4c2003-05-10 07:10:12 +00002139\begin{cfuncdesc}{int}{PyFile_Encoding}{PyFileObject *p, char *enc}
2140 Set the file's encoding for Unicode output to \var{enc}. Return
2141 1 on success and 0 on failure.
2142 \versionadded{2.3}
2143\end{cfuncdesc}
2144
Fred Drake3adf79e2001-10-12 19:01:43 +00002145\begin{cfuncdesc}{int}{PyFile_SoftSpace}{PyObject *p, int newflag}
2146 This function exists for internal use by the interpreter. Sets the
2147 \member{softspace} attribute of \var{p} to \var{newflag} and
2148 \withsubitem{(file attribute)}{\ttindex{softspace}}returns the
2149 previous value. \var{p} does not have to be a file object for this
2150 function to work properly; any object is supported (thought its only
2151 interesting if the \member{softspace} attribute can be set). This
2152 function clears any errors, and will return \code{0} as the previous
2153 value if the attribute either does not exist or if there were errors
2154 in retrieving it. There is no way to detect errors from this
2155 function, but doing so should not be needed.
2156\end{cfuncdesc}
2157
2158\begin{cfuncdesc}{int}{PyFile_WriteObject}{PyObject *obj, PyFileObject *p,
2159 int flags}
2160 Writes object \var{obj} to file object \var{p}. The only supported
2161 flag for \var{flags} is
2162 \constant{Py_PRINT_RAW}\ttindex{Py_PRINT_RAW}; if given, the
2163 \function{str()} of the object is written instead of the
2164 \function{repr()}. Returns \code{0} on success or \code{-1} on
2165 failure; the appropriate exception will be set.
2166\end{cfuncdesc}
2167
Fred Drake454af892001-11-29 22:42:59 +00002168\begin{cfuncdesc}{int}{PyFile_WriteString}{const char *s, PyFileObject *p}
Fred Drake3adf79e2001-10-12 19:01:43 +00002169 Writes string \var{s} to file object \var{p}. Returns \code{0} on
2170 success or \code{-1} on failure; the appropriate exception will be
2171 set.
2172\end{cfuncdesc}
2173
2174
2175\subsection{Instance Objects \label{instanceObjects}}
2176
2177\obindex{instance}
2178There are very few functions specific to instance objects.
2179
2180\begin{cvardesc}{PyTypeObject}{PyInstance_Type}
2181 Type object for class instances.
2182\end{cvardesc}
2183
2184\begin{cfuncdesc}{int}{PyInstance_Check}{PyObject *obj}
2185 Returns true if \var{obj} is an instance.
2186\end{cfuncdesc}
2187
2188\begin{cfuncdesc}{PyObject*}{PyInstance_New}{PyObject *class,
2189 PyObject *arg,
2190 PyObject *kw}
2191 Create a new instance of a specific class. The parameters \var{arg}
2192 and \var{kw} are used as the positional and keyword parameters to
2193 the object's constructor.
2194\end{cfuncdesc}
2195
2196\begin{cfuncdesc}{PyObject*}{PyInstance_NewRaw}{PyObject *class,
2197 PyObject *dict}
2198 Create a new instance of a specific class without calling it's
2199 constructor. \var{class} is the class of new object. The
2200 \var{dict} parameter will be used as the object's \member{__dict__};
Tim Peters9ddf40b2004-06-20 22:41:32 +00002201 if \NULL{}, a new dictionary will be created for the instance.
Fred Drake3adf79e2001-10-12 19:01:43 +00002202\end{cfuncdesc}
2203
2204
2205\subsection{Method Objects \label{method-objects}}
2206
2207\obindex{method}
2208There are some useful functions that are useful for working with
2209method objects.
2210
2211\begin{cvardesc}{PyTypeObject}{PyMethod_Type}
2212 This instance of \ctype{PyTypeObject} represents the Python method
2213 type. This is exposed to Python programs as \code{types.MethodType}.
2214 \withsubitem{(in module types)}{\ttindex{MethodType}}
2215\end{cvardesc}
2216
2217\begin{cfuncdesc}{int}{PyMethod_Check}{PyObject *o}
2218 Return true if \var{o} is a method object (has type
Tim Peters9ddf40b2004-06-20 22:41:32 +00002219 \cdata{PyMethod_Type}). The parameter must not be \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002220\end{cfuncdesc}
2221
2222\begin{cfuncdesc}{PyObject*}{PyMethod_New}{PyObject *func.
2223 PyObject *self, PyObject *class}
2224 Return a new method object, with \var{func} being any callable
2225 object; this is the function that will be called when the method is
2226 called. If this method should be bound to an instance, \var{self}
2227 should be the instance and \var{class} should be the class of
2228 \var{self}, otherwise \var{self} should be \NULL{} and \var{class}
2229 should be the class which provides the unbound method..
2230\end{cfuncdesc}
2231
2232\begin{cfuncdesc}{PyObject*}{PyMethod_Class}{PyObject *meth}
2233 Return the class object from which the method \var{meth} was
2234 created; if this was created from an instance, it will be the class
2235 of the instance.
2236\end{cfuncdesc}
2237
2238\begin{cfuncdesc}{PyObject*}{PyMethod_GET_CLASS}{PyObject *meth}
2239 Macro version of \cfunction{PyMethod_Class()} which avoids error
2240 checking.
2241\end{cfuncdesc}
2242
2243\begin{cfuncdesc}{PyObject*}{PyMethod_Function}{PyObject *meth}
2244 Return the function object associated with the method \var{meth}.
2245\end{cfuncdesc}
2246
2247\begin{cfuncdesc}{PyObject*}{PyMethod_GET_FUNCTION}{PyObject *meth}
2248 Macro version of \cfunction{PyMethod_Function()} which avoids error
2249 checking.
2250\end{cfuncdesc}
2251
2252\begin{cfuncdesc}{PyObject*}{PyMethod_Self}{PyObject *meth}
2253 Return the instance associated with the method \var{meth} if it is
Tim Peters9ddf40b2004-06-20 22:41:32 +00002254 bound, otherwise return \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002255\end{cfuncdesc}
2256
2257\begin{cfuncdesc}{PyObject*}{PyMethod_GET_SELF}{PyObject *meth}
2258 Macro version of \cfunction{PyMethod_Self()} which avoids error
2259 checking.
2260\end{cfuncdesc}
2261
2262
2263\subsection{Module Objects \label{moduleObjects}}
2264
2265\obindex{module}
2266There are only a few functions special to module objects.
2267
2268\begin{cvardesc}{PyTypeObject}{PyModule_Type}
2269 This instance of \ctype{PyTypeObject} represents the Python module
2270 type. This is exposed to Python programs as
2271 \code{types.ModuleType}.
2272 \withsubitem{(in module types)}{\ttindex{ModuleType}}
2273\end{cvardesc}
2274
2275\begin{cfuncdesc}{int}{PyModule_Check}{PyObject *p}
2276 Returns true if \var{p} is a module object, or a subtype of a module
2277 object.
2278 \versionchanged[Allowed subtypes to be accepted]{2.2}
2279\end{cfuncdesc}
2280
2281\begin{cfuncdesc}{int}{PyModule_CheckExact}{PyObject *p}
2282 Returns true if \var{p} is a module object, but not a subtype of
2283 \cdata{PyModule_Type}.
2284 \versionadded{2.2}
2285\end{cfuncdesc}
2286
2287\begin{cfuncdesc}{PyObject*}{PyModule_New}{char *name}
2288 Return a new module object with the \member{__name__} attribute set
2289 to \var{name}. Only the module's \member{__doc__} and
2290 \member{__name__} attributes are filled in; the caller is
2291 responsible for providing a \member{__file__} attribute.
2292 \withsubitem{(module attribute)}{
2293 \ttindex{__name__}\ttindex{__doc__}\ttindex{__file__}}
2294\end{cfuncdesc}
2295
2296\begin{cfuncdesc}{PyObject*}{PyModule_GetDict}{PyObject *module}
2297 Return the dictionary object that implements \var{module}'s
2298 namespace; this object is the same as the \member{__dict__}
2299 attribute of the module object. This function never fails.
2300 \withsubitem{(module attribute)}{\ttindex{__dict__}}
Fred Drakef495ef72002-04-12 19:32:07 +00002301 It is recommended extensions use other \cfunction{PyModule_*()}
2302 and \cfunction{PyObject_*()} functions rather than directly
2303 manipulate a module's \member{__dict__}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002304\end{cfuncdesc}
2305
2306\begin{cfuncdesc}{char*}{PyModule_GetName}{PyObject *module}
2307 Return \var{module}'s \member{__name__} value. If the module does
2308 not provide one, or if it is not a string, \exception{SystemError}
2309 is raised and \NULL{} is returned.
2310 \withsubitem{(module attribute)}{\ttindex{__name__}}
2311 \withsubitem{(built-in exception)}{\ttindex{SystemError}}
2312\end{cfuncdesc}
2313
2314\begin{cfuncdesc}{char*}{PyModule_GetFilename}{PyObject *module}
2315 Return the name of the file from which \var{module} was loaded using
2316 \var{module}'s \member{__file__} attribute. If this is not defined,
2317 or if it is not a string, raise \exception{SystemError} and return
Tim Peters9ddf40b2004-06-20 22:41:32 +00002318 \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002319 \withsubitem{(module attribute)}{\ttindex{__file__}}
2320 \withsubitem{(built-in exception)}{\ttindex{SystemError}}
2321\end{cfuncdesc}
2322
2323\begin{cfuncdesc}{int}{PyModule_AddObject}{PyObject *module,
2324 char *name, PyObject *value}
2325 Add an object to \var{module} as \var{name}. This is a convenience
2326 function which can be used from the module's initialization
2327 function. This steals a reference to \var{value}. Returns
2328 \code{-1} on error, \code{0} on success.
2329 \versionadded{2.0}
2330\end{cfuncdesc}
2331
2332\begin{cfuncdesc}{int}{PyModule_AddIntConstant}{PyObject *module,
Martin v. Löwisdd07e592004-06-02 12:45:27 +00002333 char *name, long value}
Fred Drake3adf79e2001-10-12 19:01:43 +00002334 Add an integer constant to \var{module} as \var{name}. This
2335 convenience function can be used from the module's initialization
2336 function. Returns \code{-1} on error, \code{0} on success.
2337 \versionadded{2.0}
2338\end{cfuncdesc}
2339
2340\begin{cfuncdesc}{int}{PyModule_AddStringConstant}{PyObject *module,
2341 char *name, char *value}
2342 Add a string constant to \var{module} as \var{name}. This
2343 convenience function can be used from the module's initialization
2344 function. The string \var{value} must be null-terminated. Returns
2345 \code{-1} on error, \code{0} on success.
2346 \versionadded{2.0}
2347\end{cfuncdesc}
2348
2349
2350\subsection{Iterator Objects \label{iterator-objects}}
2351
2352Python provides two general-purpose iterator objects. The first, a
2353sequence iterator, works with an arbitrary sequence supporting the
2354\method{__getitem__()} method. The second works with a callable
2355object and a sentinel value, calling the callable for each item in the
2356sequence, and ending the iteration when the sentinel value is
2357returned.
2358
2359\begin{cvardesc}{PyTypeObject}{PySeqIter_Type}
2360 Type object for iterator objects returned by
2361 \cfunction{PySeqIter_New()} and the one-argument form of the
2362 \function{iter()} built-in function for built-in sequence types.
2363 \versionadded{2.2}
2364\end{cvardesc}
2365
2366\begin{cfuncdesc}{int}{PySeqIter_Check}{op}
2367 Return true if the type of \var{op} is \cdata{PySeqIter_Type}.
2368 \versionadded{2.2}
2369\end{cfuncdesc}
2370
2371\begin{cfuncdesc}{PyObject*}{PySeqIter_New}{PyObject *seq}
2372 Return an iterator that works with a general sequence object,
2373 \var{seq}. The iteration ends when the sequence raises
2374 \exception{IndexError} for the subscripting operation.
2375 \versionadded{2.2}
2376\end{cfuncdesc}
2377
2378\begin{cvardesc}{PyTypeObject}{PyCallIter_Type}
2379 Type object for iterator objects returned by
2380 \cfunction{PyCallIter_New()} and the two-argument form of the
2381 \function{iter()} built-in function.
2382 \versionadded{2.2}
2383\end{cvardesc}
2384
2385\begin{cfuncdesc}{int}{PyCallIter_Check}{op}
2386 Return true if the type of \var{op} is \cdata{PyCallIter_Type}.
2387 \versionadded{2.2}
2388\end{cfuncdesc}
2389
2390\begin{cfuncdesc}{PyObject*}{PyCallIter_New}{PyObject *callable,
2391 PyObject *sentinel}
2392 Return a new iterator. The first parameter, \var{callable}, can be
2393 any Python callable object that can be called with no parameters;
2394 each call to it should return the next item in the iteration. When
2395 \var{callable} returns a value equal to \var{sentinel}, the
2396 iteration will be terminated.
2397 \versionadded{2.2}
2398\end{cfuncdesc}
2399
2400
2401\subsection{Descriptor Objects \label{descriptor-objects}}
2402
Fred Drake54e62942001-12-11 19:40:16 +00002403``Descriptors'' are objects that describe some attribute of an object.
2404They are found in the dictionary of type objects.
2405
Fred Drake3adf79e2001-10-12 19:01:43 +00002406\begin{cvardesc}{PyTypeObject}{PyProperty_Type}
Fred Drake54e62942001-12-11 19:40:16 +00002407 The type object for the built-in descriptor types.
Fred Drake3adf79e2001-10-12 19:01:43 +00002408 \versionadded{2.2}
2409\end{cvardesc}
2410
2411\begin{cfuncdesc}{PyObject*}{PyDescr_NewGetSet}{PyTypeObject *type,
2412 PyGetSetDef *getset}
2413 \versionadded{2.2}
2414\end{cfuncdesc}
2415
2416\begin{cfuncdesc}{PyObject*}{PyDescr_NewMember}{PyTypeObject *type,
2417 PyMemberDef *meth}
2418 \versionadded{2.2}
2419\end{cfuncdesc}
2420
2421\begin{cfuncdesc}{PyObject*}{PyDescr_NewMethod}{PyTypeObject *type,
2422 PyMethodDef *meth}
2423 \versionadded{2.2}
2424\end{cfuncdesc}
2425
2426\begin{cfuncdesc}{PyObject*}{PyDescr_NewWrapper}{PyTypeObject *type,
2427 struct wrapperbase *wrapper,
2428 void *wrapped}
2429 \versionadded{2.2}
2430\end{cfuncdesc}
2431
Thomas Heller8178a222004-02-09 10:47:11 +00002432\begin{cfuncdesc}{PyObject*}{PyDescr_NewClassMethod}{PyTypeObject *type,
2433 PyMethodDef *method}
2434 \versionadded{2.3}
2435\end{cfuncdesc}
2436
Fred Drake3adf79e2001-10-12 19:01:43 +00002437\begin{cfuncdesc}{int}{PyDescr_IsData}{PyObject *descr}
2438 Returns true if the descriptor objects \var{descr} describes a data
2439 attribute, or false if it describes a method. \var{descr} must be a
2440 descriptor object; there is no error checking.
2441 \versionadded{2.2}
2442\end{cfuncdesc}
2443
2444\begin{cfuncdesc}{PyObject*}{PyWrapper_New}{PyObject *, PyObject *}
2445 \versionadded{2.2}
2446\end{cfuncdesc}
2447
2448
2449\subsection{Slice Objects \label{slice-objects}}
2450
2451\begin{cvardesc}{PyTypeObject}{PySlice_Type}
2452 The type object for slice objects. This is the same as
2453 \code{types.SliceType}.
2454 \withsubitem{(in module types)}{\ttindex{SliceType}}
2455\end{cvardesc}
2456
2457\begin{cfuncdesc}{int}{PySlice_Check}{PyObject *ob}
2458 Returns true if \var{ob} is a slice object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002459 \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002460\end{cfuncdesc}
2461
2462\begin{cfuncdesc}{PyObject*}{PySlice_New}{PyObject *start, PyObject *stop,
2463 PyObject *step}
2464 Return a new slice object with the given values. The \var{start},
2465 \var{stop}, and \var{step} parameters are used as the values of the
2466 slice object attributes of the same names. Any of the values may be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002467 \NULL{}, in which case the \code{None} will be used for the
Fred Drake3adf79e2001-10-12 19:01:43 +00002468 corresponding attribute. Returns \NULL{} if the new object could
2469 not be allocated.
2470\end{cfuncdesc}
2471
2472\begin{cfuncdesc}{int}{PySlice_GetIndices}{PySliceObject *slice, int length,
2473 int *start, int *stop, int *step}
Michael W. Hudson5efaf7e2002-06-11 10:55:12 +00002474Retrieve the start, stop and step indices from the slice object
2475\var{slice}, assuming a sequence of length \var{length}. Treats
2476indices greater than \var{length} as errors.
2477
2478Returns 0 on success and -1 on error with no exception set (unless one
2479of the indices was not \constant{None} and failed to be converted to
2480an integer, in which case -1 is returned with an exception set).
2481
2482You probably do not want to use this function. If you want to use
2483slice objects in versions of Python prior to 2.3, you would probably
2484do well to incorporate the source of \cfunction{PySlice_GetIndicesEx},
2485suitably renamed, in the source of your extension.
2486\end{cfuncdesc}
2487
2488\begin{cfuncdesc}{int}{PySlice_GetIndicesEx}{PySliceObject *slice, int length,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002489 int *start, int *stop, int *step,
Michael W. Hudson5efaf7e2002-06-11 10:55:12 +00002490 int *slicelength}
2491Usable replacement for \cfunction{PySlice_GetIndices}. Retrieve the
2492start, stop, and step indices from the slice object \var{slice}
2493assuming a sequence of length \var{length}, and store the length of
2494the slice in \var{slicelength}. Out of bounds indices are clipped in
2495a manner consistent with the handling of normal slices.
2496
2497Returns 0 on success and -1 on error with exception set.
2498
2499\versionadded{2.3}
Fred Drake3adf79e2001-10-12 19:01:43 +00002500\end{cfuncdesc}
2501
2502
2503\subsection{Weak Reference Objects \label{weakref-objects}}
2504
2505Python supports \emph{weak references} as first-class objects. There
2506are two specific object types which directly implement weak
2507references. The first is a simple reference object, and the second
2508acts as a proxy for the original object as much as it can.
2509
2510\begin{cfuncdesc}{int}{PyWeakref_Check}{ob}
2511 Return true if \var{ob} is either a reference or proxy object.
2512 \versionadded{2.2}
2513\end{cfuncdesc}
2514
2515\begin{cfuncdesc}{int}{PyWeakref_CheckRef}{ob}
2516 Return true if \var{ob} is a reference object.
2517 \versionadded{2.2}
2518\end{cfuncdesc}
2519
2520\begin{cfuncdesc}{int}{PyWeakref_CheckProxy}{ob}
2521 Return true if \var{ob} is a proxy object.
2522 \versionadded{2.2}
2523\end{cfuncdesc}
2524
2525\begin{cfuncdesc}{PyObject*}{PyWeakref_NewRef}{PyObject *ob,
2526 PyObject *callback}
2527 Return a weak reference object for the object \var{ob}. This will
2528 always return a new reference, but is not guaranteed to create a new
2529 object; an existing reference object may be returned. The second
2530 parameter, \var{callback}, can be a callable object that receives
2531 notification when \var{ob} is garbage collected; it should accept a
Raymond Hettinger5232f502004-03-25 08:51:36 +00002532 single parameter, which will be the weak reference object itself.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002533 \var{callback} may also be \code{None} or \NULL{}. If \var{ob}
Fred Drake3adf79e2001-10-12 19:01:43 +00002534 is not a weakly-referencable object, or if \var{callback} is not
Tim Peters9ddf40b2004-06-20 22:41:32 +00002535 callable, \code{None}, or \NULL{}, this will return \NULL{} and
Fred Drake3adf79e2001-10-12 19:01:43 +00002536 raise \exception{TypeError}.
2537 \versionadded{2.2}
2538\end{cfuncdesc}
2539
2540\begin{cfuncdesc}{PyObject*}{PyWeakref_NewProxy}{PyObject *ob,
2541 PyObject *callback}
2542 Return a weak reference proxy object for the object \var{ob}. This
2543 will always return a new reference, but is not guaranteed to create
2544 a new object; an existing proxy object may be returned. The second
2545 parameter, \var{callback}, can be a callable object that receives
2546 notification when \var{ob} is garbage collected; it should accept a
Raymond Hettinger5232f502004-03-25 08:51:36 +00002547 single parameter, which will be the weak reference object itself.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002548 \var{callback} may also be \code{None} or \NULL{}. If \var{ob} is not
Fred Drake3adf79e2001-10-12 19:01:43 +00002549 a weakly-referencable object, or if \var{callback} is not callable,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002550 \code{None}, or \NULL{}, this will return \NULL{} and raise
Fred Drake3adf79e2001-10-12 19:01:43 +00002551 \exception{TypeError}.
2552 \versionadded{2.2}
2553\end{cfuncdesc}
2554
2555\begin{cfuncdesc}{PyObject*}{PyWeakref_GetObject}{PyObject *ref}
2556 Returns the referenced object from a weak reference, \var{ref}. If
Ka-Ping Yeebd379e92003-03-28 18:07:16 +00002557 the referent is no longer live, returns \code{None}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002558 \versionadded{2.2}
2559\end{cfuncdesc}
2560
2561\begin{cfuncdesc}{PyObject*}{PyWeakref_GET_OBJECT}{PyObject *ref}
2562 Similar to \cfunction{PyWeakref_GetObject()}, but implemented as a
2563 macro that does no error checking.
2564 \versionadded{2.2}
2565\end{cfuncdesc}
2566
2567
2568\subsection{CObjects \label{cObjects}}
2569
2570\obindex{CObject}
2571Refer to \emph{Extending and Embedding the Python Interpreter},
Fred Drake54e62942001-12-11 19:40:16 +00002572section~1.12, ``Providing a C API for an Extension Module,'' for more
Fred Drake3adf79e2001-10-12 19:01:43 +00002573information on using these objects.
2574
2575
2576\begin{ctypedesc}{PyCObject}
2577 This subtype of \ctype{PyObject} represents an opaque value, useful
2578 for C extension modules who need to pass an opaque value (as a
2579 \ctype{void*} pointer) through Python code to other C code. It is
2580 often used to make a C function pointer defined in one module
2581 available to other modules, so the regular import mechanism can be
2582 used to access C APIs defined in dynamically loaded modules.
2583\end{ctypedesc}
2584
2585\begin{cfuncdesc}{int}{PyCObject_Check}{PyObject *p}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002586 Return true if its argument is a \ctype{PyCObject}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002587\end{cfuncdesc}
2588
Tim Petersf582b822001-12-11 18:51:08 +00002589\begin{cfuncdesc}{PyObject*}{PyCObject_FromVoidPtr}{void* cobj,
Fred Drake54e62942001-12-11 19:40:16 +00002590 void (*destr)(void *)}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002591 Create a \ctype{PyCObject} from the \code{void *}\var{cobj}. The
Fred Drake3adf79e2001-10-12 19:01:43 +00002592 \var{destr} function will be called when the object is reclaimed,
Tim Peters9ddf40b2004-06-20 22:41:32 +00002593 unless it is \NULL{}.
Fred Drake3adf79e2001-10-12 19:01:43 +00002594\end{cfuncdesc}
2595
2596\begin{cfuncdesc}{PyObject*}{PyCObject_FromVoidPtrAndDesc}{void* cobj,
2597 void* desc, void (*destr)(void *, void *)}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002598 Create a \ctype{PyCObject} from the \ctype{void *}\var{cobj}. The
Fred Drake3adf79e2001-10-12 19:01:43 +00002599 \var{destr} function will be called when the object is reclaimed.
2600 The \var{desc} argument can be used to pass extra callback data for
2601 the destructor function.
2602\end{cfuncdesc}
2603
2604\begin{cfuncdesc}{void*}{PyCObject_AsVoidPtr}{PyObject* self}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002605 Return the object \ctype{void *} that the \ctype{PyCObject}
Fred Drake3adf79e2001-10-12 19:01:43 +00002606 \var{self} was created with.
2607\end{cfuncdesc}
2608
2609\begin{cfuncdesc}{void*}{PyCObject_GetDesc}{PyObject* self}
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002610 Return the description \ctype{void *} that the \ctype{PyCObject}
Fred Drake3adf79e2001-10-12 19:01:43 +00002611 \var{self} was created with.
2612\end{cfuncdesc}
Fred Drakecd8474e2001-11-26 21:29:17 +00002613
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002614\begin{cfuncdesc}{int}{PyCObject_SetVoidPtr}{PyObject* self, void* cobj}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002615 Set the void pointer inside \var{self} to \var{cobj}.
Martin v. Löwis01a74b22003-10-19 18:30:01 +00002616 The \ctype{PyCObject} must not have an associated destructor.
2617 Return true on success, false on failure.
2618\end{cfuncdesc}
2619
Fred Drakecd8474e2001-11-26 21:29:17 +00002620
2621\subsection{Cell Objects \label{cell-objects}}
2622
2623``Cell'' objects are used to implement variables referenced by
2624multiple scopes. For each such variable, a cell object is created to
2625store the value; the local variables of each stack frame that
2626references the value contains a reference to the cells from outer
2627scopes which also use that variable. When the value is accessed, the
2628value contained in the cell is used instead of the cell object
2629itself. This de-referencing of the cell object requires support from
2630the generated byte-code; these are not automatically de-referenced
2631when accessed. Cell objects are not likely to be useful elsewhere.
2632
Fred Drake54e62942001-12-11 19:40:16 +00002633\begin{ctypedesc}{PyCellObject}
2634 The C structure used for cell objects.
2635\end{ctypedesc}
2636
Fred Drakecd8474e2001-11-26 21:29:17 +00002637\begin{cvardesc}{PyTypeObject}{PyCell_Type}
2638 The type object corresponding to cell objects
2639\end{cvardesc}
2640
2641\begin{cfuncdesc}{int}{PyCell_Check}{ob}
2642 Return true if \var{ob} is a cell object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002643 \NULL{}.
Fred Drakecd8474e2001-11-26 21:29:17 +00002644\end{cfuncdesc}
2645
2646\begin{cfuncdesc}{PyObject*}{PyCell_New}{PyObject *ob}
2647 Create and return a new cell object containing the value \var{ob}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002648 The parameter may be \NULL{}.
Fred Drakecd8474e2001-11-26 21:29:17 +00002649\end{cfuncdesc}
2650
2651\begin{cfuncdesc}{PyObject*}{PyCell_Get}{PyObject *cell}
2652 Return the contents of the cell \var{cell}.
2653\end{cfuncdesc}
2654
2655\begin{cfuncdesc}{PyObject*}{PyCell_GET}{PyObject *cell}
2656 Return the contents of the cell \var{cell}, but without checking
Raymond Hettingerf4bb1f92003-08-23 03:38:11 +00002657 that \var{cell} is non-\NULL{} and a cell object.
Fred Drakecd8474e2001-11-26 21:29:17 +00002658\end{cfuncdesc}
2659
2660\begin{cfuncdesc}{int}{PyCell_Set}{PyObject *cell, PyObject *value}
2661 Set the contents of the cell object \var{cell} to \var{value}. This
2662 releases the reference to any current content of the cell.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002663 \var{value} may be \NULL{}. \var{cell} must be non-\NULL{}; if it is
Fred Drakecd8474e2001-11-26 21:29:17 +00002664 not a cell object, \code{-1} will be returned. On success, \code{0}
2665 will be returned.
2666\end{cfuncdesc}
2667
2668\begin{cfuncdesc}{void}{PyCell_SET}{PyObject *cell, PyObject *value}
2669 Sets the value of the cell object \var{cell} to \var{value}. No
2670 reference counts are adjusted, and no checks are made for safety;
2671 \var{cell} must be non-\NULL{} and must be a cell object.
2672\end{cfuncdesc}
Martin v. Löwise440e472004-06-01 15:22:42 +00002673
2674
2675\subsection{Generator Objects \label{gen-objects}}
2676
2677Generator objects are what Python uses to implement generator iterators.
2678They are normally created by iterating over a function that yields values,
2679rather than explicitly calling \cfunction{PyGen_New}.
2680
2681\begin{ctypedesc}{PyGenObject}
2682 The C structure used for generator objects.
2683\end{ctypedesc}
2684
2685\begin{cvardesc}{PyTypeObject}{PyGen_Type}
2686 The type object corresponding to generator objects
2687\end{cvardesc}
2688
2689\begin{cfuncdesc}{int}{PyGen_Check}{ob}
2690 Return true if \var{ob} is a generator object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002691 \NULL{}.
Martin v. Löwise440e472004-06-01 15:22:42 +00002692\end{cfuncdesc}
2693
2694\begin{cfuncdesc}{int}{PyGen_CheckExact}{ob}
2695 Return true if \var{ob}'s type is \var{PyGen_Type}
2696 is a generator object; \var{ob} must not be
Tim Peters9ddf40b2004-06-20 22:41:32 +00002697 \NULL{}.
Martin v. Löwise440e472004-06-01 15:22:42 +00002698\end{cfuncdesc}
2699
2700\begin{cfuncdesc}{PyObject*}{PyGen_New}{PyFrameObject *frame}
2701 Create and return a new generator object based on the \var{frame} object.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002702 The parameter must not be \NULL{}.
2703\end{cfuncdesc}
2704
2705
2706\subsection{DateTime Objects \label{datetime-objects}}
2707
2708Various date and time objects are supplied by the \module{datetime}
2709module. Before using any of these functions, the header file
2710\file{datetime.h} must be included in your source (note that this is
2711not include by \file{Python.h}), and macro \cfunction{PyDateTime_IMPORT()}
2712must be invoked. The macro arranges to put a pointer to a C structure
2713in a static variable \code{PyDateTimeAPI}, which is used by the following
Tim Peters183dabc2004-07-11 19:26:19 +00002714macros.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002715
Tim Peters183dabc2004-07-11 19:26:19 +00002716Type-check macros:
2717
2718\begin{cfuncdesc}{int}{PyDate_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002719 Return true if \var{ob} is of type \cdata{PyDateTime_DateType} or
2720 a subtype of \cdata{PyDateTime_DateType}. \var{ob} must not be
2721 \NULL{}.
2722 \versionadded{2.4}
2723\end{cfuncdesc}
2724
Tim Peters183dabc2004-07-11 19:26:19 +00002725\begin{cfuncdesc}{int}{PyDate_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002726 Return true if \var{ob} is of type \cdata{PyDateTime_DateType}.
2727 \var{ob} must not be \NULL{}.
2728 \versionadded{2.4}
2729\end{cfuncdesc}
2730
Tim Peters183dabc2004-07-11 19:26:19 +00002731\begin{cfuncdesc}{int}{PyDateTime_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002732 Return true if \var{ob} is of type \cdata{PyDateTime_DateTimeType} or
2733 a subtype of \cdata{PyDateTime_DateTimeType}. \var{ob} must not be
2734 \NULL{}.
2735 \versionadded{2.4}
2736\end{cfuncdesc}
2737
Tim Peters183dabc2004-07-11 19:26:19 +00002738\begin{cfuncdesc}{int}{PyDateTime_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002739 Return true if \var{ob} is of type \cdata{PyDateTime_DateTimeType}.
2740 \var{ob} must not be \NULL{}.
2741 \versionadded{2.4}
2742\end{cfuncdesc}
2743
Tim Peters183dabc2004-07-11 19:26:19 +00002744\begin{cfuncdesc}{int}{PyTime_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002745 Return true if \var{ob} is of type \cdata{PyDateTime_TimeType} or
2746 a subtype of \cdata{PyDateTime_TimeType}. \var{ob} must not be
2747 \NULL{}.
2748 \versionadded{2.4}
2749\end{cfuncdesc}
2750
Tim Peters183dabc2004-07-11 19:26:19 +00002751\begin{cfuncdesc}{int}{PyTime_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002752 Return true if \var{ob} is of type \cdata{PyDateTime_TimeType}.
2753 \var{ob} must not be \NULL{}.
2754 \versionadded{2.4}
2755\end{cfuncdesc}
2756
Tim Peters183dabc2004-07-11 19:26:19 +00002757\begin{cfuncdesc}{int}{PyDelta_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002758 Return true if \var{ob} is of type \cdata{PyDateTime_DeltaType} or
2759 a subtype of \cdata{PyDateTime_DeltaType}. \var{ob} must not be
2760 \NULL{}.
2761 \versionadded{2.4}
2762\end{cfuncdesc}
2763
Tim Peters183dabc2004-07-11 19:26:19 +00002764\begin{cfuncdesc}{int}{PyDelta_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002765 Return true if \var{ob} is of type \cdata{PyDateTime_DeltaType}.
2766 \var{ob} must not be \NULL{}.
2767 \versionadded{2.4}
2768\end{cfuncdesc}
2769
Tim Peters183dabc2004-07-11 19:26:19 +00002770\begin{cfuncdesc}{int}{PyTZInfo_Check}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002771 Return true if \var{ob} is of type \cdata{PyDateTime_TZInfoType} or
2772 a subtype of \cdata{PyDateTime_TZInfoType}. \var{ob} must not be
2773 \NULL{}.
2774 \versionadded{2.4}
2775\end{cfuncdesc}
2776
Tim Peters183dabc2004-07-11 19:26:19 +00002777\begin{cfuncdesc}{int}{PyTZInfo_CheckExact}{PyObject *ob}
Tim Peters9ddf40b2004-06-20 22:41:32 +00002778 Return true if \var{ob} is of type \cdata{PyDateTime_TZInfoType}.
2779 \var{ob} must not be \NULL{}.
2780 \versionadded{2.4}
2781\end{cfuncdesc}
2782
Tim Peters183dabc2004-07-11 19:26:19 +00002783Macros to create objects:
2784
Tim Peters9ddf40b2004-06-20 22:41:32 +00002785\begin{cfuncdesc}{PyObject*}{PyDate_FromDate}{int year, int month, int day}
2786 Return a \code{datetime.date} object with the specified year, month
2787 and day.
2788 \versionadded{2.4}
2789\end{cfuncdesc}
2790
2791\begin{cfuncdesc}{PyObject*}{PyDate_FromDateAndTime}{int year, int month,
2792 int day, int hour, int minute, int second, int usecond}
2793 Return a \code{datetime.datetime} object with the specified year, month,
2794 day, hour, minute, second and microsecond.
2795 \versionadded{2.4}
2796\end{cfuncdesc}
2797
2798\begin{cfuncdesc}{PyObject*}{PyTime_FromTime}{int hour, int minute,
2799 int second, int usecond}
2800 Return a \code{datetime.time} object with the specified hour, minute,
2801 second and microsecond.
2802 \versionadded{2.4}
2803\end{cfuncdesc}
2804
2805\begin{cfuncdesc}{PyObject*}{PyDelta_FromDSU}{int days, int seconds,
2806 int useconds}
2807 Return a \code{datetime.timedelta} object representing the given number
2808 of days, seconds and microseconds. Normalization is performed so that
2809 the resulting number of microseconds and seconds lie in the ranges
2810 documented for \code{datetime.timedelta} objects.
2811 \versionadded{2.4}
2812\end{cfuncdesc}
2813
Tim Peters8ff9f9f2004-07-17 01:42:26 +00002814Macros to extract fields from date objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00002815instance of \cdata{PyDateTime_Date}, including subclasses (such as
2816\cdata{PyDateTime_DateTime}). The argument must not be \NULL{}, and
2817the type is not checked:
2818
2819\begin{cfuncdesc}{int}{PyDateTime_GET_YEAR}{PyDateTime_Date *o}
2820 Return the year, as a positive int.
2821 \versionadded{2.4}
2822\end{cfuncdesc}
2823
2824\begin{cfuncdesc}{int}{PyDateTime_GET_MONTH}{PyDateTime_Date *o}
2825 Return the month, as an int from 1 through 12.
2826 \versionadded{2.4}
2827\end{cfuncdesc}
2828
2829\begin{cfuncdesc}{int}{PyDateTime_GET_DAY}{PyDateTime_Date *o}
2830 Return the day, as an int from 1 through 31.
2831 \versionadded{2.4}
2832\end{cfuncdesc}
2833
Tim Peters8ff9f9f2004-07-17 01:42:26 +00002834Macros to extract fields from datetime objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00002835instance of \cdata{PyDateTime_DateTime}, including subclasses.
2836The argument must not be \NULL{}, and the type is not checked:
2837
2838\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_HOUR}{PyDateTime_DateTime *o}
Neal Norwitz7fdd92f2004-08-02 21:56:33 +00002839 Return the hour, as an int from 0 through 23.
Tim Peters183dabc2004-07-11 19:26:19 +00002840 \versionadded{2.4}
2841\end{cfuncdesc}
2842
2843\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_MINUTE}{PyDateTime_DateTime *o}
2844 Return the minute, as an int from 0 through 59.
2845 \versionadded{2.4}
2846\end{cfuncdesc}
2847
2848\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_SECOND}{PyDateTime_DateTime *o}
2849 Return the second, as an int from 0 through 59.
2850 \versionadded{2.4}
2851\end{cfuncdesc}
2852
2853\begin{cfuncdesc}{int}{PyDateTime_DATE_GET_MICROSECOND}{PyDateTime_DateTime *o}
2854 Return the microsecond, as an int from 0 through 999999.
2855 \versionadded{2.4}
2856\end{cfuncdesc}
2857
Tim Peters8ff9f9f2004-07-17 01:42:26 +00002858Macros to extract fields from time objects. The argument must be an
Tim Peters183dabc2004-07-11 19:26:19 +00002859instance of \cdata{PyDateTime_Time}, including subclasses.
2860The argument must not be \NULL{}, and the type is not checked:
2861
2862\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_HOUR}{PyDateTime_Time *o}
Neal Norwitz7fdd92f2004-08-02 21:56:33 +00002863 Return the hour, as an int from 0 through 23.
Tim Peters183dabc2004-07-11 19:26:19 +00002864 \versionadded{2.4}
2865\end{cfuncdesc}
2866
2867\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_MINUTE}{PyDateTime_Time *o}
2868 Return the minute, as an int from 0 through 59.
2869 \versionadded{2.4}
2870\end{cfuncdesc}
2871
2872\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_SECOND}{PyDateTime_Time *o}
2873 Return the second, as an int from 0 through 59.
2874 \versionadded{2.4}
2875\end{cfuncdesc}
2876
2877\begin{cfuncdesc}{int}{PyDateTime_TIME_GET_MICROSECOND}{PyDateTime_Time *o}
2878 Return the microsecond, as an int from 0 through 999999.
2879 \versionadded{2.4}
2880\end{cfuncdesc}
2881
2882Macros for the convenience of modules implementing the DB API:
2883
Tim Peters9ddf40b2004-06-20 22:41:32 +00002884\begin{cfuncdesc}{PyObject*}{PyDateTime_FromTimestamp}{PyObject *args}
2885 Create and return a new \code{datetime.datetime} object given an argument
2886 tuple suitable for passing to \code{datetime.datetime.fromtimestamp()}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002887 \versionadded{2.4}
2888\end{cfuncdesc}
2889
2890\begin{cfuncdesc}{PyObject*}{PyDate_FromTimestamp}{PyObject *args}
2891 Create and return a new \code{datetime.date} object given an argument
2892 tuple suitable for passing to \code{datetime.date.fromtimestamp()}.
Tim Peters9ddf40b2004-06-20 22:41:32 +00002893 \versionadded{2.4}
Martin v. Löwise440e472004-06-01 15:22:42 +00002894\end{cfuncdesc}