blob: b0b7bfd14aa5b8a4884c86ae58b74d56e7a3436e [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
14\input{copyright}
15
16\begin{abstract}
17
18\noindent
Fred Drakee058b4f1998-02-16 06:15:35 +000019This manual documents the API used by \C{} (or \Cpp{}) programmers who
20want to write extension modules or embed Python. It is a companion to
21\emph{Extending and Embedding the Python Interpreter}, which describes
Guido van Rossum9231c8f1997-05-15 21:43:21 +000022the general principles of extension writing but does not document the
23API functions in detail.
24
Guido van Rossum5b8a5231997-12-30 04:38:44 +000025\strong{Warning:} The current version of this document is incomplete.
26I hope that it is nevertheless useful. I will continue to work on it,
27and release new versions from time to time, independent from Python
28source code releases.
29
Guido van Rossum9231c8f1997-05-15 21:43:21 +000030\end{abstract}
31
Fred Drake4d4f9e71998-01-13 22:25:02 +000032\tableofcontents
Guido van Rossum9231c8f1997-05-15 21:43:21 +000033
Guido van Rossum5060b3b1997-08-17 18:02:23 +000034% XXX Consider moving all this back to ext.tex and giving api.tex
35% XXX a *really* short intro only.
Guido van Rossum9231c8f1997-05-15 21:43:21 +000036
37\chapter{Introduction}
Fred Drakef39ed671998-02-26 22:01:23 +000038\label{intro}
Guido van Rossum9231c8f1997-05-15 21:43:21 +000039
Fred Drakeb0a78731998-01-13 18:51:10 +000040The Application Programmer's Interface to Python gives \C{} and \Cpp{}
Guido van Rossum59a61351997-08-14 20:34:33 +000041programmers access to the Python interpreter at a variety of levels.
Fred Drakeb0a78731998-01-13 18:51:10 +000042The API is equally usable from \Cpp{}, but for brevity it is generally
43referred to as the Python/\C{} API. There are two fundamentally
Fred Drakee058b4f1998-02-16 06:15:35 +000044different reasons for using the Python/\C{} API. The first reason is
45to write \emph{extension modules} for specific purposes; these are
46\C{} modules that extend the Python interpreter. This is probably the
47most common use. The second reason is to use Python as a component in
48a larger application; this technique is generally referred to as
49\dfn{embedding} Python in an application.
Guido van Rossum59a61351997-08-14 20:34:33 +000050
Guido van Rossum4a944d71997-08-14 20:35:38 +000051Writing an extension module is a relatively well-understood process,
52where a ``cookbook'' approach works well. There are several tools
53that automate the process to some extent. While people have embedded
54Python in other applications since its early existence, the process of
55embedding Python is less straightforward that writing an extension.
56Python 1.5 introduces a number of new API functions as well as some
57changes to the build process that make embedding much simpler.
Fred Drakec6fa34e1998-04-02 06:47:24 +000058This manual describes the \version\ state of affairs.
Guido van Rossum59a61351997-08-14 20:34:33 +000059% XXX Eventually, take the historical notes out
60
Guido van Rossum4a944d71997-08-14 20:35:38 +000061Many API functions are useful independent of whether you're embedding
62or extending Python; moreover, most applications that embed Python
63will need to provide a custom extension as well, so it's probably a
64good idea to become familiar with writing an extension before
Guido van Rossum59a61351997-08-14 20:34:33 +000065attempting to embed Python in a real application.
66
Guido van Rossum580aa8d1997-11-25 15:34:51 +000067\section{Include Files}
Fred Drakef39ed671998-02-26 22:01:23 +000068\label{includes}
Guido van Rossum580aa8d1997-11-25 15:34:51 +000069
70All function, type and macro definitions needed to use the Python/C
71API are included in your code by the following line:
72
Fred Drakee058b4f1998-02-16 06:15:35 +000073\begin{verbatim}
74#include "Python.h"
75\end{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +000076
Fred Drakee058b4f1998-02-16 06:15:35 +000077This implies inclusion of the following standard headers:
78\code{<stdio.h>}, \code{<string.h>}, \code{<errno.h>}, and
79\code{<stdlib.h>} (if available).
Guido van Rossum580aa8d1997-11-25 15:34:51 +000080
81All user visible names defined by Python.h (except those defined by
Fred Drakee058b4f1998-02-16 06:15:35 +000082the included standard headers) have one of the prefixes \samp{Py} or
83\samp{_Py}. Names beginning with \samp{_Py} are for internal use
Guido van Rossum580aa8d1997-11-25 15:34:51 +000084only. Structure member names do not have a reserved prefix.
85
Fred Drakee058b4f1998-02-16 06:15:35 +000086\strong{Important:} user code should never define names that begin
87with \samp{Py} or \samp{_Py}. This confuses the reader, and
88jeopardizes the portability of the user code to future Python
89versions, which may define additional names beginning with one of
90these prefixes.
Guido van Rossum580aa8d1997-11-25 15:34:51 +000091
Guido van Rossum59a61351997-08-14 20:34:33 +000092\section{Objects, Types and Reference Counts}
Fred Drakef39ed671998-02-26 22:01:23 +000093\label{objects}
Guido van Rossum59a61351997-08-14 20:34:33 +000094
Guido van Rossum580aa8d1997-11-25 15:34:51 +000095Most Python/C API functions have one or more arguments as well as a
Fred Drakef8830d11998-04-23 14:06:01 +000096return value of type \ctype{PyObject *}. This type is a pointer
Fred Drakee058b4f1998-02-16 06:15:35 +000097to an opaque data type representing an arbitrary Python
Guido van Rossum580aa8d1997-11-25 15:34:51 +000098object. Since all Python object types are treated the same way by the
99Python language in most situations (e.g., assignments, scope rules,
100and argument passing), it is only fitting that they should be
Fred Drakeb0a78731998-01-13 18:51:10 +0000101represented by a single \C{} type. All Python objects live on the heap:
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000102you never declare an automatic or static variable of type
Fred Drakef8830d11998-04-23 14:06:01 +0000103\ctype{PyObject}, only pointer variables of type \ctype{PyObject *} can
Guido van Rossum59a61351997-08-14 20:34:33 +0000104be declared.
105
Fred Drakee058b4f1998-02-16 06:15:35 +0000106All Python objects (even Python integers) have a \dfn{type} and a
107\dfn{reference count}. An object's type determines what kind of object
Guido van Rossum4a944d71997-08-14 20:35:38 +0000108it is (e.g., an integer, a list, or a user-defined function; there are
Fred Drakee058b4f1998-02-16 06:15:35 +0000109many more as explained in the \emph{Python Reference Manual}). For
Guido van Rossum4a944d71997-08-14 20:35:38 +0000110each of the well-known types there is a macro to check whether an
Fred Drakee058b4f1998-02-16 06:15:35 +0000111object is of that type; for instance, \samp{PyList_Check(\var{a})} is
112true iff the object pointed to by \var{a} is a Python list.
Guido van Rossum59a61351997-08-14 20:34:33 +0000113
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000114\subsection{Reference Counts}
Fred Drakef39ed671998-02-26 22:01:23 +0000115\label{refcounts}
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000116
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000117The reference count is important because today's computers have a
Fred Drake003d8da1998-04-13 00:53:42 +0000118finite (and often severely limited) memory size; it counts how many
Guido van Rossum4a944d71997-08-14 20:35:38 +0000119different places there are that have a reference to an object. Such a
Fred Drakeb0a78731998-01-13 18:51:10 +0000120place could be another object, or a global (or static) \C{} variable, or
121a local variable in some \C{} function. When an object's reference count
Guido van Rossum4a944d71997-08-14 20:35:38 +0000122becomes zero, the object is deallocated. If it contains references to
123other objects, their reference count is decremented. Those other
124objects may be deallocated in turn, if this decrement makes their
125reference count become zero, and so on. (There's an obvious problem
126with objects that reference each other here; for now, the solution is
Guido van Rossum59a61351997-08-14 20:34:33 +0000127``don't do that''.)
128
Guido van Rossum4a944d71997-08-14 20:35:38 +0000129Reference counts are always manipulated explicitly. The normal way is
Fred Drakee058b4f1998-02-16 06:15:35 +0000130to use the macro \cfunction{Py_INCREF()} to increment an object's
131reference count by one, and \cfunction{Py_DECREF()} to decrement it by
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000132one. The decref macro is considerably more complex than the incref one,
Guido van Rossum4a944d71997-08-14 20:35:38 +0000133since it must check whether the reference count becomes zero and then
134cause the object's deallocator, which is a function pointer contained
135in the object's type structure. The type-specific deallocator takes
136care of decrementing the reference counts for other objects contained
137in the object, and so on, if this is a compound object type such as a
138list. There's no chance that the reference count can overflow; at
139least as many bits are used to hold the reference count as there are
140distinct memory locations in virtual memory (assuming
141\code{sizeof(long) >= sizeof(char *)}). Thus, the reference count
Guido van Rossum59a61351997-08-14 20:34:33 +0000142increment is a simple operation.
143
Guido van Rossum4a944d71997-08-14 20:35:38 +0000144It is not necessary to increment an object's reference count for every
145local variable that contains a pointer to an object. In theory, the
Fred Drakee058b4f1998-02-16 06:15:35 +0000146object's reference count goes up by one when the variable is made to
Guido van Rossum4a944d71997-08-14 20:35:38 +0000147point to it and it goes down by one when the variable goes out of
148scope. However, these two cancel each other out, so at the end the
149reference count hasn't changed. The only real reason to use the
150reference count is to prevent the object from being deallocated as
151long as our variable is pointing to it. If we know that there is at
152least one other reference to the object that lives at least as long as
153our variable, there is no need to increment the reference count
154temporarily. An important situation where this arises is in objects
Fred Drakeb0a78731998-01-13 18:51:10 +0000155that are passed as arguments to \C{} functions in an extension module
Guido van Rossum4a944d71997-08-14 20:35:38 +0000156that are called from Python; the call mechanism guarantees to hold a
Guido van Rossum59a61351997-08-14 20:34:33 +0000157reference to every argument for the duration of the call.
158
Fred Drakee058b4f1998-02-16 06:15:35 +0000159However, a common pitfall is to extract an object from a list and
160hold on to it for a while without incrementing its reference count.
161Some other operation might conceivably remove the object from the
162list, decrementing its reference count and possible deallocating it.
163The real danger is that innocent-looking operations may invoke
164arbitrary Python code which could do this; there is a code path which
165allows control to flow back to the user from a \cfunction{Py_DECREF()},
166so almost any operation is potentially dangerous.
Guido van Rossum59a61351997-08-14 20:34:33 +0000167
Guido van Rossum4a944d71997-08-14 20:35:38 +0000168A safe approach is to always use the generic operations (functions
Fred Drakee058b4f1998-02-16 06:15:35 +0000169whose name begins with \samp{PyObject_}, \samp{PyNumber_},
170\samp{PySequence_} or \samp{PyMapping_}). These operations always
Guido van Rossum4a944d71997-08-14 20:35:38 +0000171increment the reference count of the object they return. This leaves
Fred Drakee058b4f1998-02-16 06:15:35 +0000172the caller with the responsibility to call \cfunction{Py_DECREF()}
173when they are done with the result; this soon becomes second nature.
Guido van Rossum59a61351997-08-14 20:34:33 +0000174
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000175\subsubsection{Reference Count Details}
Fred Drakef39ed671998-02-26 22:01:23 +0000176\label{refcountDetails}
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000177
178The reference count behavior of functions in the Python/C API is best
179expelained in terms of \emph{ownership of references}. Note that we
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000180talk of owning references, never of owning objects; objects are always
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000181shared! When a function owns a reference, it has to dispose of it
Fred Drakee058b4f1998-02-16 06:15:35 +0000182properly --- either by passing ownership on (usually to its caller) or
183by calling \cfunction{Py_DECREF()} or \cfunction{Py_XDECREF()}. When
184a function passes ownership of a reference on to its caller, the
185caller is said to receive a \emph{new} reference. When no ownership
186is transferred, the caller is said to \emph{borrow} the reference.
187Nothing needs to be done for a borrowed reference.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000188
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000189Conversely, when calling a function passes it a reference to an
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000190object, there are two possibilities: the function \emph{steals} a
191reference to the object, or it does not. Few functions steal
Fred Drakee058b4f1998-02-16 06:15:35 +0000192references; the two notable exceptions are
193\cfunction{PyList_SetItem()} and \cfunction{PyTuple_SetItem()}, which
194steal a reference to the item (but not to the tuple or list into which
Fred Drake003d8da1998-04-13 00:53:42 +0000195the item is put!). These functions were designed to steal a reference
Fred Drakee058b4f1998-02-16 06:15:35 +0000196because of a common idiom for populating a tuple or list with newly
197created objects; for example, the code to create the tuple \code{(1,
1982, "three")} could look like this (forgetting about error handling for
199the moment; a better way to code this is shown below anyway):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000200
201\begin{verbatim}
202PyObject *t;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000203
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000204t = PyTuple_New(3);
205PyTuple_SetItem(t, 0, PyInt_FromLong(1L));
206PyTuple_SetItem(t, 1, PyInt_FromLong(2L));
207PyTuple_SetItem(t, 2, PyString_FromString("three"));
208\end{verbatim}
209
Fred Drakee058b4f1998-02-16 06:15:35 +0000210Incidentally, \cfunction{PyTuple_SetItem()} is the \emph{only} way to
211set tuple items; \cfunction{PySequence_SetItem()} and
212\cfunction{PyObject_SetItem()} refuse to do this since tuples are an
213immutable data type. You should only use
214\cfunction{PyTuple_SetItem()} for tuples that you are creating
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000215yourself.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000216
217Equivalent code for populating a list can be written using
Fred Drakee058b4f1998-02-16 06:15:35 +0000218\cfunction{PyList_New()} and \cfunction{PyList_SetItem()}. Such code
219can also use \cfunction{PySequence_SetItem()}; this illustrates the
220difference between the two (the extra \cfunction{Py_DECREF()} calls):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000221
222\begin{verbatim}
223PyObject *l, *x;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000224
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000225l = PyList_New(3);
226x = PyInt_FromLong(1L);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000227PySequence_SetItem(l, 0, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000228x = PyInt_FromLong(2L);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000229PySequence_SetItem(l, 1, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000230x = PyString_FromString("three");
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000231PySequence_SetItem(l, 2, x); Py_DECREF(x);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000232\end{verbatim}
233
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000234You might find it strange that the ``recommended'' approach takes more
235code. However, in practice, you will rarely use these ways of
236creating and populating a tuple or list. There's a generic function,
Fred Drakee058b4f1998-02-16 06:15:35 +0000237\cfunction{Py_BuildValue()}, that can create most common objects from
238\C{} values, directed by a \dfn{format string}. For example, the
239above two blocks of code could be replaced by the following (which
240also takes care of the error checking):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000241
242\begin{verbatim}
243PyObject *t, *l;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000244
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000245t = Py_BuildValue("(iis)", 1, 2, "three");
246l = Py_BuildValue("[iis]", 1, 2, "three");
247\end{verbatim}
248
Fred Drakee058b4f1998-02-16 06:15:35 +0000249It is much more common to use \cfunction{PyObject_SetItem()} and
250friends with items whose references you are only borrowing, like
251arguments that were passed in to the function you are writing. In
252that case, their behaviour regarding reference counts is much saner,
253since you don't have to increment a reference count so you can give a
254reference away (``have it be stolen''). For example, this function
255sets all items of a list (actually, any mutable sequence) to a given
256item:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000257
258\begin{verbatim}
259int set_all(PyObject *target, PyObject *item)
260{
261 int i, n;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000262
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000263 n = PyObject_Length(target);
264 if (n < 0)
265 return -1;
266 for (i = 0; i < n; i++) {
267 if (PyObject_SetItem(target, i, item) < 0)
268 return -1;
269 }
270 return 0;
271}
272\end{verbatim}
273
274The situation is slightly different for function return values.
275While passing a reference to most functions does not change your
276ownership responsibilities for that reference, many functions that
277return a referece to an object give you ownership of the reference.
278The reason is simple: in many cases, the returned object is created
279on the fly, and the reference you get is the only reference to the
Fred Drakee058b4f1998-02-16 06:15:35 +0000280object. Therefore, the generic functions that return object
281references, like \cfunction{PyObject_GetItem()} and
282\cfunction{PySequence_GetItem()}, always return a new reference (i.e.,
283the caller becomes the owner of the reference).
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000284
285It is important to realize that whether you own a reference returned
Fred Drakee058b4f1998-02-16 06:15:35 +0000286by a function depends on which function you call only --- \emph{the
287plumage} (i.e., the type of the type of the object passed as an
288argument to the function) \emph{doesn't enter into it!} Thus, if you
289extract an item from a list using \cfunction{PyList_GetItem()}, you
290don't own the reference --- but if you obtain the same item from the
291same list using \cfunction{PySequence_GetItem()} (which happens to
292take exactly the same arguments), you do own a reference to the
293returned object.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000294
Fred Drakee058b4f1998-02-16 06:15:35 +0000295Here is an example of how you could write a function that computes the
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000296sum of the items in a list of integers; once using
Fred Drakee058b4f1998-02-16 06:15:35 +0000297\cfunction{PyList_GetItem()}, once using
298\cfunction{PySequence_GetItem()}.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000299
300\begin{verbatim}
301long sum_list(PyObject *list)
302{
303 int i, n;
304 long total = 0;
305 PyObject *item;
Fred Drakec6fa34e1998-04-02 06:47:24 +0000306
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000307 n = PyList_Size(list);
308 if (n < 0)
309 return -1; /* Not a list */
310 for (i = 0; i < n; i++) {
311 item = PyList_GetItem(list, i); /* Can't fail */
312 if (!PyInt_Check(item)) continue; /* Skip non-integers */
313 total += PyInt_AsLong(item);
314 }
315 return total;
316}
317\end{verbatim}
318
319\begin{verbatim}
320long sum_sequence(PyObject *sequence)
321{
322 int i, n;
323 long total = 0;
324 PyObject *item;
325 n = PyObject_Size(list);
326 if (n < 0)
327 return -1; /* Has no length */
328 for (i = 0; i < n; i++) {
329 item = PySequence_GetItem(list, i);
330 if (item == NULL)
331 return -1; /* Not a sequence, or other failure */
332 if (PyInt_Check(item))
333 total += PyInt_AsLong(item);
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000334 Py_DECREF(item); /* Discard reference ownership */
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000335 }
336 return total;
337}
338\end{verbatim}
339
340\subsection{Types}
Fred Drakef39ed671998-02-26 22:01:23 +0000341\label{types}
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000342
343There are few other data types that play a significant role in
Fred Drakef8830d11998-04-23 14:06:01 +0000344the Python/C API; most are simple \C{} types such as \ctype{int},
345\ctype{long}, \ctype{double} and \ctype{char *}. A few structure types
Guido van Rossum4a944d71997-08-14 20:35:38 +0000346are used to describe static tables used to list the functions exported
347by a module or the data attributes of a new object type. These will
Guido van Rossum59a61351997-08-14 20:34:33 +0000348be discussed together with the functions that use them.
349
350\section{Exceptions}
Fred Drakef39ed671998-02-26 22:01:23 +0000351\label{exceptions}
Guido van Rossum59a61351997-08-14 20:34:33 +0000352
Guido van Rossum4a944d71997-08-14 20:35:38 +0000353The Python programmer only needs to deal with exceptions if specific
354error handling is required; unhandled exceptions are automatically
355propagated to the caller, then to the caller's caller, and so on, till
356they reach the top-level interpreter, where they are reported to the
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000357user accompanied by a stack traceback.
Guido van Rossum59a61351997-08-14 20:34:33 +0000358
Fred Drakeb0a78731998-01-13 18:51:10 +0000359For \C{} programmers, however, error checking always has to be explicit.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000360All functions in the Python/C API can raise exceptions, unless an
361explicit claim is made otherwise in a function's documentation. In
362general, when a function encounters an error, it sets an exception,
363discards any object references that it owns, and returns an
Fred Drakee058b4f1998-02-16 06:15:35 +0000364error indicator --- usually \NULL{} or \code{-1}. A few functions
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000365return a Boolean true/false result, with false indicating an error.
366Very few functions return no explicit error indicator or have an
367ambiguous return value, and require explicit testing for errors with
Fred Drakee058b4f1998-02-16 06:15:35 +0000368\cfunction{PyErr_Occurred()}.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000369
370Exception state is maintained in per-thread storage (this is
371equivalent to using global storage in an unthreaded application). A
Fred Drakec6fa34e1998-04-02 06:47:24 +0000372thread can be in one of two states: an exception has occurred, or not.
Fred Drakee058b4f1998-02-16 06:15:35 +0000373The function \cfunction{PyErr_Occurred()} can be used to check for
374this: it returns a borrowed reference to the exception type object
375when an exception has occurred, and \NULL{} otherwise. There are a
376number of functions to set the exception state:
377\cfunction{PyErr_SetString()} is the most common (though not the most
378general) function to set the exception state, and
379\cfunction{PyErr_Clear()} clears the exception state.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000380
381The full exception state consists of three objects (all of which can
Fred Drakee058b4f1998-02-16 06:15:35 +0000382be \NULL{}): the exception type, the corresponding exception
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000383value, and the traceback. These have the same meanings as the Python
384object \code{sys.exc_type}, \code{sys.exc_value},
385\code{sys.exc_traceback}; however, they are not the same: the Python
386objects represent the last exception being handled by a Python
Fred Drakee058b4f1998-02-16 06:15:35 +0000387\keyword{try} \ldots\ \keyword{except} statement, while the \C{} level
388exception state only exists while an exception is being passed on
389between \C{} functions until it reaches the Python interpreter, which
390takes care of transferring it to \code{sys.exc_type} and friends.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000391
Fred Drakec6fa34e1998-04-02 06:47:24 +0000392Note that starting with Python 1.5, the preferred, thread-safe way to
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000393access the exception state from Python code is to call the function
Fred Drakee058b4f1998-02-16 06:15:35 +0000394\function{sys.exc_info()}, which returns the per-thread exception state
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000395for Python code. Also, the semantics of both ways to access the
396exception state have changed so that a function which catches an
397exception will save and restore its thread's exception state so as to
398preserve the exception state of its caller. This prevents common bugs
399in exception handling code caused by an innocent-looking function
400overwriting the exception being handled; it also reduces the often
401unwanted lifetime extension for objects that are referenced by the
Fred Drakec6fa34e1998-04-02 06:47:24 +0000402stack frames in the traceback.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000403
404As a general principle, a function that calls another function to
405perform some task should check whether the called function raised an
406exception, and if so, pass the exception state on to its caller. It
Fred Drakee058b4f1998-02-16 06:15:35 +0000407should discard any object references that it owns, and returns an
408error indicator, but it should \emph{not} set another exception ---
409that would overwrite the exception that was just raised, and lose
410important information about the exact cause of the error.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000411
412A simple example of detecting exceptions and passing them on is shown
Fred Drakee058b4f1998-02-16 06:15:35 +0000413in the \cfunction{sum_sequence()} example above. It so happens that
414that example doesn't need to clean up any owned references when it
415detects an error. The following example function shows some error
416cleanup. First, to remind you why you like Python, we show the
417equivalent Python code:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000418
419\begin{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000420def incr_item(dict, key):
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000421 try:
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000422 item = dict[key]
423 except KeyError:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000424 item = 0
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000425 return item + 1
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000426\end{verbatim}
427
Fred Drakeb0a78731998-01-13 18:51:10 +0000428Here is the corresponding \C{} code, in all its glory:
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000429
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000430\begin{verbatim}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000431int incr_item(PyObject *dict, PyObject *key)
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000432{
433 /* Objects all initialized to NULL for Py_XDECREF */
434 PyObject *item = NULL, *const_one = NULL, *incremented_item = NULL;
Guido van Rossum5b8a5231997-12-30 04:38:44 +0000435 int rv = -1; /* Return value initialized to -1 (failure) */
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000436
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000437 item = PyObject_GetItem(dict, key);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000438 if (item == NULL) {
Fred Drakec6fa34e1998-04-02 06:47:24 +0000439 /* Handle KeyError only: */
440 if (!PyErr_ExceptionMatches(PyExc_KeyError)) goto error;
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000441
442 /* Clear the error and use zero: */
443 PyErr_Clear();
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000444 item = PyInt_FromLong(0L);
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000445 if (item == NULL) goto error;
446 }
447
448 const_one = PyInt_FromLong(1L);
449 if (const_one == NULL) goto error;
450
451 incremented_item = PyNumber_Add(item, const_one);
452 if (incremented_item == NULL) goto error;
453
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000454 if (PyObject_SetItem(dict, key, incremented_item) < 0) goto error;
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000455 rv = 0; /* Success */
456 /* Continue with cleanup code */
457
458 error:
459 /* Cleanup code, shared by success and failure path */
460
461 /* Use Py_XDECREF() to ignore NULL references */
462 Py_XDECREF(item);
463 Py_XDECREF(const_one);
464 Py_XDECREF(incremented_item);
465
466 return rv; /* -1 for error, 0 for success */
467}
468\end{verbatim}
469
Fred Drakef8830d11998-04-23 14:06:01 +0000470This example represents an endorsed use of the \keyword{goto} statement
Fred Drakee058b4f1998-02-16 06:15:35 +0000471in \C{}! It illustrates the use of
472\cfunction{PyErr_ExceptionMatches()} and \cfunction{PyErr_Clear()} to
473handle specific exceptions, and the use of \cfunction{Py_XDECREF()} to
474dispose of owned references that may be \NULL{} (note the \samp{X} in
475the name; \cfunction{Py_DECREF()} would crash when confronted with a
476\NULL{} reference). It is important that the variables used to hold
477owned references are initialized to \NULL{} for this to work;
478likewise, the proposed return value is initialized to \code{-1}
479(failure) and only set to success after the final call made is
480successful.
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000481
Guido van Rossum59a61351997-08-14 20:34:33 +0000482
483\section{Embedding Python}
Fred Drakef39ed671998-02-26 22:01:23 +0000484\label{embedding}
Guido van Rossum59a61351997-08-14 20:34:33 +0000485
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000486The one important task that only embedders (as opposed to extension
487writers) of the Python interpreter have to worry about is the
488initialization, and possibly the finalization, of the Python
489interpreter. Most functionality of the interpreter can only be used
490after the interpreter has been initialized.
Guido van Rossum59a61351997-08-14 20:34:33 +0000491
Fred Drakee058b4f1998-02-16 06:15:35 +0000492The basic initialization function is \cfunction{Py_Initialize()}.
493This initializes the table of loaded modules, and creates the
Fred Drake4de05a91998-02-16 14:25:26 +0000494fundamental modules \module{__builtin__}\refbimodindex{__builtin__},
495\module{__main__}\refbimodindex{__main__} and
496\module{sys}\refbimodindex{sys}. It also initializes the module
Fred Drakec6fa34e1998-04-02 06:47:24 +0000497search path (\code{sys.path}).%
498\indexiii{module}{search}{path}
Guido van Rossum59a61351997-08-14 20:34:33 +0000499
Fred Drakee058b4f1998-02-16 06:15:35 +0000500\cfunction{Py_Initialize()} does not set the ``script argument list''
Guido van Rossum4a944d71997-08-14 20:35:38 +0000501(\code{sys.argv}). If this variable is needed by Python code that
502will be executed later, it must be set explicitly with a call to
503\code{PySys_SetArgv(\var{argc}, \var{argv})} subsequent to the call
Fred Drakee058b4f1998-02-16 06:15:35 +0000504to \cfunction{Py_Initialize()}.
Guido van Rossum59a61351997-08-14 20:34:33 +0000505
Fred Drakeb0a78731998-01-13 18:51:10 +0000506On most systems (in particular, on \UNIX{} and Windows, although the
Fred Drakee058b4f1998-02-16 06:15:35 +0000507details are slightly different), \cfunction{Py_Initialize()}
508calculates the module search path based upon its best guess for the
509location of the standard Python interpreter executable, assuming that
510the Python library is found in a fixed location relative to the Python
Guido van Rossum42cefd01997-10-05 15:27:29 +0000511interpreter executable. In particular, it looks for a directory named
Fred Drake2de75ec1998-04-09 14:12:11 +0000512\file{lib/python1.5} (replacing \file{1.5} with the current
Guido van Rossum42cefd01997-10-05 15:27:29 +0000513interpreter version) relative to the parent directory where the
Fred Drakee058b4f1998-02-16 06:15:35 +0000514executable named \file{python} is found on the shell command search
Fred Drakec6fa34e1998-04-02 06:47:24 +0000515path (the environment variable \envvar{PATH}).
Guido van Rossum42cefd01997-10-05 15:27:29 +0000516
517For instance, if the Python executable is found in
Fred Drakee058b4f1998-02-16 06:15:35 +0000518\file{/usr/local/bin/python}, it will assume that the libraries are in
Fred Drake2de75ec1998-04-09 14:12:11 +0000519\file{/usr/local/lib/python1.5}. (In fact, this particular path
Fred Drakee058b4f1998-02-16 06:15:35 +0000520is also the ``fallback'' location, used when no executable file named
Fred Drakec6fa34e1998-04-02 06:47:24 +0000521\file{python} is found along \envvar{PATH}.) The user can override
522this behavior by setting the environment variable \envvar{PYTHONHOME},
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000523or insert additional directories in front of the standard path by
Fred Drakec6fa34e1998-04-02 06:47:24 +0000524setting \envvar{PYTHONPATH}.
Guido van Rossum59a61351997-08-14 20:34:33 +0000525
Guido van Rossum4a944d71997-08-14 20:35:38 +0000526The embedding application can steer the search by calling
527\code{Py_SetProgramName(\var{file})} \emph{before} calling
Fred Drakec6fa34e1998-04-02 06:47:24 +0000528\cfunction{Py_Initialize()}. Note that \envvar{PYTHONHOME} still
529overrides this and \envvar{PYTHONPATH} is still inserted in front of
Fred Drakee058b4f1998-02-16 06:15:35 +0000530the standard path. An application that requires total control has to
531provide its own implementation of \cfunction{Py_GetPath()},
532\cfunction{Py_GetPrefix()}, \cfunction{Py_GetExecPrefix()},
533\cfunction{Py_GetProgramFullPath()} (all defined in
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000534\file{Modules/getpath.c}).
Guido van Rossum59a61351997-08-14 20:34:33 +0000535
Guido van Rossum4a944d71997-08-14 20:35:38 +0000536Sometimes, it is desirable to ``uninitialize'' Python. For instance,
537the application may want to start over (make another call to
Fred Drakee058b4f1998-02-16 06:15:35 +0000538\cfunction{Py_Initialize()}) or the application is simply done with its
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000539use of Python and wants to free all memory allocated by Python. This
Fred Drakee058b4f1998-02-16 06:15:35 +0000540can be accomplished by calling \cfunction{Py_Finalize()}. The function
541\cfunction{Py_IsInitialized()} returns true iff Python is currently in the
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000542initialized state. More information about these functions is given in
543a later chapter.
Guido van Rossum59a61351997-08-14 20:34:33 +0000544
Guido van Rossum4a944d71997-08-14 20:35:38 +0000545
Fred Drakee5bf8b21998-02-12 21:22:28 +0000546\chapter{The Very High Level Layer}
Fred Drakef39ed671998-02-26 22:01:23 +0000547\label{veryhigh}
Guido van Rossum4a944d71997-08-14 20:35:38 +0000548
Fred Drakee5bf8b21998-02-12 21:22:28 +0000549The functions in this chapter will let you execute Python source code
550given in a file or a buffer, but they will not let you interact in a
551more detailed way with the interpreter.
Guido van Rossum4a944d71997-08-14 20:35:38 +0000552
Fred Drakec6fa34e1998-04-02 06:47:24 +0000553\begin{cfuncdesc}{int}{PyRun_AnyFile}{FILE *fp, char *filename}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000554\end{cfuncdesc}
555
Fred Drakec6fa34e1998-04-02 06:47:24 +0000556\begin{cfuncdesc}{int}{PyRun_SimpleString}{char *command}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000557\end{cfuncdesc}
558
Fred Drakec6fa34e1998-04-02 06:47:24 +0000559\begin{cfuncdesc}{int}{PyRun_SimpleFile}{FILE *fp, char *filename}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000560\end{cfuncdesc}
561
Fred Drakec6fa34e1998-04-02 06:47:24 +0000562\begin{cfuncdesc}{int}{PyRun_InteractiveOne}{FILE *fp, char *filename}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000563\end{cfuncdesc}
564
Fred Drakec6fa34e1998-04-02 06:47:24 +0000565\begin{cfuncdesc}{int}{PyRun_InteractiveLoop}{FILE *fp, char *filename}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000566\end{cfuncdesc}
567
Fred Drakec6fa34e1998-04-02 06:47:24 +0000568\begin{cfuncdesc}{struct _node*}{PyParser_SimpleParseString}{char *str,
569 int start}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000570\end{cfuncdesc}
571
Fred Drakec6fa34e1998-04-02 06:47:24 +0000572\begin{cfuncdesc}{struct _node*}{PyParser_SimpleParseFile}{FILE *fp,
573 char *filename, int start}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000574\end{cfuncdesc}
575
Fred Drakec6fa34e1998-04-02 06:47:24 +0000576\begin{cfuncdesc}{PyObject*}{PyRun_String}{char *str, int start,
577 PyObject *globals,
578 PyObject *locals}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000579\end{cfuncdesc}
580
Fred Drakec6fa34e1998-04-02 06:47:24 +0000581\begin{cfuncdesc}{PyObject*}{PyRun_File}{FILE *fp, char *filename,
582 int start, PyObject *globals,
583 PyObject *locals}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000584\end{cfuncdesc}
585
Fred Drakec6fa34e1998-04-02 06:47:24 +0000586\begin{cfuncdesc}{PyObject*}{Py_CompileString}{char *str, char *filename,
587 int start}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000588\end{cfuncdesc}
589
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000590
591\chapter{Reference Counting}
Fred Drakef39ed671998-02-26 22:01:23 +0000592\label{countingRefs}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000593
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000594The macros in this section are used for managing reference counts
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000595of Python objects.
596
597\begin{cfuncdesc}{void}{Py_INCREF}{PyObject *o}
Fred Drakec6fa34e1998-04-02 06:47:24 +0000598Increment the reference count for object \var{o}. The object must
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000599not be \NULL{}; if you aren't sure that it isn't \NULL{}, use
Fred Drakee058b4f1998-02-16 06:15:35 +0000600\cfunction{Py_XINCREF()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000601\end{cfuncdesc}
602
603\begin{cfuncdesc}{void}{Py_XINCREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000604Increment the reference count for object \var{o}. The object may be
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000605\NULL{}, in which case the macro has no effect.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000606\end{cfuncdesc}
607
608\begin{cfuncdesc}{void}{Py_DECREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000609Decrement the reference count for object \var{o}. The object must
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000610not be \NULL{}; if you aren't sure that it isn't \NULL{}, use
Fred Drakee058b4f1998-02-16 06:15:35 +0000611\cfunction{Py_XDECREF()}. If the reference count reaches zero, the
612object's type's deallocation function (which must not be \NULL{}) is
613invoked.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000614
615\strong{Warning:} The deallocation function can cause arbitrary Python
Fred Drakee058b4f1998-02-16 06:15:35 +0000616code to be invoked (e.g. when a class instance with a \method{__del__()}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000617method is deallocated). While exceptions in such code are not
618propagated, the executed code has free access to all Python global
619variables. This means that any object that is reachable from a global
Fred Drakee058b4f1998-02-16 06:15:35 +0000620variable should be in a consistent state before \cfunction{Py_DECREF()} is
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000621invoked. For example, code to delete an object from a list should
622copy a reference to the deleted object in a temporary variable, update
Fred Drakee058b4f1998-02-16 06:15:35 +0000623the list data structure, and then call \cfunction{Py_DECREF()} for the
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000624temporary variable.
625\end{cfuncdesc}
626
627\begin{cfuncdesc}{void}{Py_XDECREF}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +0000628Decrement the reference count for object \var{o}. The object may be
629\NULL{}, in which case the macro has no effect; otherwise the effect
630is the same as for \cfunction{Py_DECREF()}, and the same warning
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000631applies.
632\end{cfuncdesc}
633
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000634The following functions or macros are only for internal use:
Fred Drakee058b4f1998-02-16 06:15:35 +0000635\cfunction{_Py_Dealloc()}, \cfunction{_Py_ForgetReference()},
636\cfunction{_Py_NewReference()}, as well as the global variable
Fred Drakef8830d11998-04-23 14:06:01 +0000637\cdata{_Py_RefTotal}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000638
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000639XXX Should mention Py_Malloc(), Py_Realloc(), Py_Free(),
640PyMem_Malloc(), PyMem_Realloc(), PyMem_Free(), PyMem_NEW(),
641PyMem_RESIZE(), PyMem_DEL(), PyMem_XDEL().
642
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000643
644\chapter{Exception Handling}
Fred Drakef39ed671998-02-26 22:01:23 +0000645\label{exceptionHandling}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000646
647The functions in this chapter will let you handle and raise Python
Guido van Rossumae110af1997-05-22 20:11:52 +0000648exceptions. It is important to understand some of the basics of
Fred Drakeb0a78731998-01-13 18:51:10 +0000649Python exception handling. It works somewhat like the \UNIX{}
Fred Drakef8830d11998-04-23 14:06:01 +0000650\cdata{errno} variable: there is a global indicator (per thread) of the
Guido van Rossumae110af1997-05-22 20:11:52 +0000651last error that occurred. Most functions don't clear this on success,
652but will set it to indicate the cause of the error on failure. Most
653functions also return an error indicator, usually \NULL{} if they are
Fred Drakee058b4f1998-02-16 06:15:35 +0000654supposed to return a pointer, or \code{-1} if they return an integer
Fred Drakef8830d11998-04-23 14:06:01 +0000655(exception: the \cfunction{PyArg_Parse*()} functions return \code{1} for
Fred Drakee058b4f1998-02-16 06:15:35 +0000656success and \code{0} for failure). When a function must fail because
657some function it called failed, it generally doesn't set the error
658indicator; the function it called already set it.
Guido van Rossumae110af1997-05-22 20:11:52 +0000659
660The error indicator consists of three Python objects corresponding to
661the Python variables \code{sys.exc_type}, \code{sys.exc_value} and
662\code{sys.exc_traceback}. API functions exist to interact with the
663error indicator in various ways. There is a separate error indicator
664for each thread.
665
666% XXX Order of these should be more thoughtful.
667% Either alphabetical or some kind of structure.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000668
669\begin{cfuncdesc}{void}{PyErr_Print}{}
Guido van Rossumae110af1997-05-22 20:11:52 +0000670Print a standard traceback to \code{sys.stderr} and clear the error
671indicator. Call this function only when the error indicator is set.
672(Otherwise it will cause a fatal error!)
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000673\end{cfuncdesc}
674
Fred Drakec6fa34e1998-04-02 06:47:24 +0000675\begin{cfuncdesc}{PyObject*}{PyErr_Occurred}{}
Guido van Rossumae110af1997-05-22 20:11:52 +0000676Test whether the error indicator is set. If set, return the exception
Fred Drakee058b4f1998-02-16 06:15:35 +0000677\emph{type} (the first argument to the last call to one of the
Fred Drakef8830d11998-04-23 14:06:01 +0000678\cfunction{PyErr_Set*()} functions or to \cfunction{PyErr_Restore()}). If
Fred Drakee058b4f1998-02-16 06:15:35 +0000679not set, return \NULL{}. You do not own a reference to the return
680value, so you do not need to \cfunction{Py_DECREF()} it.
681\strong{Note:} do not compare the return value to a specific
682exception; use \cfunction{PyErr_ExceptionMatches()} instead, shown
683below.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000684\end{cfuncdesc}
685
686\begin{cfuncdesc}{int}{PyErr_ExceptionMatches}{PyObject *exc}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000687Equivalent to
Fred Drakee058b4f1998-02-16 06:15:35 +0000688\samp{PyErr_GivenExceptionMatches(PyErr_Occurred(), \var{exc})}.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000689This should only be called when an exception is actually set.
690\end{cfuncdesc}
691
692\begin{cfuncdesc}{int}{PyErr_GivenExceptionMatches}{PyObject *given, PyObject *exc}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000693Return true if the \var{given} exception matches the exception in
694\var{exc}. If \var{exc} is a class object, this also returns true
695when \var{given} is a subclass. If \var{exc} is a tuple, all
696exceptions in the tuple (and recursively in subtuples) are searched
697for a match. This should only be called when an exception is actually
698set.
699\end{cfuncdesc}
700
701\begin{cfuncdesc}{void}{PyErr_NormalizeException}{PyObject**exc, PyObject**val, PyObject**tb}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000702Under certain circumstances, the values returned by
Fred Drakee058b4f1998-02-16 06:15:35 +0000703\cfunction{PyErr_Fetch()} below can be ``unnormalized'', meaning that
704\code{*\var{exc}} is a class object but \code{*\var{val}} is not an
705instance of the same class. This function can be used to instantiate
706the class in that case. If the values are already normalized, nothing
707happens.
Guido van Rossumae110af1997-05-22 20:11:52 +0000708\end{cfuncdesc}
709
710\begin{cfuncdesc}{void}{PyErr_Clear}{}
711Clear the error indicator. If the error indicator is not set, there
712is no effect.
713\end{cfuncdesc}
714
715\begin{cfuncdesc}{void}{PyErr_Fetch}{PyObject **ptype, PyObject **pvalue, PyObject **ptraceback}
716Retrieve the error indicator into three variables whose addresses are
717passed. If the error indicator is not set, set all three variables to
718\NULL{}. If it is set, it will be cleared and you own a reference to
719each object retrieved. The value and traceback object may be \NULL{}
720even when the type object is not. \strong{Note:} this function is
721normally only used by code that needs to handle exceptions or by code
722that needs to save and restore the error indicator temporarily.
723\end{cfuncdesc}
724
725\begin{cfuncdesc}{void}{PyErr_Restore}{PyObject *type, PyObject *value, PyObject *traceback}
726Set the error indicator from the three objects. If the error
727indicator is already set, it is cleared first. If the objects are
728\NULL{}, the error indicator is cleared. Do not pass a \NULL{} type
729and non-\NULL{} value or traceback. The exception type should be a
730string or class; if it is a class, the value should be an instance of
731that class. Do not pass an invalid exception type or value.
732(Violating these rules will cause subtle problems later.) This call
733takes away a reference to each object, i.e. you must own a reference
734to each object before the call and after the call you no longer own
735these references. (If you don't understand this, don't use this
736function. I warned you.) \strong{Note:} this function is normally
737only used by code that needs to save and restore the error indicator
738temporarily.
739\end{cfuncdesc}
740
741\begin{cfuncdesc}{void}{PyErr_SetString}{PyObject *type, char *message}
742This is the most common way to set the error indicator. The first
743argument specifies the exception type; it is normally one of the
Fred Drakef8830d11998-04-23 14:06:01 +0000744standard exceptions, e.g. \cdata{PyExc_RuntimeError}. You need not
Guido van Rossumae110af1997-05-22 20:11:52 +0000745increment its reference count. The second argument is an error
746message; it is converted to a string object.
747\end{cfuncdesc}
748
749\begin{cfuncdesc}{void}{PyErr_SetObject}{PyObject *type, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +0000750This function is similar to \cfunction{PyErr_SetString()} but lets you
Guido van Rossumae110af1997-05-22 20:11:52 +0000751specify an arbitrary Python object for the ``value'' of the exception.
752You need not increment its reference count.
753\end{cfuncdesc}
754
755\begin{cfuncdesc}{void}{PyErr_SetNone}{PyObject *type}
Fred Drakee058b4f1998-02-16 06:15:35 +0000756This is a shorthand for \samp{PyErr_SetObject(\var{type}, Py_None)}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000757\end{cfuncdesc}
758
759\begin{cfuncdesc}{int}{PyErr_BadArgument}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000760This is a shorthand for \samp{PyErr_SetString(PyExc_TypeError,
Guido van Rossumae110af1997-05-22 20:11:52 +0000761\var{message})}, where \var{message} indicates that a built-in operation
762was invoked with an illegal argument. It is mostly for internal use.
763\end{cfuncdesc}
764
Fred Drakec6fa34e1998-04-02 06:47:24 +0000765\begin{cfuncdesc}{PyObject*}{PyErr_NoMemory}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000766This is a shorthand for \samp{PyErr_SetNone(PyExc_MemoryError)}; it
Guido van Rossumae110af1997-05-22 20:11:52 +0000767returns \NULL{} so an object allocation function can write
Fred Drakee058b4f1998-02-16 06:15:35 +0000768\samp{return PyErr_NoMemory();} when it runs out of memory.
Guido van Rossumae110af1997-05-22 20:11:52 +0000769\end{cfuncdesc}
770
Fred Drakec6fa34e1998-04-02 06:47:24 +0000771\begin{cfuncdesc}{PyObject*}{PyErr_SetFromErrno}{PyObject *type}
Fred Drakeb0a78731998-01-13 18:51:10 +0000772This is a convenience function to raise an exception when a \C{} library
Fred Drakef8830d11998-04-23 14:06:01 +0000773function has returned an error and set the \C{} variable \cdata{errno}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000774It constructs a tuple object whose first item is the integer
Fred Drakef8830d11998-04-23 14:06:01 +0000775\cdata{errno} value and whose second item is the corresponding error
Fred Drakee058b4f1998-02-16 06:15:35 +0000776message (gotten from \cfunction{strerror()}), and then calls
777\samp{PyErr_SetObject(\var{type}, \var{object})}. On \UNIX{}, when
Fred Drakef8830d11998-04-23 14:06:01 +0000778the \cdata{errno} value is \constant{EINTR}, indicating an interrupted
Fred Drakee058b4f1998-02-16 06:15:35 +0000779system call, this calls \cfunction{PyErr_CheckSignals()}, and if that set
Guido van Rossumae110af1997-05-22 20:11:52 +0000780the error indicator, leaves it set to that. The function always
781returns \NULL{}, so a wrapper function around a system call can write
Fred Drakee058b4f1998-02-16 06:15:35 +0000782\samp{return PyErr_SetFromErrno();} when the system call returns an
783error.
Guido van Rossumae110af1997-05-22 20:11:52 +0000784\end{cfuncdesc}
785
786\begin{cfuncdesc}{void}{PyErr_BadInternalCall}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000787This is a shorthand for \samp{PyErr_SetString(PyExc_TypeError,
Guido van Rossumae110af1997-05-22 20:11:52 +0000788\var{message})}, where \var{message} indicates that an internal
Guido van Rossum5060b3b1997-08-17 18:02:23 +0000789operation (e.g. a Python/C API function) was invoked with an illegal
Guido van Rossumae110af1997-05-22 20:11:52 +0000790argument. It is mostly for internal use.
791\end{cfuncdesc}
792
793\begin{cfuncdesc}{int}{PyErr_CheckSignals}{}
794This function interacts with Python's signal handling. It checks
795whether a signal has been sent to the processes and if so, invokes the
Fred Drake4de05a91998-02-16 14:25:26 +0000796corresponding signal handler. If the
797\module{signal}\refbimodindex{signal} module is supported, this can
798invoke a signal handler written in Python. In all cases, the default
799effect for \constant{SIGINT} is to raise the
800\exception{KeyboadInterrupt} exception. If an exception is raised the
Fred Drakee058b4f1998-02-16 06:15:35 +0000801error indicator is set and the function returns \code{1}; otherwise
802the function returns \code{0}. The error indicator may or may not be
803cleared if it was previously set.
Guido van Rossumae110af1997-05-22 20:11:52 +0000804\end{cfuncdesc}
805
806\begin{cfuncdesc}{void}{PyErr_SetInterrupt}{}
807This function is obsolete (XXX or platform dependent?). It simulates
Fred Drakee058b4f1998-02-16 06:15:35 +0000808the effect of a \constant{SIGINT} signal arriving --- the next time
809\cfunction{PyErr_CheckSignals()} is called,
810\exception{KeyboadInterrupt} will be raised.
Guido van Rossumae110af1997-05-22 20:11:52 +0000811\end{cfuncdesc}
812
Fred Drakec6fa34e1998-04-02 06:47:24 +0000813\begin{cfuncdesc}{PyObject*}{PyErr_NewException}{char *name,
814 PyObject *base,
815 PyObject *dict}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000816This utility function creates and returns a new exception object. The
Fred Drakeb0a78731998-01-13 18:51:10 +0000817\var{name} argument must be the name of the new exception, a \C{} string
Guido van Rossum42cefd01997-10-05 15:27:29 +0000818of the form \code{module.class}. The \var{base} and \var{dict}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000819arguments are normally \NULL{}. Normally, this creates a class
Guido van Rossum42cefd01997-10-05 15:27:29 +0000820object derived from the root for all exceptions, the built-in name
Fred Drakef8830d11998-04-23 14:06:01 +0000821\exception{Exception} (accessible in \C{} as \cdata{PyExc_Exception}).
822In this case the \member{__module__} attribute of the new class is set to the
Guido van Rossum42cefd01997-10-05 15:27:29 +0000823first part (up to the last dot) of the \var{name} argument, and the
824class name is set to the last part (after the last dot). When the
825user has specified the \code{-X} command line option to use string
826exceptions, for backward compatibility, or when the \var{base}
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000827argument is not a class object (and not \NULL{}), a string object
Guido van Rossum42cefd01997-10-05 15:27:29 +0000828created from the entire \var{name} argument is returned. The
829\var{base} argument can be used to specify an alternate base class.
830The \var{dict} argument can be used to specify a dictionary of class
831variables and methods.
832\end{cfuncdesc}
833
834
Guido van Rossumae110af1997-05-22 20:11:52 +0000835\section{Standard Exceptions}
Fred Drakef39ed671998-02-26 22:01:23 +0000836\label{standardExceptions}
Guido van Rossumae110af1997-05-22 20:11:52 +0000837
838All standard Python exceptions are available as global variables whose
Fred Drakee058b4f1998-02-16 06:15:35 +0000839names are \samp{PyExc_} followed by the Python exception name.
Fred Drakef8830d11998-04-23 14:06:01 +0000840These have the type \ctype{PyObject *}; they are all either class
Fred Drakee058b4f1998-02-16 06:15:35 +0000841objects or string objects, depending on the use of the \code{-X}
842option to the interpreter. For completeness, here are all the
Fred Drake9d20ac31998-02-16 15:27:08 +0000843variables:
Fred Drakef8830d11998-04-23 14:06:01 +0000844\cdata{PyExc_Exception},
845\cdata{PyExc_StandardError},
846\cdata{PyExc_ArithmeticError},
847\cdata{PyExc_LookupError},
848\cdata{PyExc_AssertionError},
849\cdata{PyExc_AttributeError},
850\cdata{PyExc_EOFError},
851\cdata{PyExc_FloatingPointError},
852\cdata{PyExc_IOError},
853\cdata{PyExc_ImportError},
854\cdata{PyExc_IndexError},
855\cdata{PyExc_KeyError},
856\cdata{PyExc_KeyboardInterrupt},
857\cdata{PyExc_MemoryError},
858\cdata{PyExc_NameError},
859\cdata{PyExc_OverflowError},
860\cdata{PyExc_RuntimeError},
861\cdata{PyExc_SyntaxError},
862\cdata{PyExc_SystemError},
863\cdata{PyExc_SystemExit},
864\cdata{PyExc_TypeError},
865\cdata{PyExc_ValueError},
866\cdata{PyExc_ZeroDivisionError}.
Guido van Rossumae110af1997-05-22 20:11:52 +0000867
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000868
869\chapter{Utilities}
Fred Drakef39ed671998-02-26 22:01:23 +0000870\label{utilities}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000871
872The functions in this chapter perform various utility tasks, such as
Fred Drakeb0a78731998-01-13 18:51:10 +0000873parsing function arguments and constructing Python values from \C{}
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000874values.
875
Guido van Rossum42cefd01997-10-05 15:27:29 +0000876\section{OS Utilities}
Fred Drakef39ed671998-02-26 22:01:23 +0000877\label{os}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000878
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000879\begin{cfuncdesc}{int}{Py_FdIsInteractive}{FILE *fp, char *filename}
Fred Drakee058b4f1998-02-16 06:15:35 +0000880Return true (nonzero) if the standard I/O file \var{fp} with name
881\var{filename} is deemed interactive. This is the case for files for
882which \samp{isatty(fileno(\var{fp}))} is true. If the global flag
Fred Drakef8830d11998-04-23 14:06:01 +0000883\cdata{Py_InteractiveFlag} is true, this function also returns true if
Fred Drakee058b4f1998-02-16 06:15:35 +0000884the \var{name} pointer is \NULL{} or if the name is equal to one of
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000885the strings \code{"<stdin>"} or \code{"???"}.
886\end{cfuncdesc}
887
888\begin{cfuncdesc}{long}{PyOS_GetLastModificationTime}{char *filename}
Fred Drakee058b4f1998-02-16 06:15:35 +0000889Return the time of last modification of the file \var{filename}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000890The result is encoded in the same way as the timestamp returned by
Fred Drakee058b4f1998-02-16 06:15:35 +0000891the standard \C{} library function \cfunction{time()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +0000892\end{cfuncdesc}
893
894
Fred Drakee5bf8b21998-02-12 21:22:28 +0000895\section{Process Control}
Fred Drakef39ed671998-02-26 22:01:23 +0000896\label{processControl}
Fred Drakee5bf8b21998-02-12 21:22:28 +0000897
898\begin{cfuncdesc}{void}{Py_FatalError}{char *message}
899Print a fatal error message and kill the process. No cleanup is
900performed. This function should only be invoked when a condition is
901detected that would make it dangerous to continue using the Python
902interpreter; e.g., when the object administration appears to be
Fred Drakee058b4f1998-02-16 06:15:35 +0000903corrupted. On \UNIX{}, the standard \C{} library function
904\cfunction{abort()} is called which will attempt to produce a
905\file{core} file.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000906\end{cfuncdesc}
907
908\begin{cfuncdesc}{void}{Py_Exit}{int status}
Fred Drakee058b4f1998-02-16 06:15:35 +0000909Exit the current process. This calls \cfunction{Py_Finalize()} and
910then calls the standard \C{} library function
911\code{exit(\var{status})}.
Fred Drakee5bf8b21998-02-12 21:22:28 +0000912\end{cfuncdesc}
913
914\begin{cfuncdesc}{int}{Py_AtExit}{void (*func) ()}
915Register a cleanup function to be called by \cfunction{Py_Finalize()}.
916The cleanup function will be called with no arguments and should
917return no value. At most 32 cleanup functions can be registered.
918When the registration is successful, \cfunction{Py_AtExit()} returns
919\code{0}; on failure, it returns \code{-1}. The cleanup function
920registered last is called first. Each cleanup function will be called
921at most once. Since Python's internal finallization will have
922completed before the cleanup function, no Python APIs should be called
923by \var{func}.
924\end{cfuncdesc}
925
926
927\section{Importing Modules}
Fred Drakef39ed671998-02-26 22:01:23 +0000928\label{importing}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000929
Fred Drakec6fa34e1998-04-02 06:47:24 +0000930\begin{cfuncdesc}{PyObject*}{PyImport_ImportModule}{char *name}
Fred Drakee058b4f1998-02-16 06:15:35 +0000931This is a simplified interface to \cfunction{PyImport_ImportModuleEx()}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000932below, leaving the \var{globals} and \var{locals} arguments set to
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000933\NULL{}. When the \var{name} argument contains a dot (i.e., when
Guido van Rossum42cefd01997-10-05 15:27:29 +0000934it specifies a submodule of a package), the \var{fromlist} argument is
935set to the list \code{['*']} so that the return value is the named
936module rather than the top-level package containing it as would
937otherwise be the case. (Unfortunately, this has an additional side
938effect when \var{name} in fact specifies a subpackage instead of a
939submodule: the submodules specified in the package's \code{__all__}
940variable are loaded.) Return a new reference to the imported module,
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000941or \NULL{} with an exception set on failure (the module may still
Fred Drakec6fa34e1998-04-02 06:47:24 +0000942be created in this case --- examine \code{sys.modules} to find out).
Guido van Rossum42cefd01997-10-05 15:27:29 +0000943\end{cfuncdesc}
944
Fred Drakec6fa34e1998-04-02 06:47:24 +0000945\begin{cfuncdesc}{PyObject*}{PyImport_ImportModuleEx}{char *name, PyObject *globals, PyObject *locals, PyObject *fromlist}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000946Import a module. This is best described by referring to the built-in
Fred Drake53fb7721998-02-16 06:23:20 +0000947Python function \function{__import__()}\bifuncindex{__import__}, as
948the standard \function{__import__()} function calls this function
949directly.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000950
Guido van Rossum42cefd01997-10-05 15:27:29 +0000951The return value is a new reference to the imported module or
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000952top-level package, or \NULL{} with an exception set on failure
Guido van Rossumc44d3d61997-10-06 05:10:47 +0000953(the module may still be created in this case). Like for
Fred Drakee058b4f1998-02-16 06:15:35 +0000954\function{__import__()}, the return value when a submodule of a
955package was requested is normally the top-level package, unless a
956non-empty \var{fromlist} was given.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000957\end{cfuncdesc}
958
Fred Drakec6fa34e1998-04-02 06:47:24 +0000959\begin{cfuncdesc}{PyObject*}{PyImport_Import}{PyObject *name}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000960This is a higher-level interface that calls the current ``import hook
Fred Drakee058b4f1998-02-16 06:15:35 +0000961function''. It invokes the \function{__import__()} function from the
Guido van Rossum42cefd01997-10-05 15:27:29 +0000962\code{__builtins__} of the current globals. This means that the
963import is done using whatever import hooks are installed in the
Fred Drake4de05a91998-02-16 14:25:26 +0000964current environment, e.g. by \module{rexec}\refstmodindex{rexec} or
965\module{ihooks}\refstmodindex{ihooks}.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000966\end{cfuncdesc}
967
Fred Drakec6fa34e1998-04-02 06:47:24 +0000968\begin{cfuncdesc}{PyObject*}{PyImport_ReloadModule}{PyObject *m}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000969Reload a module. This is best described by referring to the built-in
Fred Drake53fb7721998-02-16 06:23:20 +0000970Python function \function{reload()}\bifuncindex{reload}, as the standard
Fred Drakee058b4f1998-02-16 06:15:35 +0000971\function{reload()} function calls this function directly. Return a
972new reference to the reloaded module, or \NULL{} with an exception set
973on failure (the module still exists in this case).
Guido van Rossum42cefd01997-10-05 15:27:29 +0000974\end{cfuncdesc}
975
Fred Drakec6fa34e1998-04-02 06:47:24 +0000976\begin{cfuncdesc}{PyObject*}{PyImport_AddModule}{char *name}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000977Return the module object corresponding to a module name. The
978\var{name} argument may be of the form \code{package.module}). First
979check the modules dictionary if there's one there, and if not, create
980a new one and insert in in the modules dictionary. Because the former
981action is most common, this does not return a new reference, and you
Guido van Rossum580aa8d1997-11-25 15:34:51 +0000982do not own the returned reference. Return \NULL{} with an
Fred Drakef8830d11998-04-23 14:06:01 +0000983exception set on failure. \strong{Note:} this function returns
Guido van Rossum44475131998-04-21 15:30:01 +0000984a ``borrowed'' reference.
Guido van Rossum42cefd01997-10-05 15:27:29 +0000985\end{cfuncdesc}
986
Fred Drakec6fa34e1998-04-02 06:47:24 +0000987\begin{cfuncdesc}{PyObject*}{PyImport_ExecCodeModule}{char *name, PyObject *co}
Guido van Rossum42cefd01997-10-05 15:27:29 +0000988Given a module name (possibly of the form \code{package.module}) and a
989code object read from a Python bytecode file or obtained from the
Fred Drake53fb7721998-02-16 06:23:20 +0000990built-in function \function{compile()}\bifuncindex{compile}, load the
991module. Return a new reference to the module object, or \NULL{} with
992an exception set if an error occurred (the module may still be created
993in this case). (This function would reload the module if it was
994already imported.)
Guido van Rossum42cefd01997-10-05 15:27:29 +0000995\end{cfuncdesc}
996
997\begin{cfuncdesc}{long}{PyImport_GetMagicNumber}{}
Fred Drakee058b4f1998-02-16 06:15:35 +0000998Return the magic number for Python bytecode files (a.k.a. \file{.pyc}
999and \file{.pyo} files). The magic number should be present in the
Guido van Rossum42cefd01997-10-05 15:27:29 +00001000first four bytes of the bytecode file, in little-endian byte order.
1001\end{cfuncdesc}
1002
Fred Drakec6fa34e1998-04-02 06:47:24 +00001003\begin{cfuncdesc}{PyObject*}{PyImport_GetModuleDict}{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001004Return the dictionary used for the module administration
1005(a.k.a. \code{sys.modules}). Note that this is a per-interpreter
1006variable.
1007\end{cfuncdesc}
1008
1009\begin{cfuncdesc}{void}{_PyImport_Init}{}
1010Initialize the import mechanism. For internal use only.
1011\end{cfuncdesc}
1012
1013\begin{cfuncdesc}{void}{PyImport_Cleanup}{}
1014Empty the module table. For internal use only.
1015\end{cfuncdesc}
1016
1017\begin{cfuncdesc}{void}{_PyImport_Fini}{}
1018Finalize the import mechanism. For internal use only.
1019\end{cfuncdesc}
1020
Fred Drakec6fa34e1998-04-02 06:47:24 +00001021\begin{cfuncdesc}{PyObject*}{_PyImport_FindExtension}{char *, char *}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001022For internal use only.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00001023\end{cfuncdesc}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001024
Fred Drakec6fa34e1998-04-02 06:47:24 +00001025\begin{cfuncdesc}{PyObject*}{_PyImport_FixupExtension}{char *, char *}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001026For internal use only.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00001027\end{cfuncdesc}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001028
1029\begin{cfuncdesc}{int}{PyImport_ImportFrozenModule}{char *}
1030Load a frozen module. Return \code{1} for success, \code{0} if the
1031module is not found, and \code{-1} with an exception set if the
1032initialization failed. To access the imported module on a successful
Fred Drakee058b4f1998-02-16 06:15:35 +00001033load, use \cfunction{PyImport_ImportModule()}.
1034(Note the misnomer --- this function would reload the module if it was
Guido van Rossum42cefd01997-10-05 15:27:29 +00001035already imported.)
1036\end{cfuncdesc}
1037
1038\begin{ctypedesc}{struct _frozen}
1039This is the structure type definition for frozen module descriptors,
Fred Drakec6fa34e1998-04-02 06:47:24 +00001040as generated by the \program{freeze}\index{freeze utility} utility
1041(see \file{Tools/freeze/} in the Python source distribution). Its
1042definition is:
1043
Guido van Rossum9faf4c51997-10-07 14:38:54 +00001044\begin{verbatim}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001045struct _frozen {
Fred Drake36fbe761997-10-13 18:18:33 +00001046 char *name;
1047 unsigned char *code;
1048 int size;
Guido van Rossum42cefd01997-10-05 15:27:29 +00001049};
Guido van Rossum9faf4c51997-10-07 14:38:54 +00001050\end{verbatim}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001051\end{ctypedesc}
1052
Fred Drakec6fa34e1998-04-02 06:47:24 +00001053\begin{cvardesc}{struct _frozen*}{PyImport_FrozenModules}
Fred Drakef8830d11998-04-23 14:06:01 +00001054This pointer is initialized to point to an array of \ctype{struct
Guido van Rossum580aa8d1997-11-25 15:34:51 +00001055_frozen} records, terminated by one whose members are all \NULL{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00001056or zero. When a frozen module is imported, it is searched in this
Fred Drakec6fa34e1998-04-02 06:47:24 +00001057table. Third-party code could play tricks with this to provide a
Guido van Rossum42cefd01997-10-05 15:27:29 +00001058dynamically created collection of frozen modules.
1059\end{cvardesc}
1060
1061
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001062\chapter{Abstract Objects Layer}
Fred Drakef39ed671998-02-26 22:01:23 +00001063\label{abstract}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001064
1065The functions in this chapter interact with Python objects regardless
1066of their type, or with wide classes of object types (e.g. all
1067numerical types, or all sequence types). When used on object types
1068for which they do not apply, they will flag a Python exception.
1069
1070\section{Object Protocol}
Fred Drakef39ed671998-02-26 22:01:23 +00001071\label{object}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001072
1073\begin{cfuncdesc}{int}{PyObject_Print}{PyObject *o, FILE *fp, int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00001074Print an object \var{o}, on file \var{fp}. Returns \code{-1} on error
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001075The flags argument is used to enable certain printing
Fred Drakee058b4f1998-02-16 06:15:35 +00001076options. The only option currently supported is
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001077\constant{Py_PRINT_RAW}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001078\end{cfuncdesc}
1079
1080\begin{cfuncdesc}{int}{PyObject_HasAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001081Returns \code{1} if \var{o} has the attribute \var{attr_name}, and
1082\code{0} otherwise. This is equivalent to the Python expression
1083\samp{hasattr(\var{o}, \var{attr_name})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001084This function always succeeds.
1085\end{cfuncdesc}
1086
1087\begin{cfuncdesc}{PyObject*}{PyObject_GetAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001088Retrieve an attribute named \var{attr_name} from object \var{o}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001089Returns the attribute value on success, or \NULL{} on failure.
Fred Drakee058b4f1998-02-16 06:15:35 +00001090This is the equivalent of the Python expression
1091\samp{\var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001092\end{cfuncdesc}
1093
1094
1095\begin{cfuncdesc}{int}{PyObject_HasAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001096Returns \code{1} if \var{o} has the attribute \var{attr_name}, and
1097\code{0} otherwise. This is equivalent to the Python expression
1098\samp{hasattr(\var{o}, \var{attr_name})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001099This function always succeeds.
1100\end{cfuncdesc}
1101
1102
1103\begin{cfuncdesc}{PyObject*}{PyObject_GetAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001104Retrieve an attribute named \var{attr_name} from object \var{o}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001105Returns the attribute value on success, or \NULL{} on failure.
Fred Drakee058b4f1998-02-16 06:15:35 +00001106This is the equivalent of the Python expression
1107\samp{\var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001108\end{cfuncdesc}
1109
1110
1111\begin{cfuncdesc}{int}{PyObject_SetAttrString}{PyObject *o, char *attr_name, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001112Set the value of the attribute named \var{attr_name}, for object
1113\var{o}, to the value \var{v}. Returns \code{-1} on failure. This is
1114the equivalent of the Python statement \samp{\var{o}.\var{attr_name} =
1115\var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001116\end{cfuncdesc}
1117
1118
1119\begin{cfuncdesc}{int}{PyObject_SetAttr}{PyObject *o, PyObject *attr_name, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001120Set the value of the attribute named \var{attr_name}, for
1121object \var{o},
1122to the value \var{v}. Returns \code{-1} on failure. This is
1123the equivalent of the Python statement \samp{\var{o}.\var{attr_name} =
1124\var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001125\end{cfuncdesc}
1126
1127
1128\begin{cfuncdesc}{int}{PyObject_DelAttrString}{PyObject *o, char *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001129Delete attribute named \var{attr_name}, for object \var{o}. Returns
1130\code{-1} on failure. This is the equivalent of the Python
1131statement: \samp{del \var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001132\end{cfuncdesc}
1133
1134
1135\begin{cfuncdesc}{int}{PyObject_DelAttr}{PyObject *o, PyObject *attr_name}
Fred Drakee058b4f1998-02-16 06:15:35 +00001136Delete attribute named \var{attr_name}, for object \var{o}. Returns
1137\code{-1} on failure. This is the equivalent of the Python
1138statement \samp{del \var{o}.\var{attr_name}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001139\end{cfuncdesc}
1140
1141
1142\begin{cfuncdesc}{int}{PyObject_Cmp}{PyObject *o1, PyObject *o2, int *result}
Fred Drakee058b4f1998-02-16 06:15:35 +00001143Compare the values of \var{o1} and \var{o2} using a routine provided
1144by \var{o1}, if one exists, otherwise with a routine provided by
1145\var{o2}. The result of the comparison is returned in \var{result}.
1146Returns \code{-1} on failure. This is the equivalent of the Python
1147statement \samp{\var{result} = cmp(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001148\end{cfuncdesc}
1149
1150
1151\begin{cfuncdesc}{int}{PyObject_Compare}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001152Compare the values of \var{o1} and \var{o2} using a routine provided
1153by \var{o1}, if one exists, otherwise with a routine provided by
1154\var{o2}. Returns the result of the comparison on success. On error,
1155the value returned is undefined; use \cfunction{PyErr_Occurred()} to
1156detect an error. This is equivalent to the
1157Python expression \samp{cmp(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001158\end{cfuncdesc}
1159
1160
1161\begin{cfuncdesc}{PyObject*}{PyObject_Repr}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001162Compute the string representation of object, \var{o}. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001163string representation on success, \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001164the equivalent of the Python expression \samp{repr(\var{o})}.
1165Called by the \function{repr()}\bifuncindex{repr} built-in function
1166and by reverse quotes.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001167\end{cfuncdesc}
1168
1169
1170\begin{cfuncdesc}{PyObject*}{PyObject_Str}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001171Compute the string representation of object \var{o}. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001172string representation on success, \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001173the equivalent of the Python expression \samp{str(\var{o})}.
1174Called by the \function{str()}\bifuncindex{str} built-in function and
1175by the \keyword{print} statement.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001176\end{cfuncdesc}
1177
1178
1179\begin{cfuncdesc}{int}{PyCallable_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001180Determine if the object \var{o}, is callable. Return \code{1} if the
1181object is callable and \code{0} otherwise.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001182This function always succeeds.
1183\end{cfuncdesc}
1184
1185
1186\begin{cfuncdesc}{PyObject*}{PyObject_CallObject}{PyObject *callable_object, PyObject *args}
Fred Drakee058b4f1998-02-16 06:15:35 +00001187Call a callable Python object \var{callable_object}, with
1188arguments given by the tuple \var{args}. If no arguments are
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001189needed, then args may be \NULL{}. Returns the result of the
1190call on success, or \NULL{} on failure. This is the equivalent
Fred Drakee058b4f1998-02-16 06:15:35 +00001191of the Python expression \samp{apply(\var{o}, \var{args})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001192\end{cfuncdesc}
1193
1194\begin{cfuncdesc}{PyObject*}{PyObject_CallFunction}{PyObject *callable_object, char *format, ...}
Fred Drakee058b4f1998-02-16 06:15:35 +00001195Call a callable Python object \var{callable_object}, with a
Fred Drakeb0a78731998-01-13 18:51:10 +00001196variable number of \C{} arguments. The \C{} arguments are described
Fred Drakee058b4f1998-02-16 06:15:35 +00001197using a \cfunction{Py_BuildValue()} style format string. The format may
1198be \NULL{}, indicating that no arguments are provided. Returns the
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001199result of the call on success, or \NULL{} on failure. This is
Fred Drakee058b4f1998-02-16 06:15:35 +00001200the equivalent of the Python expression \samp{apply(\var{o},
1201\var{args})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001202\end{cfuncdesc}
1203
1204
1205\begin{cfuncdesc}{PyObject*}{PyObject_CallMethod}{PyObject *o, char *m, char *format, ...}
Fred Drakee058b4f1998-02-16 06:15:35 +00001206Call the method named \var{m} of object \var{o} with a variable number
1207of C arguments. The \C{} arguments are described by a
1208\cfunction{Py_BuildValue()} format string. The format may be \NULL{},
1209indicating that no arguments are provided. Returns the result of the
1210call on success, or \NULL{} on failure. This is the equivalent of the
1211Python expression \samp{\var{o}.\var{method}(\var{args})}.
1212Note that Special method names, such as \method{__add__()},
1213\method{__getitem__()}, and so on are not supported. The specific
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001214abstract-object routines for these must be used.
1215\end{cfuncdesc}
1216
1217
1218\begin{cfuncdesc}{int}{PyObject_Hash}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001219Compute and return the hash value of an object \var{o}. On
1220failure, return \code{-1}. This is the equivalent of the Python
1221expression \samp{hash(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001222\end{cfuncdesc}
1223
1224
1225\begin{cfuncdesc}{int}{PyObject_IsTrue}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001226Returns \code{1} if the object \var{o} is considered to be true, and
1227\code{0} otherwise. This is equivalent to the Python expression
1228\samp{not not \var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001229This function always succeeds.
1230\end{cfuncdesc}
1231
1232
1233\begin{cfuncdesc}{PyObject*}{PyObject_Type}{PyObject *o}
1234On success, returns a type object corresponding to the object
Fred Drakee058b4f1998-02-16 06:15:35 +00001235type of object \var{o}. On failure, returns \NULL{}. This is
1236equivalent to the Python expression \samp{type(\var{o})}.
Fred Drake53fb7721998-02-16 06:23:20 +00001237\bifuncindex{type}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001238\end{cfuncdesc}
1239
1240\begin{cfuncdesc}{int}{PyObject_Length}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001241Return the length of object \var{o}. If the object \var{o} provides
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001242both sequence and mapping protocols, the sequence length is
Fred Drakee058b4f1998-02-16 06:15:35 +00001243returned. On error, \code{-1} is returned. This is the equivalent
1244to the Python expression \samp{len(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001245\end{cfuncdesc}
1246
1247
1248\begin{cfuncdesc}{PyObject*}{PyObject_GetItem}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001249Return element of \var{o} corresponding to the object \var{key} or
1250\NULL{} on failure. This is the equivalent of the Python expression
1251\samp{\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001252\end{cfuncdesc}
1253
1254
1255\begin{cfuncdesc}{int}{PyObject_SetItem}{PyObject *o, PyObject *key, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001256Map the object \var{key} to the value \var{v}.
1257Returns \code{-1} on failure. This is the equivalent
1258of the Python statement \samp{\var{o}[\var{key}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001259\end{cfuncdesc}
1260
1261
1262\begin{cfuncdesc}{int}{PyObject_DelItem}{PyObject *o, PyObject *key, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001263Delete the mapping for \var{key} from \var{o}. Returns \code{-1} on
1264failure. This is the equivalent of the Python statement \samp{del
1265\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001266\end{cfuncdesc}
1267
1268
1269\section{Number Protocol}
Fred Drakef39ed671998-02-26 22:01:23 +00001270\label{number}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001271
1272\begin{cfuncdesc}{int}{PyNumber_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001273Returns \code{1} if the object \var{o} provides numeric protocols, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001274false otherwise.
1275This function always succeeds.
1276\end{cfuncdesc}
1277
1278
1279\begin{cfuncdesc}{PyObject*}{PyNumber_Add}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001280Returns the result of adding \var{o1} and \var{o2}, or \NULL{} on
1281failure. This is the equivalent of the Python expression
1282\samp{\var{o1} + \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001283\end{cfuncdesc}
1284
1285
1286\begin{cfuncdesc}{PyObject*}{PyNumber_Subtract}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001287Returns the result of subtracting \var{o2} from \var{o1}, or \NULL{}
1288on failure. This is the equivalent of the Python expression
1289\samp{\var{o1} - \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001290\end{cfuncdesc}
1291
1292
1293\begin{cfuncdesc}{PyObject*}{PyNumber_Multiply}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001294Returns the result of multiplying \var{o1} and \var{o2}, or \NULL{} on
1295failure. This is the equivalent of the Python expression
1296\samp{\var{o1} * \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001297\end{cfuncdesc}
1298
1299
1300\begin{cfuncdesc}{PyObject*}{PyNumber_Divide}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001301Returns the result of dividing \var{o1} by \var{o2}, or \NULL{} on
1302failure.
1303This is the equivalent of the Python expression \samp{\var{o1} /
1304\var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001305\end{cfuncdesc}
1306
1307
1308\begin{cfuncdesc}{PyObject*}{PyNumber_Remainder}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001309Returns the remainder of dividing \var{o1} by \var{o2}, or \NULL{} on
1310failure. This is the equivalent of the Python expression
1311\samp{\var{o1} \% \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001312\end{cfuncdesc}
1313
1314
1315\begin{cfuncdesc}{PyObject*}{PyNumber_Divmod}{PyObject *o1, PyObject *o2}
Fred Drake53fb7721998-02-16 06:23:20 +00001316See the built-in function \function{divmod()}\bifuncindex{divmod}.
1317Returns \NULL{} on failure. This is the equivalent of the Python
1318expression \samp{divmod(\var{o1}, \var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001319\end{cfuncdesc}
1320
1321
1322\begin{cfuncdesc}{PyObject*}{PyNumber_Power}{PyObject *o1, PyObject *o2, PyObject *o3}
Fred Drake53fb7721998-02-16 06:23:20 +00001323See the built-in function \function{pow()}\bifuncindex{pow}. Returns
1324\NULL{} on failure. This is the equivalent of the Python expression
Fred Drakee058b4f1998-02-16 06:15:35 +00001325\samp{pow(\var{o1}, \var{o2}, \var{o3})}, where \var{o3} is optional.
Fred Drakef8830d11998-04-23 14:06:01 +00001326If \var{o3} is to be ignored, pass \cdata{Py_None} in its place.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001327\end{cfuncdesc}
1328
1329
1330\begin{cfuncdesc}{PyObject*}{PyNumber_Negative}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001331Returns the negation of \var{o} on success, or \NULL{} on failure.
1332This is the equivalent of the Python expression \samp{-\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001333\end{cfuncdesc}
1334
1335
1336\begin{cfuncdesc}{PyObject*}{PyNumber_Positive}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001337Returns \var{o} on success, or \NULL{} on failure.
1338This is the equivalent of the Python expression \samp{+\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001339\end{cfuncdesc}
1340
1341
1342\begin{cfuncdesc}{PyObject*}{PyNumber_Absolute}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001343Returns the absolute value of \var{o}, or \NULL{} on failure. This is
1344the equivalent of the Python expression \samp{abs(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001345\end{cfuncdesc}
1346
1347
1348\begin{cfuncdesc}{PyObject*}{PyNumber_Invert}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001349Returns the bitwise negation of \var{o} on success, or \NULL{} on
1350failure. This is the equivalent of the Python expression
1351\samp{\~\var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001352\end{cfuncdesc}
1353
1354
1355\begin{cfuncdesc}{PyObject*}{PyNumber_Lshift}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001356Returns the result of left shifting \var{o1} by \var{o2} on success,
1357or \NULL{} on failure. This is the equivalent of the Python
1358expression \samp{\var{o1} << \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001359\end{cfuncdesc}
1360
1361
1362\begin{cfuncdesc}{PyObject*}{PyNumber_Rshift}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001363Returns the result of right shifting \var{o1} by \var{o2} on success,
1364or \NULL{} on failure. This is the equivalent of the Python
1365expression \samp{\var{o1} >> \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001366\end{cfuncdesc}
1367
1368
1369\begin{cfuncdesc}{PyObject*}{PyNumber_And}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001370Returns the result of ``anding'' \var{o2} and \var{o2} on success and
1371\NULL{} on failure. This is the equivalent of the Python
1372expression \samp{\var{o1} and \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001373\end{cfuncdesc}
1374
1375
1376\begin{cfuncdesc}{PyObject*}{PyNumber_Xor}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001377Returns the bitwise exclusive or of \var{o1} by \var{o2} on success,
1378or \NULL{} on failure. This is the equivalent of the Python
1379expression \samp{\var{o1} \^{ }\var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001380\end{cfuncdesc}
1381
1382\begin{cfuncdesc}{PyObject*}{PyNumber_Or}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001383Returns the result of \var{o1} and \var{o2} on success, or \NULL{} on
1384failure. This is the equivalent of the Python expression
1385\samp{\var{o1} or \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001386\end{cfuncdesc}
1387
1388
Fred Drakee058b4f1998-02-16 06:15:35 +00001389\begin{cfuncdesc}{PyObject*}{PyNumber_Coerce}{PyObject **p1, PyObject **p2}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001390This function takes the addresses of two variables of type
Fred Drakef8830d11998-04-23 14:06:01 +00001391\ctype{PyObject*}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001392
Fred Drakee058b4f1998-02-16 06:15:35 +00001393If the objects pointed to by \code{*\var{p1}} and \code{*\var{p2}}
1394have the same type, increment their reference count and return
1395\code{0} (success). If the objects can be converted to a common
1396numeric type, replace \code{*p1} and \code{*p2} by their converted
1397value (with 'new' reference counts), and return \code{0}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001398If no conversion is possible, or if some other error occurs,
Fred Drakee058b4f1998-02-16 06:15:35 +00001399return \code{-1} (failure) and don't increment the reference counts.
1400The call \code{PyNumber_Coerce(\&o1, \&o2)} is equivalent to the
1401Python statement \samp{\var{o1}, \var{o2} = coerce(\var{o1},
1402\var{o2})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001403\end{cfuncdesc}
1404
1405
1406\begin{cfuncdesc}{PyObject*}{PyNumber_Int}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001407Returns the \var{o} converted to an integer object on success, or
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001408\NULL{} on failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001409expression \samp{int(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001410\end{cfuncdesc}
1411
1412
1413\begin{cfuncdesc}{PyObject*}{PyNumber_Long}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001414Returns the \var{o} converted to a long integer object on success,
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001415or \NULL{} on failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001416expression \samp{long(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001417\end{cfuncdesc}
1418
1419
1420\begin{cfuncdesc}{PyObject*}{PyNumber_Float}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001421Returns the \var{o} converted to a float object on success, or \NULL{}
1422on failure. This is the equivalent of the Python expression
1423\samp{float(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001424\end{cfuncdesc}
1425
1426
Fred Drakef44617d1998-02-12 20:57:15 +00001427\section{Sequence Protocol}
Fred Drakef39ed671998-02-26 22:01:23 +00001428\label{sequence}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001429
1430\begin{cfuncdesc}{int}{PySequence_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001431Return \code{1} if the object provides sequence protocol, and \code{0}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001432otherwise.
1433This function always succeeds.
1434\end{cfuncdesc}
1435
1436
1437\begin{cfuncdesc}{PyObject*}{PySequence_Concat}{PyObject *o1, PyObject *o2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001438Return the concatenation of \var{o1} and \var{o2} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001439failure. This is the equivalent of the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001440expression \samp{\var{o1} + \var{o2}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001441\end{cfuncdesc}
1442
1443
1444\begin{cfuncdesc}{PyObject*}{PySequence_Repeat}{PyObject *o, int count}
Fred Drakee058b4f1998-02-16 06:15:35 +00001445Return the result of repeating sequence object \var{o} \var{count}
1446times, or \NULL{} on failure. This is the equivalent of the Python
1447expression \samp{\var{o} * \var{count}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001448\end{cfuncdesc}
1449
1450
1451\begin{cfuncdesc}{PyObject*}{PySequence_GetItem}{PyObject *o, int i}
Fred Drakee058b4f1998-02-16 06:15:35 +00001452Return the \var{i}th element of \var{o}, or \NULL{} on failure. This
1453is the equivalent of the Python expression \samp{\var{o}[\var{i}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001454\end{cfuncdesc}
1455
1456
1457\begin{cfuncdesc}{PyObject*}{PySequence_GetSlice}{PyObject *o, int i1, int i2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001458Return the slice of sequence object \var{o} between \var{i1} and
1459\var{i2}, or \NULL{} on failure. This is the equivalent of the Python
1460expression \samp{\var{o}[\var{i1}:\var{i2}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001461\end{cfuncdesc}
1462
1463
1464\begin{cfuncdesc}{int}{PySequence_SetItem}{PyObject *o, int i, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001465Assign object \var{v} to the \var{i}th element of \var{o}.
1466Returns \code{-1} on failure. This is the equivalent of the Python
1467statement \samp{\var{o}[\var{i}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001468\end{cfuncdesc}
1469
1470\begin{cfuncdesc}{int}{PySequence_DelItem}{PyObject *o, int i}
Fred Drakee058b4f1998-02-16 06:15:35 +00001471Delete the \var{i}th element of object \var{v}. Returns
1472\code{-1} on failure. This is the equivalent of the Python
1473statement \samp{del \var{o}[\var{i}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001474\end{cfuncdesc}
1475
1476\begin{cfuncdesc}{int}{PySequence_SetSlice}{PyObject *o, int i1, int i2, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001477Assign the sequence object \var{v} to the slice in sequence
1478object \var{o} from \var{i1} to \var{i2}. This is the equivalent of
1479the Python statement \samp{\var{o}[\var{i1}:\var{i2}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001480\end{cfuncdesc}
1481
1482\begin{cfuncdesc}{int}{PySequence_DelSlice}{PyObject *o, int i1, int i2}
Fred Drakee058b4f1998-02-16 06:15:35 +00001483Delete the slice in sequence object \var{o} from \var{i1} to \var{i2}.
1484Returns \code{-1} on failure. This is the equivalent of the Python
1485statement \samp{del \var{o}[\var{i1}:\var{i2}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001486\end{cfuncdesc}
1487
1488\begin{cfuncdesc}{PyObject*}{PySequence_Tuple}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001489Returns the \var{o} as a tuple on success, and \NULL{} on failure.
1490This is equivalent to the Python expression \code{tuple(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001491\end{cfuncdesc}
1492
1493\begin{cfuncdesc}{int}{PySequence_Count}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001494Return the number of occurrences of \var{value} in \var{o}, that is,
1495return the number of keys for which \code{\var{o}[\var{key}] ==
1496\var{value}}. On failure, return \code{-1}. This is equivalent to
1497the Python expression \samp{\var{o}.count(\var{value})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001498\end{cfuncdesc}
1499
1500\begin{cfuncdesc}{int}{PySequence_In}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001501Determine if \var{o} contains \var{value}. If an item in \var{o} is
1502equal to \var{value}, return \code{1}, otherwise return \code{0}. On
1503error, return \code{-1}. This is equivalent to the Python expression
1504\samp{\var{value} in \var{o}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001505\end{cfuncdesc}
1506
1507\begin{cfuncdesc}{int}{PySequence_Index}{PyObject *o, PyObject *value}
Fred Drakee058b4f1998-02-16 06:15:35 +00001508Return the first index \var{i} for which \code{\var{o}[\var{i}] ==
1509\var{value}}. On error, return \code{-1}. This is equivalent to
1510the Python expression \samp{\var{o}.index(\var{value})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001511\end{cfuncdesc}
1512
Fred Drakef39ed671998-02-26 22:01:23 +00001513
Fred Drakef44617d1998-02-12 20:57:15 +00001514\section{Mapping Protocol}
Fred Drakef39ed671998-02-26 22:01:23 +00001515\label{mapping}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001516
1517\begin{cfuncdesc}{int}{PyMapping_Check}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001518Return \code{1} if the object provides mapping protocol, and \code{0}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001519otherwise.
1520This function always succeeds.
1521\end{cfuncdesc}
1522
1523
1524\begin{cfuncdesc}{int}{PyMapping_Length}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001525Returns the number of keys in object \var{o} on success, and \code{-1}
1526on failure. For objects that do not provide sequence protocol,
1527this is equivalent to the Python expression \samp{len(\var{o})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001528\end{cfuncdesc}
1529
1530
1531\begin{cfuncdesc}{int}{PyMapping_DelItemString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001532Remove the mapping for object \var{key} from the object \var{o}.
1533Return \code{-1} on failure. This is equivalent to
1534the Python statement \samp{del \var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001535\end{cfuncdesc}
1536
1537
1538\begin{cfuncdesc}{int}{PyMapping_DelItem}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001539Remove the mapping for object \var{key} from the object \var{o}.
1540Return \code{-1} on failure. This is equivalent to
1541the Python statement \samp{del \var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001542\end{cfuncdesc}
1543
1544
1545\begin{cfuncdesc}{int}{PyMapping_HasKeyString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001546On success, return \code{1} if the mapping object has the key \var{key}
1547and \code{0} otherwise. This is equivalent to the Python expression
1548\samp{\var{o}.has_key(\var{key})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001549This function always succeeds.
1550\end{cfuncdesc}
1551
1552
1553\begin{cfuncdesc}{int}{PyMapping_HasKey}{PyObject *o, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001554Return \code{1} if the mapping object has the key \var{key} and
1555\code{0} otherwise. This is equivalent to the Python expression
1556\samp{\var{o}.has_key(\var{key})}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001557This function always succeeds.
1558\end{cfuncdesc}
1559
1560
1561\begin{cfuncdesc}{PyObject*}{PyMapping_Keys}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001562On success, return a list of the keys in object \var{o}. On
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001563failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001564expression \samp{\var{o}.keys()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001565\end{cfuncdesc}
1566
1567
1568\begin{cfuncdesc}{PyObject*}{PyMapping_Values}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001569On success, return a list of the values in object \var{o}. On
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001570failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001571expression \samp{\var{o}.values()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001572\end{cfuncdesc}
1573
1574
1575\begin{cfuncdesc}{PyObject*}{PyMapping_Items}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001576On success, return a list of the items in object \var{o}, where
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001577each item is a tuple containing a key-value pair. On
1578failure, return \NULL{}. This is equivalent to the Python
Fred Drakee058b4f1998-02-16 06:15:35 +00001579expression \samp{\var{o}.items()}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001580\end{cfuncdesc}
1581
1582\begin{cfuncdesc}{int}{PyMapping_Clear}{PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001583Make object \var{o} empty. Returns \code{1} on success and \code{0}
1584on failure. This is equivalent to the Python statement
1585\samp{for key in \var{o}.keys(): del \var{o}[key]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001586\end{cfuncdesc}
1587
1588
1589\begin{cfuncdesc}{PyObject*}{PyMapping_GetItemString}{PyObject *o, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00001590Return element of \var{o} corresponding to the object \var{key} or
1591\NULL{} on failure. This is the equivalent of the Python expression
1592\samp{\var{o}[\var{key}]}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001593\end{cfuncdesc}
1594
1595\begin{cfuncdesc}{PyObject*}{PyMapping_SetItemString}{PyObject *o, char *key, PyObject *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001596Map the object \var{key} to the value \var{v} in object \var{o}.
1597Returns \code{-1} on failure. This is the equivalent of the Python
1598statement \samp{\var{o}[\var{key}] = \var{v}}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001599\end{cfuncdesc}
1600
1601
1602\section{Constructors}
1603
1604\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *file_name, char *mode}
1605On success, returns a new file object that is opened on the
Fred Drakee058b4f1998-02-16 06:15:35 +00001606file given by \var{file_name}, with a file mode given by \var{mode},
1607where \var{mode} has the same semantics as the standard \C{} routine
1608\cfunction{fopen()}. On failure, return \code{-1}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001609\end{cfuncdesc}
1610
1611\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp, char *file_name, char *mode, int close_on_del}
Fred Drakee058b4f1998-02-16 06:15:35 +00001612Return a new file object for an already opened standard \C{} file
1613pointer, \var{fp}. A file name, \var{file_name}, and open mode,
1614\var{mode}, must be provided as well as a flag, \var{close_on_del},
1615that indicates whether the file is to be closed when the file object
1616is destroyed. On failure, return \code{-1}.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001617\end{cfuncdesc}
1618
1619\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001620Returns a new float object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001621\NULL{} on failure.
1622\end{cfuncdesc}
1623
1624\begin{cfuncdesc}{PyObject*}{PyInt_FromLong}{long v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001625Returns a new int object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001626\NULL{} on failure.
1627\end{cfuncdesc}
1628
Fred Drakee058b4f1998-02-16 06:15:35 +00001629\begin{cfuncdesc}{PyObject*}{PyList_New}{int len}
1630Returns a new list of length \var{len} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001631failure.
1632\end{cfuncdesc}
1633
1634\begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001635Returns a new long object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001636\NULL{} on failure.
1637\end{cfuncdesc}
1638
1639\begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001640Returns a new long object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001641\NULL{} on failure.
1642\end{cfuncdesc}
1643
1644\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
1645Returns a new empty dictionary on success, and \NULL{} on
1646failure.
1647\end{cfuncdesc}
1648
1649\begin{cfuncdesc}{PyObject*}{PyString_FromString}{char *v}
Fred Drakee058b4f1998-02-16 06:15:35 +00001650Returns a new string object with the value \var{v} on success, and
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001651\NULL{} on failure.
1652\end{cfuncdesc}
1653
Fred Drakee058b4f1998-02-16 06:15:35 +00001654\begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{char *v, int len}
1655Returns a new string object with the value \var{v} and length
1656\var{len} on success, and \NULL{} on failure. If \var{v} is \NULL{},
1657the contents of the string are uninitialized.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001658\end{cfuncdesc}
1659
Fred Drakee058b4f1998-02-16 06:15:35 +00001660\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int len}
1661Returns a new tuple of length \var{len} on success, and \NULL{} on
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001662failure.
1663\end{cfuncdesc}
1664
1665
1666\chapter{Concrete Objects Layer}
Fred Drakef39ed671998-02-26 22:01:23 +00001667\label{concrete}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001668
1669The functions in this chapter are specific to certain Python object
1670types. Passing them an object of the wrong type is not a good idea;
1671if you receive an object from a Python program and you are not sure
1672that it has the right type, you must perform a type check first;
1673e.g. to check that an object is a dictionary, use
Fred Drakee5bf8b21998-02-12 21:22:28 +00001674\cfunction{PyDict_Check()}. The chapter is structured like the
1675``family tree'' of Python object types.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001676
1677
Fred Drakee5bf8b21998-02-12 21:22:28 +00001678\section{Fundamental Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00001679\label{fundamental}
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001680
Fred Drakee5bf8b21998-02-12 21:22:28 +00001681This section describes Python type objects and the singleton object
1682\code{None}.
1683
1684
1685\subsection{Type Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00001686\label{typeObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001687
1688\begin{ctypedesc}{PyTypeObject}
1689
1690\end{ctypedesc}
1691
1692\begin{cvardesc}{PyObject *}{PyType_Type}
1693
1694\end{cvardesc}
1695
1696
1697\subsection{The None Object}
Fred Drakef39ed671998-02-26 22:01:23 +00001698\label{noneObject}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001699
1700\begin{cvardesc}{PyObject *}{Py_None}
Guido van Rossum44475131998-04-21 15:30:01 +00001701The Python \code{None} object, denoting lack of value. This object has
1702no methods.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001703\end{cvardesc}
1704
1705
1706\section{Sequence Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00001707\label{sequenceObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001708
1709Generic operations on sequence objects were discussed in the previous
1710chapter; this section deals with the specific kinds of sequence
1711objects that are intrinsic to the Python language.
1712
1713
1714\subsection{String Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00001715\label{stringObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001716
1717\begin{ctypedesc}{PyStringObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001718This subtype of \ctype{PyObject} represents a Python string object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001719\end{ctypedesc}
1720
1721\begin{cvardesc}{PyTypeObject}{PyString_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001722This instance of \ctype{PyTypeObject} represents the Python string type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001723\end{cvardesc}
1724
1725\begin{cfuncdesc}{int}{PyString_Check}{PyObject *o}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001726Returns true if the object \var{o} is a string object.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001727\end{cfuncdesc}
1728
Fred Drakec6fa34e1998-04-02 06:47:24 +00001729\begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{const char *v,
1730 int len}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001731Returns a new string object with the value \var{v} and length
1732\var{len} on success, and \NULL{} on failure. If \var{v} is \NULL{},
1733the contents of the string are uninitialized.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001734\end{cfuncdesc}
1735
1736\begin{cfuncdesc}{PyObject*}{PyString_FromString}{const char *v}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001737Returns a new string object with the value \var{v} on success, and
1738\NULL{} on failure.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001739\end{cfuncdesc}
1740
1741\begin{cfuncdesc}{int}{PyString_Size}{PyObject *string}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001742Returns the length of the string in string object \var{string}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001743\end{cfuncdesc}
1744
1745\begin{cfuncdesc}{char*}{PyString_AsString}{PyObject *string}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001746Resturns a \NULL{} terminated representation of the contents of \var{string}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001747\end{cfuncdesc}
1748
1749\begin{cfuncdesc}{void}{PyString_Concat}{PyObject **string,
1750 PyObject *newpart}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001751Creates a new string object in \var{*string} containing the contents
1752of \var{newpart} appended to \var{string}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001753\end{cfuncdesc}
1754
1755\begin{cfuncdesc}{void}{PyString_ConcatAndDel}{PyObject **string,
1756 PyObject *newpart}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001757Creates a new string object in \var{*string} containing the contents
Guido van Rossum44475131998-04-21 15:30:01 +00001758of \var{newpart} appended to \var{string}. This version decrements
1759the reference count of \var{newpart}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001760\end{cfuncdesc}
1761
1762\begin{cfuncdesc}{int}{_PyString_Resize}{PyObject **string, int newsize}
Guido van Rossum44475131998-04-21 15:30:01 +00001763A way to resize a string object even though it is ``immutable''.
1764Only use this to build up a brand new string object; don't use this if
1765the string may already be known in other parts of the code.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001766\end{cfuncdesc}
1767
1768\begin{cfuncdesc}{PyObject*}{PyString_Format}{PyObject *format,
1769 PyObject *args}
Guido van Rossum44475131998-04-21 15:30:01 +00001770Returns a new string object from \var{format} and \var{args}. Analogous
1771to \code{\var{format} \% \var{args}}. The \var{args} argument must be
1772a tuple.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001773\end{cfuncdesc}
1774
1775\begin{cfuncdesc}{void}{PyString_InternInPlace}{PyObject **string}
Guido van Rossum44475131998-04-21 15:30:01 +00001776Intern the argument \var{*string} in place. The argument must be the
1777address of a pointer variable pointing to a Python string object.
1778If there is an existing interned string that is the same as
1779\var{*string}, it sets \var{*string} to it (decrementing the reference
1780count of the old string object and incrementing the reference count of
1781the interned string object), otherwise it leaves \var{*string} alone
1782and interns it (incrementing its reference count). (Clarification:
1783even though there is a lot of talk about reference counts, think of
Fred Drakef8830d11998-04-23 14:06:01 +00001784this function as reference-count-neutral; you own the object after
1785the call if and only if you owned it before the call.)
Fred Drakec6fa34e1998-04-02 06:47:24 +00001786\end{cfuncdesc}
1787
1788\begin{cfuncdesc}{PyObject*}{PyString_InternFromString}{const char *v}
Fred Drakef8830d11998-04-23 14:06:01 +00001789A combination of \cfunction{PyString_FromString()} and
1790\cfunction{PyString_InternInPlace()}, returning either a new string object
Guido van Rossum44475131998-04-21 15:30:01 +00001791that has been interned, or a new (``owned'') reference to an earlier
1792interned string object with the same value.
Fred Drakec6fa34e1998-04-02 06:47:24 +00001793\end{cfuncdesc}
1794
1795\begin{cfuncdesc}{char*}{PyString_AS_STRING}{PyObject *string}
Fred Drakef8830d11998-04-23 14:06:01 +00001796Macro form of \cfunction{PyString_AsString()} but without error checking.
Guido van Rossum9231c8f1997-05-15 21:43:21 +00001797\end{cfuncdesc}
1798
Fred Drakec6fa34e1998-04-02 06:47:24 +00001799\begin{cfuncdesc}{int}{PyString_GET_SIZE}{PyObject *string}
Fred Drakef8830d11998-04-23 14:06:01 +00001800Macro form of \cfunction{PyString_GetSize()} but without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001801\end{cfuncdesc}
1802
1803
Guido van Rossum44475131998-04-21 15:30:01 +00001804
Fred Drakee5bf8b21998-02-12 21:22:28 +00001805\subsection{Tuple Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00001806\label{tupleObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001807
1808\begin{ctypedesc}{PyTupleObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001809This subtype of \ctype{PyObject} represents a Python tuple object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001810\end{ctypedesc}
1811
1812\begin{cvardesc}{PyTypeObject}{PyTuple_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001813This instance of \ctype{PyTypeObject} represents the Python tuple type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001814\end{cvardesc}
1815
1816\begin{cfuncdesc}{int}{PyTuple_Check}{PyObject *p}
1817Return true if the argument is a tuple object.
1818\end{cfuncdesc}
1819
Fred Drakec6fa34e1998-04-02 06:47:24 +00001820\begin{cfuncdesc}{PyObject*}{PyTuple_New}{int s}
Fred Drakee058b4f1998-02-16 06:15:35 +00001821Return a new tuple object of size \var{s}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001822\end{cfuncdesc}
1823
1824\begin{cfuncdesc}{int}{PyTuple_Size}{PyTupleObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001825Takes a pointer to a tuple object, and returns the size
Fred Drakee5bf8b21998-02-12 21:22:28 +00001826of that tuple.
1827\end{cfuncdesc}
1828
Fred Drakec6fa34e1998-04-02 06:47:24 +00001829\begin{cfuncdesc}{PyObject*}{PyTuple_GetItem}{PyTupleObject *p, int pos}
Fred Drakee058b4f1998-02-16 06:15:35 +00001830Returns the object at position \var{pos} in the tuple pointed
1831to by \var{p}. If \var{pos} is out of bounds, returns \NULL{} and
Fred Drakef8830d11998-04-23 14:06:01 +00001832sets an \exception{IndexError} exception. \strong{Note:} this
1833function returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001834\end{cfuncdesc}
1835
Fred Drakec6fa34e1998-04-02 06:47:24 +00001836\begin{cfuncdesc}{PyObject*}{PyTuple_GET_ITEM}{PyTupleObject *p, int pos}
Fred Drakee058b4f1998-02-16 06:15:35 +00001837Does the same, but does no checking of its arguments.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001838\end{cfuncdesc}
1839
Fred Drakec6fa34e1998-04-02 06:47:24 +00001840\begin{cfuncdesc}{PyObject*}{PyTuple_GetSlice}{PyTupleObject *p,
Fred Drakee5bf8b21998-02-12 21:22:28 +00001841 int low,
1842 int high}
Fred Drakee058b4f1998-02-16 06:15:35 +00001843Takes a slice of the tuple pointed to by \var{p} from
1844\var{low} to \var{high} and returns it as a new tuple.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001845\end{cfuncdesc}
1846
1847\begin{cfuncdesc}{int}{PyTuple_SetItem}{PyTupleObject *p,
1848 int pos,
1849 PyObject *o}
Fred Drakee058b4f1998-02-16 06:15:35 +00001850Inserts a reference to object \var{o} at position \var{pos} of
1851the tuple pointed to by \var{p}. It returns \code{0} on success.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001852\end{cfuncdesc}
1853
1854\begin{cfuncdesc}{void}{PyTuple_SET_ITEM}{PyTupleObject *p,
1855 int pos,
1856 PyObject *o}
1857
Fred Drakee058b4f1998-02-16 06:15:35 +00001858Does the same, but does no error checking, and
Fred Drakee5bf8b21998-02-12 21:22:28 +00001859should \emph{only} be used to fill in brand new tuples.
1860\end{cfuncdesc}
1861
Fred Drakec6fa34e1998-04-02 06:47:24 +00001862\begin{cfuncdesc}{int}{_PyTuple_Resize}{PyTupleObject *p,
Fred Drakee5bf8b21998-02-12 21:22:28 +00001863 int new,
1864 int last_is_sticky}
Fred Drakee058b4f1998-02-16 06:15:35 +00001865Can be used to resize a tuple. Because tuples are
Fred Drakee5bf8b21998-02-12 21:22:28 +00001866\emph{supposed} to be immutable, this should only be used if there is only
1867one module referencing the object. Do \emph{not} use this if the tuple may
Fred Drakee058b4f1998-02-16 06:15:35 +00001868already be known to some other part of the code. \var{last_is_sticky} is
1869a flag --- if set, the tuple will grow or shrink at the front, otherwise
Fred Drakee5bf8b21998-02-12 21:22:28 +00001870it will grow or shrink at the end. Think of this as destroying the old
1871tuple and creating a new one, only more efficiently.
1872\end{cfuncdesc}
1873
1874
1875\subsection{List Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00001876\label{listObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001877
1878\begin{ctypedesc}{PyListObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001879This subtype of \ctype{PyObject} represents a Python list object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001880\end{ctypedesc}
1881
1882\begin{cvardesc}{PyTypeObject}{PyList_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001883This instance of \ctype{PyTypeObject} represents the Python list type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001884\end{cvardesc}
1885
1886\begin{cfuncdesc}{int}{PyList_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00001887Returns true if its argument is a \ctype{PyListObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001888\end{cfuncdesc}
1889
Fred Drakec6fa34e1998-04-02 06:47:24 +00001890\begin{cfuncdesc}{PyObject*}{PyList_New}{int size}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001891Returns a new list of length \var{len} on success, and \NULL{} on
1892failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001893\end{cfuncdesc}
1894
Fred Drakec6fa34e1998-04-02 06:47:24 +00001895\begin{cfuncdesc}{int}{PyList_Size}{PyObject *list}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001896Returns the length of the list object in \var{list}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001897\end{cfuncdesc}
1898
Fred Drakec6fa34e1998-04-02 06:47:24 +00001899\begin{cfuncdesc}{PyObject*}{PyList_GetItem}{PyObject *list, int index}
Guido van Rossum44475131998-04-21 15:30:01 +00001900Returns the object at position \var{pos} in the list pointed
1901to by \var{p}. If \var{pos} is out of bounds, returns \NULL{} and
Fred Drakef8830d11998-04-23 14:06:01 +00001902sets an \exception{IndexError} exception. \strong{Note:} this
1903function returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001904\end{cfuncdesc}
1905
Fred Drakec6fa34e1998-04-02 06:47:24 +00001906\begin{cfuncdesc}{int}{PyList_SetItem}{PyObject *list, int index,
1907 PyObject *item}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001908Sets the item at index \var{index} in list to \var{item}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001909\end{cfuncdesc}
1910
Fred Drakec6fa34e1998-04-02 06:47:24 +00001911\begin{cfuncdesc}{int}{PyList_Insert}{PyObject *list, int index,
Guido van Rossum44475131998-04-21 15:30:01 +00001912 PyObject *item}
1913Inserts the item \var{item} into list \var{list} in front of index
1914\var{index}. Returns 0 if successful; returns -1 and sets an
1915exception if unsuccessful. Analogous to \code{list.insert(index, item)}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001916\end{cfuncdesc}
1917
Fred Drakec6fa34e1998-04-02 06:47:24 +00001918\begin{cfuncdesc}{int}{PyList_Append}{PyObject *list, PyObject *item}
Guido van Rossum44475131998-04-21 15:30:01 +00001919Appends the object \var{item} at the end of list \var{list}. Returns
19200 if successful; returns -1 and sets an exception if unsuccessful.
1921Analogous to \code{list.append(item)}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001922\end{cfuncdesc}
1923
Fred Drakec6fa34e1998-04-02 06:47:24 +00001924\begin{cfuncdesc}{PyObject*}{PyList_GetSlice}{PyObject *list,
1925 int low, int high}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001926Returns a list of the objects in \var{list} containing the objects
Guido van Rossum44475131998-04-21 15:30:01 +00001927\emph{between} \var{low} and \var{high}. Returns NULL and sets an
1928exception if unsuccessful.
1929Analogous to \code{list[low:high]}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001930\end{cfuncdesc}
1931
Fred Drakec6fa34e1998-04-02 06:47:24 +00001932\begin{cfuncdesc}{int}{PyList_SetSlice}{PyObject *list,
1933 int low, int high,
1934 PyObject *itemlist}
Guido van Rossum44475131998-04-21 15:30:01 +00001935Sets the slice of \var{list} between \var{low} and \var{high} to the contents
1936of \var{itemlist}. Analogous to \code{list[low:high]=itemlist}. Returns 0
1937on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001938\end{cfuncdesc}
1939
Fred Drakec6fa34e1998-04-02 06:47:24 +00001940\begin{cfuncdesc}{int}{PyList_Sort}{PyObject *list}
Guido van Rossum44475131998-04-21 15:30:01 +00001941Sorts the items of \var{list} in place. Returns 0 on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001942\end{cfuncdesc}
1943
Fred Drakec6fa34e1998-04-02 06:47:24 +00001944\begin{cfuncdesc}{int}{PyList_Reverse}{PyObject *list}
Guido van Rossum44475131998-04-21 15:30:01 +00001945Reverses the items of \var{list} in place. Returns 0 on success, -1 on failure.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001946\end{cfuncdesc}
1947
Fred Drakec6fa34e1998-04-02 06:47:24 +00001948\begin{cfuncdesc}{PyObject*}{PyList_AsTuple}{PyObject *list}
Guido van Rossum3c4378b1998-04-14 20:21:10 +00001949Returns a new tuple object containing the contents of \var{list}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001950\end{cfuncdesc}
1951
Fred Drakec6fa34e1998-04-02 06:47:24 +00001952\begin{cfuncdesc}{PyObject*}{PyList_GET_ITEM}{PyObject *list, int i}
Fred Drakef8830d11998-04-23 14:06:01 +00001953Macro form of \cfunction{PyList_GetItem()} without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001954\end{cfuncdesc}
1955
Guido van Rossuma937d141998-04-24 18:22:02 +00001956\begin{cfuncdesc}{PyObject*}{PyList_SET_ITEM}{PyObject *list, int i,
1957 PyObject *o}
1958Macro form of \cfunction{PyList_SetItem()} without error checking.
1959\end{cfuncdesc}
1960
Fred Drakee5bf8b21998-02-12 21:22:28 +00001961\begin{cfuncdesc}{int}{PyList_GET_SIZE}{PyObject *list}
Fred Drakef8830d11998-04-23 14:06:01 +00001962Macro form of \cfunction{PyList_GetSize()} without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001963\end{cfuncdesc}
1964
1965
1966\section{Mapping Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00001967\label{mapObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001968
1969\subsection{Dictionary Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00001970\label{dictObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00001971
1972\begin{ctypedesc}{PyDictObject}
Fred Drakef8830d11998-04-23 14:06:01 +00001973This subtype of \ctype{PyObject} represents a Python dictionary object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001974\end{ctypedesc}
1975
1976\begin{cvardesc}{PyTypeObject}{PyDict_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00001977This instance of \ctype{PyTypeObject} represents the Python dictionary type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001978\end{cvardesc}
1979
1980\begin{cfuncdesc}{int}{PyDict_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00001981Returns true if its argument is a \ctype{PyDictObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001982\end{cfuncdesc}
1983
Fred Drakec6fa34e1998-04-02 06:47:24 +00001984\begin{cfuncdesc}{PyObject*}{PyDict_New}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00001985Returns a new empty dictionary.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001986\end{cfuncdesc}
1987
1988\begin{cfuncdesc}{void}{PyDict_Clear}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00001989Empties an existing dictionary of all key/value pairs.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001990\end{cfuncdesc}
1991
1992\begin{cfuncdesc}{int}{PyDict_SetItem}{PyDictObject *p,
1993 PyObject *key,
1994 PyObject *val}
Fred Drakee058b4f1998-02-16 06:15:35 +00001995Inserts \var{value} into the dictionary with a key of \var{key}. Both
1996\var{key} and \var{value} should be PyObjects, and \var{key} should be
1997hashable.
Fred Drakee5bf8b21998-02-12 21:22:28 +00001998\end{cfuncdesc}
1999
2000\begin{cfuncdesc}{int}{PyDict_SetItemString}{PyDictObject *p,
2001 char *key,
2002 PyObject *val}
Fred Drakee058b4f1998-02-16 06:15:35 +00002003Inserts \var{value} into the dictionary using \var{key}
Fred Drakef8830d11998-04-23 14:06:01 +00002004as a key. \var{key} should be a \ctype{char *}. The key object is
Fred Drakee058b4f1998-02-16 06:15:35 +00002005created using \code{PyString_FromString(\var{key})}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002006\end{cfuncdesc}
2007
2008\begin{cfuncdesc}{int}{PyDict_DelItem}{PyDictObject *p, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002009Removes the entry in dictionary \var{p} with key \var{key}.
2010\var{key} is a PyObject.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002011\end{cfuncdesc}
2012
2013\begin{cfuncdesc}{int}{PyDict_DelItemString}{PyDictObject *p, char *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002014Removes the entry in dictionary \var{p} which has a key
Fred Drakef8830d11998-04-23 14:06:01 +00002015specified by the \ctype{char *}\var{key}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002016\end{cfuncdesc}
2017
Fred Drakec6fa34e1998-04-02 06:47:24 +00002018\begin{cfuncdesc}{PyObject*}{PyDict_GetItem}{PyDictObject *p, PyObject *key}
Fred Drakee058b4f1998-02-16 06:15:35 +00002019Returns the object from dictionary \var{p} which has a key
Guido van Rossum44475131998-04-21 15:30:01 +00002020\var{key}. Returns \NULL{} if the key \var{key} is not present, but
Fred Drakef8830d11998-04-23 14:06:01 +00002021without (!) setting an exception. \strong{Note:} this function
2022returns a ``borrowed'' reference.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002023\end{cfuncdesc}
2024
Fred Drakec6fa34e1998-04-02 06:47:24 +00002025\begin{cfuncdesc}{PyObject*}{PyDict_GetItemString}{PyDictObject *p, char *key}
Fred Drakef8830d11998-04-23 14:06:01 +00002026This is the same as \cfunction{PyDict_GetItem()}, but \var{key} is
2027specified as a \ctype{char *}, rather than a \ctype{PyObject *}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002028\end{cfuncdesc}
2029
Fred Drakec6fa34e1998-04-02 06:47:24 +00002030\begin{cfuncdesc}{PyObject*}{PyDict_Items}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002031Returns a \ctype{PyListObject} containing all the items
Guido van Rossum44475131998-04-21 15:30:01 +00002032from the dictionary, as in the dictinoary method \method{items()} (see
Fred Drakee058b4f1998-02-16 06:15:35 +00002033the \emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002034\end{cfuncdesc}
2035
Fred Drakec6fa34e1998-04-02 06:47:24 +00002036\begin{cfuncdesc}{PyObject*}{PyDict_Keys}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002037Returns a \ctype{PyListObject} containing all the keys
Guido van Rossum44475131998-04-21 15:30:01 +00002038from the dictionary, as in the dictionary method \method{keys()} (see the
Fred Drakee058b4f1998-02-16 06:15:35 +00002039\emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002040\end{cfuncdesc}
2041
Fred Drakec6fa34e1998-04-02 06:47:24 +00002042\begin{cfuncdesc}{PyObject*}{PyDict_Values}{PyDictObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002043Returns a \ctype{PyListObject} containing all the values
Guido van Rossum44475131998-04-21 15:30:01 +00002044from the dictionary \var{p}, as in the dictionary method
Fred Drakee058b4f1998-02-16 06:15:35 +00002045\method{values()} (see the \emph{Python Library Reference}).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002046\end{cfuncdesc}
2047
2048\begin{cfuncdesc}{int}{PyDict_Size}{PyDictObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002049Returns the number of items in the dictionary.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002050\end{cfuncdesc}
2051
2052\begin{cfuncdesc}{int}{PyDict_Next}{PyDictObject *p,
2053 int ppos,
2054 PyObject **pkey,
2055 PyObject **pvalue}
2056
2057\end{cfuncdesc}
2058
2059
2060\section{Numeric Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00002061\label{numericObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002062
2063\subsection{Plain Integer Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00002064\label{intObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002065
2066\begin{ctypedesc}{PyIntObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002067This subtype of \ctype{PyObject} represents a Python integer object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002068\end{ctypedesc}
2069
2070\begin{cvardesc}{PyTypeObject}{PyInt_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002071This instance of \ctype{PyTypeObject} represents the Python plain
Fred Drakee5bf8b21998-02-12 21:22:28 +00002072integer type.
2073\end{cvardesc}
2074
2075\begin{cfuncdesc}{int}{PyInt_Check}{PyObject *}
2076
2077\end{cfuncdesc}
2078
Fred Drakec6fa34e1998-04-02 06:47:24 +00002079\begin{cfuncdesc}{PyObject*}{PyInt_FromLong}{long ival}
Fred Drakee058b4f1998-02-16 06:15:35 +00002080Creates a new integer object with a value of \var{ival}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002081
2082The current implementation keeps an array of integer objects for all
Fred Drakee058b4f1998-02-16 06:15:35 +00002083integers between \code{-1} and \code{100}, when you create an int in
2084that range you actually just get back a reference to the existing
2085object. So it should be possible to change the value of \code{1}. I
Fred Drake7e9d3141998-04-03 05:02:28 +00002086suspect the behaviour of Python in this case is undefined. :-)
Fred Drakee5bf8b21998-02-12 21:22:28 +00002087\end{cfuncdesc}
2088
2089\begin{cfuncdesc}{long}{PyInt_AS_LONG}{PyIntObject *io}
Fred Drakee058b4f1998-02-16 06:15:35 +00002090Returns the value of the object \var{io}. No error checking is
2091performed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002092\end{cfuncdesc}
2093
2094\begin{cfuncdesc}{long}{PyInt_AsLong}{PyObject *io}
Fred Drakef8830d11998-04-23 14:06:01 +00002095Will first attempt to cast the object to a \ctype{PyIntObject}, if
Fred Drakee058b4f1998-02-16 06:15:35 +00002096it is not already one, and then return its value.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002097\end{cfuncdesc}
2098
2099\begin{cfuncdesc}{long}{PyInt_GetMax}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002100Returns the systems idea of the largest integer it can handle
2101(\constant{LONG_MAX}, as defined in the system header files).
Fred Drakee5bf8b21998-02-12 21:22:28 +00002102\end{cfuncdesc}
2103
2104
2105\subsection{Long Integer Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00002106\label{longObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002107
2108\begin{ctypedesc}{PyLongObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002109This subtype of \ctype{PyObject} represents a Python long integer
Fred Drakee058b4f1998-02-16 06:15:35 +00002110object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002111\end{ctypedesc}
2112
2113\begin{cvardesc}{PyTypeObject}{PyLong_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002114This instance of \ctype{PyTypeObject} represents the Python long
Fred Drakee058b4f1998-02-16 06:15:35 +00002115integer type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002116\end{cvardesc}
2117
2118\begin{cfuncdesc}{int}{PyLong_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002119Returns true if its argument is a \ctype{PyLongObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002120\end{cfuncdesc}
2121
Fred Drakec6fa34e1998-04-02 06:47:24 +00002122\begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
Fred Drakef8830d11998-04-23 14:06:01 +00002123Returns a new \ctype{PyLongObject} object from \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002124\end{cfuncdesc}
2125
Fred Drakec6fa34e1998-04-02 06:47:24 +00002126\begin{cfuncdesc}{PyObject*}{PyLong_FromUnsignedLong}{unsigned long v}
Fred Drakef8830d11998-04-23 14:06:01 +00002127Returns a new \ctype{PyLongObject} object from an unsigned \C{} long.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002128\end{cfuncdesc}
2129
Fred Drakec6fa34e1998-04-02 06:47:24 +00002130\begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
Fred Drakef8830d11998-04-23 14:06:01 +00002131Returns a new \ctype{PyLongObject} object from the integer part of \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002132\end{cfuncdesc}
2133
Fred Drakec6fa34e1998-04-02 06:47:24 +00002134\begin{cfuncdesc}{long}{PyLong_AsLong}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002135Returns a \C{} \ctype{long} representation of the contents of \var{pylong}.
2136WHAT HAPPENS IF \var{pylong} is greater than \constant{LONG_MAX}?
Fred Drakee5bf8b21998-02-12 21:22:28 +00002137\end{cfuncdesc}
2138
Fred Drakec6fa34e1998-04-02 06:47:24 +00002139\begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLong}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002140Returns a \C{} \ctype{unsigned long} representation of the contents of
2141\var{pylong}. WHAT HAPPENS IF \var{pylong} is greater than
2142\constant{ULONG_MAX}?
Fred Drakee5bf8b21998-02-12 21:22:28 +00002143\end{cfuncdesc}
2144
Fred Drakec6fa34e1998-04-02 06:47:24 +00002145\begin{cfuncdesc}{double}{PyLong_AsDouble}{PyObject *pylong}
Fred Drakef8830d11998-04-23 14:06:01 +00002146Returns a \C{} \ctype{double} representation of the contents of \var{pylong}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002147\end{cfuncdesc}
2148
Fred Drakec6fa34e1998-04-02 06:47:24 +00002149\begin{cfuncdesc}{PyObject*}{PyLong_FromString}{char *str, char **pend,
2150 int base}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002151\end{cfuncdesc}
2152
2153
2154\subsection{Floating Point Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00002155\label{floatObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002156
2157\begin{ctypedesc}{PyFloatObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002158This subtype of \ctype{PyObject} represents a Python floating point
Fred Drakee058b4f1998-02-16 06:15:35 +00002159object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002160\end{ctypedesc}
2161
2162\begin{cvardesc}{PyTypeObject}{PyFloat_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002163This instance of \ctype{PyTypeObject} represents the Python floating
Fred Drakee5bf8b21998-02-12 21:22:28 +00002164point type.
2165\end{cvardesc}
2166
2167\begin{cfuncdesc}{int}{PyFloat_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002168Returns true if its argument is a \ctype{PyFloatObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002169\end{cfuncdesc}
2170
Fred Drakec6fa34e1998-04-02 06:47:24 +00002171\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
Fred Drakef8830d11998-04-23 14:06:01 +00002172Creates a \ctype{PyFloatObject} object from \var{v}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002173\end{cfuncdesc}
2174
Fred Drakec6fa34e1998-04-02 06:47:24 +00002175\begin{cfuncdesc}{double}{PyFloat_AsDouble}{PyObject *pyfloat}
Fred Drakef8830d11998-04-23 14:06:01 +00002176Returns a \C{} \ctype{double} representation of the contents of \var{pyfloat}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002177\end{cfuncdesc}
2178
Fred Drakec6fa34e1998-04-02 06:47:24 +00002179\begin{cfuncdesc}{double}{PyFloat_AS_DOUBLE}{PyObject *pyfloat}
Fred Drakef8830d11998-04-23 14:06:01 +00002180Returns a \C{} \ctype{double} representation of the contents of
2181\var{pyfloat}, but without error checking.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002182\end{cfuncdesc}
2183
2184
2185\subsection{Complex Number Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00002186\label{complexObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002187
2188\begin{ctypedesc}{Py_complex}
Fred Drake4de05a91998-02-16 14:25:26 +00002189The \C{} structure which corresponds to the value portion of a Python
2190complex number object. Most of the functions for dealing with complex
2191number objects use structures of this type as input or output values,
2192as appropriate. It is defined as:
2193
Fred Drakee058b4f1998-02-16 06:15:35 +00002194\begin{verbatim}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002195typedef struct {
2196 double real;
2197 double imag;
Fred Drake4de05a91998-02-16 14:25:26 +00002198} Py_complex;
Fred Drakee058b4f1998-02-16 06:15:35 +00002199\end{verbatim}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002200\end{ctypedesc}
2201
2202\begin{ctypedesc}{PyComplexObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002203This subtype of \ctype{PyObject} represents a Python complex number object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002204\end{ctypedesc}
2205
2206\begin{cvardesc}{PyTypeObject}{PyComplex_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002207This instance of \ctype{PyTypeObject} represents the Python complex
Fred Drakee5bf8b21998-02-12 21:22:28 +00002208number type.
2209\end{cvardesc}
2210
2211\begin{cfuncdesc}{int}{PyComplex_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002212Returns true if its argument is a \ctype{PyComplexObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002213\end{cfuncdesc}
2214
Fred Drakec6fa34e1998-04-02 06:47:24 +00002215\begin{cfuncdesc}{Py_complex}{_Py_c_sum}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002216\end{cfuncdesc}
2217
Fred Drakec6fa34e1998-04-02 06:47:24 +00002218\begin{cfuncdesc}{Py_complex}{_Py_c_diff}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002219\end{cfuncdesc}
2220
Fred Drakec6fa34e1998-04-02 06:47:24 +00002221\begin{cfuncdesc}{Py_complex}{_Py_c_neg}{Py_complex complex}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002222\end{cfuncdesc}
2223
Fred Drakec6fa34e1998-04-02 06:47:24 +00002224\begin{cfuncdesc}{Py_complex}{_Py_c_prod}{Py_complex left, Py_complex right}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002225\end{cfuncdesc}
2226
Fred Drakec6fa34e1998-04-02 06:47:24 +00002227\begin{cfuncdesc}{Py_complex}{_Py_c_quot}{Py_complex dividend,
2228 Py_complex divisor}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002229\end{cfuncdesc}
2230
Fred Drakec6fa34e1998-04-02 06:47:24 +00002231\begin{cfuncdesc}{Py_complex}{_Py_c_pow}{Py_complex num, Py_complex exp}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002232\end{cfuncdesc}
2233
Fred Drakec6fa34e1998-04-02 06:47:24 +00002234\begin{cfuncdesc}{PyObject*}{PyComplex_FromCComplex}{Py_complex v}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002235\end{cfuncdesc}
2236
Fred Drakec6fa34e1998-04-02 06:47:24 +00002237\begin{cfuncdesc}{PyObject*}{PyComplex_FromDoubles}{double real, double imag}
Fred Drakef8830d11998-04-23 14:06:01 +00002238Returns a new \ctype{PyComplexObject} object from \var{real} and \var{imag}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002239\end{cfuncdesc}
2240
2241\begin{cfuncdesc}{double}{PyComplex_RealAsDouble}{PyObject *op}
Fred Drakef8830d11998-04-23 14:06:01 +00002242Returns the real part of \var{op} as a \C{} \ctype{double}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002243\end{cfuncdesc}
2244
2245\begin{cfuncdesc}{double}{PyComplex_ImagAsDouble}{PyObject *op}
Fred Drakef8830d11998-04-23 14:06:01 +00002246Returns the imaginary part of \var{op} as a \C{} \ctype{double}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002247\end{cfuncdesc}
2248
2249\begin{cfuncdesc}{Py_complex}{PyComplex_AsCComplex}{PyObject *op}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002250\end{cfuncdesc}
2251
2252
2253
2254\section{Other Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00002255\label{otherObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002256
2257\subsection{File Objects}
Fred Drakef39ed671998-02-26 22:01:23 +00002258\label{fileObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002259
2260\begin{ctypedesc}{PyFileObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002261This subtype of \ctype{PyObject} represents a Python file object.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002262\end{ctypedesc}
2263
2264\begin{cvardesc}{PyTypeObject}{PyFile_Type}
Fred Drakef8830d11998-04-23 14:06:01 +00002265This instance of \ctype{PyTypeObject} represents the Python file type.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002266\end{cvardesc}
2267
2268\begin{cfuncdesc}{int}{PyFile_Check}{PyObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002269Returns true if its argument is a \ctype{PyFileObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002270\end{cfuncdesc}
2271
Fred Drakec6fa34e1998-04-02 06:47:24 +00002272\begin{cfuncdesc}{PyObject*}{PyFile_FromString}{char *name, char *mode}
Fred Drakef8830d11998-04-23 14:06:01 +00002273Creates a new \ctype{PyFileObject} pointing to the file
Fred Drakee058b4f1998-02-16 06:15:35 +00002274specified in \var{name} with the mode specified in \var{mode}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002275\end{cfuncdesc}
2276
Fred Drakec6fa34e1998-04-02 06:47:24 +00002277\begin{cfuncdesc}{PyObject*}{PyFile_FromFile}{FILE *fp,
Fred Drakeb92dce31998-02-25 15:40:22 +00002278 char *name, char *mode, int (*close)}
Fred Drakef8830d11998-04-23 14:06:01 +00002279Creates a new \ctype{PyFileObject} from the already-open \var{fp}.
Fred Drakee058b4f1998-02-16 06:15:35 +00002280The function \var{close} will be called when the file should be
2281closed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002282\end{cfuncdesc}
2283
2284\begin{cfuncdesc}{FILE *}{PyFile_AsFile}{PyFileObject *p}
Fred Drakef8830d11998-04-23 14:06:01 +00002285Returns the file object associated with \var{p} as a \ctype{FILE *}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002286\end{cfuncdesc}
2287
Fred Drakec6fa34e1998-04-02 06:47:24 +00002288\begin{cfuncdesc}{PyObject*}{PyFile_GetLine}{PyObject *p, int n}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002289undocumented as yet
2290\end{cfuncdesc}
2291
Fred Drakec6fa34e1998-04-02 06:47:24 +00002292\begin{cfuncdesc}{PyObject*}{PyFile_Name}{PyObject *p}
Fred Drakee058b4f1998-02-16 06:15:35 +00002293Returns the name of the file specified by \var{p} as a
Fred Drakef8830d11998-04-23 14:06:01 +00002294\ctype{PyStringObject}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002295\end{cfuncdesc}
2296
2297\begin{cfuncdesc}{void}{PyFile_SetBufSize}{PyFileObject *p, int n}
Fred Drakee058b4f1998-02-16 06:15:35 +00002298Available on systems with \cfunction{setvbuf()} only. This should
2299only be called immediately after file object creation.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002300\end{cfuncdesc}
2301
2302\begin{cfuncdesc}{int}{PyFile_SoftSpace}{PyFileObject *p, int newflag}
Fred Drakef8830d11998-04-23 14:06:01 +00002303Sets the \member{softspace} attribute of \var{p} to \var{newflag}.
Fred Drakec6fa34e1998-04-02 06:47:24 +00002304Returns the previous value. This function clears any errors, and will
Fred Drakee058b4f1998-02-16 06:15:35 +00002305return \code{0} as the previous value if the attribute either does not
2306exist or if there were errors in retrieving it. There is no way to
2307detect errors from this function, but doing so should not be needed.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002308\end{cfuncdesc}
2309
Fred Drakec6fa34e1998-04-02 06:47:24 +00002310\begin{cfuncdesc}{int}{PyFile_WriteObject}{PyObject *obj, PyFileObject *p,
2311 int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00002312Writes object \var{obj} to file object \var{p}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002313\end{cfuncdesc}
2314
Fred Drakec6fa34e1998-04-02 06:47:24 +00002315\begin{cfuncdesc}{int}{PyFile_WriteString}{char *s, PyFileObject *p,
2316 int flags}
Fred Drakee058b4f1998-02-16 06:15:35 +00002317Writes string \var{s} to file object \var{p}.
Fred Drakee5bf8b21998-02-12 21:22:28 +00002318\end{cfuncdesc}
2319
2320
2321\subsection{CObjects}
Fred Drakef39ed671998-02-26 22:01:23 +00002322\label{cObjects}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002323
Guido van Rossum44475131998-04-21 15:30:01 +00002324\begin{ctypedesc}{PyCObject}
Fred Drakef8830d11998-04-23 14:06:01 +00002325This subtype of \ctype{PyObject} represents an opaque value, useful for
Guido van Rossum44475131998-04-21 15:30:01 +00002326\C{} extension modules who need to pass an opaque value (as a
Fred Drakef8830d11998-04-23 14:06:01 +00002327\ctype{void *} pointer) through Python code to other \C{} code. It is
Guido van Rossum44475131998-04-21 15:30:01 +00002328often used to make a C function pointer defined in one module
2329available to other modules, so the regular import mechanism can be
2330used to access C APIs defined in dynamically loaded modules.
2331\end{ctypedesc}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002332
Guido van Rossum44475131998-04-21 15:30:01 +00002333\begin{cfuncdesc}{PyObject *}{PyCObject_FromVoidPtr}{void* cobj,
2334 void (*destr)(void *)}
Fred Drakef8830d11998-04-23 14:06:01 +00002335Creates a \ctype{PyCObject} from the \code{void *} \var{cobj}. The
2336\var{destr} function will be called when the object is reclaimed.
Guido van Rossum44475131998-04-21 15:30:01 +00002337\end{cfuncdesc}
2338
2339\begin{cfuncdesc}{PyObject *}{PyCObject_FromVoidPtrAndDesc}{void* cobj,
2340 void* desc, void (*destr)(void *, void *) }
Fred Drakef8830d11998-04-23 14:06:01 +00002341Creates a \ctype{PyCObject} from the \ctype{void *}\var{cobj}. The
2342\var{destr} function will be called when the object is reclaimed. The
2343\var{desc} argument can be used to pass extra callback data for the
2344destructor function.
Guido van Rossum44475131998-04-21 15:30:01 +00002345\end{cfuncdesc}
2346
2347\begin{cfuncdesc}{void *}{PyCObject_AsVoidPtr}{PyObject* self}
Fred Drakef8830d11998-04-23 14:06:01 +00002348Returns the object \ctype{void *} that the \ctype{PyCObject} \var{self}
Guido van Rossum44475131998-04-21 15:30:01 +00002349was created with.
2350\end{cfuncdesc}
2351
2352\begin{cfuncdesc}{void *}{PyCObject_GetDesc}{PyObject* self}
Fred Drakef8830d11998-04-23 14:06:01 +00002353Returns the description \ctype{void *} that the \ctype{PyCObject}
Guido van Rossum44475131998-04-21 15:30:01 +00002354\var{self} was created with.
2355\end{cfuncdesc}
Fred Drakee5bf8b21998-02-12 21:22:28 +00002356
Guido van Rossum4a944d71997-08-14 20:35:38 +00002357\chapter{Initialization, Finalization, and Threads}
Fred Drakef39ed671998-02-26 22:01:23 +00002358\label{initialization}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002359
Guido van Rossum4a944d71997-08-14 20:35:38 +00002360\begin{cfuncdesc}{void}{Py_Initialize}{}
2361Initialize the Python interpreter. In an application embedding
2362Python, this should be called before using any other Python/C API
Fred Drakee058b4f1998-02-16 06:15:35 +00002363functions; with the exception of \cfunction{Py_SetProgramName()},
2364\cfunction{PyEval_InitThreads()}, \cfunction{PyEval_ReleaseLock()},
2365and \cfunction{PyEval_AcquireLock()}. This initializes the table of
2366loaded modules (\code{sys.modules}), and creates the fundamental
Fred Drake4de05a91998-02-16 14:25:26 +00002367modules \module{__builtin__}\refbimodindex{__builtin__},
2368\module{__main__}\refbimodindex{__main__} and
2369\module{sys}\refbimodindex{sys}. It also initializes the module
2370search path (\code{sys.path}).%
2371\indexiii{module}{search}{path}
2372It does not set \code{sys.argv}; use \cfunction{PySys_SetArgv()} for
2373that. This is a no-op when called for a second time (without calling
Fred Drakee058b4f1998-02-16 06:15:35 +00002374\cfunction{Py_Finalize()} first). There is no return value; it is a
2375fatal error if the initialization fails.
Guido van Rossum42cefd01997-10-05 15:27:29 +00002376\end{cfuncdesc}
2377
2378\begin{cfuncdesc}{int}{Py_IsInitialized}{}
Guido van Rossum42cefd01997-10-05 15:27:29 +00002379Return true (nonzero) when the Python interpreter has been
Fred Drakee058b4f1998-02-16 06:15:35 +00002380initialized, false (zero) if not. After \cfunction{Py_Finalize()} is
2381called, this returns false until \cfunction{Py_Initialize()} is called
Guido van Rossum42cefd01997-10-05 15:27:29 +00002382again.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002383\end{cfuncdesc}
2384
2385\begin{cfuncdesc}{void}{Py_Finalize}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002386Undo all initializations made by \cfunction{Py_Initialize()} and
2387subsequent use of Python/C API functions, and destroy all
2388sub-interpreters (see \cfunction{Py_NewInterpreter()} below) that were
2389created and not yet destroyed since the last call to
2390\cfunction{Py_Initialize()}. Ideally, this frees all memory allocated
2391by the Python interpreter. This is a no-op when called for a second
2392time (without calling \cfunction{Py_Initialize()} again first). There
2393is no return value; errors during finalization are ignored.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002394
2395This function is provided for a number of reasons. An embedding
2396application might want to restart Python without having to restart the
2397application itself. An application that has loaded the Python
2398interpreter from a dynamically loadable library (or DLL) might want to
2399free all memory allocated by Python before unloading the DLL. During a
2400hunt for memory leaks in an application a developer might want to free
2401all memory allocated by Python before exiting from the application.
2402
Fred Drakee058b4f1998-02-16 06:15:35 +00002403\strong{Bugs and caveats:} The destruction of modules and objects in
Guido van Rossum4a944d71997-08-14 20:35:38 +00002404modules is done in random order; this may cause destructors
Fred Drakee058b4f1998-02-16 06:15:35 +00002405(\method{__del__()} methods) to fail when they depend on other objects
Guido van Rossum4a944d71997-08-14 20:35:38 +00002406(even functions) or modules. Dynamically loaded extension modules
2407loaded by Python are not unloaded. Small amounts of memory allocated
2408by the Python interpreter may not be freed (if you find a leak, please
2409report it). Memory tied up in circular references between objects is
2410not freed. Some memory allocated by extension modules may not be
2411freed. Some extension may not work properly if their initialization
2412routine is called more than once; this can happen if an applcation
Fred Drakee058b4f1998-02-16 06:15:35 +00002413calls \cfunction{Py_Initialize()} and \cfunction{Py_Finalize()} more
2414than once.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002415\end{cfuncdesc}
2416
Fred Drakec6fa34e1998-04-02 06:47:24 +00002417\begin{cfuncdesc}{PyThreadState*}{Py_NewInterpreter}{}
Fred Drake4de05a91998-02-16 14:25:26 +00002418Create a new sub-interpreter. This is an (almost) totally separate
2419environment for the execution of Python code. In particular, the new
2420interpreter has separate, independent versions of all imported
2421modules, including the fundamental modules
2422\module{__builtin__}\refbimodindex{__builtin__},
2423\module{__main__}\refbimodindex{__main__} and
2424\module{sys}\refbimodindex{sys}. The table of loaded modules
2425(\code{sys.modules}) and the module search path (\code{sys.path}) are
2426also separate. The new environment has no \code{sys.argv} variable.
2427It has new standard I/O stream file objects \code{sys.stdin},
2428\code{sys.stdout} and \code{sys.stderr} (however these refer to the
Fred Drakef8830d11998-04-23 14:06:01 +00002429same underlying \ctype{FILE} structures in the \C{} library).
Guido van Rossum4a944d71997-08-14 20:35:38 +00002430
2431The return value points to the first thread state created in the new
2432sub-interpreter. This thread state is made the current thread state.
2433Note that no actual thread is created; see the discussion of thread
2434states below. If creation of the new interpreter is unsuccessful,
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002435\NULL{} is returned; no exception is set since the exception state
Guido van Rossum4a944d71997-08-14 20:35:38 +00002436is stored in the current thread state and there may not be a current
2437thread state. (Like all other Python/C API functions, the global
2438interpreter lock must be held before calling this function and is
2439still held when it returns; however, unlike most other Python/C API
2440functions, there needn't be a current thread state on entry.)
2441
2442Extension modules are shared between (sub-)interpreters as follows:
2443the first time a particular extension is imported, it is initialized
2444normally, and a (shallow) copy of its module's dictionary is
2445squirreled away. When the same extension is imported by another
2446(sub-)interpreter, a new module is initialized and filled with the
Fred Drakee058b4f1998-02-16 06:15:35 +00002447contents of this copy; the extension's \code{init} function is not
2448called. Note that this is different from what happens when an
2449extension is imported after the interpreter has been completely
2450re-initialized by calling \cfunction{Py_Finalize()} and
2451\cfunction{Py_Initialize()}; in that case, the extension's \code{init}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002452function \emph{is} called again.
2453
Fred Drakee058b4f1998-02-16 06:15:35 +00002454\strong{Bugs and caveats:} Because sub-interpreters (and the main
Guido van Rossum4a944d71997-08-14 20:35:38 +00002455interpreter) are part of the same process, the insulation between them
Fred Drakee058b4f1998-02-16 06:15:35 +00002456isn't perfect --- for example, using low-level file operations like
Fred Drakef8830d11998-04-23 14:06:01 +00002457\function{os.close()} they can (accidentally or maliciously) affect each
Guido van Rossum4a944d71997-08-14 20:35:38 +00002458other's open files. Because of the way extensions are shared between
2459(sub-)interpreters, some extensions may not work properly; this is
2460especially likely when the extension makes use of (static) global
2461variables, or when the extension manipulates its module's dictionary
2462after its initialization. It is possible to insert objects created in
2463one sub-interpreter into a namespace of another sub-interpreter; this
2464should be done with great care to avoid sharing user-defined
2465functions, methods, instances or classes between sub-interpreters,
2466since import operations executed by such objects may affect the
2467wrong (sub-)interpreter's dictionary of loaded modules. (XXX This is
2468a hard-to-fix bug that will be addressed in a future release.)
2469\end{cfuncdesc}
2470
2471\begin{cfuncdesc}{void}{Py_EndInterpreter}{PyThreadState *tstate}
2472Destroy the (sub-)interpreter represented by the given thread state.
2473The given thread state must be the current thread state. See the
2474discussion of thread states below. When the call returns, the current
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002475thread state is \NULL{}. All thread states associated with this
Guido van Rossum4a944d71997-08-14 20:35:38 +00002476interpreted are destroyed. (The global interpreter lock must be held
2477before calling this function and is still held when it returns.)
Fred Drakee058b4f1998-02-16 06:15:35 +00002478\cfunction{Py_Finalize()} will destroy all sub-interpreters that haven't
Guido van Rossum4a944d71997-08-14 20:35:38 +00002479been explicitly destroyed at that point.
2480\end{cfuncdesc}
2481
2482\begin{cfuncdesc}{void}{Py_SetProgramName}{char *name}
Fred Drakee058b4f1998-02-16 06:15:35 +00002483This function should be called before \cfunction{Py_Initialize()} is called
Guido van Rossum4a944d71997-08-14 20:35:38 +00002484for the first time, if it is called at all. It tells the interpreter
Fred Drakee058b4f1998-02-16 06:15:35 +00002485the value of the \code{argv[0]} argument to the \cfunction{main()} function
2486of the program. This is used by \cfunction{Py_GetPath()} and some other
Guido van Rossum4a944d71997-08-14 20:35:38 +00002487functions below to find the Python run-time libraries relative to the
2488interpreter executable. The default value is \code{"python"}. The
2489argument should point to a zero-terminated character string in static
2490storage whose contents will not change for the duration of the
2491program's execution. No code in the Python interpreter will change
2492the contents of this storage.
2493\end{cfuncdesc}
2494
Fred Drakec6fa34e1998-04-02 06:47:24 +00002495\begin{cfuncdesc}{char*}{Py_GetProgramName}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002496Return the program name set with \cfunction{Py_SetProgramName()}, or the
Guido van Rossum4a944d71997-08-14 20:35:38 +00002497default. The returned string points into static storage; the caller
2498should not modify its value.
2499\end{cfuncdesc}
2500
Fred Drakec6fa34e1998-04-02 06:47:24 +00002501\begin{cfuncdesc}{char*}{Py_GetPrefix}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002502Return the \emph{prefix} for installed platform-independent files. This
Guido van Rossum4a944d71997-08-14 20:35:38 +00002503is derived through a number of complicated rules from the program name
Fred Drakee058b4f1998-02-16 06:15:35 +00002504set with \cfunction{Py_SetProgramName()} and some environment variables;
Guido van Rossum4a944d71997-08-14 20:35:38 +00002505for example, if the program name is \code{"/usr/local/bin/python"},
2506the prefix is \code{"/usr/local"}. The returned string points into
2507static storage; the caller should not modify its value. This
Fred Drakec94d9341998-04-12 02:39:13 +00002508corresponds to the \makevar{prefix} variable in the top-level
2509\file{Makefile} and the \code{-}\code{-prefix} argument to the
Fred Drakee058b4f1998-02-16 06:15:35 +00002510\program{configure} script at build time. The value is available to
Fred Drakeb0a78731998-01-13 18:51:10 +00002511Python code as \code{sys.prefix}. It is only useful on \UNIX{}. See
Guido van Rossum4a944d71997-08-14 20:35:38 +00002512also the next function.
2513\end{cfuncdesc}
2514
Fred Drakec6fa34e1998-04-02 06:47:24 +00002515\begin{cfuncdesc}{char*}{Py_GetExecPrefix}{}
Fred Drakee058b4f1998-02-16 06:15:35 +00002516Return the \emph{exec-prefix} for installed platform-\emph{de}pendent
Guido van Rossum4a944d71997-08-14 20:35:38 +00002517files. This is derived through a number of complicated rules from the
Fred Drakee058b4f1998-02-16 06:15:35 +00002518program name set with \cfunction{Py_SetProgramName()} and some environment
Guido van Rossum4a944d71997-08-14 20:35:38 +00002519variables; for example, if the program name is
2520\code{"/usr/local/bin/python"}, the exec-prefix is
2521\code{"/usr/local"}. The returned string points into static storage;
2522the caller should not modify its value. This corresponds to the
Fred Drakec94d9341998-04-12 02:39:13 +00002523\makevar{exec_prefix} variable in the top-level \file{Makefile} and the
2524\code{-}\code{-exec_prefix} argument to the \program{configure} script
2525at build time. The value is available to Python code as
Fred Drakeb0a78731998-01-13 18:51:10 +00002526\code{sys.exec_prefix}. It is only useful on \UNIX{}.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002527
2528Background: The exec-prefix differs from the prefix when platform
2529dependent files (such as executables and shared libraries) are
2530installed in a different directory tree. In a typical installation,
2531platform dependent files may be installed in the
2532\code{"/usr/local/plat"} subtree while platform independent may be
2533installed in \code{"/usr/local"}.
2534
2535Generally speaking, a platform is a combination of hardware and
2536software families, e.g. Sparc machines running the Solaris 2.x
2537operating system are considered the same platform, but Intel machines
2538running Solaris 2.x are another platform, and Intel machines running
2539Linux are yet another platform. Different major revisions of the same
Fred Drakeb0a78731998-01-13 18:51:10 +00002540operating system generally also form different platforms. Non-\UNIX{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002541operating systems are a different story; the installation strategies
2542on those systems are so different that the prefix and exec-prefix are
2543meaningless, and set to the empty string. Note that compiled Python
2544bytecode files are platform independent (but not independent from the
2545Python version by which they were compiled!).
2546
Fred Drakee058b4f1998-02-16 06:15:35 +00002547System administrators will know how to configure the \program{mount} or
2548\program{automount} programs to share \code{"/usr/local"} between platforms
Guido van Rossum4a944d71997-08-14 20:35:38 +00002549while having \code{"/usr/local/plat"} be a different filesystem for each
2550platform.
2551\end{cfuncdesc}
2552
Fred Drakec6fa34e1998-04-02 06:47:24 +00002553\begin{cfuncdesc}{char*}{Py_GetProgramFullPath}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002554Return the full program name of the Python executable; this is
2555computed as a side-effect of deriving the default module search path
Fred Drakee058b4f1998-02-16 06:15:35 +00002556from the program name (set by \cfunction{Py_SetProgramName()} above). The
Guido van Rossum4a944d71997-08-14 20:35:38 +00002557returned string points into static storage; the caller should not
2558modify its value. The value is available to Python code as
Guido van Rossum42cefd01997-10-05 15:27:29 +00002559\code{sys.executable}.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002560\end{cfuncdesc}
2561
Fred Drakec6fa34e1998-04-02 06:47:24 +00002562\begin{cfuncdesc}{char*}{Py_GetPath}{}
Fred Drake4de05a91998-02-16 14:25:26 +00002563\indexiii{module}{search}{path}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002564Return the default module search path; this is computed from the
Fred Drakee058b4f1998-02-16 06:15:35 +00002565program name (set by \cfunction{Py_SetProgramName()} above) and some
Guido van Rossum4a944d71997-08-14 20:35:38 +00002566environment variables. The returned string consists of a series of
2567directory names separated by a platform dependent delimiter character.
Fred Drakef8830d11998-04-23 14:06:01 +00002568The delimiter character is \character{:} on \UNIX{}, \character{;} on
2569DOS/Windows, and \character{\\n} (the \ASCII{} newline character) on
Fred Drakee5bc4971998-02-12 23:36:49 +00002570Macintosh. The returned string points into static storage; the caller
Guido van Rossum4a944d71997-08-14 20:35:38 +00002571should not modify its value. The value is available to Python code
2572as the list \code{sys.path}, which may be modified to change the
2573future search path for loaded modules.
2574
2575% XXX should give the exact rules
2576\end{cfuncdesc}
2577
Fred Drakec6fa34e1998-04-02 06:47:24 +00002578\begin{cfuncdesc}{const char*}{Py_GetVersion}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002579Return the version of this Python interpreter. This is a string that
2580looks something like
2581
Guido van Rossum09270b51997-08-15 18:57:32 +00002582\begin{verbatim}
Fred Drakee058b4f1998-02-16 06:15:35 +00002583"1.5 (#67, Dec 31 1997, 22:34:28) [GCC 2.7.2.2]"
Guido van Rossum09270b51997-08-15 18:57:32 +00002584\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002585
2586The first word (up to the first space character) is the current Python
2587version; the first three characters are the major and minor version
2588separated by a period. The returned string points into static storage;
2589the caller should not modify its value. The value is available to
2590Python code as the list \code{sys.version}.
2591\end{cfuncdesc}
2592
Fred Drakec6fa34e1998-04-02 06:47:24 +00002593\begin{cfuncdesc}{const char*}{Py_GetPlatform}{}
Fred Drakeb0a78731998-01-13 18:51:10 +00002594Return the platform identifier for the current platform. On \UNIX{},
Guido van Rossum4a944d71997-08-14 20:35:38 +00002595this is formed from the ``official'' name of the operating system,
2596converted to lower case, followed by the major revision number; e.g.,
2597for Solaris 2.x, which is also known as SunOS 5.x, the value is
2598\code{"sunos5"}. On Macintosh, it is \code{"mac"}. On Windows, it
2599is \code{"win"}. The returned string points into static storage;
2600the caller should not modify its value. The value is available to
2601Python code as \code{sys.platform}.
2602\end{cfuncdesc}
2603
Fred Drakec6fa34e1998-04-02 06:47:24 +00002604\begin{cfuncdesc}{const char*}{Py_GetCopyright}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002605Return the official copyright string for the current Python version,
2606for example
2607
2608\code{"Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam"}
2609
2610The returned string points into static storage; the caller should not
2611modify its value. The value is available to Python code as the list
2612\code{sys.copyright}.
2613\end{cfuncdesc}
2614
Fred Drakec6fa34e1998-04-02 06:47:24 +00002615\begin{cfuncdesc}{const char*}{Py_GetCompiler}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002616Return an indication of the compiler used to build the current Python
Fred Drakee058b4f1998-02-16 06:15:35 +00002617version, in square brackets, for example:
Guido van Rossum4a944d71997-08-14 20:35:38 +00002618
Fred Drakee058b4f1998-02-16 06:15:35 +00002619\begin{verbatim}
2620"[GCC 2.7.2.2]"
2621\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002622
2623The returned string points into static storage; the caller should not
2624modify its value. The value is available to Python code as part of
2625the variable \code{sys.version}.
2626\end{cfuncdesc}
2627
Fred Drakec6fa34e1998-04-02 06:47:24 +00002628\begin{cfuncdesc}{const char*}{Py_GetBuildInfo}{}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002629Return information about the sequence number and build date and time
2630of the current Python interpreter instance, for example
2631
Guido van Rossum09270b51997-08-15 18:57:32 +00002632\begin{verbatim}
2633"#67, Aug 1 1997, 22:34:28"
2634\end{verbatim}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002635
2636The returned string points into static storage; the caller should not
2637modify its value. The value is available to Python code as part of
2638the variable \code{sys.version}.
2639\end{cfuncdesc}
2640
2641\begin{cfuncdesc}{int}{PySys_SetArgv}{int argc, char **argv}
2642% XXX
2643\end{cfuncdesc}
2644
2645% XXX Other PySys thingies (doesn't really belong in this chapter)
2646
2647\section{Thread State and the Global Interpreter Lock}
Fred Drakef39ed671998-02-26 22:01:23 +00002648\label{threads}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002649
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002650The Python interpreter is not fully thread safe. In order to support
2651multi-threaded Python programs, there's a global lock that must be
2652held by the current thread before it can safely access Python objects.
2653Without the lock, even the simplest operations could cause problems in
Fred Drake7baf3d41998-02-20 00:45:52 +00002654a multi-threaded program: for example, when two threads simultaneously
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002655increment the reference count of the same object, the reference count
2656could end up being incremented only once instead of twice.
2657
2658Therefore, the rule exists that only the thread that has acquired the
2659global interpreter lock may operate on Python objects or call Python/C
2660API functions. In order to support multi-threaded Python programs,
Fred Drakee058b4f1998-02-16 06:15:35 +00002661the interpreter regularly release and reacquires the lock --- by
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002662default, every ten bytecode instructions (this can be changed with
Fred Drakee058b4f1998-02-16 06:15:35 +00002663\function{sys.setcheckinterval()}). The lock is also released and
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002664reacquired around potentially blocking I/O operations like reading or
2665writing a file, so that other threads can run while the thread that
2666requests the I/O is waiting for the I/O operation to complete.
2667
2668The Python interpreter needs to keep some bookkeeping information
Fred Drakee058b4f1998-02-16 06:15:35 +00002669separate per thread --- for this it uses a data structure called
Fred Drakef8830d11998-04-23 14:06:01 +00002670\ctype{PyThreadState}. This is new in Python 1.5; in earlier versions,
Fred Drakee058b4f1998-02-16 06:15:35 +00002671such state was stored in global variables, and switching threads could
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002672cause problems. In particular, exception handling is now thread safe,
Fred Drakee058b4f1998-02-16 06:15:35 +00002673when the application uses \function{sys.exc_info()} to access the
2674exception last raised in the current thread.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002675
2676There's one global variable left, however: the pointer to the current
Fred Drakef8830d11998-04-23 14:06:01 +00002677\ctype{PyThreadState} structure. While most thread packages have a way
Fred Drake9d20ac31998-02-16 15:27:08 +00002678to store ``per-thread global data,'' Python's internal platform
Fred Drakee058b4f1998-02-16 06:15:35 +00002679independent thread abstraction doesn't support this yet. Therefore,
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002680the current thread state must be manipulated explicitly.
2681
2682This is easy enough in most cases. Most code manipulating the global
2683interpreter lock has the following simple structure:
2684
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002685\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002686Save the thread state in a local variable.
2687Release the interpreter lock.
2688...Do some blocking I/O operation...
2689Reacquire the interpreter lock.
2690Restore the thread state from the local variable.
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002691\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002692
2693This is so common that a pair of macros exists to simplify it:
2694
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002695\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002696Py_BEGIN_ALLOW_THREADS
2697...Do some blocking I/O operation...
2698Py_END_ALLOW_THREADS
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002699\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002700
Fred Drakee058b4f1998-02-16 06:15:35 +00002701The \code{Py_BEGIN_ALLOW_THREADS} macro opens a new block and declares
2702a hidden local variable; the \code{Py_END_ALLOW_THREADS} macro closes
2703the block. Another advantage of using these two macros is that when
2704Python is compiled without thread support, they are defined empty,
2705thus saving the thread state and lock manipulations.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002706
2707When thread support is enabled, the block above expands to the
2708following code:
2709
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002710\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002711{
2712 PyThreadState *_save;
2713 _save = PyEval_SaveThread();
2714 ...Do some blocking I/O operation...
2715 PyEval_RestoreThread(_save);
2716}
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002717\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002718
2719Using even lower level primitives, we can get roughly the same effect
2720as follows:
2721
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002722\begin{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002723{
2724 PyThreadState *_save;
2725 _save = PyThreadState_Swap(NULL);
2726 PyEval_ReleaseLock();
2727 ...Do some blocking I/O operation...
2728 PyEval_AcquireLock();
2729 PyThreadState_Swap(_save);
2730}
Guido van Rossum9faf4c51997-10-07 14:38:54 +00002731\end{verbatim}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002732
2733There are some subtle differences; in particular,
Fred Drakee058b4f1998-02-16 06:15:35 +00002734\cfunction{PyEval_RestoreThread()} saves and restores the value of the
Fred Drakef8830d11998-04-23 14:06:01 +00002735global variable \cdata{errno}, since the lock manipulation does not
2736guarantee that \cdata{errno} is left alone. Also, when thread support
Fred Drakee058b4f1998-02-16 06:15:35 +00002737is disabled, \cfunction{PyEval_SaveThread()} and
2738\cfunction{PyEval_RestoreThread()} don't manipulate the lock; in this
2739case, \cfunction{PyEval_ReleaseLock()} and
2740\cfunction{PyEval_AcquireLock()} are not available. This is done so
2741that dynamically loaded extensions compiled with thread support
2742enabled can be loaded by an interpreter that was compiled with
2743disabled thread support.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002744
2745The global interpreter lock is used to protect the pointer to the
2746current thread state. When releasing the lock and saving the thread
2747state, the current thread state pointer must be retrieved before the
2748lock is released (since another thread could immediately acquire the
2749lock and store its own thread state in the global variable).
2750Reversely, when acquiring the lock and restoring the thread state, the
2751lock must be acquired before storing the thread state pointer.
2752
2753Why am I going on with so much detail about this? Because when
Fred Drakeb0a78731998-01-13 18:51:10 +00002754threads are created from \C{}, they don't have the global interpreter
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002755lock, nor is there a thread state data structure for them. Such
2756threads must bootstrap themselves into existence, by first creating a
2757thread state data structure, then acquiring the lock, and finally
2758storing their thread state pointer, before they can start using the
2759Python/C API. When they are done, they should reset the thread state
2760pointer, release the lock, and finally free their thread state data
2761structure.
2762
2763When creating a thread data structure, you need to provide an
2764interpreter state data structure. The interpreter state data
2765structure hold global data that is shared by all threads in an
2766interpreter, for example the module administration
2767(\code{sys.modules}). Depending on your needs, you can either create
2768a new interpreter state data structure, or share the interpreter state
2769data structure used by the Python main thread (to access the latter,
Fred Drakef8830d11998-04-23 14:06:01 +00002770you must obtain the thread state and access its \member{interp} member;
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002771this must be done by a thread that is created by Python or by the main
2772thread after Python is initialized).
2773
2774XXX More?
2775
2776\begin{ctypedesc}{PyInterpreterState}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002777This data structure represents the state shared by a number of
2778cooperating threads. Threads belonging to the same interpreter
2779share their module administration and a few other internal items.
2780There are no public members in this structure.
2781
2782Threads belonging to different interpreters initially share nothing,
2783except process state like available memory, open file descriptors and
2784such. The global interpreter lock is also shared by all threads,
2785regardless of to which interpreter they belong.
2786\end{ctypedesc}
2787
2788\begin{ctypedesc}{PyThreadState}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002789This data structure represents the state of a single thread. The only
Fred Drakef8830d11998-04-23 14:06:01 +00002790public data member is \ctype{PyInterpreterState *}\member{interp},
2791which points to this thread's interpreter state.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002792\end{ctypedesc}
2793
2794\begin{cfuncdesc}{void}{PyEval_InitThreads}{}
2795Initialize and acquire the global interpreter lock. It should be
2796called in the main thread before creating a second thread or engaging
Fred Drakee058b4f1998-02-16 06:15:35 +00002797in any other thread operations such as
2798\cfunction{PyEval_ReleaseLock()} or
2799\code{PyEval_ReleaseThread(\var{tstate})}. It is not needed before
2800calling \cfunction{PyEval_SaveThread()} or
2801\cfunction{PyEval_RestoreThread()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002802
2803This is a no-op when called for a second time. It is safe to call
Fred Drakee058b4f1998-02-16 06:15:35 +00002804this function before calling \cfunction{Py_Initialize()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002805
2806When only the main thread exists, no lock operations are needed. This
2807is a common situation (most Python programs do not use threads), and
2808the lock operations slow the interpreter down a bit. Therefore, the
2809lock is not created initially. This situation is equivalent to having
2810acquired the lock: when there is only a single thread, all object
2811accesses are safe. Therefore, when this function initializes the
Fred Drake4de05a91998-02-16 14:25:26 +00002812lock, it also acquires it. Before the Python
2813\module{thread}\refbimodindex{thread} module creates a new thread,
2814knowing that either it has the lock or the lock hasn't been created
2815yet, it calls \cfunction{PyEval_InitThreads()}. When this call
2816returns, it is guaranteed that the lock has been created and that it
2817has acquired it.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002818
2819It is \strong{not} safe to call this function when it is unknown which
2820thread (if any) currently has the global interpreter lock.
2821
2822This function is not available when thread support is disabled at
2823compile time.
2824\end{cfuncdesc}
2825
Guido van Rossum4a944d71997-08-14 20:35:38 +00002826\begin{cfuncdesc}{void}{PyEval_AcquireLock}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002827Acquire the global interpreter lock. The lock must have been created
2828earlier. If this thread already has the lock, a deadlock ensues.
2829This function is not available when thread support is disabled at
2830compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002831\end{cfuncdesc}
2832
2833\begin{cfuncdesc}{void}{PyEval_ReleaseLock}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002834Release the global interpreter lock. The lock must have been created
2835earlier. This function is not available when thread support is
Fred Drakee058b4f1998-02-16 06:15:35 +00002836disabled at compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002837\end{cfuncdesc}
2838
2839\begin{cfuncdesc}{void}{PyEval_AcquireThread}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002840Acquire the global interpreter lock and then set the current thread
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002841state to \var{tstate}, which should not be \NULL{}. The lock must
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002842have been created earlier. If this thread already has the lock,
2843deadlock ensues. This function is not available when thread support
Fred Drakee058b4f1998-02-16 06:15:35 +00002844is disabled at compile time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002845\end{cfuncdesc}
2846
2847\begin{cfuncdesc}{void}{PyEval_ReleaseThread}{PyThreadState *tstate}
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002848Reset the current thread state to \NULL{} and release the global
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002849interpreter lock. The lock must have been created earlier and must be
2850held by the current thread. The \var{tstate} argument, which must not
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002851be \NULL{}, is only used to check that it represents the current
Fred Drakee058b4f1998-02-16 06:15:35 +00002852thread state --- if it isn't, a fatal error is reported. This
2853function is not available when thread support is disabled at compile
2854time.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002855\end{cfuncdesc}
2856
Fred Drakec6fa34e1998-04-02 06:47:24 +00002857\begin{cfuncdesc}{PyThreadState*}{PyEval_SaveThread}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002858Release the interpreter lock (if it has been created and thread
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002859support is enabled) and reset the thread state to \NULL{},
2860returning the previous thread state (which is not \NULL{}). If
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002861the lock has been created, the current thread must have acquired it.
2862(This function is available even when thread support is disabled at
2863compile time.)
Guido van Rossum4a944d71997-08-14 20:35:38 +00002864\end{cfuncdesc}
2865
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002866\begin{cfuncdesc}{void}{PyEval_RestoreThread}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002867Acquire the interpreter lock (if it has been created and thread
2868support is enabled) and set the thread state to \var{tstate}, which
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002869must not be \NULL{}. If the lock has been created, the current
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002870thread must not have acquired it, otherwise deadlock ensues. (This
2871function is available even when thread support is disabled at compile
2872time.)
Guido van Rossum4a944d71997-08-14 20:35:38 +00002873\end{cfuncdesc}
2874
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002875% XXX These aren't really C types, but the ctypedesc macro is the simplest!
2876\begin{ctypedesc}{Py_BEGIN_ALLOW_THREADS}
2877This macro expands to
Fred Drakee058b4f1998-02-16 06:15:35 +00002878\samp{\{ PyThreadState *_save; _save = PyEval_SaveThread();}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002879Note that it contains an opening brace; it must be matched with a
2880following \code{Py_END_ALLOW_THREADS} macro. See above for further
2881discussion of this macro. It is a no-op when thread support is
2882disabled at compile time.
2883\end{ctypedesc}
2884
2885\begin{ctypedesc}{Py_END_ALLOW_THREADS}
2886This macro expands to
Fred Drakee058b4f1998-02-16 06:15:35 +00002887\samp{PyEval_RestoreThread(_save); \}}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002888Note that it contains a closing brace; it must be matched with an
2889earlier \code{Py_BEGIN_ALLOW_THREADS} macro. See above for further
2890discussion of this macro. It is a no-op when thread support is
2891disabled at compile time.
2892\end{ctypedesc}
2893
2894\begin{ctypedesc}{Py_BEGIN_BLOCK_THREADS}
Fred Drakee058b4f1998-02-16 06:15:35 +00002895This macro expands to \samp{PyEval_RestoreThread(_save);} i.e. it
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002896is equivalent to \code{Py_END_ALLOW_THREADS} without the closing
2897brace. It is a no-op when thread support is disabled at compile
2898time.
2899\end{ctypedesc}
2900
2901\begin{ctypedesc}{Py_BEGIN_UNBLOCK_THREADS}
Fred Drakee058b4f1998-02-16 06:15:35 +00002902This macro expands to \samp{_save = PyEval_SaveThread();} i.e. it is
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002903equivalent to \code{Py_BEGIN_ALLOW_THREADS} without the opening brace
2904and variable declaration. It is a no-op when thread support is
2905disabled at compile time.
2906\end{ctypedesc}
2907
2908All of the following functions are only available when thread support
2909is enabled at compile time, and must be called only when the
Fred Drake9d20ac31998-02-16 15:27:08 +00002910interpreter lock has been created.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002911
Fred Drakec6fa34e1998-04-02 06:47:24 +00002912\begin{cfuncdesc}{PyInterpreterState*}{PyInterpreterState_New}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002913Create a new interpreter state object. The interpreter lock must be
2914held.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002915\end{cfuncdesc}
2916
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002917\begin{cfuncdesc}{void}{PyInterpreterState_Clear}{PyInterpreterState *interp}
2918Reset all information in an interpreter state object. The interpreter
2919lock must be held.
Guido van Rossum4a944d71997-08-14 20:35:38 +00002920\end{cfuncdesc}
2921
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002922\begin{cfuncdesc}{void}{PyInterpreterState_Delete}{PyInterpreterState *interp}
2923Destroy an interpreter state object. The interpreter lock need not be
2924held. The interpreter state must have been reset with a previous
Fred Drakee058b4f1998-02-16 06:15:35 +00002925call to \cfunction{PyInterpreterState_Clear()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002926\end{cfuncdesc}
2927
Fred Drakec6fa34e1998-04-02 06:47:24 +00002928\begin{cfuncdesc}{PyThreadState*}{PyThreadState_New}{PyInterpreterState *interp}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002929Create a new thread state object belonging to the given interpreter
2930object. The interpreter lock must be held.
2931\end{cfuncdesc}
2932
2933\begin{cfuncdesc}{void}{PyThreadState_Clear}{PyThreadState *tstate}
2934Reset all information in a thread state object. The interpreter lock
2935must be held.
2936\end{cfuncdesc}
2937
2938\begin{cfuncdesc}{void}{PyThreadState_Delete}{PyThreadState *tstate}
2939Destroy a thread state object. The interpreter lock need not be
2940held. The thread state must have been reset with a previous
Fred Drakee058b4f1998-02-16 06:15:35 +00002941call to \cfunction{PyThreadState_Clear()}.
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002942\end{cfuncdesc}
2943
Fred Drakec6fa34e1998-04-02 06:47:24 +00002944\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Get}{}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002945Return the current thread state. The interpreter lock must be held.
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002946When the current thread state is \NULL{}, this issues a fatal
Guido van Rossum5b8a5231997-12-30 04:38:44 +00002947error (so that the caller needn't check for \NULL{}).
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002948\end{cfuncdesc}
2949
Fred Drakec6fa34e1998-04-02 06:47:24 +00002950\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Swap}{PyThreadState *tstate}
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002951Swap the current thread state with the thread state given by the
Guido van Rossum580aa8d1997-11-25 15:34:51 +00002952argument \var{tstate}, which may be \NULL{}. The interpreter lock
Guido van Rossumc44d3d61997-10-06 05:10:47 +00002953must be held.
2954\end{cfuncdesc}
2955
2956
Fred Drakee058b4f1998-02-16 06:15:35 +00002957\chapter{Defining New Object Types}
Fred Drakef39ed671998-02-26 22:01:23 +00002958\label{newTypes}
Guido van Rossum4a944d71997-08-14 20:35:38 +00002959
Fred Drakec6fa34e1998-04-02 06:47:24 +00002960\begin{cfuncdesc}{PyObject*}{_PyObject_New}{PyTypeObject *type}
Fred Drakee058b4f1998-02-16 06:15:35 +00002961\end{cfuncdesc}
2962
Fred Drakec6fa34e1998-04-02 06:47:24 +00002963\begin{cfuncdesc}{PyObject*}{_PyObject_NewVar}{PyTypeObject *type, int size}
Fred Drakee058b4f1998-02-16 06:15:35 +00002964\end{cfuncdesc}
2965
2966\begin{cfuncdesc}{TYPE}{_PyObject_NEW}{TYPE, PyTypeObject *}
2967\end{cfuncdesc}
2968
2969\begin{cfuncdesc}{TYPE}{_PyObject_NEW_VAR}{TYPE, PyTypeObject *, int size}
2970\end{cfuncdesc}
2971
Guido van Rossum3c4378b1998-04-14 20:21:10 +00002972Py_InitModule (!!!)
2973
2974PyArg_ParseTupleAndKeywords, PyArg_ParseTuple, PyArg_Parse
2975
2976Py_BuildValue
Guido van Rossumae110af1997-05-22 20:11:52 +00002977
2978PyObject, PyVarObject
2979
2980PyObject_HEAD, PyObject_HEAD_INIT, PyObject_VAR_HEAD
2981
2982Typedefs:
2983unaryfunc, binaryfunc, ternaryfunc, inquiry, coercion, intargfunc,
2984intintargfunc, intobjargproc, intintobjargproc, objobjargproc,
2985getreadbufferproc, getwritebufferproc, getsegcountproc,
2986destructor, printfunc, getattrfunc, getattrofunc, setattrfunc,
2987setattrofunc, cmpfunc, reprfunc, hashfunc
2988
2989PyNumberMethods
2990
2991PySequenceMethods
2992
2993PyMappingMethods
2994
2995PyBufferProcs
2996
2997PyTypeObject
2998
2999DL_IMPORT
3000
3001PyType_Type
3002
3003Py*_Check
3004
3005Py_None, _Py_NoneStruct
3006
Guido van Rossumae110af1997-05-22 20:11:52 +00003007
Fred Drakee5bf8b21998-02-12 21:22:28 +00003008\chapter{Debugging}
Fred Drakef39ed671998-02-26 22:01:23 +00003009\label{debugging}
Guido van Rossumae110af1997-05-22 20:11:52 +00003010
Fred Drakee5bf8b21998-02-12 21:22:28 +00003011XXX Explain Py_DEBUG, Py_TRACE_REFS, Py_REF_DEBUG.
Guido van Rossum5b8a5231997-12-30 04:38:44 +00003012
3013
Fred Drakef3aa0e01998-03-17 06:23:13 +00003014\input{api.ind} % Index -- must be last
Guido van Rossum9231c8f1997-05-15 21:43:21 +00003015
3016\end{document}