blob: 3f6e7d6c536245f56ada599d917f47d76879a575 [file] [log] [blame]
Fred Drake6659c301998-03-03 22:02:19 +00001\documentclass{manual}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00002
Guido van Rossum9faf4c51997-10-07 14:38:54 +00003\title{Python/C API Reference Manual}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00004
5\input{boilerplate}
6
7\makeindex % tell \index to actually write the .idx file
8
9
10\begin{document}
11
Guido van Rossum9231c8f1997-05-15 21:43:21 +000012\maketitle
13
Fred Drake9f86b661998-07-28 21:55:19 +000014\ifhtml
15\chapter*{Front Matter\label{front}}
16\fi
17
Guido van Rossum9231c8f1997-05-15 21:43:21 +000018\input{copyright}
19
20\begin{abstract}
21
22\noindent
Fred Drakee058b4f1998-02-16 06:15:35 +000023This manual documents the API used by \C{} (or \Cpp{}) programmers who
24want to write extension modules or embed Python. It is a companion to
25\emph{Extending and Embedding the Python Interpreter}, which describes
Guido van Rossum9231c8f1997-05-15 21:43:21 +000026the general principles of extension writing but does not document the
27API functions in detail.
28
Guido van Rossum5b8a5231997-12-30 04:38:44 +000029\strong{Warning:} The current version of this document is incomplete.
30I hope that it is nevertheless useful. I will continue to work on it,
31and release new versions from time to time, independent from Python
32source code releases.
33
Guido van Rossum9231c8f1997-05-15 21:43:21 +000034\end{abstract}
35
Fred Drake4d4f9e71998-01-13 22:25:02 +000036\tableofcontents
Guido van Rossum9231c8f1997-05-15 21:43:21 +000037
Guido van Rossum5060b3b1997-08-17 18:02:23 +000038% XXX Consider moving all this back to ext.tex and giving api.tex
39% XXX a *really* short intro only.
Guido van Rossum9231c8f1997-05-15 21:43:21 +000040
Fred Drakeefd146c1999-02-15 15:30:45 +000041\chapter{Introduction \label{intro}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +000042
Fred Drakeb0a78731998-01-13 18:51:10 +000043The Application Programmer's Interface to Python gives \C{} and \Cpp{}
Guido van Rossum59a61351997-08-14 20:34:33 +000044programmers access to the Python interpreter at a variety of levels.
Fred Drakeb0a78731998-01-13 18:51:10 +000045The API is equally usable from \Cpp{}, but for brevity it is generally
46referred to as the Python/\C{} API. There are two fundamentally
Fred Drakee058b4f1998-02-16 06:15:35 +000047different reasons for using the Python/\C{} API. The first reason is
48to write \emph{extension modules} for specific purposes; these are
49\C{} modules that extend the Python interpreter. This is probably the
50most common use. The second reason is to use Python as a component in
51a larger application; this technique is generally referred to as
52\dfn{embedding} Python in an application.
Guido van Rossum59a61351997-08-14 20:34:33 +000053
Guido van Rossum4a944d71997-08-14 20:35:38 +000054Writing an extension module is a relatively well-understood process,
55where a ``cookbook'' approach works well. There are several tools
56that automate the process to some extent. While people have embedded
57Python in other applications since its early existence, the process of
58embedding Python is less straightforward that writing an extension.
59Python 1.5 introduces a number of new API functions as well as some
60changes to the build process that make embedding much simpler.
Fred Drakec6fa34e1998-04-02 06:47:24 +000061This manual describes the \version\ state of affairs.
Guido van Rossum59a61351997-08-14 20:34:33 +000062% XXX Eventually, take the historical notes out
63
Guido van Rossum4a944d71997-08-14 20:35:38 +000064Many API functions are useful independent of whether you're embedding
65or extending Python; moreover, most applications that embed Python
66will need to provide a custom extension as well, so it's probably a
67good idea to become familiar with writing an extension before
Guido van Rossum59a61351997-08-14 20:34:33 +000068attempting to embed Python in a real application.
69
Fred Drakeefd146c1999-02-15 15:30:45 +000070
71\section{Include Files \label{includes}}
Guido van Rossum580aa8d1997-11-25 15:34:51 +000072
73All function, type and macro definitions needed to use the Python/C
74API are included in your code by the following line:
75
Fred Drakee058b4f1998-02-16 06:15:35 +000076\begin{verbatim}
77#include "Python.h"
78\end{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +000079
Fred Drakee058b4f1998-02-16 06:15:35 +000080This implies inclusion of the following standard headers:
81\code{<stdio.h>}, \code{<string.h>}, \code{<errno.h>}, and
82\code{<stdlib.h>} (if available).
Guido van Rossum580aa8d1997-11-25 15:34:51 +000083
84All user visible names defined by Python.h (except those defined by
Fred Drakee058b4f1998-02-16 06:15:35 +000085the included standard headers) have one of the prefixes \samp{Py} or
86\samp{_Py}. Names beginning with \samp{_Py} are for internal use
Guido van Rossum580aa8d1997-11-25 15:34:51 +000087only. Structure member names do not have a reserved prefix.
88
Fred Drakee058b4f1998-02-16 06:15:35 +000089\strong{Important:} user code should never define names that begin
90with \samp{Py} or \samp{_Py}. This confuses the reader, and
91jeopardizes the portability of the user code to future Python
92versions, which may define additional names beginning with one of
93these prefixes.
Guido van Rossum580aa8d1997-11-25 15:34:51 +000094
Fred Drakeefd146c1999-02-15 15:30:45 +000095
96\section{Objects, Types and Reference Counts \label{objects}}
Guido van Rossum59a61351997-08-14 20:34:33 +000097
Guido van Rossum580aa8d1997-11-25 15:34:51 +000098Most Python/C API functions have one or more arguments as well as a
Fred Drakef8830d11998-04-23 14:06:01 +000099return value of type \ctype{PyObject *}. This type is a pointer
Fred Drakee058b4f1998-02-16 06:15:35 +0000100to an opaque data type representing an arbitrary Python
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000101object. Since all Python object types are treated the same way by the
102Python language in most situations (e.g., assignments, scope rules,
103and argument passing), it is only fitting that they should be
Fred Drakeb0a78731998-01-13 18:51:10 +0000104represented by a single \C{} type. All Python objects live on the heap:
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000105you never declare an automatic or static variable of type
Fred Drakef8830d11998-04-23 14:06:01 +0000106\ctype{PyObject}, only pointer variables of type \ctype{PyObject *} can
Guido van Rossum59a61351997-08-14 20:34:33 +0000107be declared.
108
Fred Drakee058b4f1998-02-16 06:15:35 +0000109All Python objects (even Python integers) have a \dfn{type} and a
110\dfn{reference count}. An object's type determines what kind of object
Guido van Rossum4a944d71997-08-14 20:35:38 +0000111it is (e.g., an integer, a list, or a user-defined function; there are
Fred Drakee058b4f1998-02-16 06:15:35 +0000112many more as explained in the \emph{Python Reference Manual}). For
Guido van Rossum4a944d71997-08-14 20:35:38 +0000113each of the well-known types there is a macro to check whether an
Fred Drakee058b4f1998-02-16 06:15:35 +0000114object is of that type; for instance, \samp{PyList_Check(\var{a})} is
115true iff the object pointed to by \var{a} is a Python list.
Guido van Rossum59a61351997-08-14 20:34:33 +0000116
Fred Drakeefd146c1999-02-15 15:30:45 +0000117
118\subsection{Reference Counts \label{refcounts}}
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000119
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000120The reference count is important because today's computers have a
Fred Drake003d8da1998-04-13 00:53:42 +0000121finite (and often severely limited) memory size; it counts how many
Guido van Rossum4a944d71997-08-14 20:35:38 +0000122different places there are that have a reference to an object. Such a
Fred Drakeb0a78731998-01-13 18:51:10 +0000123place could be another object, or a global (or static) \C{} variable, or
124a local variable in some \C{} function. When an object's reference count
Guido van Rossum4a944d71997-08-14 20:35:38 +0000125becomes zero, the object is deallocated. If it contains references to
126other objects, their reference count is decremented. Those other
127objects may be deallocated in turn, if this decrement makes their
128reference count become zero, and so on. (There's an obvious problem
129with objects that reference each other here; for now, the solution is
Guido van Rossum59a61351997-08-14 20:34:33 +0000130``don't do that''.)
131
Guido van Rossum4a944d71997-08-14 20:35:38 +0000132Reference counts are always manipulated explicitly. The normal way is
Fred Drakee058b4f1998-02-16 06:15:35 +0000133to use the macro \cfunction{Py_INCREF()} to increment an object's
134reference count by one, and \cfunction{Py_DECREF()} to decrement it by
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000135one. The decref macro is considerably more complex than the incref one,
Guido van Rossum4a944d71997-08-14 20:35:38 +0000136since it must check whether the reference count becomes zero and then
137cause the object's deallocator, which is a function pointer contained
138in the object's type structure. The type-specific deallocator takes
139care of decrementing the reference counts for other objects contained
140in the object, and so on, if this is a compound object type such as a
141list. There's no chance that the reference count can overflow; at
142least as many bits are used to hold the reference count as there are
143distinct memory locations in virtual memory (assuming
144\code{sizeof(long) >= sizeof(char *)}). Thus, the reference count
Guido van Rossum59a61351997-08-14 20:34:33 +0000145increment is a simple operation.
146
Guido van Rossum4a944d71997-08-14 20:35:38 +0000147It is not necessary to increment an object's reference count for every
148local variable that contains a pointer to an object. In theory, the
Fred Drakee058b4f1998-02-16 06:15:35 +0000149object's reference count goes up by one when the variable is made to
Guido van Rossum4a944d71997-08-14 20:35:38 +0000150point to it and it goes down by one when the variable goes out of
151scope. However, these two cancel each other out, so at the end the
152reference count hasn't changed. The only real reason to use the
153reference count is to prevent the object from being deallocated as
154long as our variable is pointing to it. If we know that there is at
155least one other reference to the object that lives at least as long as
156our variable, there is no need to increment the reference count
157temporarily. An important situation where this arises is in objects
Fred Drakeb0a78731998-01-13 18:51:10 +0000158that are passed as arguments to \C{} functions in an extension module
Guido van Rossum4a944d71997-08-14 20:35:38 +0000159that are called from Python; the call mechanism guarantees to hold a
Guido van Rossum59a61351997-08-14 20:34:33 +0000160reference to every argument for the duration of the call.
161
Fred Drakee058b4f1998-02-16 06:15:35 +0000162However, a common pitfall is to extract an object from a list and
163hold on to it for a while without incrementing its reference count.
164Some other operation might conceivably remove the object from the
165list, decrementing its reference count and possible deallocating it.
166The real danger is that innocent-looking operations may invoke
167arbitrary Python code which could do this; there is a code path which
168allows control to flow back to the user from a \cfunction{Py_DECREF()},
169so almost any operation is potentially dangerous.
Guido van Rossum59a61351997-08-14 20:34:33 +0000170
Guido van Rossum4a944d71997-08-14 20:35:38 +0000171A safe approach is to always use the generic operations (functions
Fred Drakee058b4f1998-02-16 06:15:35 +0000172whose name begins with \samp{PyObject_}, \samp{PyNumber_},
173\samp{PySequence_} or \samp{PyMapping_}). These operations always
Guido van Rossum4a944d71997-08-14 20:35:38 +0000174increment the reference count of the object they return. This leaves
Fred Drakee058b4f1998-02-16 06:15:35 +0000175the caller with the responsibility to call \cfunction{Py_DECREF()}
176when they are done with the result; this soon becomes second nature.
Guido van Rossum59a61351997-08-14 20:34:33 +0000177
Fred Drakeefd146c1999-02-15 15:30:45 +0000178
179\subsubsection{Reference Count Details \label{refcountDetails}}
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000180
181The reference count behavior of functions in the Python/C API is best
182expelained in terms of \emph{ownership of references}. Note that we
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000183talk of owning references, never of owning objects; objects are always
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000184shared! When a function owns a reference, it has to dispose of it
Fred Drakee058b4f1998-02-16 06:15:35 +0000185properly --- either by passing ownership on (usually to its caller) or
186by calling \cfunction{Py_DECREF()} or \cfunction{Py_XDECREF()}. When
187a function passes ownership of a reference on to its caller, the
188caller is said to receive a \emph{new} reference. When no ownership
189is transferred, the caller is said to \emph{borrow} the reference.
190Nothing needs to be done for a borrowed reference.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000191
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000192Conversely, when calling a function passes it a reference to an
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000193object, there are two possibilities: the function \emph{steals} a
194reference to the object, or it does not. Few functions steal
Fred Drakee058b4f1998-02-16 06:15:35 +0000195references; the two notable exceptions are
196\cfunction{PyList_SetItem()} and \cfunction{PyTuple_SetItem()}, which
197steal a reference to the item (but not to the tuple or list into which
Fred Drake003d8da1998-04-13 00:53:42 +0000198the item is put!). These functions were designed to steal a reference
Fred Drakee058b4f1998-02-16 06:15:35 +0000199because of a common idiom for populating a tuple or list with newly
200created objects; for example, the code to create the tuple \code{(1,
2012, "three")} could look like this (forgetting about error handling for
202the moment; a better way to code this is shown below anyway):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000203
204\begin{verbatim}
205PyObject *t;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000206
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000207t = PyTuple_New(3);
208PyTuple_SetItem(t, 0, PyInt_FromLong(1L));
209PyTuple_SetItem(t, 1, PyInt_FromLong(2L));
210PyTuple_SetItem(t, 2, PyString_FromString("three"));
211\end{verbatim}
212
Fred Drakee058b4f1998-02-16 06:15:35 +0000213Incidentally, \cfunction{PyTuple_SetItem()} is the \emph{only} way to
214set tuple items; \cfunction{PySequence_SetItem()} and
215\cfunction{PyObject_SetItem()} refuse to do this since tuples are an
216immutable data type. You should only use
217\cfunction{PyTuple_SetItem()} for tuples that you are creating
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000218yourself.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000219
220Equivalent code for populating a list can be written using
Fred Drakee058b4f1998-02-16 06:15:35 +0000221\cfunction{PyList_New()} and \cfunction{PyList_SetItem()}. Such code
222can also use \cfunction{PySequence_SetItem()}; this illustrates the
223difference between the two (the extra \cfunction{Py_DECREF()} calls):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000224
225\begin{verbatim}
226PyObject *l, *x;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000227
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000228l = PyList_New(3);
229x = PyInt_FromLong(1L);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000230PySequence_SetItem(l, 0, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000231x = PyInt_FromLong(2L);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000232PySequence_SetItem(l, 1, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000233x = PyString_FromString("three");
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000234PySequence_SetItem(l, 2, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000235\end{verbatim}
236
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000237You might find it strange that the ``recommended'' approach takes more
238code. However, in practice, you will rarely use these ways of
239creating and populating a tuple or list. There's a generic function,
Fred Drakee058b4f1998-02-16 06:15:35 +0000240\cfunction{Py_BuildValue()}, that can create most common objects from
241\C{} values, directed by a \dfn{format string}. For example, the
242above two blocks of code could be replaced by the following (which
243also takes care of the error checking):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000244
245\begin{verbatim}
246PyObject *t, *l;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000247
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000248t = Py_BuildValue("(iis)", 1, 2, "three");
249l = Py_BuildValue("[iis]", 1, 2, "three");
250\end{verbatim}
251
Fred Drakee058b4f1998-02-16 06:15:35 +0000252It is much more common to use \cfunction{PyObject_SetItem()} and
253friends with items whose references you are only borrowing, like
254arguments that were passed in to the function you are writing. In
255that case, their behaviour regarding reference counts is much saner,
256since you don't have to increment a reference count so you can give a
257reference away (``have it be stolen''). For example, this function
258sets all items of a list (actually, any mutable sequence) to a given
259item:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000260
261\begin{verbatim}
262int set_all(PyObject *target, PyObject *item)
263{
264 int i, n;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000265
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000266 n = PyObject_Length(target);
267 if (n < 0)
268 return -1;
269 for (i = 0; i < n; i++) {
270 if (PyObject_SetItem(target, i, item) < 0)
271 return -1;
272 }
273 return 0;
274}
275\end{verbatim}
276
277The situation is slightly different for function return values.
278While passing a reference to most functions does not change your
279ownership responsibilities for that reference, many functions that
280return a referece to an object give you ownership of the reference.
281The reason is simple: in many cases, the returned object is created
282on the fly, and the reference you get is the only reference to the
Fred Drakee058b4f1998-02-16 06:15:35 +0000283object. Therefore, the generic functions that return object
284references, like \cfunction{PyObject_GetItem()} and
285\cfunction{PySequence_GetItem()}, always return a new reference (i.e.,
286the caller becomes the owner of the reference).
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000287
288It is important to realize that whether you own a reference returned
Fred Drakee058b4f1998-02-16 06:15:35 +0000289by a function depends on which function you call only --- \emph{the
290plumage} (i.e., the type of the type of the object passed as an
291argument to the function) \emph{doesn't enter into it!} Thus, if you
292extract an item from a list using \cfunction{PyList_GetItem()}, you
293don't own the reference --- but if you obtain the same item from the
294same list using \cfunction{PySequence_GetItem()} (which happens to
295take exactly the same arguments), you do own a reference to the
296returned object.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000297
Fred Drakee058b4f1998-02-16 06:15:35 +0000298Here is an example of how you could write a function that computes the
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000299sum of the items in a list of integers; once using
Fred Drakee058b4f1998-02-16 06:15:35 +0000300\cfunction{PyList_GetItem()}, once using
301\cfunction{PySequence_GetItem()}.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000302
303\begin{verbatim}
304long sum_list(PyObject *list)
305{
306 int i, n;
307 long total = 0;
308 PyObject *item;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000309
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000310 n = PyList_Size(list);
311 if (n < 0)
312 return -1; /* Not a list */
313 for (i = 0; i < n; i++) {
314 item = PyList_GetItem(list, i); /* Can't fail */
315 if (!PyInt_Check(item)) continue; /* Skip non-integers */
316 total += PyInt_AsLong(item);
317 }
318 return total;
319}
320\end{verbatim}
321
322\begin{verbatim}
323long sum_sequence(PyObject *sequence)
324{
325 int i, n;
326 long total = 0;
327 PyObject *item;
328 n = PyObject_Size(list);
329 if (n < 0)
330 return -1; /* Has no length */
331 for (i = 0; i < n; i++) {
332 item = PySequence_GetItem(list, i);
333 if (item == NULL)
334 return -1; /* Not a sequence, or other failure */
335 if (PyInt_Check(item))
336 total += PyInt_AsLong(item);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000337 Py_DECREF(item); /* Discard reference ownership */
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000338 }
339 return total;
340}
341\end{verbatim}
342
Fred Drakeefd146c1999-02-15 15:30:45 +0000343
344\subsection{Types \label{types}}
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000345
346There are few other data types that play a significant role in
Fred Drakef8830d11998-04-23 14:06:01 +0000347the Python/C API; most are simple \C{} types such as \ctype{int},
348\ctype{long}, \ctype{double} and \ctype{char *}. A few structure types
Guido van Rossum4a944d71997-08-14 20:35:38 +0000349are used to describe static tables used to list the functions exported
350by a module or the data attributes of a new object type. These will
Guido van Rossum59a61351997-08-14 20:34:33 +0000351be discussed together with the functions that use them.
352
Fred Drakeefd146c1999-02-15 15:30:45 +0000353
354\section{Exceptions \label{exceptions}}
Guido van Rossum59a61351997-08-14 20:34:33 +0000355
Guido van Rossum4a944d71997-08-14 20:35:38 +0000356The Python programmer only needs to deal with exceptions if specific
357error handling is required; unhandled exceptions are automatically
358propagated to the caller, then to the caller's caller, and so on, till
359they reach the top-level interpreter, where they are reported to the
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000360user accompanied by a stack traceback.
Guido van Rossum59a61351997-08-14 20:34:33 +0000361
Fred Drakeb0a78731998-01-13 18:51:10 +0000362For \C{} programmers, however, error checking always has to be explicit.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000363All functions in the Python/C API can raise exceptions, unless an
364explicit claim is made otherwise in a function's documentation. In
365general, when a function encounters an error, it sets an exception,
366discards any object references that it owns, and returns an
Fred Drakee058b4f1998-02-16 06:15:35 +0000367error indicator --- usually \NULL{} or \code{-1}. A few functions
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000368return a Boolean true/false result, with false indicating an error.
369Very few functions return no explicit error indicator or have an
370ambiguous return value, and require explicit testing for errors with
Fred Drakee058b4f1998-02-16 06:15:35 +0000371\cfunction{PyErr_Occurred()}.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000372
373Exception state is maintained in per-thread storage (this is
374equivalent to using global storage in an unthreaded application). A
Fred Drakec6fa34e1998-04-02 06:47:24 +0000375thread can be in one of two states: an exception has occurred, or not.
Fred Drakee058b4f1998-02-16 06:15:35 +0000376The function \cfunction{PyErr_Occurred()} can be used to check for
377this: it returns a borrowed reference to the exception type object
378when an exception has occurred, and \NULL{} otherwise. There are a
379number of functions to set the exception state:
380\cfunction{PyErr_SetString()} is the most common (though not the most
381general) function to set the exception state, and
382\cfunction{PyErr_Clear()} clears the exception state.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000383
384The full exception state consists of three objects (all of which can
Fred Drakee058b4f1998-02-16 06:15:35 +0000385be \NULL{}): the exception type, the corresponding exception
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000386value, and the traceback. These have the same meanings as the Python
387object \code{sys.exc_type}, \code{sys.exc_value},
388\code{sys.exc_traceback}; however, they are not the same: the Python
389objects represent the last exception being handled by a Python
Fred Drakee058b4f1998-02-16 06:15:35 +0000390\keyword{try} \ldots\ \keyword{except} statement, while the \C{} level
391exception state only exists while an exception is being passed on
392between \C{} functions until it reaches the Python interpreter, which
393takes care of transferring it to \code{sys.exc_type} and friends.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000394
Fred Drakec6fa34e1998-04-02 06:47:24 +0000395Note that starting with Python 1.5, the preferred, thread-safe way to
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000396access the exception state from Python code is to call the function
Fred Drakee058b4f1998-02-16 06:15:35 +0000397\function{sys.exc_info()}, which returns the per-thread exception state
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000398for Python code. Also, the semantics of both ways to access the
399exception state have changed so that a function which catches an
400exception will save and restore its thread's exception state so as to
401preserve the exception state of its caller. This prevents common bugs
402in exception handling code caused by an innocent-looking function
403overwriting the exception being handled; it also reduces the often
404unwanted lifetime extension for objects that are referenced by the
Fred Drakec6fa34e1998-04-02 06:47:24 +0000405stack frames in the traceback.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000406
407As a general principle, a function that calls another function to
408perform some task should check whether the called function raised an
409exception, and if so, pass the exception state on to its caller. It
Fred Drakee058b4f1998-02-16 06:15:35 +0000410should discard any object references that it owns, and returns an
411error indicator, but it should \emph{not} set another exception ---
412that would overwrite the exception that was just raised, and lose
413important information about the exact cause of the error.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000414
415A simple example of detecting exceptions and passing them on is shown
Fred Drakee058b4f1998-02-16 06:15:35 +0000416in the \cfunction{sum_sequence()} example above. It so happens that
417that example doesn't need to clean up any owned references when it
418detects an error. The following example function shows some error
419cleanup. First, to remind you why you like Python, we show the
420equivalent Python code:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000421
422\begin{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000423def incr_item(dict, key):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000424 try:
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000425 item = dict[key]
426 except KeyError:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000427 item = 0
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000428 return item + 1
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000429\end{verbatim}
430
Fred Drakeb0a78731998-01-13 18:51:10 +0000431Here is the corresponding \C{} code, in all its glory:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000432
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000433\begin{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000434int incr_item(PyObject *dict, PyObject *key)
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000435{
436 /* Objects all initialized to NULL for Py_XDECREF */
437 PyObject *item = NULL, *const_one = NULL, *incremented_item = NULL;
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000438 int rv = -1; /* Return value initialized to -1 (failure) */
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000439
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000440 item = PyObject_GetItem(dict, key);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000441 if (item == NULL) {
Fred Drakec6fa34e1998-04-02 06:47:24 +0000442 /* Handle KeyError only: */
443 if (!PyErr_ExceptionMatches(PyExc_KeyError)) goto error;
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000444
445 /* Clear the error and use zero: */
446 PyErr_Clear();
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000447 item = PyInt_FromLong(0L);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000448 if (item == NULL) goto error;
449 }
450
451 const_one = PyInt_FromLong(1L);
452 if (const_one == NULL) goto error;
453
454 incremented_item = PyNumber_Add(item, const_one);
455 if (incremented_item == NULL) goto error;
456
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000457 if (PyObject_SetItem(dict, key, incremented_item) < 0) goto error;
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000458 rv = 0; /* Success */
459 /* Continue with cleanup code */
460
461 error:
462 /* Cleanup code, shared by success and failure path */
463
464 /* Use Py_XDECREF() to ignore NULL references */
465 Py_XDECREF(item);
466 Py_XDECREF(const_one);
467 Py_XDECREF(incremented_item);
468
469 return rv; /* -1 for error, 0 for success */
470}
471\end{verbatim}
472
Fred Drakef8830d11998-04-23 14:06:01 +0000473This example represents an endorsed use of the \keyword{goto} statement
Fred Drakee058b4f1998-02-16 06:15:35 +0000474in \C{}! It illustrates the use of
475\cfunction{PyErr_ExceptionMatches()} and \cfunction{PyErr_Clear()} to
476handle specific exceptions, and the use of \cfunction{Py_XDECREF()} to
477dispose of owned references that may be \NULL{} (note the \samp{X} in
478the name; \cfunction{Py_DECREF()} would crash when confronted with a
479\NULL{} reference). It is important that the variables used to hold
480owned references are initialized to \NULL{} for this to work;
481likewise, the proposed return value is initialized to \code{-1}
482(failure) and only set to success after the final call made is
483successful.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000484
Guido van Rossum59a61351997-08-14 20:34:33 +0000485
Fred Drakeefd146c1999-02-15 15:30:45 +0000486\section{Embedding Python \label{embedding}}
Guido van Rossum59a61351997-08-14 20:34:33 +0000487
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000488The one important task that only embedders (as opposed to extension
489writers) of the Python interpreter have to worry about is the
490initialization, and possibly the finalization, of the Python
491interpreter. Most functionality of the interpreter can only be used
492after the interpreter has been initialized.
Guido van Rossum59a61351997-08-14 20:34:33 +0000493
Fred Drakee058b4f1998-02-16 06:15:35 +0000494The basic initialization function is \cfunction{Py_Initialize()}.
495This initializes the table of loaded modules, and creates the
Fred Drake4de05a91998-02-16 14:25:26 +0000496fundamental modules \module{__builtin__}\refbimodindex{__builtin__},
497\module{__main__}\refbimodindex{__main__} and
498\module{sys}\refbimodindex{sys}. It also initializes the module
Fred Drakec6fa34e1998-04-02 06:47:24 +0000499search path (\code{sys.path}).%
500\indexiii{module}{search}{path}
Guido van Rossum59a61351997-08-14 20:34:33 +0000501
Fred Drakee058b4f1998-02-16 06:15:35 +0000502\cfunction{Py_Initialize()} does not set the ``script argument list''
Guido van Rossum4a944d71997-08-14 20:35:38 +0000503(\code{sys.argv}). If this variable is needed by Python code that
504will be executed later, it must be set explicitly with a call to
505\code{PySys_SetArgv(\var{argc}, \var{argv})} subsequent to the call
Fred Drakee058b4f1998-02-16 06:15:35 +0000506to \cfunction{Py_Initialize()}.
Guido van Rossum59a61351997-08-14 20:34:33 +0000507
Fred Drakeb0a78731998-01-13 18:51:10 +0000508On most systems (in particular, on \UNIX{} and Windows, although the
Fred Drakee058b4f1998-02-16 06:15:35 +0000509details are slightly different), \cfunction{Py_Initialize()}
510calculates the module search path based upon its best guess for the
511location of the standard Python interpreter executable, assuming that
512the Python library is found in a fixed location relative to the Python
Guido van Rossum42cefd01997-10-05 15:27:29 +0000513interpreter executable. In particular, it looks for a directory named
Fred Drake2de75ec1998-04-09 14:12:11 +0000514\file{lib/python1.5} (replacing \file{1.5} with the current
Guido van Rossum42cefd01997-10-05 15:27:29 +0000515interpreter version) relative to the parent directory where the
Fred Drakee058b4f1998-02-16 06:15:35 +0000516executable named \file{python} is found on the shell command search
Fred Drakec6fa34e1998-04-02 06:47:24 +0000517path (the environment variable \envvar{PATH}).
Guido van Rossum42cefd01997-10-05 15:27:29 +0000518
519For instance, if the Python executable is found in
Fred Drakee058b4f1998-02-16 06:15:35 +0000520\file{/usr/local/bin/python}, it will assume that the libraries are in
Fred Drake2de75ec1998-04-09 14:12:11 +0000521\file{/usr/local/lib/python1.5}. (In fact, this particular path
Fred Drakee058b4f1998-02-16 06:15:35 +0000522is also the ``fallback'' location, used when no executable file named
Fred Drakec6fa34e1998-04-02 06:47:24 +0000523\file{python} is found along \envvar{PATH}.) The user can override
524this behavior by setting the environment variable \envvar{PYTHONHOME},
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000525or insert additional directories in front of the standard path by
Fred Drakec6fa34e1998-04-02 06:47:24 +0000526setting \envvar{PYTHONPATH}.
Guido van Rossum59a61351997-08-14 20:34:33 +0000527
Guido van Rossum4a944d71997-08-14 20:35:38 +0000528The embedding application can steer the search by calling
529\code{Py_SetProgramName(\var{file})} \emph{before} calling
Fred Drakec6fa34e1998-04-02 06:47:24 +0000530\cfunction{Py_Initialize()}. Note that \envvar{PYTHONHOME} still
531overrides this and \envvar{PYTHONPATH} is still inserted in front of
Fred Drakee058b4f1998-02-16 06:15:35 +0000532the standard path. An application that requires total control has to
533provide its own implementation of \cfunction{Py_GetPath()},
534\cfunction{Py_GetPrefix()}, \cfunction{Py_GetExecPrefix()},
535\cfunction{Py_GetProgramFullPath()} (all defined in
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000536\file{Modules/getpath.c}).
Guido van Rossum59a61351997-08-14 20:34:33 +0000537
Guido van Rossum4a944d71997-08-14 20:35:38 +0000538Sometimes, it is desirable to ``uninitialize'' Python. For instance,
539the application may want to start over (make another call to
Fred Drakee058b4f1998-02-16 06:15:35 +0000540\cfunction{Py_Initialize()}) or the application is simply done with its
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000541use of Python and wants to free all memory allocated by Python. This
Fred Drakee058b4f1998-02-16 06:15:35 +0000542can be accomplished by calling \cfunction{Py_Finalize()}. The function
543\cfunction{Py_IsInitialized()} returns true iff Python is currently in the
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000544initialized state. More information about these functions is given in
545a later chapter.
Guido van Rossum59a61351997-08-14 20:34:33 +0000546
Guido van Rossum4a944d71997-08-14 20:35:38 +0000547
Fred Drakeefd146c1999-02-15 15:30:45 +0000548\chapter{The Very High Level Layer \label{veryhigh}}
Guido van Rossum4a944d71997-08-14 20:35:38 +0000549
Fred Drakee5bf8b21998-02-12 21:22:28 +0000550The functions in this chapter will let you execute Python source code
551given in a file or a buffer, but they will not let you interact in a
552more detailed way with the interpreter.
Guido van Rossum4a944d71997-08-14 20:35:38 +0000553
Fred Drakec6fa34e1998-04-02 06:47:24 +0000554\begin{cfuncdesc}{int}{PyRun_AnyFile}{FILE *fp, char *filename}
Fred Drake0041a941999-04-29 04:20:46 +0000555 If \var{fp} refers to a file associated with an interactive device
556 (console or terminal input or \UNIX{} pseudo-terminal), return the
557 value of \cfunction{PyRun_InteractiveLoop()}, otherwise return the
558 result of \cfunction{PyRun_SimpleFile()}. If \var{filename} is
559 \NULL{}, use \code{"???"} as the filename.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000560\end{cfuncdesc}
561
Fred Drakec6fa34e1998-04-02 06:47:24 +0000562\begin{cfuncdesc}{int}{PyRun_SimpleString}{char *command}
Fred Drake0041a941999-04-29 04:20:46 +0000563 Executes the Python source code from \var{command} in the
564 \module{__main__} module. If \module{__main__} does not already
565 exist, it is created. Returns \code{0} on success or \code{-1} if
566 an exception was raised. If there was an error, there is no way to
567 get the exception information.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000568\end{cfuncdesc}
569
Fred Drakec6fa34e1998-04-02 06:47:24 +0000570\begin{cfuncdesc}{int}{PyRun_SimpleFile}{FILE *fp, char *filename}
Fred Drake0041a941999-04-29 04:20:46 +0000571 Similar to \cfunction{PyRun_SimpleString()}, but the Python source
572 code is read from \var{fp} instead of an in-memory string.
573 \var{filename} should be the name of the file.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000574\end{cfuncdesc}
575
Fred Drakec6fa34e1998-04-02 06:47:24 +0000576\begin{cfuncdesc}{int}{PyRun_InteractiveOne}{FILE *fp, char *filename}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000577\end{cfuncdesc}
578
Fred Drakec6fa34e1998-04-02 06:47:24 +0000579\begin{cfuncdesc}{int}{PyRun_InteractiveLoop}{FILE *fp, char *filename}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000580\end{cfuncdesc}
581
Fred Drakec6fa34e1998-04-02 06:47:24 +0000582\begin{cfuncdesc}{struct _node*}{PyParser_SimpleParseString}{char *str,
583 int start}
Fred Drake0041a941999-04-29 04:20:46 +0000584 Parse Python source code from \var{str} using the start token
585 \var{start}. The result can be used to create a code object which
586 can be evaluated efficiently. This is useful if a code fragment
587 must be evaluated many times.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000588\end{cfuncdesc}
589
Fred Drakec6fa34e1998-04-02 06:47:24 +0000590\begin{cfuncdesc}{struct _node*}{PyParser_SimpleParseFile}{FILE *fp,
591 char *filename, int start}
Fred Drake0041a941999-04-29 04:20:46 +0000592 Similar to \cfunction{PyParser_SimpleParseString()}, but the Python
593 source code is read from \var{fp} instead of an in-memory string.
594 \var{filename} should be the name of the file.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000595\end{cfuncdesc}
596
Fred Drakec6fa34e1998-04-02 06:47:24 +0000597\begin{cfuncdesc}{PyObject*}{PyRun_String}{char *str, int start,
598 PyObject *globals,
599 PyObject *locals}
Fred Drake0041a941999-04-29 04:20:46 +0000600 Execute Python source code from \var{str} in the context specified
601 by the dictionaries \var{globals} and \var{locals}. The parameter
602 \var{start} specifies the start token that should be used to parse
603 the source code.
604
605 Returns the result of executing the code as a Python object, or
606 \NULL{} if an exception was raised.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000607\end{cfuncdesc}
608
Fred Drakec6fa34e1998-04-02 06:47:24 +0000609\begin{cfuncdesc}{PyObject*}{PyRun_File}{FILE *fp, char *filename,
610 int start, PyObject *globals,
611 PyObject *locals}
Fred Drake0041a941999-04-29 04:20:46 +0000612 Similar to \cfunction{PyRun_String()}, but the Python source code is
613 read from \var{fp} instead of an in-memory string. \var{filename}
614 should be the name of the file.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000615\end{cfuncdesc}
616
Fred Drakec6fa34e1998-04-02 06:47:24 +0000617\begin{cfuncdesc}{PyObject*}{Py_CompileString}{char *str, char *filename,
618 int start}
Fred Drake0041a941999-04-29 04:20:46 +0000619 Parse and compile the Python source code in \var{str}, returning the
620 resulting code object. The start token is given by \var{start};
Fred Drakec924b8d1999-08-23 18:57:25 +0000621 this can be used to constrain the code which can be compiled and should
622 be \constant{Py_eval_input}, \constant{Py_file_input}, or
623 \constant{Py_single_input}. The filename specified by
624 \var{filename} is used to construct the code object and may appear
625 in tracebacks or \exception{SyntaxError} exception messages. This
626 returns \NULL{} if the code cannot be parsed or compiled.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000627\end{cfuncdesc}
628
Fred Drakec924b8d1999-08-23 18:57:25 +0000629\begin{cvardesc}{int}{Py_eval_input}
630 The start symbol from the Python grammar for isolated expressions;
631 for use with \cfunction{Py_CompileString()}.
632\end{cvardesc}
633
634\begin{cvardesc}{int}{Py_file_input}
635 The start symbol from the Python grammar for sequences of statements
636 as read from a file or other source; for use with
637 \cfunction{Py_CompileString()}. This is the symbol to use when
638 compiling arbitrarily long Python source code.
639\end{cvardesc}
640
641\begin{cvardesc}{int}{Py_single_input}
642 The start symbol from the Python grammar for a single statement; for
643 use with \cfunction{Py_CompileString()}. This is the symbol used
644 for the interactive interpreter loop.
645\end{cvardesc}
646
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000647
Fred Drakeefd146c1999-02-15 15:30:45 +0000648\chapter{Reference Counting \label{countingRefs}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000649
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000650The macros in this section are used for managing reference counts
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000651of Python objects.
652
653\begin{cfuncdesc}{void}{Py_INCREF}{PyObject *o}
Fred Drakec6fa34e1998-04-02 06:47:24 +0000654Increment the reference count for object \var{o}. The object must
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000655not be \NULL{}; if you aren't sure that it isn't \NULL{}, use
Fred Drakee058b4f1998-02-16 06:15:35 +0000656\cfunction{Py_XINCREF()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000657\end{cfuncdesc}
658
659\begin{cfuncdesc}{void}{Py_XINCREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000660Increment the reference count for object \var{o}. The object may be
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000661\NULL{}, in which case the macro has no effect.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000662\end{cfuncdesc}
663
664\begin{cfuncdesc}{void}{Py_DECREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000665Decrement the reference count for object \var{o}. The object must
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000666not be \NULL{}; if you aren't sure that it isn't \NULL{}, use
Fred Drakee058b4f1998-02-16 06:15:35 +0000667\cfunction{Py_XDECREF()}. If the reference count reaches zero, the
668object's type's deallocation function (which must not be \NULL{}) is
669invoked.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000670
671\strong{Warning:} The deallocation function can cause arbitrary Python
Fred Drakee058b4f1998-02-16 06:15:35 +0000672code to be invoked (e.g. when a class instance with a \method{__del__()}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000673method is deallocated). While exceptions in such code are not
674propagated, the executed code has free access to all Python global
675variables. This means that any object that is reachable from a global
Fred Drakee058b4f1998-02-16 06:15:35 +0000676variable should be in a consistent state before \cfunction{Py_DECREF()} is
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000677invoked. For example, code to delete an object from a list should
678copy a reference to the deleted object in a temporary variable, update
Fred Drakee058b4f1998-02-16 06:15:35 +0000679the list data structure, and then call \cfunction{Py_DECREF()} for the
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000680temporary variable.
681\end{cfuncdesc}
682
683\begin{cfuncdesc}{void}{Py_XDECREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000684Decrement the reference count for object \var{o}. The object may be
685\NULL{}, in which case the macro has no effect; otherwise the effect
686is the same as for \cfunction{Py_DECREF()}, and the same warning
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000687applies.
688\end{cfuncdesc}
689
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000690The following functions or macros are only for internal use:
Fred Drakee058b4f1998-02-16 06:15:35 +0000691\cfunction{_Py_Dealloc()}, \cfunction{_Py_ForgetReference()},
692\cfunction{_Py_NewReference()}, as well as the global variable
Fred Drakef8830d11998-04-23 14:06:01 +0000693\cdata{_Py_RefTotal}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000694
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000695XXX Should mention Py_Malloc(), Py_Realloc(), Py_Free(),
696PyMem_Malloc(), PyMem_Realloc(), PyMem_Free(), PyMem_NEW(),
697PyMem_RESIZE(), PyMem_DEL(), PyMem_XDEL().
698
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000699
Fred Drakeefd146c1999-02-15 15:30:45 +0000700\chapter{Exception Handling \label{exceptionHandling}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000701
702The functions in this chapter will let you handle and raise Python
Guido van Rossumae110af1997-05-22 20:11:52 +0000703exceptions. It is important to understand some of the basics of
Fred Drakeb0a78731998-01-13 18:51:10 +0000704Python exception handling. It works somewhat like the \UNIX{}
Fred Drakef8830d11998-04-23 14:06:01 +0000705\cdata{errno} variable: there is a global indicator (per thread) of the
Guido van Rossumae110af1997-05-22 20:11:52 +0000706last error that occurred. Most functions don't clear this on success,
707but will set it to indicate the cause of the error on failure. Most
708functions also return an error indicator, usually \NULL{} if they are
Fred Drakee058b4f1998-02-16 06:15:35 +0000709supposed to return a pointer, or \code{-1} if they return an integer
Fred Drakef8830d11998-04-23 14:06:01 +0000710(exception: the \cfunction{PyArg_Parse*()} functions return \code{1} for
Fred Drakee058b4f1998-02-16 06:15:35 +0000711success and \code{0} for failure). When a function must fail because
712some function it called failed, it generally doesn't set the error
713indicator; the function it called already set it.
Guido van Rossumae110af1997-05-22 20:11:52 +0000714
715The error indicator consists of three Python objects corresponding to
716the Python variables \code{sys.exc_type}, \code{sys.exc_value} and
717\code{sys.exc_traceback}. API functions exist to interact with the
718error indicator in various ways. There is a separate error indicator
719for each thread.
720
721% XXX Order of these should be more thoughtful.
722% Either alphabetical or some kind of structure.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000723
724\begin{cfuncdesc}{void}{PyErr_Print}{}
Guido van Rossumae110af1997-05-22 20:11:52 +0000725Print a standard traceback to \code{sys.stderr} and clear the error
726indicator. Call this function only when the error indicator is set.
727(Otherwise it will cause a fatal error!)
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000728\end{cfuncdesc}
729
Fred Drakec6fa34e1998-04-02 06:47:24 +0000730\begin{cfuncdesc}{PyObject*}{PyErr_Occurred}{}
Guido van Rossumae110af1997-05-22 20:11:52 +0000731Test whether the error indicator is set. If set, return the exception
Fred Drakee058b4f1998-02-16 06:15:35 +0000732\emph{type} (the first argument to the last call to one of the
Fred Drakef8830d11998-04-23 14:06:01 +0000733\cfunction{PyErr_Set*()} functions or to \cfunction{PyErr_Restore()}). If
Fred Drakee058b4f1998-02-16 06:15:35 +0000734not set, return \NULL{}. You do not own a reference to the return
735value, so you do not need to \cfunction{Py_DECREF()} it.
736\strong{Note:} do not compare the return value to a specific
737exception; use \cfunction{PyErr_ExceptionMatches()} instead, shown
738below.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000739\end{cfuncdesc}
740
741\begin{cfuncdesc}{int}{PyErr_ExceptionMatches}{PyObject *exc}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000742Equivalent to
Fred Drakee058b4f1998-02-16 06:15:35 +0000743\samp{PyErr_GivenExceptionMatches(PyErr_Occurred(), \var{exc})}.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000744This should only be called when an exception is actually set.
745\end{cfuncdesc}
746
747\begin{cfuncdesc}{int}{PyErr_GivenExceptionMatches}{PyObject *given, PyObject *exc}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000748Return true if the \var{given} exception matches the exception in
749\var{exc}. If \var{exc} is a class object, this also returns true
750when \var{given} is a subclass. If \var{exc} is a tuple, all
751exceptions in the tuple (and recursively in subtuples) are searched
752for a match. This should only be called when an exception is actually
753set.
754\end{cfuncdesc}
755
756\begin{cfuncdesc}{void}{PyErr_NormalizeException}{PyObject**exc, PyObject**val, PyObject**tb}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000757Under certain circumstances, the values returned by
Fred Drakee058b4f1998-02-16 06:15:35 +0000758\cfunction{PyErr_Fetch()} below can be ``unnormalized'', meaning that
759\code{*\var{exc}} is a class object but \code{*\var{val}} is not an
760instance of the same class. This function can be used to instantiate
761the class in that case. If the values are already normalized, nothing
762happens.
Guido van Rossumae110af1997-05-22 20:11:52 +0000763\end{cfuncdesc}
764
765\begin{cfuncdesc}{void}{PyErr_Clear}{}
766Clear the error indicator. If the error indicator is not set, there
767is no effect.
768\end{cfuncdesc}
769
770\begin{cfuncdesc}{void}{PyErr_Fetch}{PyObject **ptype, PyObject **pvalue, PyObject **ptraceback}
771Retrieve the error indicator into three variables whose addresses are
772passed. If the error indicator is not set, set all three variables to
773\NULL{}. If it is set, it will be cleared and you own a reference to
774each object retrieved. The value and traceback object may be \NULL{}
775even when the type object is not. \strong{Note:} this function is
776normally only used by code that needs to handle exceptions or by code
777that needs to save and restore the error indicator temporarily.
778\end{cfuncdesc}
779
780\begin{cfuncdesc}{void}{PyErr_Restore}{PyObject *type, PyObject *value, PyObject *traceback}
781Set the error indicator from the three objects. If the error
782indicator is already set, it is cleared first. If the objects are
783\NULL{}, the error indicator is cleared. Do not pass a \NULL{} type
784and non-\NULL{} value or traceback. The exception type should be a
785string or class; if it is a class, the value should be an instance of
786that class. Do not pass an invalid exception type or value.
787(Violating these rules will cause subtle problems later.) This call
788takes away a reference to each object, i.e. you must own a reference
789to each object before the call and after the call you no longer own
790these references. (If you don't understand this, don't use this
791function. I warned you.) \strong{Note:} this function is normally
792only used by code that needs to save and restore the error indicator
793temporarily.
794\end{cfuncdesc}
795
796\begin{cfuncdesc}{void}{PyErr_SetString}{PyObject *type, char *message}
797This is the most common way to set the error indicator. The first
798argument specifies the exception type; it is normally one of the
Fred Drakef8830d11998-04-23 14:06:01 +0000799standard exceptions, e.g. \cdata{PyExc_RuntimeError}. You need not
Guido van Rossumae110af1997-05-22 20:11:52 +0000800increment its reference count. The second argument is an error
801message; it is converted to a string object.
802\end{cfuncdesc}
803
804\begin{cfuncdesc}{void}{PyErr_SetObject}{PyObject *type, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +0000805This function is similar to \cfunction{PyErr_SetString()} but lets you
Guido van Rossumae110af1997-05-22 20:11:52 +0000806specify an arbitrary Python object for the ``value'' of the exception.
807You need not increment its reference count.
808\end{cfuncdesc}
809
810\begin{cfuncdesc}{void}{PyErr_SetNone}{PyObject *type}
Fred Drakee058b4f1998-02-16 06:15:35 +0000811This is a shorthand for \samp{PyErr_SetObject(\var{type}, Py_None)}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000812\end{cfuncdesc}
813
814\begin{cfuncdesc}{int}{PyErr_BadArgument}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000815This is a shorthand for \samp{PyErr_SetString(PyExc_TypeError,
Guido van Rossumae110af1997-05-22 20:11:52 +0000816\var{message})}, where \var{message} indicates that a built-in operation
817was invoked with an illegal argument. It is mostly for internal use.
818\end{cfuncdesc}
819
Fred Drakec6fa34e1998-04-02 06:47:24 +0000820\begin{cfuncdesc}{PyObject*}{PyErr_NoMemory}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000821This is a shorthand for \samp{PyErr_SetNone(PyExc_MemoryError)}; it
Guido van Rossumae110af1997-05-22 20:11:52 +0000822returns \NULL{} so an object allocation function can write
Fred Drakee058b4f1998-02-16 06:15:35 +0000823\samp{return PyErr_NoMemory();} when it runs out of memory.
Guido van Rossumae110af1997-05-22 20:11:52 +0000824\end{cfuncdesc}
825
Fred Drakec6fa34e1998-04-02 06:47:24 +0000826\begin{cfuncdesc}{PyObject*}{PyErr_SetFromErrno}{PyObject *type}
Fred Drakeb0a78731998-01-13 18:51:10 +0000827This is a convenience function to raise an exception when a \C{} library
Fred Drakef8830d11998-04-23 14:06:01 +0000828function has returned an error and set the \C{} variable \cdata{errno}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000829It constructs a tuple object whose first item is the integer
Fred Drakef8830d11998-04-23 14:06:01 +0000830\cdata{errno} value and whose second item is the corresponding error
Fred Drakee058b4f1998-02-16 06:15:35 +0000831message (gotten from \cfunction{strerror()}), and then calls
832\samp{PyErr_SetObject(\var{type}, \var{object})}. On \UNIX{}, when
Fred Drakef8830d11998-04-23 14:06:01 +0000833the \cdata{errno} value is \constant{EINTR}, indicating an interrupted
Fred Drakee058b4f1998-02-16 06:15:35 +0000834system call, this calls \cfunction{PyErr_CheckSignals()}, and if that set
Guido van Rossumae110af1997-05-22 20:11:52 +0000835the error indicator, leaves it set to that. The function always
836returns \NULL{}, so a wrapper function around a system call can write
Fred Drakee058b4f1998-02-16 06:15:35 +0000837\samp{return PyErr_SetFromErrno();} when the system call returns an
838error.
Guido van Rossumae110af1997-05-22 20:11:52 +0000839\end{cfuncdesc}
840
841\begin{cfuncdesc}{void}{PyErr_BadInternalCall}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000842This is a shorthand for \samp{PyErr_SetString(PyExc_TypeError,
Guido van Rossumae110af1997-05-22 20:11:52 +0000843\var{message})}, where \var{message} indicates that an internal
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000844operation (e.g. a Python/C API function) was invoked with an illegal
Guido van Rossumae110af1997-05-22 20:11:52 +0000845argument. It is mostly for internal use.
846\end{cfuncdesc}
847
848\begin{cfuncdesc}{int}{PyErr_CheckSignals}{}
849This function interacts with Python's signal handling. It checks
850whether a signal has been sent to the processes and if so, invokes the
Fred Drake4de05a91998-02-16 14:25:26 +0000851corresponding signal handler. If the
852\module{signal}\refbimodindex{signal} module is supported, this can
853invoke a signal handler written in Python. In all cases, the default
854effect for \constant{SIGINT} is to raise the
855\exception{KeyboadInterrupt} exception. If an exception is raised the
Fred Drakee058b4f1998-02-16 06:15:35 +0000856error indicator is set and the function returns \code{1}; otherwise
857the function returns \code{0}. The error indicator may or may not be
858cleared if it was previously set.
Guido van Rossumae110af1997-05-22 20:11:52 +0000859\end{cfuncdesc}
860
861\begin{cfuncdesc}{void}{PyErr_SetInterrupt}{}
862This function is obsolete (XXX or platform dependent?). It simulates
Fred Drakee058b4f1998-02-16 06:15:35 +0000863the effect of a \constant{SIGINT} signal arriving --- the next time
864\cfunction{PyErr_CheckSignals()} is called,
865\exception{KeyboadInterrupt} will be raised.
Guido van Rossumae110af1997-05-22 20:11:52 +0000866\end{cfuncdesc}
867
Fred Drakec6fa34e1998-04-02 06:47:24 +0000868\begin{cfuncdesc}{PyObject*}{PyErr_NewException}{char *name,
869 PyObject *base,
870 PyObject *dict}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000871This utility function creates and returns a new exception object. The
Fred Drakeb0a78731998-01-13 18:51:10 +0000872\var{name} argument must be the name of the new exception, a \C{} string
Guido van Rossum42cefd01997-10-05 15:27:29 +0000873of the form \code{module.class}. The \var{base} and \var{dict}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000874arguments are normally \NULL{}. Normally, this creates a class
Guido van Rossum42cefd01997-10-05 15:27:29 +0000875object derived from the root for all exceptions, the built-in name
Fred Drakef8830d11998-04-23 14:06:01 +0000876\exception{Exception} (accessible in \C{} as \cdata{PyExc_Exception}).
877In this case the \member{__module__} attribute of the new class is set to the
Guido van Rossum42cefd01997-10-05 15:27:29 +0000878first part (up to the last dot) of the \var{name} argument, and the
879class name is set to the last part (after the last dot). When the
880user has specified the \code{-X} command line option to use string
881exceptions, for backward compatibility, or when the \var{base}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000882argument is not a class object (and not \NULL{}), a string object
Guido van Rossum42cefd01997-10-05 15:27:29 +0000883created from the entire \var{name} argument is returned. The
884\var{base} argument can be used to specify an alternate base class.
885The \var{dict} argument can be used to specify a dictionary of class
886variables and methods.
887\end{cfuncdesc}
888
889
Fred Drakeefd146c1999-02-15 15:30:45 +0000890\section{Standard Exceptions \label{standardExceptions}}
Guido van Rossumae110af1997-05-22 20:11:52 +0000891
892All standard Python exceptions are available as global variables whose
Fred Drakee058b4f1998-02-16 06:15:35 +0000893names are \samp{PyExc_} followed by the Python exception name.
Fred Drakef8830d11998-04-23 14:06:01 +0000894These have the type \ctype{PyObject *}; they are all either class
Fred Drakee058b4f1998-02-16 06:15:35 +0000895objects or string objects, depending on the use of the \code{-X}
896option to the interpreter. For completeness, here are all the
Fred Drake9d20ac31998-02-16 15:27:08 +0000897variables:
Fred Drakef8830d11998-04-23 14:06:01 +0000898\cdata{PyExc_Exception},
899\cdata{PyExc_StandardError},
900\cdata{PyExc_ArithmeticError},
901\cdata{PyExc_LookupError},
902\cdata{PyExc_AssertionError},
903\cdata{PyExc_AttributeError},
904\cdata{PyExc_EOFError},
Fred Drake127ed0a1999-02-17 23:09:05 +0000905\cdata{PyExc_EnvironmentError},
Fred Drakef8830d11998-04-23 14:06:01 +0000906\cdata{PyExc_FloatingPointError},
907\cdata{PyExc_IOError},
908\cdata{PyExc_ImportError},
909\cdata{PyExc_IndexError},
910\cdata{PyExc_KeyError},
911\cdata{PyExc_KeyboardInterrupt},
912\cdata{PyExc_MemoryError},
913\cdata{PyExc_NameError},
Fred Drake127ed0a1999-02-17 23:09:05 +0000914\cdata{PyExc_NotImplementedError},
915\cdata{PyExc_OSError},
Fred Drakef8830d11998-04-23 14:06:01 +0000916\cdata{PyExc_OverflowError},
917\cdata{PyExc_RuntimeError},
918\cdata{PyExc_SyntaxError},
919\cdata{PyExc_SystemError},
920\cdata{PyExc_SystemExit},
921\cdata{PyExc_TypeError},
922\cdata{PyExc_ValueError},
923\cdata{PyExc_ZeroDivisionError}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000924
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000925
Fred Drakeefd146c1999-02-15 15:30:45 +0000926\chapter{Utilities \label{utilities}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000927
928The functions in this chapter perform various utility tasks, such as
Fred Drakeb0a78731998-01-13 18:51:10 +0000929parsing function arguments and constructing Python values from \C{}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000930values.
931
Fred Drakeefd146c1999-02-15 15:30:45 +0000932\section{OS Utilities \label{os}}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000933
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000934\begin{cfuncdesc}{int}{Py_FdIsInteractive}{FILE *fp, char *filename}
Fred Drakee058b4f1998-02-16 06:15:35 +0000935Return true (nonzero) if the standard I/O file \var{fp} with name
936\var{filename} is deemed interactive. This is the case for files for
937which \samp{isatty(fileno(\var{fp}))} is true. If the global flag
Fred Drakef8830d11998-04-23 14:06:01 +0000938\cdata{Py_InteractiveFlag} is true, this function also returns true if
Fred Drakee058b4f1998-02-16 06:15:35 +0000939the \var{name} pointer is \NULL{} or if the name is equal to one of
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000940the strings \code{"<stdin>"} or \code{"???"}.
941\end{cfuncdesc}
942
943\begin{cfuncdesc}{long}{PyOS_GetLastModificationTime}{char *filename}
Fred Drakee058b4f1998-02-16 06:15:35 +0000944Return the time of last modification of the file \var{filename}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000945The result is encoded in the same way as the timestamp returned by
Fred Drakee058b4f1998-02-16 06:15:35 +0000946the standard \C{} library function \cfunction{time()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000947\end{cfuncdesc}
948
949
Fred Drakeefd146c1999-02-15 15:30:45 +0000950\section{Process Control \label{processControl}}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000951
952\begin{cfuncdesc}{void}{Py_FatalError}{char *message}
953Print a fatal error message and kill the process. No cleanup is
954performed. This function should only be invoked when a condition is
955detected that would make it dangerous to continue using the Python
956interpreter; e.g., when the object administration appears to be
Fred Drakee058b4f1998-02-16 06:15:35 +0000957corrupted. On \UNIX{}, the standard \C{} library function
958\cfunction{abort()} is called which will attempt to produce a
959\file{core} file.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000960\end{cfuncdesc}
961
962\begin{cfuncdesc}{void}{Py_Exit}{int status}
Fred Drakee058b4f1998-02-16 06:15:35 +0000963Exit the current process. This calls \cfunction{Py_Finalize()} and
964then calls the standard \C{} library function
965\code{exit(\var{status})}.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000966\end{cfuncdesc}
967
968\begin{cfuncdesc}{int}{Py_AtExit}{void (*func) ()}
969Register a cleanup function to be called by \cfunction{Py_Finalize()}.
970The cleanup function will be called with no arguments and should
971return no value. At most 32 cleanup functions can be registered.
972When the registration is successful, \cfunction{Py_AtExit()} returns
973\code{0}; on failure, it returns \code{-1}. The cleanup function
974registered last is called first. Each cleanup function will be called
975at most once. Since Python's internal finallization will have
976completed before the cleanup function, no Python APIs should be called
977by \var{func}.
978\end{cfuncdesc}
979
980
Fred Drakeefd146c1999-02-15 15:30:45 +0000981\section{Importing Modules \label{importing}}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000982
Fred Drakec6fa34e1998-04-02 06:47:24 +0000983\begin{cfuncdesc}{PyObject*}{PyImport_ImportModule}{char *name}
Fred Drakee058b4f1998-02-16 06:15:35 +0000984This is a simplified interface to \cfunction{PyImport_ImportModuleEx()}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000985below, leaving the \var{globals} and \var{locals} arguments set to
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000986\NULL{}. When the \var{name} argument contains a dot (i.e., when
Guido van Rossum42cefd01997-10-05 15:27:29 +0000987it specifies a submodule of a package), the \var{fromlist} argument is
988set to the list \code{['*']} so that the return value is the named
989module rather than the top-level package containing it as would
990otherwise be the case. (Unfortunately, this has an additional side
991effect when \var{name} in fact specifies a subpackage instead of a
992submodule: the submodules specified in the package's \code{__all__}
993variable are loaded.) Return a new reference to the imported module,
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000994or \NULL{} with an exception set on failure (the module may still
Fred Drakec6fa34e1998-04-02 06:47:24 +0000995be created in this case --- examine \code{sys.modules} to find out).
Guido van Rossum42cefd01997-10-05 15:27:29 +0000996\end{cfuncdesc}
997
Fred Drakec6fa34e1998-04-02 06:47:24 +0000998\begin{cfuncdesc}{PyObject*}{PyImport_ImportModuleEx}{char *name, PyObject *globals, PyObject *locals, PyObject *fromlist}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000999Import a module. This is best described by referring to the built-in
Fred Drake53fb7721998-02-16 06:23:20 +00001000Python function \function{__import__()}\bifuncindex{__import__}, as
1001the standard \function{__import__()} function calls this function
1002directly.
Guido van Rossum42cefd01997-10-05 15:27:29 +00001003
Guido van Rossum42cefd01997-10-05 15:27:29 +00001004The return value is a new reference to the imported module or
Guido van Rossum580aa8d1997-11-25 15:34:51 +00001005top-level package, or \NULL{} with an exception set on failure
Guido van Rossumc44d3d61997-10-06 05:10:47 +00001006(the module may still be created in this case). Like for
Fred Drakee058b4f1998-02-16 06:15:35 +00001007\function{__import__()}, the return value when a submodule of a
1008package was requested is normally the top-level package, unless a
1009non-empty \var{fromlist} was given.
Guido van Rossum42cefd01997-10-05 15:27:29 +00001010\end{cfuncdesc}
1011
Fred Drakec6fa34e1998-04-02 06:47:24 +00001012\begin{cfuncdesc}{PyObject*}{PyImport_Import}{PyObject *name}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001013This is a higher-level interface that calls the current ``import hook
Fred Drakee058b4f1998-02-16 06:15:35 +00001014function''. It invokes the \function{__import__()} function from the
Guido van Rossum42cefd01997-10-05 15:27:29 +00001015\code{__builtins__} of the current globals. This means that the
1016import is done using whatever import hooks are installed in the
Fred Drake4de05a91998-02-16 14:25:26 +00001017current environment, e.g. by \module{rexec}\refstmodindex{rexec} or
1018\module{ihooks}\refstmodindex{ihooks}.
Guido van Rossum42cefd01997-10-05 15:27:29 +00001019\end{cfuncdesc}
1020
Fred Drakec6fa34e1998-04-02 06:47:24 +00001021\begin{cfuncdesc}{PyObject*}{PyImport_ReloadModule}{PyObject *m}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001022Reload a module. This is best described by referring to the built-in
Fred Drake53fb7721998-02-16 06:23:20 +00001023Python function \function{reload()}\bifuncindex{reload}, as the standard
Fred Drakee058b4f1998-02-16 06:15:35 +00001024\function{reload()} function calls this function directly. Return a
1025new reference to the reloaded module, or \NULL{} with an exception set
1026on failure (the module still exists in this case).
Guido van Rossum42cefd01997-10-05 15:27:29 +00001027\end{cfuncdesc}
1028
Fred Drakec6fa34e1998-04-02 06:47:24 +00001029\begin{cfuncdesc}{PyObject*}{PyImport_AddModule}{char *name}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001030Return the module object corresponding to a module name. The
1031\var{name} argument may be of the form \code{package.module}). First
1032check the modules dictionary if there's one there, and if not, create
1033a new one and insert in in the modules dictionary. Because the former
1034action is most common, this does not return a new reference, and you
Guido van Rossuma096a2e1998-11-02 17:02:42 +00001035do not own the returned reference.
1036Warning: this function does not load or import the module; if the
1037module wasn't already loaded, you will get an empty module object.
1038Use \cfunction{PyImport_ImportModule()} or one of its variants to
1039import a module.
1040Return \NULL{} with an
Fred Drakef8830d11998-04-23 14:06:01 +00001041exception set on failure. \strong{Note:} this function returns
Guido van Rossum44475131998-04-21 15:30:01 +00001042a ``borrowed'' reference.
Guido van Rossum42cefd01997-10-05 15:27:29 +00001043\end{cfuncdesc}
1044
Fred Drakec6fa34e1998-04-02 06:47:24 +00001045\begin{cfuncdesc}{PyObject*}{PyImport_ExecCodeModule}{char *name, PyObject *co}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001046Given a module name (possibly of the form \code{package.module}) and a
1047code object read from a Python bytecode file or obtained from the
Fred Drake53fb7721998-02-16 06:23:20 +00001048built-in function \function{compile()}\bifuncindex{compile}, load the
1049module. Return a new reference to the module object, or \NULL{} with
1050an exception set if an error occurred (the module may still be created
1051in this case). (This function would reload the module if it was
1052already imported.)
Guido van Rossum42cefd01997-10-05 15:27:29 +00001053\end{cfuncdesc}
1054
1055\begin{cfuncdesc}{long}{PyImport_GetMagicNumber}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00001056Return the magic number for Python bytecode files (a.k.a. \file{.pyc}
1057and \file{.pyo} files). The magic number should be present in the
Guido van Rossum42cefd01997-10-05 15:27:29 +00001058first four bytes of the bytecode file, in little-endian byte order.
1059\end{cfuncdesc}
1060
Fred Drakec6fa34e1998-04-02 06:47:24 +00001061\begin{cfuncdesc}{PyObject*}{PyImport_GetModuleDict}{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001062Return the dictionary used for the module administration
1063(a.k.a. \code{sys.modules}). Note that this is a per-interpreter
1064variable.
1065\end{cfuncdesc}
1066
1067\begin{cfuncdesc}{void}{_PyImport_Init}{}
1068Initialize the import mechanism. For internal use only.
1069\end{cfuncdesc}
1070
1071\begin{cfuncdesc}{void}{PyImport_Cleanup}{}
1072Empty the module table. For internal use only.
1073\end{cfuncdesc}
1074
1075\begin{cfuncdesc}{void}{_PyImport_Fini}{}
1076Finalize the import mechanism. For internal use only.
1077\end{cfuncdesc}
1078
Fred Drakec6fa34e1998-04-02 06:47:24 +00001079\begin{cfuncdesc}{PyObject*}{_PyImport_FindExtension}{char *, char *}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001080For internal use only.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00001081\end{cfuncdesc}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001082
Fred Drakec6fa34e1998-04-02 06:47:24 +00001083\begin{cfuncdesc}{PyObject*}{_PyImport_FixupExtension}{char *, char *}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001084For internal use only.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00001085\end{cfuncdesc}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001086
1087\begin{cfuncdesc}{int}{PyImport_ImportFrozenModule}{char *}
1088Load a frozen module. Return \code{1} for success, \code{0} if the
1089module is not found, and \code{-1} with an exception set if the
1090initialization failed. To access the imported module on a successful
Fred Drakee058b4f1998-02-16 06:15:35 +00001091load, use \cfunction{PyImport_ImportModule()}.
1092(Note the misnomer --- this function would reload the module if it was
Guido van Rossum42cefd01997-10-05 15:27:29 +00001093already imported.)
1094\end{cfuncdesc}
1095
1096\begin{ctypedesc}{struct _frozen}
1097This is the structure type definition for frozen module descriptors,
Fred Drakec6fa34e1998-04-02 06:47:24 +00001098as generated by the \program{freeze}\index{freeze utility} utility
1099(see \file{Tools/freeze/} in the Python source distribution). Its
1100definition is:
1101
Guido van Rossum9faf4c51997-10-07 14:38:54 +00001102\begin{verbatim}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001103struct _frozen {
Fred Drake36fbe761997-10-13 18:18:33 +00001104 char *name;
1105 unsigned char *code;
1106 int size;
Guido van Rossum42cefd01997-10-05 15:27:29 +00001107};
Guido van Rossum9faf4c51997-10-07 14:38:54 +00001108\end{verbatim}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001109\end{ctypedesc}
1110
Fred Drakec6fa34e1998-04-02 06:47:24 +00001111\begin{cvardesc}{struct _frozen*}{PyImport_FrozenModules}
Fred Drakef8830d11998-04-23 14:06:01 +00001112This pointer is initialized to point to an array of \ctype{struct
Guido van Rossum580aa8d1997-11-25 15:34:51 +00001113_frozen} records, terminated by one whose members are all \NULL{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001114or zero. When a frozen module is imported, it is searched in this
Fred Drakec6fa34e1998-04-02 06:47:24 +00001115table. Third-party code could play tricks with this to provide a
Guido van Rossum42cefd01997-10-05 15:27:29 +00001116dynamically created collection of frozen modules.
1117\end{cvardesc}
1118
1119
Fred Drakeefd146c1999-02-15 15:30:45 +00001120\chapter{Abstract Objects Layer \label{abstract}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001121
1122The functions in this chapter interact with Python objects regardless
1123of their type, or with wide classes of object types (e.g. all
1124numerical types, or all sequence types). When used on object types
1125for which they do not apply, they will flag a Python exception.
1126
Fred Drakeefd146c1999-02-15 15:30:45 +00001127\section{Object Protocol \label{object}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001128
1129\begin{cfuncdesc}{int}{PyObject_Print}{PyObject *o, FILE *fp, int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00001130Print an object \var{o}, on file \var{fp}. Returns \code{-1} on error
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001131The flags argument is used to enable certain printing
Fred Drakee058b4f1998-02-16 06:15:35 +00001132options. The only option currently supported is
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001133\constant{Py_PRINT_RAW}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001134\end{cfuncdesc}
1135
1136\begin{cfuncdesc}{int}{PyObject_HasAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001137Returns \code{1} if \var{o} has the attribute \var{attr_name}, and
1138\code{0} otherwise. This is equivalent to the Python expression
1139\samp{hasattr(\var{o}, \var{attr_name})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001140This function always succeeds.
1141\end{cfuncdesc}
1142
1143\begin{cfuncdesc}{PyObject*}{PyObject_GetAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001144Retrieve an attribute named \var{attr_name} from object \var{o}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001145Returns the attribute value on success, or \NULL{} on failure.
Fred Drakee058b4f1998-02-16 06:15:35 +00001146This is the equivalent of the Python expression
1147\samp{\var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001148\end{cfuncdesc}
1149
1150
1151\begin{cfuncdesc}{int}{PyObject_HasAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001152Returns \code{1} if \var{o} has the attribute \var{attr_name}, and
1153\code{0} otherwise. This is equivalent to the Python expression
1154\samp{hasattr(\var{o}, \var{attr_name})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001155This function always succeeds.
1156\end{cfuncdesc}
1157
1158
1159\begin{cfuncdesc}{PyObject*}{PyObject_GetAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001160Retrieve an attribute named \var{attr_name} from object \var{o}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001161Returns the attribute value on success, or \NULL{} on failure.
Fred Drakee058b4f1998-02-16 06:15:35 +00001162This is the equivalent of the Python expression
1163\samp{\var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001164\end{cfuncdesc}
1165
1166
1167\begin{cfuncdesc}{int}{PyObject_SetAttrString}{PyObject *o, char *attr_name, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001168Set the value of the attribute named \var{attr_name}, for object
1169\var{o}, to the value \var{v}. Returns \code{-1} on failure. This is
1170the equivalent of the Python statement \samp{\var{o}.\var{attr_name} =
1171\var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001172\end{cfuncdesc}
1173
1174
1175\begin{cfuncdesc}{int}{PyObject_SetAttr}{PyObject *o, PyObject *attr_name, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001176Set the value of the attribute named \var{attr_name}, for
1177object \var{o},
1178to the value \var{v}. Returns \code{-1} on failure. This is
1179the equivalent of the Python statement \samp{\var{o}.\var{attr_name} =
1180\var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001181\end{cfuncdesc}
1182
1183
1184\begin{cfuncdesc}{int}{PyObject_DelAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001185Delete attribute named \var{attr_name}, for object \var{o}. Returns
1186\code{-1} on failure. This is the equivalent of the Python
1187statement: \samp{del \var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001188\end{cfuncdesc}
1189
1190
1191\begin{cfuncdesc}{int}{PyObject_DelAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001192Delete attribute named \var{attr_name}, for object \var{o}. Returns
1193\code{-1} on failure. This is the equivalent of the Python
1194statement \samp{del \var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001195\end{cfuncdesc}
1196
1197
1198\begin{cfuncdesc}{int}{PyObject_Cmp}{PyObject *o1, PyObject *o2, int *result}
Fred Drakee058b4f1998-02-16 06:15:35 +00001199Compare the values of \var{o1} and \var{o2} using a routine provided
1200by \var{o1}, if one exists, otherwise with a routine provided by
1201\var{o2}. The result of the comparison is returned in \var{result}.
1202Returns \code{-1} on failure. This is the equivalent of the Python
1203statement \samp{\var{result} = cmp(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001204\end{cfuncdesc}
1205
1206
1207\begin{cfuncdesc}{int}{PyObject_Compare}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001208Compare the values of \var{o1} and \var{o2} using a routine provided
1209by \var{o1}, if one exists, otherwise with a routine provided by
1210\var{o2}. Returns the result of the comparison on success. On error,
1211the value returned is undefined; use \cfunction{PyErr_Occurred()} to
1212detect an error. This is equivalent to the
1213Python expression \samp{cmp(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001214\end{cfuncdesc}
1215
1216
1217\begin{cfuncdesc}{PyObject*}{PyObject_Repr}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001218Compute the string representation of object, \var{o}. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001219string representation on success, \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001220the equivalent of the Python expression \samp{repr(\var{o})}.
1221Called by the \function{repr()}\bifuncindex{repr} built-in function
1222and by reverse quotes.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001223\end{cfuncdesc}
1224
1225
1226\begin{cfuncdesc}{PyObject*}{PyObject_Str}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001227Compute the string representation of object \var{o}. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001228string representation on success, \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001229the equivalent of the Python expression \samp{str(\var{o})}.
1230Called by the \function{str()}\bifuncindex{str} built-in function and
1231by the \keyword{print} statement.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001232\end{cfuncdesc}
1233
1234
1235\begin{cfuncdesc}{int}{PyCallable_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001236Determine if the object \var{o}, is callable. Return \code{1} if the
1237object is callable and \code{0} otherwise.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001238This function always succeeds.
1239\end{cfuncdesc}
1240
1241
1242\begin{cfuncdesc}{PyObject*}{PyObject_CallObject}{PyObject *callable_object, PyObject *args}
Fred Drakee058b4f1998-02-16 06:15:35 +00001243Call a callable Python object \var{callable_object}, with
1244arguments given by the tuple \var{args}. If no arguments are
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001245needed, then args may be \NULL{}. Returns the result of the
1246call on success, or \NULL{} on failure. This is the equivalent
Fred Drakee058b4f1998-02-16 06:15:35 +00001247of the Python expression \samp{apply(\var{o}, \var{args})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001248\end{cfuncdesc}
1249
1250\begin{cfuncdesc}{PyObject*}{PyObject_CallFunction}{PyObject *callable_object, char *format, ...}
Fred Drakee058b4f1998-02-16 06:15:35 +00001251Call a callable Python object \var{callable_object}, with a
Fred Drakeb0a78731998-01-13 18:51:10 +00001252variable number of \C{} arguments. The \C{} arguments are described
Fred Drakee058b4f1998-02-16 06:15:35 +00001253using a \cfunction{Py_BuildValue()} style format string. The format may
1254be \NULL{}, indicating that no arguments are provided. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001255result of the call on success, or \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001256the equivalent of the Python expression \samp{apply(\var{o},
1257\var{args})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001258\end{cfuncdesc}
1259
1260
1261\begin{cfuncdesc}{PyObject*}{PyObject_CallMethod}{PyObject *o, char *m, char *format, ...}
Fred Drakee058b4f1998-02-16 06:15:35 +00001262Call the method named \var{m} of object \var{o} with a variable number
1263of C arguments. The \C{} arguments are described by a
1264\cfunction{Py_BuildValue()} format string. The format may be \NULL{},
1265indicating that no arguments are provided. Returns the result of the
1266call on success, or \NULL{} on failure. This is the equivalent of the
1267Python expression \samp{\var{o}.\var{method}(\var{args})}.
1268Note that Special method names, such as \method{__add__()},
1269\method{__getitem__()}, and so on are not supported. The specific
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001270abstract-object routines for these must be used.
1271\end{cfuncdesc}
1272
1273
1274\begin{cfuncdesc}{int}{PyObject_Hash}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001275Compute and return the hash value of an object \var{o}. On
1276failure, return \code{-1}. This is the equivalent of the Python
1277expression \samp{hash(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001278\end{cfuncdesc}
1279
1280
1281\begin{cfuncdesc}{int}{PyObject_IsTrue}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001282Returns \code{1} if the object \var{o} is considered to be true, and
1283\code{0} otherwise. This is equivalent to the Python expression
1284\samp{not not \var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001285This function always succeeds.
1286\end{cfuncdesc}
1287
1288
1289\begin{cfuncdesc}{PyObject*}{PyObject_Type}{PyObject *o}
1290On success, returns a type object corresponding to the object
Fred Drakee058b4f1998-02-16 06:15:35 +00001291type of object \var{o}. On failure, returns \NULL{}. This is
1292equivalent to the Python expression \samp{type(\var{o})}.
Fred Drake53fb7721998-02-16 06:23:20 +00001293\bifuncindex{type}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001294\end{cfuncdesc}
1295
1296\begin{cfuncdesc}{int}{PyObject_Length}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001297Return the length of object \var{o}. If the object \var{o} provides
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001298both sequence and mapping protocols, the sequence length is
Fred Drakee058b4f1998-02-16 06:15:35 +00001299returned. On error, \code{-1} is returned. This is the equivalent
1300to the Python expression \samp{len(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001301\end{cfuncdesc}
1302
1303
1304\begin{cfuncdesc}{PyObject*}{PyObject_GetItem}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001305Return element of \var{o} corresponding to the object \var{key} or
1306\NULL{} on failure. This is the equivalent of the Python expression
1307\samp{\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001308\end{cfuncdesc}
1309
1310
1311\begin{cfuncdesc}{int}{PyObject_SetItem}{PyObject *o, PyObject *key, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001312Map the object \var{key} to the value \var{v}.
1313Returns \code{-1} on failure. This is the equivalent
1314of the Python statement \samp{\var{o}[\var{key}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001315\end{cfuncdesc}
1316
1317
Guido van Rossumd1dbf631999-01-22 20:10:49 +00001318\begin{cfuncdesc}{int}{PyObject_DelItem}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001319Delete the mapping for \var{key} from \var{o}. Returns \code{-1} on
1320failure. This is the equivalent of the Python statement \samp{del
1321\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001322\end{cfuncdesc}
1323
1324
Fred Drakeefd146c1999-02-15 15:30:45 +00001325\section{Number Protocol \label{number}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001326
1327\begin{cfuncdesc}{int}{PyNumber_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001328Returns \code{1} if the object \var{o} provides numeric protocols, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001329false otherwise.
1330This function always succeeds.
1331\end{cfuncdesc}
1332
1333
1334\begin{cfuncdesc}{PyObject*}{PyNumber_Add}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001335Returns the result of adding \var{o1} and \var{o2}, or \NULL{} on
1336failure. This is the equivalent of the Python expression
1337\samp{\var{o1} + \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001338\end{cfuncdesc}
1339
1340
1341\begin{cfuncdesc}{PyObject*}{PyNumber_Subtract}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001342Returns the result of subtracting \var{o2} from \var{o1}, or \NULL{}
1343on failure. This is the equivalent of the Python expression
1344\samp{\var{o1} - \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001345\end{cfuncdesc}
1346
1347
1348\begin{cfuncdesc}{PyObject*}{PyNumber_Multiply}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001349Returns the result of multiplying \var{o1} and \var{o2}, or \NULL{} on
1350failure. This is the equivalent of the Python expression
1351\samp{\var{o1} * \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001352\end{cfuncdesc}
1353
1354
1355\begin{cfuncdesc}{PyObject*}{PyNumber_Divide}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001356Returns the result of dividing \var{o1} by \var{o2}, or \NULL{} on
1357failure.
1358This is the equivalent of the Python expression \samp{\var{o1} /
1359\var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001360\end{cfuncdesc}
1361
1362
1363\begin{cfuncdesc}{PyObject*}{PyNumber_Remainder}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001364Returns the remainder of dividing \var{o1} by \var{o2}, or \NULL{} on
1365failure. This is the equivalent of the Python expression
1366\samp{\var{o1} \% \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001367\end{cfuncdesc}
1368
1369
1370\begin{cfuncdesc}{PyObject*}{PyNumber_Divmod}{PyObject *o1, PyObject *o2}
Fred Drake53fb7721998-02-16 06:23:20 +00001371See the built-in function \function{divmod()}\bifuncindex{divmod}.
1372Returns \NULL{} on failure. This is the equivalent of the Python
1373expression \samp{divmod(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001374\end{cfuncdesc}
1375
1376
1377\begin{cfuncdesc}{PyObject*}{PyNumber_Power}{PyObject *o1, PyObject *o2, PyObject *o3}
Fred Drake53fb7721998-02-16 06:23:20 +00001378See the built-in function \function{pow()}\bifuncindex{pow}. Returns
1379\NULL{} on failure. This is the equivalent of the Python expression
Fred Drakee058b4f1998-02-16 06:15:35 +00001380\samp{pow(\var{o1}, \var{o2}, \var{o3})}, where \var{o3} is optional.
Fred Drakef8830d11998-04-23 14:06:01 +00001381If \var{o3} is to be ignored, pass \cdata{Py_None} in its place.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001382\end{cfuncdesc}
1383
1384
1385\begin{cfuncdesc}{PyObject*}{PyNumber_Negative}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001386Returns the negation of \var{o} on success, or \NULL{} on failure.
1387This is the equivalent of the Python expression \samp{-\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001388\end{cfuncdesc}
1389
1390
1391\begin{cfuncdesc}{PyObject*}{PyNumber_Positive}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001392Returns \var{o} on success, or \NULL{} on failure.
1393This is the equivalent of the Python expression \samp{+\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001394\end{cfuncdesc}
1395
1396
1397\begin{cfuncdesc}{PyObject*}{PyNumber_Absolute}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001398Returns the absolute value of \var{o}, or \NULL{} on failure. This is
1399the equivalent of the Python expression \samp{abs(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001400\end{cfuncdesc}
1401
1402
1403\begin{cfuncdesc}{PyObject*}{PyNumber_Invert}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001404Returns the bitwise negation of \var{o} on success, or \NULL{} on
1405failure. This is the equivalent of the Python expression
1406\samp{\~\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001407\end{cfuncdesc}
1408
1409
1410\begin{cfuncdesc}{PyObject*}{PyNumber_Lshift}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001411Returns the result of left shifting \var{o1} by \var{o2} on success,
1412or \NULL{} on failure. This is the equivalent of the Python
1413expression \samp{\var{o1} << \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001414\end{cfuncdesc}
1415
1416
1417\begin{cfuncdesc}{PyObject*}{PyNumber_Rshift}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001418Returns the result of right shifting \var{o1} by \var{o2} on success,
1419or \NULL{} on failure. This is the equivalent of the Python
1420expression \samp{\var{o1} >> \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001421\end{cfuncdesc}
1422
1423
1424\begin{cfuncdesc}{PyObject*}{PyNumber_And}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001425Returns the result of ``anding'' \var{o2} and \var{o2} on success and
1426\NULL{} on failure. This is the equivalent of the Python
1427expression \samp{\var{o1} and \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001428\end{cfuncdesc}
1429
1430
1431\begin{cfuncdesc}{PyObject*}{PyNumber_Xor}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001432Returns the bitwise exclusive or of \var{o1} by \var{o2} on success,
1433or \NULL{} on failure. This is the equivalent of the Python
1434expression \samp{\var{o1} \^{ }\var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001435\end{cfuncdesc}
1436
1437\begin{cfuncdesc}{PyObject*}{PyNumber_Or}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001438Returns the result of \var{o1} and \var{o2} on success, or \NULL{} on
1439failure. This is the equivalent of the Python expression
1440\samp{\var{o1} or \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001441\end{cfuncdesc}
1442
1443
Fred Drakee058b4f1998-02-16 06:15:35 +00001444\begin{cfuncdesc}{PyObject*}{PyNumber_Coerce}{PyObject **p1, PyObject **p2}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001445This function takes the addresses of two variables of type
Fred Drakef8830d11998-04-23 14:06:01 +00001446\ctype{PyObject*}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001447
Fred Drakee058b4f1998-02-16 06:15:35 +00001448If the objects pointed to by \code{*\var{p1}} and \code{*\var{p2}}
1449have the same type, increment their reference count and return
1450\code{0} (success). If the objects can be converted to a common
1451numeric type, replace \code{*p1} and \code{*p2} by their converted
1452value (with 'new' reference counts), and return \code{0}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001453If no conversion is possible, or if some other error occurs,
Fred Drakee058b4f1998-02-16 06:15:35 +00001454return \code{-1} (failure) and don't increment the reference counts.
1455The call \code{PyNumber_Coerce(\&o1, \&o2)} is equivalent to the
1456Python statement \samp{\var{o1}, \var{o2} = coerce(\var{o1},
1457\var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001458\end{cfuncdesc}
1459
1460
1461\begin{cfuncdesc}{PyObject*}{PyNumber_Int}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001462Returns the \var{o} converted to an integer object on success, or
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001463\NULL{} on failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001464expression \samp{int(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001465\end{cfuncdesc}
1466
1467
1468\begin{cfuncdesc}{PyObject*}{PyNumber_Long}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001469Returns the \var{o} converted to a long integer object on success,
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001470or \NULL{} on failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001471expression \samp{long(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001472\end{cfuncdesc}
1473
1474
1475\begin{cfuncdesc}{PyObject*}{PyNumber_Float}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001476Returns the \var{o} converted to a float object on success, or \NULL{}
1477on failure. This is the equivalent of the Python expression
1478\samp{float(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001479\end{cfuncdesc}
1480
1481
Fred Drakeefd146c1999-02-15 15:30:45 +00001482\section{Sequence Protocol \label{sequence}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001483
1484\begin{cfuncdesc}{int}{PySequence_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001485Return \code{1} if the object provides sequence protocol, and \code{0}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001486otherwise.
1487This function always succeeds.
1488\end{cfuncdesc}
1489
1490
1491\begin{cfuncdesc}{PyObject*}{PySequence_Concat}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001492Return the concatenation of \var{o1} and \var{o2} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001493failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001494expression \samp{\var{o1} + \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001495\end{cfuncdesc}
1496
1497
1498\begin{cfuncdesc}{PyObject*}{PySequence_Repeat}{PyObject *o, int count}
Fred Drakee058b4f1998-02-16 06:15:35 +00001499Return the result of repeating sequence object \var{o} \var{count}
1500times, or \NULL{} on failure. This is the equivalent of the Python
1501expression \samp{\var{o} * \var{count}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001502\end{cfuncdesc}
1503
1504
1505\begin{cfuncdesc}{PyObject*}{PySequence_GetItem}{PyObject *o, int i}
Fred Drakee058b4f1998-02-16 06:15:35 +00001506Return the \var{i}th element of \var{o}, or \NULL{} on failure. This
1507is the equivalent of the Python expression \samp{\var{o}[\var{i}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001508\end{cfuncdesc}
1509
1510
1511\begin{cfuncdesc}{PyObject*}{PySequence_GetSlice}{PyObject *o, int i1, int i2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001512Return the slice of sequence object \var{o} between \var{i1} and
1513\var{i2}, or \NULL{} on failure. This is the equivalent of the Python
1514expression \samp{\var{o}[\var{i1}:\var{i2}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001515\end{cfuncdesc}
1516
1517
1518\begin{cfuncdesc}{int}{PySequence_SetItem}{PyObject *o, int i, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001519Assign object \var{v} to the \var{i}th element of \var{o}.
1520Returns \code{-1} on failure. This is the equivalent of the Python
1521statement \samp{\var{o}[\var{i}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001522\end{cfuncdesc}
1523
1524\begin{cfuncdesc}{int}{PySequence_DelItem}{PyObject *o, int i}
Fred Drakee058b4f1998-02-16 06:15:35 +00001525Delete the \var{i}th element of object \var{v}. Returns
1526\code{-1} on failure. This is the equivalent of the Python
1527statement \samp{del \var{o}[\var{i}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001528\end{cfuncdesc}
1529
1530\begin{cfuncdesc}{int}{PySequence_SetSlice}{PyObject *o, int i1, int i2, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001531Assign the sequence object \var{v} to the slice in sequence
1532object \var{o} from \var{i1} to \var{i2}. This is the equivalent of
1533the Python statement \samp{\var{o}[\var{i1}:\var{i2}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001534\end{cfuncdesc}
1535
1536\begin{cfuncdesc}{int}{PySequence_DelSlice}{PyObject *o, int i1, int i2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001537Delete the slice in sequence object \var{o} from \var{i1} to \var{i2}.
1538Returns \code{-1} on failure. This is the equivalent of the Python
1539statement \samp{del \var{o}[\var{i1}:\var{i2}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001540\end{cfuncdesc}
1541
1542\begin{cfuncdesc}{PyObject*}{PySequence_Tuple}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001543Returns the \var{o} as a tuple on success, and \NULL{} on failure.
1544This is equivalent to the Python expression \code{tuple(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001545\end{cfuncdesc}
1546
1547\begin{cfuncdesc}{int}{PySequence_Count}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001548Return the number of occurrences of \var{value} in \var{o}, that is,
1549return the number of keys for which \code{\var{o}[\var{key}] ==
1550\var{value}}. On failure, return \code{-1}. This is equivalent to
1551the Python expression \samp{\var{o}.count(\var{value})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001552\end{cfuncdesc}
1553
1554\begin{cfuncdesc}{int}{PySequence_In}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001555Determine if \var{o} contains \var{value}. If an item in \var{o} is
1556equal to \var{value}, return \code{1}, otherwise return \code{0}. On
1557error, return \code{-1}. This is equivalent to the Python expression
1558\samp{\var{value} in \var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001559\end{cfuncdesc}
1560
1561\begin{cfuncdesc}{int}{PySequence_Index}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001562Return the first index \var{i} for which \code{\var{o}[\var{i}] ==
1563\var{value}}. On error, return \code{-1}. This is equivalent to
1564the Python expression \samp{\var{o}.index(\var{value})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001565\end{cfuncdesc}
1566
Fred Drakef39ed671998-02-26 22:01:23 +00001567
Fred Drakeefd146c1999-02-15 15:30:45 +00001568\section{Mapping Protocol \label{mapping}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001569
1570\begin{cfuncdesc}{int}{PyMapping_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001571Return \code{1} if the object provides mapping protocol, and \code{0}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001572otherwise.
1573This function always succeeds.
1574\end{cfuncdesc}
1575
1576
1577\begin{cfuncdesc}{int}{PyMapping_Length}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001578Returns the number of keys in object \var{o} on success, and \code{-1}
1579on failure. For objects that do not provide sequence protocol,
1580this is equivalent to the Python expression \samp{len(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001581\end{cfuncdesc}
1582
1583
1584\begin{cfuncdesc}{int}{PyMapping_DelItemString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001585Remove the mapping for object \var{key} from the object \var{o}.
1586Return \code{-1} on failure. This is equivalent to
1587the Python statement \samp{del \var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001588\end{cfuncdesc}
1589
1590
1591\begin{cfuncdesc}{int}{PyMapping_DelItem}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001592Remove the mapping for object \var{key} from the object \var{o}.
1593Return \code{-1} on failure. This is equivalent to
1594the Python statement \samp{del \var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001595\end{cfuncdesc}
1596
1597
1598\begin{cfuncdesc}{int}{PyMapping_HasKeyString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001599On success, return \code{1} if the mapping object has the key \var{key}
1600and \code{0} otherwise. This is equivalent to the Python expression
1601\samp{\var{o}.has_key(\var{key})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001602This function always succeeds.
1603\end{cfuncdesc}
1604
1605
1606\begin{cfuncdesc}{int}{PyMapping_HasKey}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001607Return \code{1} if the mapping object has the key \var{key} and
1608\code{0} otherwise. This is equivalent to the Python expression
1609\samp{\var{o}.has_key(\var{key})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001610This function always succeeds.
1611\end{cfuncdesc}
1612
1613
1614\begin{cfuncdesc}{PyObject*}{PyMapping_Keys}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001615On success, return a list of the keys in object \var{o}. On
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001616failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001617expression \samp{\var{o}.keys()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001618\end{cfuncdesc}
1619
1620
1621\begin{cfuncdesc}{PyObject*}{PyMapping_Values}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001622On success, return a list of the values in object \var{o}. On
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001623failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001624expression \samp{\var{o}.values()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001625\end{cfuncdesc}
1626
1627
1628\begin{cfuncdesc}{PyObject*}{PyMapping_Items}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001629On success, return a list of the items in object \var{o}, where
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001630each item is a tuple containing a key-value pair. On
1631failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001632expression \samp{\var{o}.items()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001633\end{cfuncdesc}
1634
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001635
1636\begin{cfuncdesc}{PyObject*}{PyMapping_GetItemString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001637Return element of \var{o} corresponding to the object \var{key} or
1638\NULL{} on failure. This is the equivalent of the Python expression
1639\samp{\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001640\end{cfuncdesc}
1641
Guido van Rossum0a0f11b1998-10-16 17:43:53 +00001642\begin{cfuncdesc}{int}{PyMapping_SetItemString}{PyObject *o, char *key, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001643Map the object \var{key} to the value \var{v} in object \var{o}.
1644Returns \code{-1} on failure. This is the equivalent of the Python
1645statement \samp{\var{o}[\var{key}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001646\end{cfuncdesc}
1647
1648
1649\section{Constructors}
1650
1651\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *file_name, char *mode}
1652On success, returns a new file object that is opened on the
Fred Drakee058b4f1998-02-16 06:15:35 +00001653file given by \var{file_name}, with a file mode given by \var{mode},
1654where \var{mode} has the same semantics as the standard \C{} routine
1655\cfunction{fopen()}. On failure, return \code{-1}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001656\end{cfuncdesc}
1657
1658\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp, char *file_name, char *mode, int close_on_del}
Fred Drakee058b4f1998-02-16 06:15:35 +00001659Return a new file object for an already opened standard \C{} file
1660pointer, \var{fp}. A file name, \var{file_name}, and open mode,
1661\var{mode}, must be provided as well as a flag, \var{close_on_del},
1662that indicates whether the file is to be closed when the file object
1663is destroyed. On failure, return \code{-1}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001664\end{cfuncdesc}
1665
1666\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001667Returns a new float object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001668\NULL{} on failure.
1669\end{cfuncdesc}
1670
1671\begin{cfuncdesc}{PyObject*}{PyInt_FromLong}{long v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001672Returns a new int object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001673\NULL{} on failure.
1674\end{cfuncdesc}
1675
Fred Drakee058b4f1998-02-16 06:15:35 +00001676\begin{cfuncdesc}{PyObject*}{PyList_New}{int len}
1677Returns a new list of length \var{len} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001678failure.
1679\end{cfuncdesc}
1680
1681\begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001682Returns a new long object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001683\NULL{} on failure.
1684\end{cfuncdesc}
1685
1686\begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001687Returns a new long object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001688\NULL{} on failure.
1689\end{cfuncdesc}
1690
1691\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
1692Returns a new empty dictionary on success, and \NULL{} on
1693failure.
1694\end{cfuncdesc}
1695
1696\begin{cfuncdesc}{PyObject*}{PyString_FromString}{char *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001697Returns a new string object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001698\NULL{} on failure.
1699\end{cfuncdesc}
1700
Fred Drakee058b4f1998-02-16 06:15:35 +00001701\begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{char *v, int len}
1702Returns a new string object with the value \var{v} and length
1703\var{len} on success, and \NULL{} on failure. If \var{v} is \NULL{},
1704the contents of the string are uninitialized.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001705\end{cfuncdesc}
1706
Fred Drakee058b4f1998-02-16 06:15:35 +00001707\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int len}
1708Returns a new tuple of length \var{len} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001709failure.
1710\end{cfuncdesc}
1711
1712
Fred Drakeefd146c1999-02-15 15:30:45 +00001713\chapter{Concrete Objects Layer \label{concrete}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001714
1715The functions in this chapter are specific to certain Python object
1716types. Passing them an object of the wrong type is not a good idea;
1717if you receive an object from a Python program and you are not sure
1718that it has the right type, you must perform a type check first;
1719e.g. to check that an object is a dictionary, use
Fred Drakee5bf8b21998-02-12 21:22:28 +00001720\cfunction{PyDict_Check()}. The chapter is structured like the
1721``family tree'' of Python object types.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001722
1723
Fred Drakeefd146c1999-02-15 15:30:45 +00001724\section{Fundamental Objects \label{fundamental}}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001725
Fred Drakee5bf8b21998-02-12 21:22:28 +00001726This section describes Python type objects and the singleton object
1727\code{None}.
1728
1729
Fred Drakeefd146c1999-02-15 15:30:45 +00001730\subsection{Type Objects \label{typeObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001731
1732\begin{ctypedesc}{PyTypeObject}
1733
1734\end{ctypedesc}
1735
1736\begin{cvardesc}{PyObject *}{PyType_Type}
Fred Drakeefd146c1999-02-15 15:30:45 +00001737This is the type object for type objects; it is the same object as
1738\code{types.TypeType} in the Python layer.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001739\end{cvardesc}
1740
1741
Fred Drakeefd146c1999-02-15 15:30:45 +00001742\subsection{The None Object \label{noneObject}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001743
1744\begin{cvardesc}{PyObject *}{Py_None}
Guido van Rossum44475131998-04-21 15:30:01 +00001745The Python \code{None} object, denoting lack of value. This object has
1746no methods.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001747\end{cvardesc}
1748
1749
Fred Drakeefd146c1999-02-15 15:30:45 +00001750\section{Sequence Objects \label{sequenceObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001751
1752Generic operations on sequence objects were discussed in the previous
1753chapter; this section deals with the specific kinds of sequence
1754objects that are intrinsic to the Python language.
1755
1756
Fred Drakeefd146c1999-02-15 15:30:45 +00001757\subsection{String Objects \label{stringObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001758
1759\begin{ctypedesc}{PyStringObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001760This subtype of \ctype{PyObject} represents a Python string object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001761\end{ctypedesc}
1762
1763\begin{cvardesc}{PyTypeObject}{PyString_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001764This instance of \ctype{PyTypeObject} represents the Python string type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001765\end{cvardesc}
1766
1767\begin{cfuncdesc}{int}{PyString_Check}{PyObject *o}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001768Returns true if the object \var{o} is a string object.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001769\end{cfuncdesc}
1770
Fred Drakec6fa34e1998-04-02 06:47:24 +00001771\begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{const char *v,
1772 int len}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001773Returns a new string object with the value \var{v} and length
1774\var{len} on success, and \NULL{} on failure. If \var{v} is \NULL{},
1775the contents of the string are uninitialized.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001776\end{cfuncdesc}
1777
1778\begin{cfuncdesc}{PyObject*}{PyString_FromString}{const char *v}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001779Returns a new string object with the value \var{v} on success, and
1780\NULL{} on failure.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001781\end{cfuncdesc}
1782
1783\begin{cfuncdesc}{int}{PyString_Size}{PyObject *string}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001784Returns the length of the string in string object \var{string}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001785\end{cfuncdesc}
1786
1787\begin{cfuncdesc}{char*}{PyString_AsString}{PyObject *string}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001788Resturns a \NULL{} terminated representation of the contents of \var{string}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001789\end{cfuncdesc}
1790
1791\begin{cfuncdesc}{void}{PyString_Concat}{PyObject **string,
1792 PyObject *newpart}
Fred Drake66b989c1999-02-15 20:15:39 +00001793Creates a new string object in \var{*string} containing the
1794contents of \var{newpart} appended to \var{string}. The old value of
1795\var{string} have its reference count decremented. If the new string
1796cannot be created, the old reference to \var{string} will still be
1797discarded and the value of \var{*string} will be set to
1798\NULL{}; the appropriate exception will be set.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001799\end{cfuncdesc}
1800
1801\begin{cfuncdesc}{void}{PyString_ConcatAndDel}{PyObject **string,
1802 PyObject *newpart}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001803Creates a new string object in \var{*string} containing the contents
Guido van Rossum44475131998-04-21 15:30:01 +00001804of \var{newpart} appended to \var{string}. This version decrements
1805the reference count of \var{newpart}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001806\end{cfuncdesc}
1807
1808\begin{cfuncdesc}{int}{_PyString_Resize}{PyObject **string, int newsize}
Guido van Rossum44475131998-04-21 15:30:01 +00001809A way to resize a string object even though it is ``immutable''.
1810Only use this to build up a brand new string object; don't use this if
1811the string may already be known in other parts of the code.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001812\end{cfuncdesc}
1813
1814\begin{cfuncdesc}{PyObject*}{PyString_Format}{PyObject *format,
1815 PyObject *args}
Guido van Rossum44475131998-04-21 15:30:01 +00001816Returns a new string object from \var{format} and \var{args}. Analogous
1817to \code{\var{format} \% \var{args}}. The \var{args} argument must be
1818a tuple.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001819\end{cfuncdesc}
1820
1821\begin{cfuncdesc}{void}{PyString_InternInPlace}{PyObject **string}
Guido van Rossum44475131998-04-21 15:30:01 +00001822Intern the argument \var{*string} in place. The argument must be the
1823address of a pointer variable pointing to a Python string object.
1824If there is an existing interned string that is the same as
1825\var{*string}, it sets \var{*string} to it (decrementing the reference
1826count of the old string object and incrementing the reference count of
1827the interned string object), otherwise it leaves \var{*string} alone
1828and interns it (incrementing its reference count). (Clarification:
1829even though there is a lot of talk about reference counts, think of
Fred Drakef8830d11998-04-23 14:06:01 +00001830this function as reference-count-neutral; you own the object after
1831the call if and only if you owned it before the call.)
Fred Drakec6fa34e1998-04-02 06:47:24 +00001832\end{cfuncdesc}
1833
1834\begin{cfuncdesc}{PyObject*}{PyString_InternFromString}{const char *v}
Fred Drakef8830d11998-04-23 14:06:01 +00001835A combination of \cfunction{PyString_FromString()} and
1836\cfunction{PyString_InternInPlace()}, returning either a new string object
Guido van Rossum44475131998-04-21 15:30:01 +00001837that has been interned, or a new (``owned'') reference to an earlier
1838interned string object with the same value.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001839\end{cfuncdesc}
1840
1841\begin{cfuncdesc}{char*}{PyString_AS_STRING}{PyObject *string}
Fred Drakef8830d11998-04-23 14:06:01 +00001842Macro form of \cfunction{PyString_AsString()} but without error checking.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001843\end{cfuncdesc}
1844
Fred Drakec6fa34e1998-04-02 06:47:24 +00001845\begin{cfuncdesc}{int}{PyString_GET_SIZE}{PyObject *string}
Fred Drakef8830d11998-04-23 14:06:01 +00001846Macro form of \cfunction{PyString_GetSize()} but without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001847\end{cfuncdesc}
1848
1849
Fred Drake58c5a2a1999-08-04 13:13:24 +00001850\subsection{Buffer Objects \label{bufferObjects}}
1851
1852XXX need a real description of buffers and buffer ''segments.``
1853
1854\begin{cvardesc}{PyTypeObject}{PyBuffer_Type}
1855The instance of \ctype{PyTypeObject} which represents the Python
1856buffer type.
1857\end{cvardesc}
1858
1859\begin{cvardesc}{int}{Py_END_OF_BUFFER}
1860Constant returned by \cfunction{Py}
1861\end{cvardesc}
1862
1863\begin{cfuncdesc}{int}{PyBuffer_Check}{PyObject *p}
1864Return true if the argument has type \cdata{PyBuffer_Type}.
1865\end{cfuncdesc}
1866
1867\begin{cfuncdesc}{PyObject*}{PyBuffer_FromObject}{PyObject *base,
1868 int offset, int size}
1869Return a new read-only buffer object.
1870Raises \exception{TypeError} if \var{base} doesn't support the
1871read-only buffer protocol or doesn't provide exactly one buffer
1872segment. Raises \exception{ValueError} if \var{offset} is less than
1873zero.
1874\end{cfuncdesc}
1875
1876\begin{cfuncdesc}{PyObject*}{PyBuffer_FromReadWriteObject}{PyObject *base,
1877 int offset,
1878 int size}
1879Return a new writable buffer object. Parameters and exceptions are
1880similar to those for \cfunction{PyBuffer_FromObject()}.
1881\end{cfuncdesc}
1882
1883\begin{cfuncdesc}{PyObject*}{PyBuffer_FromMemory}{void *ptr, int size}
1884Return a new read-only buffer object that reads from a memory buffer.
1885The caller is responsible for ensuring that the memory buffer, passed
1886in as \var{ptr}, is not deallocated while the returned buffer object
1887exists. Raises \exception{ValueError} if \var{size} is less than
1888zero.
1889\end{cfuncdesc}
1890
1891\begin{cfuncdesc}{PyObject*}{PyBuffer_FromReadWriteMemory}{void *ptr, int size}
1892Return a new writable buffer object that reads from and writes to a
1893memory buffer. The caller is responsible for ensuring that the memory
1894buffer, passed in as \var{ptr}, is not deallocated while the returned
1895buffer object exists. Raises \exception{ValueError} if \var{size} is
1896less than zero.
1897\end{cfuncdesc}
1898
1899\begin{cfuncdesc}{PyObject*}{PyBuffer_New}{int size}
1900Returns a new writable buffer object that maintains its own memory
1901buffer of \var{size} bytes. \var{size} must be zero or positive.
1902\end{cfuncdesc}
1903
Guido van Rossum44475131998-04-21 15:30:01 +00001904
Fred Drakeefd146c1999-02-15 15:30:45 +00001905\subsection{Tuple Objects \label{tupleObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001906
1907\begin{ctypedesc}{PyTupleObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001908This subtype of \ctype{PyObject} represents a Python tuple object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001909\end{ctypedesc}
1910
1911\begin{cvardesc}{PyTypeObject}{PyTuple_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001912This instance of \ctype{PyTypeObject} represents the Python tuple type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001913\end{cvardesc}
1914
1915\begin{cfuncdesc}{int}{PyTuple_Check}{PyObject *p}
1916Return true if the argument is a tuple object.
1917\end{cfuncdesc}
1918
Fred Drakec6fa34e1998-04-02 06:47:24 +00001919\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int s}
Fred Drakee058b4f1998-02-16 06:15:35 +00001920Return a new tuple object of size \var{s}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001921\end{cfuncdesc}
1922
1923\begin{cfuncdesc}{int}{PyTuple_Size}{PyTupleObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001924Takes a pointer to a tuple object, and returns the size
Fred Drakee5bf8b21998-02-12 21:22:28 +00001925of that tuple.
1926\end{cfuncdesc}
1927
Fred Drakec6fa34e1998-04-02 06:47:24 +00001928\begin{cfuncdesc}{PyObject*}{PyTuple_GetItem}{PyTupleObject *p, int pos}
Fred Drakee058b4f1998-02-16 06:15:35 +00001929Returns the object at position \var{pos} in the tuple pointed
1930to by \var{p}. If \var{pos} is out of bounds, returns \NULL{} and
Fred Drakef8830d11998-04-23 14:06:01 +00001931sets an \exception{IndexError} exception. \strong{Note:} this
1932function returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001933\end{cfuncdesc}
1934
Fred Drakec6fa34e1998-04-02 06:47:24 +00001935\begin{cfuncdesc}{PyObject*}{PyTuple_GET_ITEM}{PyTupleObject *p, int pos}
Fred Drakee058b4f1998-02-16 06:15:35 +00001936Does the same, but does no checking of its arguments.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001937\end{cfuncdesc}
1938
Fred Drakec6fa34e1998-04-02 06:47:24 +00001939\begin{cfuncdesc}{PyObject*}{PyTuple_GetSlice}{PyTupleObject *p,
Fred Drakee5bf8b21998-02-12 21:22:28 +00001940 int low,
1941 int high}
Fred Drakee058b4f1998-02-16 06:15:35 +00001942Takes a slice of the tuple pointed to by \var{p} from
1943\var{low} to \var{high} and returns it as a new tuple.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001944\end{cfuncdesc}
1945
1946\begin{cfuncdesc}{int}{PyTuple_SetItem}{PyTupleObject *p,
1947 int pos,
1948 PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001949Inserts a reference to object \var{o} at position \var{pos} of
1950the tuple pointed to by \var{p}. It returns \code{0} on success.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001951\end{cfuncdesc}
1952
1953\begin{cfuncdesc}{void}{PyTuple_SET_ITEM}{PyTupleObject *p,
1954 int pos,
1955 PyObject *o}
1956
Fred Drakee058b4f1998-02-16 06:15:35 +00001957Does the same, but does no error checking, and
Fred Drakee5bf8b21998-02-12 21:22:28 +00001958should \emph{only} be used to fill in brand new tuples.
1959\end{cfuncdesc}
1960
Fred Drakec6fa34e1998-04-02 06:47:24 +00001961\begin{cfuncdesc}{int}{_PyTuple_Resize}{PyTupleObject *p,
Fred Drakee5bf8b21998-02-12 21:22:28 +00001962 int new,
1963 int last_is_sticky}
Fred Drakee058b4f1998-02-16 06:15:35 +00001964Can be used to resize a tuple. Because tuples are
Fred Drakee5bf8b21998-02-12 21:22:28 +00001965\emph{supposed} to be immutable, this should only be used if there is only
1966one module referencing the object. Do \emph{not} use this if the tuple may
Fred Drakee058b4f1998-02-16 06:15:35 +00001967already be known to some other part of the code. \var{last_is_sticky} is
1968a flag --- if set, the tuple will grow or shrink at the front, otherwise
Fred Drakee5bf8b21998-02-12 21:22:28 +00001969it will grow or shrink at the end. Think of this as destroying the old
1970tuple and creating a new one, only more efficiently.
1971\end{cfuncdesc}
1972
1973
Fred Drakeefd146c1999-02-15 15:30:45 +00001974\subsection{List Objects \label{listObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001975
1976\begin{ctypedesc}{PyListObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001977This subtype of \ctype{PyObject} represents a Python list object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001978\end{ctypedesc}
1979
1980\begin{cvardesc}{PyTypeObject}{PyList_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001981This instance of \ctype{PyTypeObject} represents the Python list type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001982\end{cvardesc}
1983
1984\begin{cfuncdesc}{int}{PyList_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00001985Returns true if its argument is a \ctype{PyListObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001986\end{cfuncdesc}
1987
Fred Drakec6fa34e1998-04-02 06:47:24 +00001988\begin{cfuncdesc}{PyObject*}{PyList_New}{int size}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001989Returns a new list of length \var{len} on success, and \NULL{} on
1990failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001991\end{cfuncdesc}
1992
Fred Drakec6fa34e1998-04-02 06:47:24 +00001993\begin{cfuncdesc}{int}{PyList_Size}{PyObject *list}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001994Returns the length of the list object in \var{list}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001995\end{cfuncdesc}
1996
Fred Drakec6fa34e1998-04-02 06:47:24 +00001997\begin{cfuncdesc}{PyObject*}{PyList_GetItem}{PyObject *list, int index}
Guido van Rossum44475131998-04-21 15:30:01 +00001998Returns the object at position \var{pos} in the list pointed
1999to by \var{p}. If \var{pos} is out of bounds, returns \NULL{} and
Fred Drakef8830d11998-04-23 14:06:01 +00002000sets an \exception{IndexError} exception. \strong{Note:} this
2001function returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002002\end{cfuncdesc}
2003
Fred Drakec6fa34e1998-04-02 06:47:24 +00002004\begin{cfuncdesc}{int}{PyList_SetItem}{PyObject *list, int index,
2005 PyObject *item}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00002006Sets the item at index \var{index} in list to \var{item}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002007\end{cfuncdesc}
2008
Fred Drakec6fa34e1998-04-02 06:47:24 +00002009\begin{cfuncdesc}{int}{PyList_Insert}{PyObject *list, int index,
Guido van Rossum44475131998-04-21 15:30:01 +00002010 PyObject *item}
2011Inserts the item \var{item} into list \var{list} in front of index
2012\var{index}. Returns 0 if successful; returns -1 and sets an
2013exception if unsuccessful. Analogous to \code{list.insert(index, item)}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002014\end{cfuncdesc}
2015
Fred Drakec6fa34e1998-04-02 06:47:24 +00002016\begin{cfuncdesc}{int}{PyList_Append}{PyObject *list, PyObject *item}
Guido van Rossum44475131998-04-21 15:30:01 +00002017Appends the object \var{item} at the end of list \var{list}. Returns
20180 if successful; returns -1 and sets an exception if unsuccessful.
2019Analogous to \code{list.append(item)}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002020\end{cfuncdesc}
2021
Fred Drakec6fa34e1998-04-02 06:47:24 +00002022\begin{cfuncdesc}{PyObject*}{PyList_GetSlice}{PyObject *list,
2023 int low, int high}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00002024Returns a list of the objects in \var{list} containing the objects
Guido van Rossum44475131998-04-21 15:30:01 +00002025\emph{between} \var{low} and \var{high}. Returns NULL and sets an
2026exception if unsuccessful.
2027Analogous to \code{list[low:high]}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002028\end{cfuncdesc}
2029
Fred Drakec6fa34e1998-04-02 06:47:24 +00002030\begin{cfuncdesc}{int}{PyList_SetSlice}{PyObject *list,
2031 int low, int high,
2032 PyObject *itemlist}
Guido van Rossum44475131998-04-21 15:30:01 +00002033Sets the slice of \var{list} between \var{low} and \var{high} to the contents
2034of \var{itemlist}. Analogous to \code{list[low:high]=itemlist}. Returns 0
2035on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002036\end{cfuncdesc}
2037
Fred Drakec6fa34e1998-04-02 06:47:24 +00002038\begin{cfuncdesc}{int}{PyList_Sort}{PyObject *list}
Guido van Rossum44475131998-04-21 15:30:01 +00002039Sorts the items of \var{list} in place. Returns 0 on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002040\end{cfuncdesc}
2041
Fred Drakec6fa34e1998-04-02 06:47:24 +00002042\begin{cfuncdesc}{int}{PyList_Reverse}{PyObject *list}
Guido van Rossum44475131998-04-21 15:30:01 +00002043Reverses the items of \var{list} in place. Returns 0 on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002044\end{cfuncdesc}
2045
Fred Drakec6fa34e1998-04-02 06:47:24 +00002046\begin{cfuncdesc}{PyObject*}{PyList_AsTuple}{PyObject *list}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00002047Returns a new tuple object containing the contents of \var{list}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002048\end{cfuncdesc}
2049
Fred Drakec6fa34e1998-04-02 06:47:24 +00002050\begin{cfuncdesc}{PyObject*}{PyList_GET_ITEM}{PyObject *list, int i}
Fred Drakef8830d11998-04-23 14:06:01 +00002051Macro form of \cfunction{PyList_GetItem()} without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002052\end{cfuncdesc}
2053
Guido van Rossuma937d141998-04-24 18:22:02 +00002054\begin{cfuncdesc}{PyObject*}{PyList_SET_ITEM}{PyObject *list, int i,
2055 PyObject *o}
2056Macro form of \cfunction{PyList_SetItem()} without error checking.
2057\end{cfuncdesc}
2058
Fred Drakee5bf8b21998-02-12 21:22:28 +00002059\begin{cfuncdesc}{int}{PyList_GET_SIZE}{PyObject *list}
Fred Drakef8830d11998-04-23 14:06:01 +00002060Macro form of \cfunction{PyList_GetSize()} without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002061\end{cfuncdesc}
2062
2063
Fred Drakeefd146c1999-02-15 15:30:45 +00002064\section{Mapping Objects \label{mapObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002065
Fred Drakeefd146c1999-02-15 15:30:45 +00002066\subsection{Dictionary Objects \label{dictObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002067
2068\begin{ctypedesc}{PyDictObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002069This subtype of \ctype{PyObject} represents a Python dictionary object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002070\end{ctypedesc}
2071
2072\begin{cvardesc}{PyTypeObject}{PyDict_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002073This instance of \ctype{PyTypeObject} represents the Python dictionary type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002074\end{cvardesc}
2075
2076\begin{cfuncdesc}{int}{PyDict_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002077Returns true if its argument is a \ctype{PyDictObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002078\end{cfuncdesc}
2079
Fred Drakec6fa34e1998-04-02 06:47:24 +00002080\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002081Returns a new empty dictionary.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002082\end{cfuncdesc}
2083
2084\begin{cfuncdesc}{void}{PyDict_Clear}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002085Empties an existing dictionary of all key/value pairs.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002086\end{cfuncdesc}
2087
2088\begin{cfuncdesc}{int}{PyDict_SetItem}{PyDictObject *p,
2089 PyObject *key,
2090 PyObject *val}
Fred Drakee058b4f1998-02-16 06:15:35 +00002091Inserts \var{value} into the dictionary with a key of \var{key}. Both
2092\var{key} and \var{value} should be PyObjects, and \var{key} should be
2093hashable.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002094\end{cfuncdesc}
2095
2096\begin{cfuncdesc}{int}{PyDict_SetItemString}{PyDictObject *p,
2097 char *key,
2098 PyObject *val}
Fred Drakee058b4f1998-02-16 06:15:35 +00002099Inserts \var{value} into the dictionary using \var{key}
Fred Drakef8830d11998-04-23 14:06:01 +00002100as a key. \var{key} should be a \ctype{char *}. The key object is
Fred Drakee058b4f1998-02-16 06:15:35 +00002101created using \code{PyString_FromString(\var{key})}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002102\end{cfuncdesc}
2103
2104\begin{cfuncdesc}{int}{PyDict_DelItem}{PyDictObject *p, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002105Removes the entry in dictionary \var{p} with key \var{key}.
2106\var{key} is a PyObject.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002107\end{cfuncdesc}
2108
2109\begin{cfuncdesc}{int}{PyDict_DelItemString}{PyDictObject *p, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002110Removes the entry in dictionary \var{p} which has a key
Fred Drakef8830d11998-04-23 14:06:01 +00002111specified by the \ctype{char *}\var{key}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002112\end{cfuncdesc}
2113
Fred Drakec6fa34e1998-04-02 06:47:24 +00002114\begin{cfuncdesc}{PyObject*}{PyDict_GetItem}{PyDictObject *p, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002115Returns the object from dictionary \var{p} which has a key
Guido van Rossum44475131998-04-21 15:30:01 +00002116\var{key}. Returns \NULL{} if the key \var{key} is not present, but
Fred Drakef8830d11998-04-23 14:06:01 +00002117without (!) setting an exception. \strong{Note:} this function
2118returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002119\end{cfuncdesc}
2120
Fred Drakec6fa34e1998-04-02 06:47:24 +00002121\begin{cfuncdesc}{PyObject*}{PyDict_GetItemString}{PyDictObject *p, char *key}
Fred Drakef8830d11998-04-23 14:06:01 +00002122This is the same as \cfunction{PyDict_GetItem()}, but \var{key} is
2123specified as a \ctype{char *}, rather than a \ctype{PyObject *}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002124\end{cfuncdesc}
2125
Fred Drakec6fa34e1998-04-02 06:47:24 +00002126\begin{cfuncdesc}{PyObject*}{PyDict_Items}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002127Returns a \ctype{PyListObject} containing all the items
Guido van Rossum44475131998-04-21 15:30:01 +00002128from the dictionary, as in the dictinoary method \method{items()} (see
Fred Drakee058b4f1998-02-16 06:15:35 +00002129the \emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002130\end{cfuncdesc}
2131
Fred Drakec6fa34e1998-04-02 06:47:24 +00002132\begin{cfuncdesc}{PyObject*}{PyDict_Keys}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002133Returns a \ctype{PyListObject} containing all the keys
Guido van Rossum44475131998-04-21 15:30:01 +00002134from the dictionary, as in the dictionary method \method{keys()} (see the
Fred Drakee058b4f1998-02-16 06:15:35 +00002135\emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002136\end{cfuncdesc}
2137
Fred Drakec6fa34e1998-04-02 06:47:24 +00002138\begin{cfuncdesc}{PyObject*}{PyDict_Values}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002139Returns a \ctype{PyListObject} containing all the values
Guido van Rossum44475131998-04-21 15:30:01 +00002140from the dictionary \var{p}, as in the dictionary method
Fred Drakee058b4f1998-02-16 06:15:35 +00002141\method{values()} (see the \emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002142\end{cfuncdesc}
2143
2144\begin{cfuncdesc}{int}{PyDict_Size}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002145Returns the number of items in the dictionary.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002146\end{cfuncdesc}
2147
2148\begin{cfuncdesc}{int}{PyDict_Next}{PyDictObject *p,
2149 int ppos,
2150 PyObject **pkey,
2151 PyObject **pvalue}
2152
2153\end{cfuncdesc}
2154
2155
Fred Drakeefd146c1999-02-15 15:30:45 +00002156\section{Numeric Objects \label{numericObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002157
Fred Drakeefd146c1999-02-15 15:30:45 +00002158\subsection{Plain Integer Objects \label{intObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002159
2160\begin{ctypedesc}{PyIntObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002161This subtype of \ctype{PyObject} represents a Python integer object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002162\end{ctypedesc}
2163
2164\begin{cvardesc}{PyTypeObject}{PyInt_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002165This instance of \ctype{PyTypeObject} represents the Python plain
Fred Drakee5bf8b21998-02-12 21:22:28 +00002166integer type.
2167\end{cvardesc}
2168
2169\begin{cfuncdesc}{int}{PyInt_Check}{PyObject *}
2170
2171\end{cfuncdesc}
2172
Fred Drakec6fa34e1998-04-02 06:47:24 +00002173\begin{cfuncdesc}{PyObject*}{PyInt_FromLong}{long ival}
Fred Drakee058b4f1998-02-16 06:15:35 +00002174Creates a new integer object with a value of \var{ival}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002175
2176The current implementation keeps an array of integer objects for all
Fred Drakee058b4f1998-02-16 06:15:35 +00002177integers between \code{-1} and \code{100}, when you create an int in
2178that range you actually just get back a reference to the existing
2179object. So it should be possible to change the value of \code{1}. I
Fred Drake7e9d3141998-04-03 05:02:28 +00002180suspect the behaviour of Python in this case is undefined. :-)
Fred Drakee5bf8b21998-02-12 21:22:28 +00002181\end{cfuncdesc}
2182
2183\begin{cfuncdesc}{long}{PyInt_AS_LONG}{PyIntObject *io}
Fred Drakee058b4f1998-02-16 06:15:35 +00002184Returns the value of the object \var{io}. No error checking is
2185performed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002186\end{cfuncdesc}
2187
2188\begin{cfuncdesc}{long}{PyInt_AsLong}{PyObject *io}
Fred Drakef8830d11998-04-23 14:06:01 +00002189Will first attempt to cast the object to a \ctype{PyIntObject}, if
Fred Drakee058b4f1998-02-16 06:15:35 +00002190it is not already one, and then return its value.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002191\end{cfuncdesc}
2192
2193\begin{cfuncdesc}{long}{PyInt_GetMax}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002194Returns the systems idea of the largest integer it can handle
2195(\constant{LONG_MAX}, as defined in the system header files).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002196\end{cfuncdesc}
2197
2198
Fred Drakeefd146c1999-02-15 15:30:45 +00002199\subsection{Long Integer Objects \label{longObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002200
2201\begin{ctypedesc}{PyLongObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002202This subtype of \ctype{PyObject} represents a Python long integer
Fred Drakee058b4f1998-02-16 06:15:35 +00002203object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002204\end{ctypedesc}
2205
2206\begin{cvardesc}{PyTypeObject}{PyLong_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002207This instance of \ctype{PyTypeObject} represents the Python long
Fred Drakee058b4f1998-02-16 06:15:35 +00002208integer type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002209\end{cvardesc}
2210
2211\begin{cfuncdesc}{int}{PyLong_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002212Returns true if its argument is a \ctype{PyLongObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002213\end{cfuncdesc}
2214
Fred Drakec6fa34e1998-04-02 06:47:24 +00002215\begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
Fred Drakef8830d11998-04-23 14:06:01 +00002216Returns a new \ctype{PyLongObject} object from \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002217\end{cfuncdesc}
2218
Fred Drakec6fa34e1998-04-02 06:47:24 +00002219\begin{cfuncdesc}{PyObject*}{PyLong_FromUnsignedLong}{unsigned long v}
Fred Drakef8830d11998-04-23 14:06:01 +00002220Returns a new \ctype{PyLongObject} object from an unsigned \C{} long.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002221\end{cfuncdesc}
2222
Fred Drakec6fa34e1998-04-02 06:47:24 +00002223\begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
Fred Drakef8830d11998-04-23 14:06:01 +00002224Returns a new \ctype{PyLongObject} object from the integer part of \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002225\end{cfuncdesc}
2226
Fred Drakec6fa34e1998-04-02 06:47:24 +00002227\begin{cfuncdesc}{long}{PyLong_AsLong}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002228Returns a \C{} \ctype{long} representation of the contents of \var{pylong}.
2229WHAT HAPPENS IF \var{pylong} is greater than \constant{LONG_MAX}?
Fred Drakee5bf8b21998-02-12 21:22:28 +00002230\end{cfuncdesc}
2231
Fred Drakec6fa34e1998-04-02 06:47:24 +00002232\begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLong}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002233Returns a \C{} \ctype{unsigned long} representation of the contents of
2234\var{pylong}. WHAT HAPPENS IF \var{pylong} is greater than
2235\constant{ULONG_MAX}?
Fred Drakee5bf8b21998-02-12 21:22:28 +00002236\end{cfuncdesc}
2237
Fred Drakec6fa34e1998-04-02 06:47:24 +00002238\begin{cfuncdesc}{double}{PyLong_AsDouble}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002239Returns a \C{} \ctype{double} representation of the contents of \var{pylong}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002240\end{cfuncdesc}
2241
Fred Drakec6fa34e1998-04-02 06:47:24 +00002242\begin{cfuncdesc}{PyObject*}{PyLong_FromString}{char *str, char **pend,
2243 int base}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002244\end{cfuncdesc}
2245
2246
Fred Drakeefd146c1999-02-15 15:30:45 +00002247\subsection{Floating Point Objects \label{floatObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002248
2249\begin{ctypedesc}{PyFloatObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002250This subtype of \ctype{PyObject} represents a Python floating point
Fred Drakee058b4f1998-02-16 06:15:35 +00002251object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002252\end{ctypedesc}
2253
2254\begin{cvardesc}{PyTypeObject}{PyFloat_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002255This instance of \ctype{PyTypeObject} represents the Python floating
Fred Drakee5bf8b21998-02-12 21:22:28 +00002256point type.
2257\end{cvardesc}
2258
2259\begin{cfuncdesc}{int}{PyFloat_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002260Returns true if its argument is a \ctype{PyFloatObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002261\end{cfuncdesc}
2262
Fred Drakec6fa34e1998-04-02 06:47:24 +00002263\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
Fred Drakef8830d11998-04-23 14:06:01 +00002264Creates a \ctype{PyFloatObject} object from \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002265\end{cfuncdesc}
2266
Fred Drakec6fa34e1998-04-02 06:47:24 +00002267\begin{cfuncdesc}{double}{PyFloat_AsDouble}{PyObject *pyfloat}
Fred Drakef8830d11998-04-23 14:06:01 +00002268Returns a \C{} \ctype{double} representation of the contents of \var{pyfloat}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002269\end{cfuncdesc}
2270
Fred Drakec6fa34e1998-04-02 06:47:24 +00002271\begin{cfuncdesc}{double}{PyFloat_AS_DOUBLE}{PyObject *pyfloat}
Fred Drakef8830d11998-04-23 14:06:01 +00002272Returns a \C{} \ctype{double} representation of the contents of
2273\var{pyfloat}, but without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002274\end{cfuncdesc}
2275
2276
Fred Drakeefd146c1999-02-15 15:30:45 +00002277\subsection{Complex Number Objects \label{complexObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002278
2279\begin{ctypedesc}{Py_complex}
Fred Drake4de05a91998-02-16 14:25:26 +00002280The \C{} structure which corresponds to the value portion of a Python
2281complex number object. Most of the functions for dealing with complex
2282number objects use structures of this type as input or output values,
2283as appropriate. It is defined as:
2284
Fred Drakee058b4f1998-02-16 06:15:35 +00002285\begin{verbatim}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002286typedef struct {
2287 double real;
2288 double imag;
Fred Drake4de05a91998-02-16 14:25:26 +00002289} Py_complex;
Fred Drakee058b4f1998-02-16 06:15:35 +00002290\end{verbatim}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002291\end{ctypedesc}
2292
2293\begin{ctypedesc}{PyComplexObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002294This subtype of \ctype{PyObject} represents a Python complex number object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002295\end{ctypedesc}
2296
2297\begin{cvardesc}{PyTypeObject}{PyComplex_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002298This instance of \ctype{PyTypeObject} represents the Python complex
Fred Drakee5bf8b21998-02-12 21:22:28 +00002299number type.
2300\end{cvardesc}
2301
2302\begin{cfuncdesc}{int}{PyComplex_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002303Returns true if its argument is a \ctype{PyComplexObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002304\end{cfuncdesc}
2305
Fred Drakec6fa34e1998-04-02 06:47:24 +00002306\begin{cfuncdesc}{Py_complex}{_Py_c_sum}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002307\end{cfuncdesc}
2308
Fred Drakec6fa34e1998-04-02 06:47:24 +00002309\begin{cfuncdesc}{Py_complex}{_Py_c_diff}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002310\end{cfuncdesc}
2311
Fred Drakec6fa34e1998-04-02 06:47:24 +00002312\begin{cfuncdesc}{Py_complex}{_Py_c_neg}{Py_complex complex}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002313\end{cfuncdesc}
2314
Fred Drakec6fa34e1998-04-02 06:47:24 +00002315\begin{cfuncdesc}{Py_complex}{_Py_c_prod}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002316\end{cfuncdesc}
2317
Fred Drakec6fa34e1998-04-02 06:47:24 +00002318\begin{cfuncdesc}{Py_complex}{_Py_c_quot}{Py_complex dividend,
2319 Py_complex divisor}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002320\end{cfuncdesc}
2321
Fred Drakec6fa34e1998-04-02 06:47:24 +00002322\begin{cfuncdesc}{Py_complex}{_Py_c_pow}{Py_complex num, Py_complex exp}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002323\end{cfuncdesc}
2324
Fred Drakec6fa34e1998-04-02 06:47:24 +00002325\begin{cfuncdesc}{PyObject*}{PyComplex_FromCComplex}{Py_complex v}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002326\end{cfuncdesc}
2327
Fred Drakec6fa34e1998-04-02 06:47:24 +00002328\begin{cfuncdesc}{PyObject*}{PyComplex_FromDoubles}{double real, double imag}
Fred Drakef8830d11998-04-23 14:06:01 +00002329Returns a new \ctype{PyComplexObject} object from \var{real} and \var{imag}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002330\end{cfuncdesc}
2331
2332\begin{cfuncdesc}{double}{PyComplex_RealAsDouble}{PyObject *op}
Fred Drakef8830d11998-04-23 14:06:01 +00002333Returns the real part of \var{op} as a \C{} \ctype{double}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002334\end{cfuncdesc}
2335
2336\begin{cfuncdesc}{double}{PyComplex_ImagAsDouble}{PyObject *op}
Fred Drakef8830d11998-04-23 14:06:01 +00002337Returns the imaginary part of \var{op} as a \C{} \ctype{double}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002338\end{cfuncdesc}
2339
2340\begin{cfuncdesc}{Py_complex}{PyComplex_AsCComplex}{PyObject *op}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002341\end{cfuncdesc}
2342
2343
2344
Fred Drakeefd146c1999-02-15 15:30:45 +00002345\section{Other Objects \label{otherObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002346
Fred Drakeefd146c1999-02-15 15:30:45 +00002347\subsection{File Objects \label{fileObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002348
2349\begin{ctypedesc}{PyFileObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002350This subtype of \ctype{PyObject} represents a Python file object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002351\end{ctypedesc}
2352
2353\begin{cvardesc}{PyTypeObject}{PyFile_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002354This instance of \ctype{PyTypeObject} represents the Python file type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002355\end{cvardesc}
2356
2357\begin{cfuncdesc}{int}{PyFile_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002358Returns true if its argument is a \ctype{PyFileObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002359\end{cfuncdesc}
2360
Fred Drakec6fa34e1998-04-02 06:47:24 +00002361\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *name, char *mode}
Fred Drakef8830d11998-04-23 14:06:01 +00002362Creates a new \ctype{PyFileObject} pointing to the file
Fred Drakee058b4f1998-02-16 06:15:35 +00002363specified in \var{name} with the mode specified in \var{mode}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002364\end{cfuncdesc}
2365
Fred Drakec6fa34e1998-04-02 06:47:24 +00002366\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp,
Fred Drakeb92dce31998-02-25 15:40:22 +00002367 char *name, char *mode, int (*close)}
Fred Drakef8830d11998-04-23 14:06:01 +00002368Creates a new \ctype{PyFileObject} from the already-open \var{fp}.
Fred Drakee058b4f1998-02-16 06:15:35 +00002369The function \var{close} will be called when the file should be
2370closed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002371\end{cfuncdesc}
2372
2373\begin{cfuncdesc}{FILE *}{PyFile_AsFile}{PyFileObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002374Returns the file object associated with \var{p} as a \ctype{FILE *}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002375\end{cfuncdesc}
2376
Fred Drakec6fa34e1998-04-02 06:47:24 +00002377\begin{cfuncdesc}{PyObject*}{PyFile_GetLine}{PyObject *p, int n}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002378undocumented as yet
2379\end{cfuncdesc}
2380
Fred Drakec6fa34e1998-04-02 06:47:24 +00002381\begin{cfuncdesc}{PyObject*}{PyFile_Name}{PyObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002382Returns the name of the file specified by \var{p} as a
Fred Drakef8830d11998-04-23 14:06:01 +00002383\ctype{PyStringObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002384\end{cfuncdesc}
2385
2386\begin{cfuncdesc}{void}{PyFile_SetBufSize}{PyFileObject *p, int n}
Fred Drakee058b4f1998-02-16 06:15:35 +00002387Available on systems with \cfunction{setvbuf()} only. This should
2388only be called immediately after file object creation.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002389\end{cfuncdesc}
2390
2391\begin{cfuncdesc}{int}{PyFile_SoftSpace}{PyFileObject *p, int newflag}
Fred Drakef8830d11998-04-23 14:06:01 +00002392Sets the \member{softspace} attribute of \var{p} to \var{newflag}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00002393Returns the previous value. This function clears any errors, and will
Fred Drakee058b4f1998-02-16 06:15:35 +00002394return \code{0} as the previous value if the attribute either does not
2395exist or if there were errors in retrieving it. There is no way to
2396detect errors from this function, but doing so should not be needed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002397\end{cfuncdesc}
2398
Fred Drakec6fa34e1998-04-02 06:47:24 +00002399\begin{cfuncdesc}{int}{PyFile_WriteObject}{PyObject *obj, PyFileObject *p,
2400 int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00002401Writes object \var{obj} to file object \var{p}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002402\end{cfuncdesc}
2403
Fred Drakec6fa34e1998-04-02 06:47:24 +00002404\begin{cfuncdesc}{int}{PyFile_WriteString}{char *s, PyFileObject *p,
2405 int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00002406Writes string \var{s} to file object \var{p}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002407\end{cfuncdesc}
2408
2409
Fred Drakeefd146c1999-02-15 15:30:45 +00002410\subsection{Module Objects \label{moduleObjects}}
2411
2412\obindex{module}
2413There are only a few functions special to module objects.
2414
2415\begin{cfuncdesc}{PyObject *}{PyModule_New}{char *name}
2416Return a new module object with the \member{__name__} attribute set to
2417\var{name}. Only the module's \member{__doc__} and \member{__name__}
2418attributes are filled in; the caller is responsible for providing a
2419\member{__file__} attribute.
2420\end{cfuncdesc}
2421
2422\begin{cfuncdesc}{PyObject *}{PyModule_GetDict}{PyObject *module}
2423Return the dictionary object that implements \var{module}'s namespace;
2424this object is the same as the \member{__dict__} attribute of the
2425module object. This function never fails.
2426\end{cfuncdesc}
2427
2428\begin{cfuncdesc}{char *}{PyModule_GetName}{PyObject *module}
2429Return \var{module}'s \member{__name__} value. If the module does not
2430provide one, \exception{SystemError} is raised.
2431\end{cfuncdesc}
2432
2433\begin{cfuncdesc}{char *}{PyModule_GetFilename}{PyObject *module}
2434Return the name of the file from which \var{module} was loaded using
2435\var{module}'s \member{__file__} attribute. If this is not defined,
2436raise \exception{SystemError}.
2437\end{cfuncdesc}
2438
2439
2440\subsection{CObjects \label{cObjects}}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002441
Guido van Rossum44475131998-04-21 15:30:01 +00002442\begin{ctypedesc}{PyCObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002443This subtype of \ctype{PyObject} represents an opaque value, useful for
Guido van Rossum44475131998-04-21 15:30:01 +00002444\C{} extension modules who need to pass an opaque value (as a
Fred Drakef8830d11998-04-23 14:06:01 +00002445\ctype{void *} pointer) through Python code to other \C{} code. It is
Guido van Rossum44475131998-04-21 15:30:01 +00002446often used to make a C function pointer defined in one module
2447available to other modules, so the regular import mechanism can be
2448used to access C APIs defined in dynamically loaded modules.
2449\end{ctypedesc}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002450
Guido van Rossum44475131998-04-21 15:30:01 +00002451\begin{cfuncdesc}{PyObject *}{PyCObject_FromVoidPtr}{void* cobj,
2452 void (*destr)(void *)}
Fred Drakef8830d11998-04-23 14:06:01 +00002453Creates a \ctype{PyCObject} from the \code{void *} \var{cobj}. The
Fred Drakedab44681999-05-13 18:41:14 +00002454\var{destr} function will be called when the object is reclaimed, unless
2455it is \NULL.
Guido van Rossum44475131998-04-21 15:30:01 +00002456\end{cfuncdesc}
2457
2458\begin{cfuncdesc}{PyObject *}{PyCObject_FromVoidPtrAndDesc}{void* cobj,
2459 void* desc, void (*destr)(void *, void *) }
Fred Drakef8830d11998-04-23 14:06:01 +00002460Creates a \ctype{PyCObject} from the \ctype{void *}\var{cobj}. The
2461\var{destr} function will be called when the object is reclaimed. The
2462\var{desc} argument can be used to pass extra callback data for the
2463destructor function.
Guido van Rossum44475131998-04-21 15:30:01 +00002464\end{cfuncdesc}
2465
2466\begin{cfuncdesc}{void *}{PyCObject_AsVoidPtr}{PyObject* self}
Fred Drakef8830d11998-04-23 14:06:01 +00002467Returns the object \ctype{void *} that the \ctype{PyCObject} \var{self}
Guido van Rossum44475131998-04-21 15:30:01 +00002468was created with.
2469\end{cfuncdesc}
2470
2471\begin{cfuncdesc}{void *}{PyCObject_GetDesc}{PyObject* self}
Fred Drakef8830d11998-04-23 14:06:01 +00002472Returns the description \ctype{void *} that the \ctype{PyCObject}
Guido van Rossum44475131998-04-21 15:30:01 +00002473\var{self} was created with.
2474\end{cfuncdesc}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002475
Fred Drakeefd146c1999-02-15 15:30:45 +00002476\chapter{Initialization, Finalization, and Threads
2477 \label{initialization}}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002478
Guido van Rossum4a944d71997-08-14 20:35:38 +00002479\begin{cfuncdesc}{void}{Py_Initialize}{}
2480Initialize the Python interpreter. In an application embedding
2481Python, this should be called before using any other Python/C API
Fred Drakee058b4f1998-02-16 06:15:35 +00002482functions; with the exception of \cfunction{Py_SetProgramName()},
2483\cfunction{PyEval_InitThreads()}, \cfunction{PyEval_ReleaseLock()},
2484and \cfunction{PyEval_AcquireLock()}. This initializes the table of
2485loaded modules (\code{sys.modules}), and creates the fundamental
Fred Drake4de05a91998-02-16 14:25:26 +00002486modules \module{__builtin__}\refbimodindex{__builtin__},
2487\module{__main__}\refbimodindex{__main__} and
2488\module{sys}\refbimodindex{sys}. It also initializes the module
2489search path (\code{sys.path}).%
2490\indexiii{module}{search}{path}
2491It does not set \code{sys.argv}; use \cfunction{PySys_SetArgv()} for
2492that. This is a no-op when called for a second time (without calling
Fred Drakee058b4f1998-02-16 06:15:35 +00002493\cfunction{Py_Finalize()} first). There is no return value; it is a
2494fatal error if the initialization fails.
Guido van Rossum42cefd01997-10-05 15:27:29 +00002495\end{cfuncdesc}
2496
2497\begin{cfuncdesc}{int}{Py_IsInitialized}{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00002498Return true (nonzero) when the Python interpreter has been
Fred Drakee058b4f1998-02-16 06:15:35 +00002499initialized, false (zero) if not. After \cfunction{Py_Finalize()} is
2500called, this returns false until \cfunction{Py_Initialize()} is called
Guido van Rossum42cefd01997-10-05 15:27:29 +00002501again.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002502\end{cfuncdesc}
2503
2504\begin{cfuncdesc}{void}{Py_Finalize}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002505Undo all initializations made by \cfunction{Py_Initialize()} and
2506subsequent use of Python/C API functions, and destroy all
2507sub-interpreters (see \cfunction{Py_NewInterpreter()} below) that were
2508created and not yet destroyed since the last call to
2509\cfunction{Py_Initialize()}. Ideally, this frees all memory allocated
2510by the Python interpreter. This is a no-op when called for a second
2511time (without calling \cfunction{Py_Initialize()} again first). There
2512is no return value; errors during finalization are ignored.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002513
2514This function is provided for a number of reasons. An embedding
2515application might want to restart Python without having to restart the
2516application itself. An application that has loaded the Python
2517interpreter from a dynamically loadable library (or DLL) might want to
2518free all memory allocated by Python before unloading the DLL. During a
2519hunt for memory leaks in an application a developer might want to free
2520all memory allocated by Python before exiting from the application.
2521
Fred Drakee058b4f1998-02-16 06:15:35 +00002522\strong{Bugs and caveats:} The destruction of modules and objects in
Guido van Rossum4a944d71997-08-14 20:35:38 +00002523modules is done in random order; this may cause destructors
Fred Drakee058b4f1998-02-16 06:15:35 +00002524(\method{__del__()} methods) to fail when they depend on other objects
Guido van Rossum4a944d71997-08-14 20:35:38 +00002525(even functions) or modules. Dynamically loaded extension modules
2526loaded by Python are not unloaded. Small amounts of memory allocated
2527by the Python interpreter may not be freed (if you find a leak, please
2528report it). Memory tied up in circular references between objects is
2529not freed. Some memory allocated by extension modules may not be
2530freed. Some extension may not work properly if their initialization
2531routine is called more than once; this can happen if an applcation
Fred Drakee058b4f1998-02-16 06:15:35 +00002532calls \cfunction{Py_Initialize()} and \cfunction{Py_Finalize()} more
2533than once.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002534\end{cfuncdesc}
2535
Fred Drakec6fa34e1998-04-02 06:47:24 +00002536\begin{cfuncdesc}{PyThreadState*}{Py_NewInterpreter}{}
Fred Drake4de05a91998-02-16 14:25:26 +00002537Create a new sub-interpreter. This is an (almost) totally separate
2538environment for the execution of Python code. In particular, the new
2539interpreter has separate, independent versions of all imported
2540modules, including the fundamental modules
2541\module{__builtin__}\refbimodindex{__builtin__},
2542\module{__main__}\refbimodindex{__main__} and
2543\module{sys}\refbimodindex{sys}. The table of loaded modules
2544(\code{sys.modules}) and the module search path (\code{sys.path}) are
2545also separate. The new environment has no \code{sys.argv} variable.
2546It has new standard I/O stream file objects \code{sys.stdin},
2547\code{sys.stdout} and \code{sys.stderr} (however these refer to the
Fred Drakef8830d11998-04-23 14:06:01 +00002548same underlying \ctype{FILE} structures in the \C{} library).
Guido van Rossum4a944d71997-08-14 20:35:38 +00002549
2550The return value points to the first thread state created in the new
2551sub-interpreter. This thread state is made the current thread state.
2552Note that no actual thread is created; see the discussion of thread
2553states below. If creation of the new interpreter is unsuccessful,
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002554\NULL{} is returned; no exception is set since the exception state
Guido van Rossum4a944d71997-08-14 20:35:38 +00002555is stored in the current thread state and there may not be a current
2556thread state. (Like all other Python/C API functions, the global
2557interpreter lock must be held before calling this function and is
2558still held when it returns; however, unlike most other Python/C API
2559functions, there needn't be a current thread state on entry.)
2560
2561Extension modules are shared between (sub-)interpreters as follows:
2562the first time a particular extension is imported, it is initialized
2563normally, and a (shallow) copy of its module's dictionary is
2564squirreled away. When the same extension is imported by another
2565(sub-)interpreter, a new module is initialized and filled with the
Fred Drakee058b4f1998-02-16 06:15:35 +00002566contents of this copy; the extension's \code{init} function is not
2567called. Note that this is different from what happens when an
2568extension is imported after the interpreter has been completely
2569re-initialized by calling \cfunction{Py_Finalize()} and
2570\cfunction{Py_Initialize()}; in that case, the extension's \code{init}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002571function \emph{is} called again.
2572
Fred Drakee058b4f1998-02-16 06:15:35 +00002573\strong{Bugs and caveats:} Because sub-interpreters (and the main
Guido van Rossum4a944d71997-08-14 20:35:38 +00002574interpreter) are part of the same process, the insulation between them
Fred Drakee058b4f1998-02-16 06:15:35 +00002575isn't perfect --- for example, using low-level file operations like
Fred Drakef8830d11998-04-23 14:06:01 +00002576\function{os.close()} they can (accidentally or maliciously) affect each
Guido van Rossum4a944d71997-08-14 20:35:38 +00002577other's open files. Because of the way extensions are shared between
2578(sub-)interpreters, some extensions may not work properly; this is
2579especially likely when the extension makes use of (static) global
2580variables, or when the extension manipulates its module's dictionary
2581after its initialization. It is possible to insert objects created in
2582one sub-interpreter into a namespace of another sub-interpreter; this
2583should be done with great care to avoid sharing user-defined
2584functions, methods, instances or classes between sub-interpreters,
2585since import operations executed by such objects may affect the
2586wrong (sub-)interpreter's dictionary of loaded modules. (XXX This is
2587a hard-to-fix bug that will be addressed in a future release.)
2588\end{cfuncdesc}
2589
2590\begin{cfuncdesc}{void}{Py_EndInterpreter}{PyThreadState *tstate}
2591Destroy the (sub-)interpreter represented by the given thread state.
2592The given thread state must be the current thread state. See the
2593discussion of thread states below. When the call returns, the current
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002594thread state is \NULL{}. All thread states associated with this
Guido van Rossum4a944d71997-08-14 20:35:38 +00002595interpreted are destroyed. (The global interpreter lock must be held
2596before calling this function and is still held when it returns.)
Fred Drakee058b4f1998-02-16 06:15:35 +00002597\cfunction{Py_Finalize()} will destroy all sub-interpreters that haven't
Guido van Rossum4a944d71997-08-14 20:35:38 +00002598been explicitly destroyed at that point.
2599\end{cfuncdesc}
2600
2601\begin{cfuncdesc}{void}{Py_SetProgramName}{char *name}
Fred Drakee058b4f1998-02-16 06:15:35 +00002602This function should be called before \cfunction{Py_Initialize()} is called
Guido van Rossum4a944d71997-08-14 20:35:38 +00002603for the first time, if it is called at all. It tells the interpreter
Fred Drakee058b4f1998-02-16 06:15:35 +00002604the value of the \code{argv[0]} argument to the \cfunction{main()} function
2605of the program. This is used by \cfunction{Py_GetPath()} and some other
Guido van Rossum4a944d71997-08-14 20:35:38 +00002606functions below to find the Python run-time libraries relative to the
2607interpreter executable. The default value is \code{"python"}. The
2608argument should point to a zero-terminated character string in static
2609storage whose contents will not change for the duration of the
2610program's execution. No code in the Python interpreter will change
2611the contents of this storage.
2612\end{cfuncdesc}
2613
Fred Drakec6fa34e1998-04-02 06:47:24 +00002614\begin{cfuncdesc}{char*}{Py_GetProgramName}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002615Return the program name set with \cfunction{Py_SetProgramName()}, or the
Guido van Rossum4a944d71997-08-14 20:35:38 +00002616default. The returned string points into static storage; the caller
2617should not modify its value.
2618\end{cfuncdesc}
2619
Fred Drakec6fa34e1998-04-02 06:47:24 +00002620\begin{cfuncdesc}{char*}{Py_GetPrefix}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002621Return the \emph{prefix} for installed platform-independent files. This
Guido van Rossum4a944d71997-08-14 20:35:38 +00002622is derived through a number of complicated rules from the program name
Fred Drakee058b4f1998-02-16 06:15:35 +00002623set with \cfunction{Py_SetProgramName()} and some environment variables;
Guido van Rossum4a944d71997-08-14 20:35:38 +00002624for example, if the program name is \code{"/usr/local/bin/python"},
2625the prefix is \code{"/usr/local"}. The returned string points into
2626static storage; the caller should not modify its value. This
Fred Drakec94d9341998-04-12 02:39:13 +00002627corresponds to the \makevar{prefix} variable in the top-level
2628\file{Makefile} and the \code{-}\code{-prefix} argument to the
Fred Drakee058b4f1998-02-16 06:15:35 +00002629\program{configure} script at build time. The value is available to
Fred Drakeb0a78731998-01-13 18:51:10 +00002630Python code as \code{sys.prefix}. It is only useful on \UNIX{}. See
Guido van Rossum4a944d71997-08-14 20:35:38 +00002631also the next function.
2632\end{cfuncdesc}
2633
Fred Drakec6fa34e1998-04-02 06:47:24 +00002634\begin{cfuncdesc}{char*}{Py_GetExecPrefix}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002635Return the \emph{exec-prefix} for installed platform-\emph{de}pendent
Guido van Rossum4a944d71997-08-14 20:35:38 +00002636files. This is derived through a number of complicated rules from the
Fred Drakee058b4f1998-02-16 06:15:35 +00002637program name set with \cfunction{Py_SetProgramName()} and some environment
Guido van Rossum4a944d71997-08-14 20:35:38 +00002638variables; for example, if the program name is
2639\code{"/usr/local/bin/python"}, the exec-prefix is
2640\code{"/usr/local"}. The returned string points into static storage;
2641the caller should not modify its value. This corresponds to the
Fred Drakec94d9341998-04-12 02:39:13 +00002642\makevar{exec_prefix} variable in the top-level \file{Makefile} and the
2643\code{-}\code{-exec_prefix} argument to the \program{configure} script
2644at build time. The value is available to Python code as
Fred Drakeb0a78731998-01-13 18:51:10 +00002645\code{sys.exec_prefix}. It is only useful on \UNIX{}.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002646
2647Background: The exec-prefix differs from the prefix when platform
2648dependent files (such as executables and shared libraries) are
2649installed in a different directory tree. In a typical installation,
2650platform dependent files may be installed in the
2651\code{"/usr/local/plat"} subtree while platform independent may be
2652installed in \code{"/usr/local"}.
2653
2654Generally speaking, a platform is a combination of hardware and
2655software families, e.g. Sparc machines running the Solaris 2.x
2656operating system are considered the same platform, but Intel machines
2657running Solaris 2.x are another platform, and Intel machines running
2658Linux are yet another platform. Different major revisions of the same
Fred Drakeb0a78731998-01-13 18:51:10 +00002659operating system generally also form different platforms. Non-\UNIX{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002660operating systems are a different story; the installation strategies
2661on those systems are so different that the prefix and exec-prefix are
2662meaningless, and set to the empty string. Note that compiled Python
2663bytecode files are platform independent (but not independent from the
2664Python version by which they were compiled!).
2665
Fred Drakee058b4f1998-02-16 06:15:35 +00002666System administrators will know how to configure the \program{mount} or
2667\program{automount} programs to share \code{"/usr/local"} between platforms
Guido van Rossum4a944d71997-08-14 20:35:38 +00002668while having \code{"/usr/local/plat"} be a different filesystem for each
2669platform.
2670\end{cfuncdesc}
2671
Fred Drakec6fa34e1998-04-02 06:47:24 +00002672\begin{cfuncdesc}{char*}{Py_GetProgramFullPath}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002673Return the full program name of the Python executable; this is
2674computed as a side-effect of deriving the default module search path
Fred Drakee058b4f1998-02-16 06:15:35 +00002675from the program name (set by \cfunction{Py_SetProgramName()} above). The
Guido van Rossum4a944d71997-08-14 20:35:38 +00002676returned string points into static storage; the caller should not
2677modify its value. The value is available to Python code as
Guido van Rossum42cefd01997-10-05 15:27:29 +00002678\code{sys.executable}.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002679\end{cfuncdesc}
2680
Fred Drakec6fa34e1998-04-02 06:47:24 +00002681\begin{cfuncdesc}{char*}{Py_GetPath}{}
Fred Drake4de05a91998-02-16 14:25:26 +00002682\indexiii{module}{search}{path}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002683Return the default module search path; this is computed from the
Fred Drakee058b4f1998-02-16 06:15:35 +00002684program name (set by \cfunction{Py_SetProgramName()} above) and some
Guido van Rossum4a944d71997-08-14 20:35:38 +00002685environment variables. The returned string consists of a series of
2686directory names separated by a platform dependent delimiter character.
Fred Drakef8830d11998-04-23 14:06:01 +00002687The delimiter character is \character{:} on \UNIX{}, \character{;} on
2688DOS/Windows, and \character{\\n} (the \ASCII{} newline character) on
Fred Drakee5bc4971998-02-12 23:36:49 +00002689Macintosh. The returned string points into static storage; the caller
Guido van Rossum4a944d71997-08-14 20:35:38 +00002690should not modify its value. The value is available to Python code
2691as the list \code{sys.path}, which may be modified to change the
2692future search path for loaded modules.
2693
2694% XXX should give the exact rules
2695\end{cfuncdesc}
2696
Fred Drakec6fa34e1998-04-02 06:47:24 +00002697\begin{cfuncdesc}{const char*}{Py_GetVersion}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002698Return the version of this Python interpreter. This is a string that
2699looks something like
2700
Guido van Rossum09270b51997-08-15 18:57:32 +00002701\begin{verbatim}
Fred Drakee058b4f1998-02-16 06:15:35 +00002702"1.5 (#67, Dec 31 1997, 22:34:28) [GCC 2.7.2.2]"
Guido van Rossum09270b51997-08-15 18:57:32 +00002703\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002704
2705The first word (up to the first space character) is the current Python
2706version; the first three characters are the major and minor version
2707separated by a period. The returned string points into static storage;
2708the caller should not modify its value. The value is available to
2709Python code as the list \code{sys.version}.
2710\end{cfuncdesc}
2711
Fred Drakec6fa34e1998-04-02 06:47:24 +00002712\begin{cfuncdesc}{const char*}{Py_GetPlatform}{}
Fred Drakeb0a78731998-01-13 18:51:10 +00002713Return the platform identifier for the current platform. On \UNIX{},
Guido van Rossum4a944d71997-08-14 20:35:38 +00002714this is formed from the ``official'' name of the operating system,
2715converted to lower case, followed by the major revision number; e.g.,
2716for Solaris 2.x, which is also known as SunOS 5.x, the value is
2717\code{"sunos5"}. On Macintosh, it is \code{"mac"}. On Windows, it
2718is \code{"win"}. The returned string points into static storage;
2719the caller should not modify its value. The value is available to
2720Python code as \code{sys.platform}.
2721\end{cfuncdesc}
2722
Fred Drakec6fa34e1998-04-02 06:47:24 +00002723\begin{cfuncdesc}{const char*}{Py_GetCopyright}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002724Return the official copyright string for the current Python version,
2725for example
2726
2727\code{"Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam"}
2728
2729The returned string points into static storage; the caller should not
2730modify its value. The value is available to Python code as the list
2731\code{sys.copyright}.
2732\end{cfuncdesc}
2733
Fred Drakec6fa34e1998-04-02 06:47:24 +00002734\begin{cfuncdesc}{const char*}{Py_GetCompiler}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002735Return an indication of the compiler used to build the current Python
Fred Drakee058b4f1998-02-16 06:15:35 +00002736version, in square brackets, for example:
Guido van Rossum4a944d71997-08-14 20:35:38 +00002737
Fred Drakee058b4f1998-02-16 06:15:35 +00002738\begin{verbatim}
2739"[GCC 2.7.2.2]"
2740\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002741
2742The returned string points into static storage; the caller should not
2743modify its value. The value is available to Python code as part of
2744the variable \code{sys.version}.
2745\end{cfuncdesc}
2746
Fred Drakec6fa34e1998-04-02 06:47:24 +00002747\begin{cfuncdesc}{const char*}{Py_GetBuildInfo}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002748Return information about the sequence number and build date and time
2749of the current Python interpreter instance, for example
2750
Guido van Rossum09270b51997-08-15 18:57:32 +00002751\begin{verbatim}
2752"#67, Aug 1 1997, 22:34:28"
2753\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002754
2755The returned string points into static storage; the caller should not
2756modify its value. The value is available to Python code as part of
2757the variable \code{sys.version}.
2758\end{cfuncdesc}
2759
2760\begin{cfuncdesc}{int}{PySys_SetArgv}{int argc, char **argv}
2761% XXX
2762\end{cfuncdesc}
2763
2764% XXX Other PySys thingies (doesn't really belong in this chapter)
2765
Fred Drakeefd146c1999-02-15 15:30:45 +00002766\section{Thread State and the Global Interpreter Lock
2767 \label{threads}}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002768
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002769The Python interpreter is not fully thread safe. In order to support
2770multi-threaded Python programs, there's a global lock that must be
2771held by the current thread before it can safely access Python objects.
2772Without the lock, even the simplest operations could cause problems in
Fred Drake7baf3d41998-02-20 00:45:52 +00002773a multi-threaded program: for example, when two threads simultaneously
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002774increment the reference count of the same object, the reference count
2775could end up being incremented only once instead of twice.
2776
2777Therefore, the rule exists that only the thread that has acquired the
2778global interpreter lock may operate on Python objects or call Python/C
2779API functions. In order to support multi-threaded Python programs,
Fred Drakee058b4f1998-02-16 06:15:35 +00002780the interpreter regularly release and reacquires the lock --- by
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002781default, every ten bytecode instructions (this can be changed with
Fred Drakee058b4f1998-02-16 06:15:35 +00002782\function{sys.setcheckinterval()}). The lock is also released and
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002783reacquired around potentially blocking I/O operations like reading or
2784writing a file, so that other threads can run while the thread that
2785requests the I/O is waiting for the I/O operation to complete.
2786
2787The Python interpreter needs to keep some bookkeeping information
Fred Drakee058b4f1998-02-16 06:15:35 +00002788separate per thread --- for this it uses a data structure called
Fred Drakef8830d11998-04-23 14:06:01 +00002789\ctype{PyThreadState}. This is new in Python 1.5; in earlier versions,
Fred Drakee058b4f1998-02-16 06:15:35 +00002790such state was stored in global variables, and switching threads could
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002791cause problems. In particular, exception handling is now thread safe,
Fred Drakee058b4f1998-02-16 06:15:35 +00002792when the application uses \function{sys.exc_info()} to access the
2793exception last raised in the current thread.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002794
2795There's one global variable left, however: the pointer to the current
Fred Drakef8830d11998-04-23 14:06:01 +00002796\ctype{PyThreadState} structure. While most thread packages have a way
Fred Drake9d20ac31998-02-16 15:27:08 +00002797to store ``per-thread global data,'' Python's internal platform
Fred Drakee058b4f1998-02-16 06:15:35 +00002798independent thread abstraction doesn't support this yet. Therefore,
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002799the current thread state must be manipulated explicitly.
2800
2801This is easy enough in most cases. Most code manipulating the global
2802interpreter lock has the following simple structure:
2803
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002804\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002805Save the thread state in a local variable.
2806Release the interpreter lock.
2807...Do some blocking I/O operation...
2808Reacquire the interpreter lock.
2809Restore the thread state from the local variable.
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002810\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002811
2812This is so common that a pair of macros exists to simplify it:
2813
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002814\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002815Py_BEGIN_ALLOW_THREADS
2816...Do some blocking I/O operation...
2817Py_END_ALLOW_THREADS
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002818\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002819
Fred Drakee058b4f1998-02-16 06:15:35 +00002820The \code{Py_BEGIN_ALLOW_THREADS} macro opens a new block and declares
2821a hidden local variable; the \code{Py_END_ALLOW_THREADS} macro closes
2822the block. Another advantage of using these two macros is that when
2823Python is compiled without thread support, they are defined empty,
2824thus saving the thread state and lock manipulations.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002825
2826When thread support is enabled, the block above expands to the
2827following code:
2828
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002829\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002830{
2831 PyThreadState *_save;
2832 _save = PyEval_SaveThread();
2833 ...Do some blocking I/O operation...
2834 PyEval_RestoreThread(_save);
2835}
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002836\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002837
2838Using even lower level primitives, we can get roughly the same effect
2839as follows:
2840
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002841\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002842{
2843 PyThreadState *_save;
2844 _save = PyThreadState_Swap(NULL);
2845 PyEval_ReleaseLock();
2846 ...Do some blocking I/O operation...
2847 PyEval_AcquireLock();
2848 PyThreadState_Swap(_save);
2849}
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002850\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002851
2852There are some subtle differences; in particular,
Fred Drakee058b4f1998-02-16 06:15:35 +00002853\cfunction{PyEval_RestoreThread()} saves and restores the value of the
Fred Drakef8830d11998-04-23 14:06:01 +00002854global variable \cdata{errno}, since the lock manipulation does not
2855guarantee that \cdata{errno} is left alone. Also, when thread support
Fred Drakee058b4f1998-02-16 06:15:35 +00002856is disabled, \cfunction{PyEval_SaveThread()} and
2857\cfunction{PyEval_RestoreThread()} don't manipulate the lock; in this
2858case, \cfunction{PyEval_ReleaseLock()} and
2859\cfunction{PyEval_AcquireLock()} are not available. This is done so
2860that dynamically loaded extensions compiled with thread support
2861enabled can be loaded by an interpreter that was compiled with
2862disabled thread support.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002863
2864The global interpreter lock is used to protect the pointer to the
2865current thread state. When releasing the lock and saving the thread
2866state, the current thread state pointer must be retrieved before the
2867lock is released (since another thread could immediately acquire the
2868lock and store its own thread state in the global variable).
2869Reversely, when acquiring the lock and restoring the thread state, the
2870lock must be acquired before storing the thread state pointer.
2871
2872Why am I going on with so much detail about this? Because when
Fred Drakeb0a78731998-01-13 18:51:10 +00002873threads are created from \C{}, they don't have the global interpreter
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002874lock, nor is there a thread state data structure for them. Such
2875threads must bootstrap themselves into existence, by first creating a
2876thread state data structure, then acquiring the lock, and finally
2877storing their thread state pointer, before they can start using the
2878Python/C API. When they are done, they should reset the thread state
2879pointer, release the lock, and finally free their thread state data
2880structure.
2881
2882When creating a thread data structure, you need to provide an
2883interpreter state data structure. The interpreter state data
2884structure hold global data that is shared by all threads in an
2885interpreter, for example the module administration
2886(\code{sys.modules}). Depending on your needs, you can either create
2887a new interpreter state data structure, or share the interpreter state
2888data structure used by the Python main thread (to access the latter,
Fred Drakef8830d11998-04-23 14:06:01 +00002889you must obtain the thread state and access its \member{interp} member;
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002890this must be done by a thread that is created by Python or by the main
2891thread after Python is initialized).
2892
2893XXX More?
2894
2895\begin{ctypedesc}{PyInterpreterState}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002896This data structure represents the state shared by a number of
2897cooperating threads. Threads belonging to the same interpreter
2898share their module administration and a few other internal items.
2899There are no public members in this structure.
2900
2901Threads belonging to different interpreters initially share nothing,
2902except process state like available memory, open file descriptors and
2903such. The global interpreter lock is also shared by all threads,
2904regardless of to which interpreter they belong.
2905\end{ctypedesc}
2906
2907\begin{ctypedesc}{PyThreadState}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002908This data structure represents the state of a single thread. The only
Fred Drakef8830d11998-04-23 14:06:01 +00002909public data member is \ctype{PyInterpreterState *}\member{interp},
2910which points to this thread's interpreter state.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002911\end{ctypedesc}
2912
2913\begin{cfuncdesc}{void}{PyEval_InitThreads}{}
2914Initialize and acquire the global interpreter lock. It should be
2915called in the main thread before creating a second thread or engaging
Fred Drakee058b4f1998-02-16 06:15:35 +00002916in any other thread operations such as
2917\cfunction{PyEval_ReleaseLock()} or
2918\code{PyEval_ReleaseThread(\var{tstate})}. It is not needed before
2919calling \cfunction{PyEval_SaveThread()} or
2920\cfunction{PyEval_RestoreThread()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002921
2922This is a no-op when called for a second time. It is safe to call
Fred Drakee058b4f1998-02-16 06:15:35 +00002923this function before calling \cfunction{Py_Initialize()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002924
2925When only the main thread exists, no lock operations are needed. This
2926is a common situation (most Python programs do not use threads), and
2927the lock operations slow the interpreter down a bit. Therefore, the
2928lock is not created initially. This situation is equivalent to having
2929acquired the lock: when there is only a single thread, all object
2930accesses are safe. Therefore, when this function initializes the
Fred Drake4de05a91998-02-16 14:25:26 +00002931lock, it also acquires it. Before the Python
2932\module{thread}\refbimodindex{thread} module creates a new thread,
2933knowing that either it has the lock or the lock hasn't been created
2934yet, it calls \cfunction{PyEval_InitThreads()}. When this call
2935returns, it is guaranteed that the lock has been created and that it
2936has acquired it.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002937
2938It is \strong{not} safe to call this function when it is unknown which
2939thread (if any) currently has the global interpreter lock.
2940
2941This function is not available when thread support is disabled at
2942compile time.
2943\end{cfuncdesc}
2944
Guido van Rossum4a944d71997-08-14 20:35:38 +00002945\begin{cfuncdesc}{void}{PyEval_AcquireLock}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002946Acquire the global interpreter lock. The lock must have been created
2947earlier. If this thread already has the lock, a deadlock ensues.
2948This function is not available when thread support is disabled at
2949compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002950\end{cfuncdesc}
2951
2952\begin{cfuncdesc}{void}{PyEval_ReleaseLock}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002953Release the global interpreter lock. The lock must have been created
2954earlier. This function is not available when thread support is
Fred Drakee058b4f1998-02-16 06:15:35 +00002955disabled at compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002956\end{cfuncdesc}
2957
2958\begin{cfuncdesc}{void}{PyEval_AcquireThread}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002959Acquire the global interpreter lock and then set the current thread
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002960state to \var{tstate}, which should not be \NULL{}. The lock must
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002961have been created earlier. If this thread already has the lock,
2962deadlock ensues. This function is not available when thread support
Fred Drakee058b4f1998-02-16 06:15:35 +00002963is disabled at compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002964\end{cfuncdesc}
2965
2966\begin{cfuncdesc}{void}{PyEval_ReleaseThread}{PyThreadState *tstate}
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002967Reset the current thread state to \NULL{} and release the global
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002968interpreter lock. The lock must have been created earlier and must be
2969held by the current thread. The \var{tstate} argument, which must not
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002970be \NULL{}, is only used to check that it represents the current
Fred Drakee058b4f1998-02-16 06:15:35 +00002971thread state --- if it isn't, a fatal error is reported. This
2972function is not available when thread support is disabled at compile
2973time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002974\end{cfuncdesc}
2975
Fred Drakec6fa34e1998-04-02 06:47:24 +00002976\begin{cfuncdesc}{PyThreadState*}{PyEval_SaveThread}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002977Release the interpreter lock (if it has been created and thread
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002978support is enabled) and reset the thread state to \NULL{},
2979returning the previous thread state (which is not \NULL{}). If
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002980the lock has been created, the current thread must have acquired it.
2981(This function is available even when thread support is disabled at
2982compile time.)
Guido van Rossum4a944d71997-08-14 20:35:38 +00002983\end{cfuncdesc}
2984
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002985\begin{cfuncdesc}{void}{PyEval_RestoreThread}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002986Acquire the interpreter lock (if it has been created and thread
2987support is enabled) and set the thread state to \var{tstate}, which
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002988must not be \NULL{}. If the lock has been created, the current
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002989thread must not have acquired it, otherwise deadlock ensues. (This
2990function is available even when thread support is disabled at compile
2991time.)
Guido van Rossum4a944d71997-08-14 20:35:38 +00002992\end{cfuncdesc}
2993
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002994% XXX These aren't really C types, but the ctypedesc macro is the simplest!
2995\begin{ctypedesc}{Py_BEGIN_ALLOW_THREADS}
2996This macro expands to
Fred Drakee058b4f1998-02-16 06:15:35 +00002997\samp{\{ PyThreadState *_save; _save = PyEval_SaveThread();}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002998Note that it contains an opening brace; it must be matched with a
2999following \code{Py_END_ALLOW_THREADS} macro. See above for further
3000discussion of this macro. It is a no-op when thread support is
3001disabled at compile time.
3002\end{ctypedesc}
3003
3004\begin{ctypedesc}{Py_END_ALLOW_THREADS}
3005This macro expands to
Fred Drakee058b4f1998-02-16 06:15:35 +00003006\samp{PyEval_RestoreThread(_save); \}}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003007Note that it contains a closing brace; it must be matched with an
3008earlier \code{Py_BEGIN_ALLOW_THREADS} macro. See above for further
3009discussion of this macro. It is a no-op when thread support is
3010disabled at compile time.
3011\end{ctypedesc}
3012
3013\begin{ctypedesc}{Py_BEGIN_BLOCK_THREADS}
Fred Drakee058b4f1998-02-16 06:15:35 +00003014This macro expands to \samp{PyEval_RestoreThread(_save);} i.e. it
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003015is equivalent to \code{Py_END_ALLOW_THREADS} without the closing
3016brace. It is a no-op when thread support is disabled at compile
3017time.
3018\end{ctypedesc}
3019
3020\begin{ctypedesc}{Py_BEGIN_UNBLOCK_THREADS}
Fred Drakee058b4f1998-02-16 06:15:35 +00003021This macro expands to \samp{_save = PyEval_SaveThread();} i.e. it is
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003022equivalent to \code{Py_BEGIN_ALLOW_THREADS} without the opening brace
3023and variable declaration. It is a no-op when thread support is
3024disabled at compile time.
3025\end{ctypedesc}
3026
3027All of the following functions are only available when thread support
3028is enabled at compile time, and must be called only when the
Fred Drake9d20ac31998-02-16 15:27:08 +00003029interpreter lock has been created.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003030
Fred Drakec6fa34e1998-04-02 06:47:24 +00003031\begin{cfuncdesc}{PyInterpreterState*}{PyInterpreterState_New}{}
Guido van Rossumed9dcc11998-08-07 18:28:03 +00003032Create a new interpreter state object. The interpreter lock need not
3033be held, but may be held if it is necessary to serialize calls to this
3034function.
Guido van Rossum4a944d71997-08-14 20:35:38 +00003035\end{cfuncdesc}
3036
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003037\begin{cfuncdesc}{void}{PyInterpreterState_Clear}{PyInterpreterState *interp}
3038Reset all information in an interpreter state object. The interpreter
3039lock must be held.
Guido van Rossum4a944d71997-08-14 20:35:38 +00003040\end{cfuncdesc}
3041
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003042\begin{cfuncdesc}{void}{PyInterpreterState_Delete}{PyInterpreterState *interp}
3043Destroy an interpreter state object. The interpreter lock need not be
3044held. The interpreter state must have been reset with a previous
Fred Drakee058b4f1998-02-16 06:15:35 +00003045call to \cfunction{PyInterpreterState_Clear()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003046\end{cfuncdesc}
3047
Fred Drakec6fa34e1998-04-02 06:47:24 +00003048\begin{cfuncdesc}{PyThreadState*}{PyThreadState_New}{PyInterpreterState *interp}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003049Create a new thread state object belonging to the given interpreter
Guido van Rossumed9dcc11998-08-07 18:28:03 +00003050object. The interpreter lock need not be held, but may be held if it
3051is necessary to serialize calls to this function.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003052\end{cfuncdesc}
3053
3054\begin{cfuncdesc}{void}{PyThreadState_Clear}{PyThreadState *tstate}
3055Reset all information in a thread state object. The interpreter lock
3056must be held.
3057\end{cfuncdesc}
3058
3059\begin{cfuncdesc}{void}{PyThreadState_Delete}{PyThreadState *tstate}
3060Destroy a thread state object. The interpreter lock need not be
3061held. The thread state must have been reset with a previous
Fred Drakee058b4f1998-02-16 06:15:35 +00003062call to \cfunction{PyThreadState_Clear()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003063\end{cfuncdesc}
3064
Fred Drakec6fa34e1998-04-02 06:47:24 +00003065\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Get}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003066Return the current thread state. The interpreter lock must be held.
Guido van Rossum580aa8d1997-11-25 15:34:51 +00003067When the current thread state is \NULL{}, this issues a fatal
Guido van Rossum5b8a5231997-12-30 04:38:44 +00003068error (so that the caller needn't check for \NULL{}).
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003069\end{cfuncdesc}
3070
Fred Drakec6fa34e1998-04-02 06:47:24 +00003071\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Swap}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003072Swap the current thread state with the thread state given by the
Guido van Rossum580aa8d1997-11-25 15:34:51 +00003073argument \var{tstate}, which may be \NULL{}. The interpreter lock
Guido van Rossumc44d3d61997-10-06 05:10:47 +00003074must be held.
3075\end{cfuncdesc}
3076
3077
Fred Drakeefd146c1999-02-15 15:30:45 +00003078\chapter{Defining New Object Types \label{newTypes}}
Guido van Rossum4a944d71997-08-14 20:35:38 +00003079
Fred Drakec6fa34e1998-04-02 06:47:24 +00003080\begin{cfuncdesc}{PyObject*}{_PyObject_New}{PyTypeObject *type}
Fred Drakee058b4f1998-02-16 06:15:35 +00003081\end{cfuncdesc}
3082
Fred Drakec6fa34e1998-04-02 06:47:24 +00003083\begin{cfuncdesc}{PyObject*}{_PyObject_NewVar}{PyTypeObject *type, int size}
Fred Drakee058b4f1998-02-16 06:15:35 +00003084\end{cfuncdesc}
3085
3086\begin{cfuncdesc}{TYPE}{_PyObject_NEW}{TYPE, PyTypeObject *}
3087\end{cfuncdesc}
3088
3089\begin{cfuncdesc}{TYPE}{_PyObject_NEW_VAR}{TYPE, PyTypeObject *, int size}
3090\end{cfuncdesc}
3091
Guido van Rossum3c4378b1998-04-14 20:21:10 +00003092Py_InitModule (!!!)
3093
3094PyArg_ParseTupleAndKeywords, PyArg_ParseTuple, PyArg_Parse
3095
3096Py_BuildValue
Guido van Rossumae110af1997-05-22 20:11:52 +00003097
3098PyObject, PyVarObject
3099
3100PyObject_HEAD, PyObject_HEAD_INIT, PyObject_VAR_HEAD
3101
3102Typedefs:
3103unaryfunc, binaryfunc, ternaryfunc, inquiry, coercion, intargfunc,
3104intintargfunc, intobjargproc, intintobjargproc, objobjargproc,
Fred Drake58c5a2a1999-08-04 13:13:24 +00003105getreadbufferproc, getsegcountproc, getcharbufferproc,
Guido van Rossumae110af1997-05-22 20:11:52 +00003106destructor, printfunc, getattrfunc, getattrofunc, setattrfunc,
3107setattrofunc, cmpfunc, reprfunc, hashfunc
3108
Fred Drake58c5a2a1999-08-04 13:13:24 +00003109\begin{ctypedesc}{int (*getwritebufferproc) (PyObject *self, int segment,
3110 void **ptrptr)}
3111Return a pointer to a writable memory buffer in \code{*\var{ptrptr}};
3112the memory buffer must correspond to buffer segment \var{segment}.
3113Must return \code{-1} and set an exception on error.
3114\exception{TypeError} should be raised if the object only supports
3115read-only buffers, and \exception{SystemError} should be raised when
3116\var{segment} specifies a segment that doesn't exist.
3117% Why doesn't it raise ValueError for this one?
3118\end{ctypedesc}
3119
Guido van Rossumae110af1997-05-22 20:11:52 +00003120PyNumberMethods
3121
3122PySequenceMethods
3123
3124PyMappingMethods
3125
3126PyBufferProcs
3127
3128PyTypeObject
3129
3130DL_IMPORT
3131
3132PyType_Type
3133
3134Py*_Check
3135
3136Py_None, _Py_NoneStruct
3137
Guido van Rossumae110af1997-05-22 20:11:52 +00003138
Fred Drakeefd146c1999-02-15 15:30:45 +00003139\chapter{Debugging \label{debugging}}
Guido van Rossumae110af1997-05-22 20:11:52 +00003140
Fred Drakee5bf8b21998-02-12 21:22:28 +00003141XXX Explain Py_DEBUG, Py_TRACE_REFS, Py_REF_DEBUG.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00003142
3143
Fred Drakef3aa0e01998-03-17 06:23:13 +00003144\input{api.ind} % Index -- must be last
Guido van Rossum9231c8f1997-05-15 21:43:21 +00003145
3146\end{document}